Help using fsolve (theta beta mach)
Show older comments
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?
Answers (2)
Star Strider
on 22 Mar 2022
Edited: Star Strider
on 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
on 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)
Categories
Find more on Programming in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!