Error using mupadengine/feval_internal 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 个评论
Venkatraman Renganathan
2020-9-12
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
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
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 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!