Array as input for symbolic function

6 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)

Categorías

Más información sobre Symbolic Math Toolbox en Help Center y File Exchange.

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