Solve equations in a loop with fsolve

조회 수: 2 (최근 30일)
Mepe
Mepe 2020년 2월 18일
댓글: Mepe 2020년 2월 19일
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!
  댓글 수: 2
darova
darova 2020년 2월 18일
Shouldn't the function be dependent?
Mepe
Mepe 2020년 2월 18일
s is the variable we are looking for. f4 and f8 are given by the vectors. Do these still have to be specified as you have declared?

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2020년 2월 18일
편집: Matt J 2020년 2월 18일
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
  댓글 수: 4
Mepe
Mepe 2020년 2월 19일
Now I see. Thanks a lot for your help!!!
Mepe
Mepe 2020년 2월 19일
I still have a question.
Now if I needed both solutions to the quadratic equation, how exactly would that work with the roots () command? according to help, a vector with numerical values must be used. How can I apply this to my problem?

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

darova
darova 2020년 2월 18일
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
  댓글 수: 3
darova
darova 2020년 2월 18일
I made a terrible mistake
Mepe
Mepe 2020년 2월 19일
No problem. Thanks a lot for this solution!!!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by