fsolve stopped because it exceeded the function evaluation limit, options.MaxFunctionEvaluations = 400 (the default value).
15 ビュー (過去 30 日間)
古いコメントを表示
So I am trying to solve system of equations using fsolve but the message above keeps showing, here is my code
clc; clear; close all;
global X L2 t2 t1 h
L2= 4.42;
X= 4; t2= 100*pi/180; t1=50*pi/180; h=0.5; %initial values%
x= fsolve(@SiccorLift,[X;t2;t1;h]);
X= x(1); t2= x(2)*180/pi; t1= x(3)*180/pi; h= x(4);
function F= SiccorLift(x)
global L2
F(1) = x(1) + L2*cos(x(2)) - 5*cos(x(3));
F(2) = L2*sin(x(2))- 5*sin(x(3));
F(3)= x(1)+ 8*cos(x(3));
F(4)= 8*sin(x(3)) - x(4);
end
0 件のコメント
採用された回答
Walter Roberson
2020 年 12 月 31 日
Use options.
MaxFunctionEvaluations
Also we recommend against using global. See http://www.mathworks.com/help/matlab/math/parameterizing-functions.html
2 件のコメント
Walter Roberson
2020 年 12 月 31 日
format long g
L2= 4.42;
X = 4+1i; t2 = 100*pi/180 + 1i; t1 = 50*pi/180 + 1i; h=0.5; %initial values%
options = optimoptions(@fsolve, 'MaxFunctionEvaluations', 10000, 'MaxIterations', 10000);
x= fsolve(@(x)SiccorLift(x,L2), [X;t2;t1;h], options);
X= x(1); t2= x(2)*180/pi; t1= x(3)*180/pi; h= x(4);
disp(X)
disp(t2)
disp(t1)
disp(h)
function F= SiccorLift(x, L2)
F(1) = x(1) + L2*cos(x(2)) - 5*cos(x(3));
F(2) = L2*sin(x(2))- 5*sin(x(3));
F(3)= x(1)+ 8*cos(x(3));
F(4)= 8*sin(x(3)) - x(4);
end
You can get exact solutions; MATLAB thinks there are four of them, whereas Maple says there are two solutions.
... Yes, this does mean that the complex results are not accidents: the exact solutions are complex-valued.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Symbolic Math Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!