fsolve stopped because it exceeded the function evaluation limit, options.MaxFunctionEvaluations = 400 (the default value).
23 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Bassem Essam
am 31 Dez. 2020
Kommentiert: Walter Roberson
am 31 Dez. 2020
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 Kommentare
Akzeptierte Antwort
Walter Roberson
am 31 Dez. 2020
Use options.
MaxFunctionEvaluations
Also we recommend against using global. See http://www.mathworks.com/help/matlab/math/parameterizing-functions.html
2 Kommentare
Walter Roberson
am 31 Dez. 2020
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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Symbolic Math Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!