Array as input for symbolic function

9 visualizaciones (últimos 30 días)
cdlapoin
cdlapoin el 27 de Feb. de 2022
Comentada: cdlapoin el 27 de Feb. de 2022
this is an quation for the Mach number as a function of location and area ratio
so I create an array of area ratios and want to examine M
A_ratio = (0:1:100);
gamma = 1.4;
syms M
eq1 = A_ratio == ((gamma+1)/2)^((gamma+1)/(2*(gamma-1)))*((1+(gamma-1)/2*M^2)^((gamma+1)/(2*(gamma-1)))/M)
eq1 = 
var = vpa(eq1)
var = 
double(var)
ans = 1×101
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
here the symbolic output of vpa looks correct (non-zero), but when I try to change back from symbolic to numeric array the result is all zeros. is double() the wrong command for this? I am referencing: https://www.mathworks.com/help/symbolic/conversion.html
is there a smarter way to do this?

Respuesta aceptada

Torsten
Torsten el 27 de Feb. de 2022
gamma = 1.4;
syms A_ratio M
eq1 = A_ratio == ((gamma+1)/2)^((gamma+1)/(2*(gamma-1)))*((1+(gamma-1)/2*M^2)^((gamma+1)/(2*(gamma-1)))/M);
sol = solve(eq1,M);
solnum = subs(sol,A_ratio,1) %e.g.
  1 comentario
cdlapoin
cdlapoin el 27 de Feb. de 2022
Thank you,
I didn't expect to get 6 roots, and none of them matched what I know about how the output should look. In the end it was because of a missing (-) sign in my definition of eq1. Once that was corrected I could easily see that the real part of the first root was the correct value I was looking for.

Iniciar sesión para comentar.

Más respuestas (0)

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by