17 views (last 30 days)

Hi there,

I have two problems solving an equation:

Problem 1:

The equation below is to be solved component by component and the results are to be stored line by line in the vector F1. So far so good, how do I teach the loop to use the correct column for the calculations (e.g. f1 (f ,:) or f8 (f ,:) without integrating the function into fsolve?

tau = 0.1

f4 = [3; 2; 6; 8]

f8 = [2; 6; 7; 3]

eq = @(s) s*tau-(0.1.*s^2+3.54.*s-9.53).*f4.^2-f8;

for f = 1:1:length (f4)

F1 (f,:) = fsolve (eq, 0)

end

Problem 2:

The eq described above actually consists of two equations:

eq1 = 0.01*s.^2+3.54.*s-y*9.53

eq2 = y.*f4.^2-f8-s.*tau

It would be desirable to be able to insert both equations separately. Here is the variable y, which disappears after summarizing. Is there a way to combine this with the "problem" above?

Thanks a lot!

Matt J
on 18 Feb 2020

Edited: Matt J
on 18 Feb 2020

Your equations are quadratic and therefore generally have two solutions, s. Fsolve cannot find them both for you. Why aren't you using roots()? Regardless, here are the code changes pertaining to your question:

Problem 1

tau = 0.1

f4 = [3; 2; 6; 8]

f8 = [2; 6; 7; 3]

for i = 1:1:length (f4)

eq = @(s) s*tau-(0.1.*s^2+3.54.*s-9.53).*f4(i).^2-f8(i);

F1 (i,:) = fsolve (eq, 0);

end

Problem 2

for i = 1:1:length (f4)

eq1 = @(sy) [0.01*sy(1).^2+3.54.*sy(1)-sy(2)*9.53 ; ...

sy(2).*f4(i).^2-f8(i)-sy(1).*tau];

F2 (i,:) = fsolve (eq, [0,0]);

end

Matt J
on 18 Feb 2020

What exactly do sy(1) or sy(2) mean in the equation definition?

In Problem 2, you have two unknowns, s and y. Fsolve requires that they be bundled into a vector sy=[s,y].

in F2 the solution is filled with a 2x4 matrix. How does that come about?

Each row is a solution [s,y] corresponding to i=1,2,3,4.

Sign in to comment.

darova
on 18 Feb 2020

This is the correct form

tau = 0.1

f4 = [3; 2; 6; 8]

f8 = [2; 6; 7; 3]

eq = @(s,f4,f8) s*tau-(0.1.*s^2+3.54.*s-9.53).*f4.^2-f8;

for f = 1:1:length (f4)

F1 (f,:) = fsolve (@(s)eq(s,f4(f),f8(f), 0);

end

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 2 Comments

## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/506110-solve-equations-in-a-loop-with-fsolve#comment_798902

⋮## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/506110-solve-equations-in-a-loop-with-fsolve#comment_798902

## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/506110-solve-equations-in-a-loop-with-fsolve#comment_798908

⋮## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/506110-solve-equations-in-a-loop-with-fsolve#comment_798908

Sign in to comment.