21 views (last 30 days)

Show older comments

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

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

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

Start Hunting!