How to solve non linear equation for one variable?
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Farhan Ashraf
am 24 Apr. 2018
Kommentiert: Farhan Ashraf
am 24 Apr. 2018
Hi, I am trying to solve a non-linear equation for one variable but it's not working. Can somebody help me in this regards? your help would be highly appreciated. Thanks
if
temp=[24 78 139 194 297 397];
yieldstress=[45 36 37 33 30 28];
syms DD positive
solve((6.046.*sqrt(DD))./(1e6)+(9.79.*(1-((-4.7872e-5.*temp).*(log(6.667e-4./(286.*sqrt(DD))))).^(2/3)).^(3/2)).*(3.06) == yieldstress);
end
0 Kommentare
Akzeptierte Antwort
njj1
am 24 Apr. 2018
Bearbeitet: njj1
am 24 Apr. 2018
If you want to solve for multiple values of temp and yieldstress, you will have to use a for loop.
for i=1:numel(temp)
for j=1:numel(yieldstress)
out{i,j} = solve((6.046.*sqrt(DD))./(1e6)+(9.79.*(1-((-4.7872e-5.*temp(i)).*(log(6.667e-4./(286.*sqrt(DD))))).^(2/3)).^(3/2)).*(3.06) == yieldstress(j));
end
end
The output variable "out" contains the values of DD that solve the equations as symbolic numbers (so long as the equation can be solved), and these can be evaluated using the command eval().
3 Kommentare
njj1
am 24 Apr. 2018
If you type in the code exactly as I have then it should work. It will take a while but it should work.
for i=1:numel(temp) for j=1:numel(yieldstress) out{i,j} = solve((6.046.*sqrt(DD))./(1e6)+(9.79.*(1-((-4.7872e-5.*temp(i)).*(log(6.667e-4./(286.*sqrt(DD))))).^(2/3)).^(3/2)).*(3.06) == yieldstress(j)); dd(i,j) = eval(out{i,j}); %DO NOT put DD here end end
FYI, I've run this code for the first few values of temp and yieldstress that you posted above, and Matlab is not able to find an explicit solution.
Weitere Antworten (1)
Torsten
am 24 Apr. 2018
The left-hand side of your equation (6.046.*sqrt(...)...) is a scalar, the right-hand side (yieldstress) is a vector. This is not compatible.
Best wishes
Torsten.
Siehe auch
Kategorien
Mehr zu Calculus finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!