Help using fsolve (theta beta mach)
Afficher commentaires plus anciens
I have a disgusting equation that needs to be solved for another variable:
tand(theta) = 2*atand(beta)*(M^2*sind(beta)^2-1)/(M^2*(1.4+cosd(2*beta))+2)
I need it to be solved for beta with theta and M known.
How do I use fsolve to solve for that equation?
Réponses (2)
Star Strider
le 22 Mar 2022
Modifié(e) : Star Strider
le 22 Mar 2022
The fsolve function is a root-finding algorithm, so the search must be for zeros of the function. The function needs to be expressed in that context —
f = @(beta,theta,M) tand(theta) - 2*atand(beta).*(M.^2*sind(beta).^2-1)./(M.^2.*(1.4+cosd(2*beta))+2);
theta = 30;
M = 42;
beta0 = 180*rand; % Can Be Anything
betav = fsolve(@(beta)f(beta,theta,M), beta0)
NOTE — Since this is a trigonoometric equation, there could be an infinity of solutions, integer multiples of 360°.
.
David Hill
le 22 Mar 2022
syms theta;
beta=35;M=1.3;%example
eqn=tand(theta) == 2*atand(beta)*(M^2*sind(beta)^2-1)/(M^2*(1.4+cosd(2*beta))+2);
vpasolve(eqn)
Catégories
En savoir plus sur Programming dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!