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

94 vues (au cours des 30 derniers jours)
Pilar Jiménez
Pilar Jiménez le 23 Jan 2017
Commenté : John D'Errico le 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 commentaires
John Chilleri
John Chilleri le 23 Jan 2017
Modifié(e) : John Chilleri le 23 Jan 2017
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.
Pilar Jiménez
Pilar Jiménez le 23 Jan 2017
Yes, I try to avoid a result like this 2745406554013086831442544068479080209^(1/2)*4355616553956842689236828859350347876557^(1/2)*108890357414700308308279874378165827665920^(1/2))/829748217121411424736445675629054455395170669059925077917696

Connectez-vous pour commenter.

Réponses (1)

Niels
Niels le 23 Jan 2017
of you have a symbolic expression use double (a is of class sym)
a=double(a)
  3 commentaires
Niels
Niels le 23 Jan 2017
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
John D'Errico
John D'Errico le 23 Jan 2017
Double will produce a double precision result. If you want a symbolic result that has still many digits, use vpa.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by