Finding unknown in MATLAB
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Berke ERKAN
le 6 Mar 2021
Commenté : Walter Roberson
le 7 Mar 2021
I would like to find the unknown value d in this code. Unfortunately, something wrong between line 19 and line 24 because the answer printed as ans = 0. I don't know why?
d answer should be approximately 4.33832
format short
%from table A-2
lbf = 4.45; %Pound-force to Newton 1 pound-force = 4.45 Newton
inch = 25.4; %inch to mm, 1 inch = 25.4 millimeter
%-----------------------------------
%Assumptions
Zie = 0.15; %Minimized space usage
F.S = 1.2; %Factor of Safety
%--------------------------------------------------------------------------
D = 1.25*inch, fprintf('mm') %Mean Diameter of the Coil
Req_valve_lift = 0.9*inch, fprintf('mm')
Fpreload = 50*lbf, fprintf ('N')
Fmax = 150*lbf, fprintf ('N')
%--------------------------------------------------------------------------
%Table 10-4
syms d
Ssy = (1974)*(d^0.108);
Kb = (4*((1.25*inch)/d)+2)/(4*((1.25*inch)/d)-3);
(Ssy*0.56)/F.S == (Kb*((8*Fmax*D)/(pi*d^3)));
sol=solve((Ssy*0.56)/F.S == (Kb*((8*Fmax*D)/(pi*d^3))),d);
0 commentaires
Réponse acceptée
Walter Roberson
le 6 Mar 2021
Modifié(e) : Walter Roberson
le 6 Mar 2021
Q = @(v) sym(v);
format short
%from table A-2
lbf = Q(4.45); %Pound-force to Newton 1 pound-force = 4.45 Newton
inch = Q(25.4); %inch to mm, 1 inch = 25.4 millimeter
%-----------------------------------
%Assumptions
Zie = Q(0.15); %Minimized space usage
F.S = Q(1.2); %Factor of Safety
%--------------------------------------------------------------------------
D = Q(1.25)*inch, fprintf('mm') %Mean Diameter of the Coil
Req_valve_lift = Q(0.9)*inch, fprintf('mm')
Fpreload = Q(50)*lbf, fprintf ('N')
Fmax = Q(150)*lbf, fprintf ('N')
%--------------------------------------------------------------------------
%Table 10-4
syms d
Ssy = Q(1974)*(d^Q(0.108));
Kb = (Q(4)*((Q(1.25)*inch)/d)+Q(2))/(Q(4)*((Q(1.25)*inch)/d)-Q(3));
eqn = (Ssy*Q(0.56))/F.S == (Kb*((Q(8)*Fmax*D)/(Q(pi)*d^Q(3))));
eqn
sol = solve(eqn,d, 'returncondition', true);
condch = children(sol.conditions);
P = sym2poly(lhs(condch{1}));
z1 = roots(P);
mask = isAlways(subs(condch{2} & condch{3},sol.parameters,z1));
useful_z1 = z1(mask);
d_solutions = subs(sol.d, sol.parameters, useful_z1)
vpa(d_solutions)
5 commentaires
Walter Roberson
le 7 Mar 2021
The change for R2020a turned out to be small. The results are the same as above, though.
You can test for yourself that d around 4.33832 is not a solution by substituting it into eqn
Q = @(v) sym(v);
format short
%from table A-2
lbf = Q(4.45); %Pound-force to Newton 1 pound-force = 4.45 Newton
inch = Q(25.4); %inch to mm, 1 inch = 25.4 millimeter
%-----------------------------------
%Assumptions
Zie = Q(0.15); %Minimized space usage
F.S = Q(1.2); %Factor of Safety
%--------------------------------------------------------------------------
D = Q(1.25)*inch, fprintf('mm') %Mean Diameter of the Coil
Req_valve_lift = Q(0.9)*inch, fprintf('mm')
Fpreload = Q(50)*lbf, fprintf ('N')
Fmax = Q(150)*lbf, fprintf ('N')
%--------------------------------------------------------------------------
%Table 10-4
syms d
Ssy = Q(1974)*(d^Q(0.108));
Kb = (Q(4)*((Q(1.25)*inch)/d)+Q(2))/(Q(4)*((Q(1.25)*inch)/d)-Q(3));
eqn = (Ssy*Q(0.56))/F.S == (Kb*((Q(8)*Fmax*D)/(Q(pi)*d^Q(3))));
eqn
sol = solve(eqn,d, 'returncondition', true);
condch = children(sol.conditions);
P = sym2poly(lhs(condch(1)));
z1 = roots(P);
mask = isAlways(subs(condch(2) & condch(3),sol.parameters,z1));
useful_z1 = z1(mask);
d_solutions = subs(sol.d, sol.parameters, useful_z1)
vpa(d_solutions)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Number Theory dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


