MATLAB Answers

0

How I can obtain the numerical values of a symbolic results?

Asked by Pilar Jiménez on 23 Jan 2017
Latest activity Commented on by John D'Errico
on 23 Jan 2017
For example, I have this expression -(5^(1/2)*i - (1 - 3*5^(1/4))^(1/2) + 5*i)/(8*pi), how I can obtain the numerical result?

  2 Comments

If I type,
a = -(5^(1/2)*i - (1 - 3*5^(1/4))^(1/2) + 5*i)/(8*pi)
a =
0.0000 - 0.2136i
Does this not work for you?
When I did work with huge numbers (100s of digits), Matlab would leave it as symbols like you have when, I assume, it could not do the computation. I ended up using Maxima for these symbolic computations then going back to Matlab with the result. I don't imagine Matlab can't compute it unless it's obscenely large or contains portions that don't convert to mathematics.
Yes, I try to avoid a result like this 2745406554013086831442544068479080209^(1/2)*4355616553956842689236828859350347876557^(1/2)*108890357414700308308279874378165827665920^(1/2))/829748217121411424736445675629054455395170669059925077917696

Sign in to comment.

1 Answer

Answer by Niels
on 23 Jan 2017

of you have a symbolic expression use double (a is of class sym)
a=double(a)

  3 Comments

I tried to use double but I do not understand very well in Matlab's help how it works, I mean how it affects or impacts my result
is i said, if u got something like
result=solve(...)
result is a variable of class sym
try
result=double(result)
and your problem is solved
Double will produce a double precision result. If you want a symbolic result that has still many digits, use vpa.

Sign in to comment.