Root finder solver for cubic equation

2 vues (au cours des 30 derniers jours)
Jamie Al
Jamie Al le 8 Mar 2021
I have the following cubic equation in beta, knowing gamma, theta and M1 how can I find the roots of beta using MATLAB?
for example, knowing the following:
M1 = 8:3:20;
gamma = 1.4;
theta = 8;
  3 commentaires
Jamie Al
Jamie Al le 8 Mar 2021
Thanks David! I will try using roots and see how it goes.
Jamie Al
Jamie Al le 8 Mar 2021
I tried something like this, but I am not sure it's giving back correct roots
M1 = 8:3:20;
gamma = 1.4;
theta = 8; %in degrees
a = 1+((gamma-1)/2).*M1.^2.*tan(theta);
b = 1-M1.^2;
c = (1+((gamma-1)/2).* M1.^2).*tan(theta);
d = 1;
P = [a b c d];
bb = roots(P);
beta = atand(bb); %take inv of tan

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 8 Mar 2021
syms M1 gamma theta_degrees tanbeta_degrees
eqn = 1 + (gamma - 1)/2 * M1.^2 * tand(theta_degrees).*tanbeta_degrees.^3 + (1-M1.^2).*tanbeta_degrees.^2 + (1+(gamma+1)/2.*M1.^2);
solbeta = solve(eqn, tanbeta_degrees);
beta_degrees = atand(solbeta)
beta_degrees = 
M1_ = 8:3:20;
gamma_ = 1.4;
theta_degrees_ = 8; %in degrees
beta_values = subs(beta_degrees, {M1, gamma, theta_degrees}, {M1_, gamma_, theta_degrees_})
beta_values = 
beta_numeric = double(beta_values)
beta_numeric = 3×5
-47.7576 -47.4871 -47.3704 -47.3097 -47.2741 48.6681 48.3829 48.2600 48.1960 48.1586 88.3627 88.3749 88.3801 88.3828 88.3844
whos beta_numeric
Name Size Bytes Class Attributes beta_numeric 3x5 120 double
Here, the different columns correspond to the different M1 values, and the different rows correspond to the different roots of the cubic. Results are in degrees.

Plus de réponses (0)

Catégories

En savoir plus sur Particle & Nuclear Physics dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by