fsolve stopped because it exceeded the function evaluation limit, options.MaxFunctionEvaluations = 400 (the default value).
11 views (last 30 days)
Show older comments
Bassem Essam
on 31 Dec 2020
Commented: Walter Roberson
on 31 Dec 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 Comments
Accepted Answer
Walter Roberson
on 31 Dec 2020
Use options.
MaxFunctionEvaluations
Also we recommend against using global. See http://www.mathworks.com/help/matlab/math/parameterizing-functions.html
2 Comments
Walter Roberson
on 31 Dec 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.
More Answers (0)
See Also
Categories
Find more on Symbolic Math Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!