Спасибо за предложение Криса Луенго передать аргумент в виде строки.Теперь это интерпретируется как выражение Python, а не как выражение MATLAB.Следующие два метода теперь работают в MATLAB.
Метод 1: Выражение Python
clear all
% Initialize model
m = py.gekko.GEKKO();
% Initialize Variable
x = m.Var(pyargs('name','x'));
% Define Equation
m.Equation(pyargs('equation','x**2+2*x+1=0'));
% Solve
m.solve();
% Extract values from Python lists using curly brackets
disp(['x: ' num2str(x.VALUE{1})]);
В этом случае необходимо присвоить имя переменной x
, поскольку в противном случаеПеременная имеет внутреннее имя v1
и x
не будет разрешено в выражении.Второй способ проще.
Метод 2: выражение MATLAB
clear all
% Initialize model
m = py.gekko.GEKKO();
% Initialize Variable
x = m.Var();
% Define Equation
m.Equation(x^2+2*x+1==0);
% Solve
m.solve();
% Extract values from Python lists using curly brackets
disp(['x: ' num2str(x.VALUE{1})]);
Использование выражения MATLAB более компактно и более согласуется с другим кодом MATLAB.