change class syms to double
61 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
PANOS
el 10 de Abr. de 2023
Editada: John D'Errico
el 10 de Abr. de 2023
what must i do to change a class sym to a class double?
0 comentarios
Respuesta aceptada
John D'Errico
el 10 de Abr. de 2023
Editada: John D'Errico
el 10 de Abr. de 2023
If your sym variable still contains ANY symbolic parameters, then nothing can change it to a number. A double connot store a symbolic parameter. But if your variable is purely numeric, then yes, it is easy, just use the function double. For example:
phi = (1 + sqrt(sym(5)))/2
format long g
dphi = double(phi)
So dphi is a double precision number. you can do as you wish with it now.
But if a variable contains any unresolved symbolic parameter, for example
syms a
V = (3*a+2)/(a^2+1)
Now if I try to use double on V, it will certainly fail with an error (I'll show that at the end of this answer, since once Answers MATLAB sees an error, it will not continue to process other lines of code.) However, I could convert V into a function.
Vfun = matlabFunction(V)
And now Vfun is back in the double precision universe, since it is just a function handle, something that normal MATLAB understands.
Vfun(2.3)
And now we can use Vfun by any tool that uses doubles.
fzero(Vfun,3)
We can of course stuff a number into a. That will resolve the value of a. Then double will work.
double(subs(V,a,2.3))
But, as I said, here is what you should expect to see if you try to force V to be a double, without somehow resolving all symbolic parameters into numbers.
dV = double(V)
0 comentarios
Más respuestas (1)
Paul
el 10 de Abr. de 2023
Something like this ...
e = exp(sym(1))
class(e)
format long
e = double(e)
class(e)
0 comentarios
Ver también
Categorías
Más información sobre Assumptions en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!