Error using mupadengin​e/feval_in​ternal Invalid input. Expected ']'. Error in mupadengine/feval

12 次查看(过去 30 天)
I am using the following program given at sums-of-squares.github.io/sos/:
syms x y s t;
p = s*x^6 + t*y^6 - x^4*y^2 - x^2*y^4 - x^4 + 3*x^2*y^2 - y^4 - x^2 - y^2 + 1
prog = sosprogram([x;y], [s;t]);
prog = sosineq(prog, p); % p is sos
prog = sossolve(prog, options);
sosgetsol(prog, [s,t])
I am getting error at (prog = sosineq(prog, p); % p is sos) this line which is as follows:
Error using mupadengine/feval_internal
Invalid input. Expected ']'.
Error in mupadengine/feval
Error in sosconstr (line 65)
degcheck = feval(symengine,'collect',degcheck,charvartable);
Error in sosineq (line 105)
sos = sosconstr(sos,'ineq',symexpr);
Error in sostest1 (line 5)
prog = sosineq(prog, p); % p is sos
I cannot figure out the problem. The same problem occurs with some of the other demos of sostoolbox. For example the sosdemo2.m also gives the error
Error using mupadengine/feval_internal
Invalid input. Expected ')'.
Error in mupadengine/feval
Any help would be appreciated.
  3 个评论
Saad Hamayoon
Saad Hamayoon 2020-6-16
Yeah. It is the problem with the Matlab version. I ran the same code on Matlab 2015 and it worked. I guess SOSTOOLS need to be updated before it can be used in MATLAB 2020.
Venkatraman Renganathan
Hi, I am having the same issue. Please let me know if this has been resolved. Else, I have to get back to MATLAB older version to run my code.

请先登录,再进行评论。

采纳的回答

Walter Roberson
Walter Roberson 2020-9-13
Change
prog = sosprogram([x;y], [s;t]);
to
prog = sosprogram([x,y], [s,t]);
Also, your code does not define options, so your sample code will fail at that point.
  3 个评论
Walter Roberson
Walter Roberson 2020-9-14
sym2chartable.m needs to be adjusted.
In a range of versions, char() applied to a symbolic list of variables [s t] would return 'matrix([s,t])' and the code would strip off all the [ and ] and then change the remaining 'matrix(s,t)' to '[s,t]' .
In sufficiently new versions, char() applied to a symbolic list of variables [s t] would return '[s,t]'. The code would strip off all the [ and ] to get 's,t' but then since there is no 'matrix(' or trailing ')' the '[' and ']' do not get wrapped.
I would suggest adding at the end
if chartable(1) ~= '['
chartable = ['[' chartable];
end
if chartable(end) ~= ']'
chartable = [chartable ']'];
end

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

产品


版本

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by