Problem with vpasolve after specifying range of solutions as [-Inf Inf]
Show older comments
Hi, I seem to have encountered a weird problem with vpasolve when I specify a range of solutions.
I have 'a' defined as a symbolic variable.
After running the script below, 'test1' returned some real, non-trivial solutions from a1 to a4.
test1=vpasolve([a(1)*0.67 + a(4)*0.5 + a(2)*0.1 == 5 ; a(3)*0.3 + a(1)*2== 10])
However, after specifying, a range of solutions for vpasolve(), it returned empty 0x1 sym results in 'test2'
test2=vpasolve([a(1)*0.67 + a(4)*0.5 + a(2)*0.1 == 5 ; a(3)*0.3 + a(1)*2== 10], [a(1:4)],[-inf,inf;-inf,inf;-inf,inf;-inf,inf])
For another test case, I gave vpasolve a different equation with a similar format of having 4 unknowns shown below, but somehow 'test3' was able to return some non-trivial solutions.
test3=vpasolve([a(1)*sin(10*a(4)) + a(2)^3 == 5 ; a(3)^2 + exp(-2*a(1)/3)== 10], [a(1:4)],[-inf,inf;-inf,inf;-inf,inf;-inf,inf])
Would you please help me understand why is this the case? How can I make 'test2' return the same results as 'test1'?
Thank you very much for your time.
7 Comments
Walter Roberson
on 21 Jun 2018
See the recent discussion at https://www.mathworks.com/matlabcentral/answers/402557-vpasolve-and-solve-return-empty-sym-0-by-1-solution-does-exist#comment_573541 about why it can happen with finite limits.
But I did not figure out how it happens with infinite limits.
Walter Roberson
on 21 Jun 2018
You can use matlabFunction() to generate an anonymous numeric function that can be used with fsolve().
Hint: when you call matlabFunction, use the 'vars' option, and use {a} as the argument, assuming that a is a symbolic row vector of variable names.
Ash Ash
on 21 Jun 2018
Ash Ash
on 21 Jun 2018
Walter Roberson
on 21 Jun 2018
solve() and vpasolve() are the only symbolic solvers that there is direct access to.
If you are willing to go into MuPAD then there are https://www.mathworks.com/help/symbolic/mupad_ref/linsolve.html and https://www.mathworks.com/help/symbolic/numeric-solvers.html . Note that you need to either "mupad" to use these, or invoke dark rituals involving evalin(symengine).
Ash Ash
on 21 Jun 2018
Answers (0)
Categories
Find more on Common Operations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!