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

48 views (last 30 days)
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 Comments
Saad Hamayoon
Saad Hamayoon on 16 Jun 2020
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
Venkatraman Renganathan on 12 Sep 2020
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.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 13 Sep 2020
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 Comments
Walter Roberson
Walter Roberson on 14 Sep 2020
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

Sign in to comment.

More Answers (0)

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!