MATLAB Answers

How to solve non linear equation for one variable?

14 views (last 30 days)
Farhan Ashraf
Farhan Ashraf on 24 Apr 2018
Commented: Farhan Ashraf on 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
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);

Accepted Answer

njj1 on 24 Apr 2018
Edited: njj1 on 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));
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().
Farhan Ashraf
Farhan Ashraf on 24 Apr 2018
what this error mean: A null assignment can have only one non-colon index? can you please guide?

Sign in to comment.

More Answers (1)

Torsten on 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
  1 Comment
Farhan Ashraf
Farhan Ashraf on 24 Apr 2018
Actually I want to calculate DD for each value of yieldstress and temp. Can you please suggest me something?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!