I want to know why MATLAB says "Equation solved at initial point"
2 次查看(过去 30 天)
显示 更早的评论
Hi everybody,
I have a code that gives the following answer from MATLAB:
"Equation solved at initial point.
fsolve completed because the vector of function values at the initial
point is near zero as measured by the selected value of the function tolerance,
and the problem appears regular as measured by the gradient. "
What is wrong ?
Thanks a lot to everybody!!
Here the code:
function main
x0 = rand(5,1);
options = optimoptions(@fsolve, 'Algorithm', 'levenberg-marquardt', 'MaxFunctionEvaluations', 1000000, 'MaxIterations', 1000000,'OptimalityTolerance', 1e-10, 'FunctionTolerance', 1e-08);
x = fsolve(@fun,x0,options)
res = fun(x)
k1 = x(1)^2;
k2 = x(2)^2;
k3 = x(3)^2;
k4 = x(4)^2;
k7 = x(5)^2;
%K1 = k3/(k4+k7)
end
function res = fun(x)
k1 = x(1)^2; %because I need positive k's
k2 = x(2)^2;
k3 = x(3)^2;
k4 = x(4)^2;
k7 = x(5)^2;
ET=0.5
i1=0.009621821;
i2=0.030538822;
i3=0.054802544;
i4=0.068189424;
i5=0.084504685;
i6=0.091198126;
i7=0.094544846;
i8=0.110441767;
i9=0.112951807;
i10=0.125502008;
x1=0;
x2=30;
x3=50;
x4=75;
x5=100;
x6=130;
x7=160;
x8=200;
x9=280;
x10=380;
%h correspond à E au niveau de la branche "Dimerization" (eq. 82)
h1 = (-(k2+k1*x1-k7*k3/(k4+k7)*ET)+sqrt((k2+k1*x1-k7*k3/(k4+k7)*ET)^2+4*k2*ET*(2*k1*k3/(k4+k7)*x1+k7*k3/(k4+k7))))/(2*k3/(k4+k7)*(k7+2*k1*x1));
h2 = (-(k2+k1*x2-k7*k3/(k4+k7)*ET)+sqrt((k2+k1*x2-k7*k3/(k4+k7)*ET)^2+4*k2*ET*(2*k1*k3/(k4+k7)*x2+k7*k3/(k4+k7))))/(2*k3/(k4+k7)*(k7+2*k1*x2));
h3 = (-(k2+k1*x3-k7*k3/(k4+k7)*ET)+sqrt((k2+k1*x3-k7*k3/(k4+k7)*ET)^2+4*k2*ET*(2*k1*k3/(k4+k7)*x3+k7*k3/(k4+k7))))/(2*k3/(k4+k7)*(k7+2*k1*x3));
h4 = (-(k2+k1*x4-k7*k3/(k4+k7)*ET)+sqrt((k2+k1*x4-k7*k3/(k4+k7)*ET)^2+4*k2*ET*(2*k1*k3/(k4+k7)*x4+k7*k3/(k4+k7))))/(2*k3/(k4+k7)*(k7+2*k1*x4));
h5 = (-(k2+k1*x5-k7*k3/(k4+k7)*ET)+sqrt((k2+k1*x5-k7*k3/(k4+k7)*ET)^2+4*k2*ET*(2*k1*k3/(k4+k7)*x5+k7*k3/(k4+k7))))/(2*k3/(k4+k7)*(k7+2*k1*x5));
h6 = (-(k2+k1*x6-k7*k3/(k4+k7)*ET)+sqrt((k2+k1*x6-k7*k3/(k4+k7)*ET)^2+4*k2*ET*(2*k1*k3/(k4+k7)*x6+k7*k3/(k4+k7))))/(2*k3/(k4+k7)*(k7+2*k1*x6));
h7 = (-(k2+k1*x7-k7*k3/(k4+k7)*ET)+sqrt((k2+k1*x7-k7*k3/(k4+k7)*ET)^2+4*k2*ET*(2*k1*k3/(k4+k7)*x7+k7*k3/(k4+k7))))/(2*k3/(k4+k7)*(k7+2*k1*x7));
h8 = (-(k2+k1*x8-k7*k3/(k4+k7)*ET)+sqrt((k2+k1*x8-k7*k3/(k4+k7)*ET)^2+4*k2*ET*(2*k1*k3/(k4+k7)*x8+k7*k3/(k4+k7))))/(2*k3/(k4+k7)*(k7+2*k1*x8));
h9 = (-(k2+k1*x9-k7*k3/(k4+k7)*ET)+sqrt((k2+k1*x9-k7*k3/(k4+k7)*ET)^2+4*k2*ET*(2*k1*k3/(k4+k7)*x9+k7*k3/(k4+k7))))/(2*k3/(k4+k7)*(k7+2*k1*x9));
h10 = (-(k2+k1*x10-k7*k3/(k4+k7)*ET)+sqrt((k2+k1*x10-k7*k3/(k4+k7)*ET)^2+4*k2*ET*(2*k1*k3/(k4+k7)*x10+k7*k3/(k4+k7))))/(2*k3/(k4+k7)*(k7+2*k1*x10));
%i est la vitesse de catalyse au niveau de la branche "Dimerization" (eq. 86)
i1=k7*k3/(k4+k7)*h1*(ET-h1)/(1+2*k3/(k4+k7)*h1);
i2=k7*k3/(k4+k7)*h2*(ET-h2)/(1+2*k3/(k4+k7)*h2);
i3=k7*k3/(k4+k7)*h3*(ET-h3)/(1+2*k3/(k4+k7)*h3);
i4=k7*k3/(k4+k7)*h4*(ET-h4)/(1+2*k3/(k4+k7)*h4);
i5=k7*k3/(k4+k7)*h5*(ET-h5)/(1+2*k3/(k4+k7)*h5);
i6=k7*k3/(k4+k7)*h6*(ET-h6)/(1+2*k3/(k4+k7)*h6);
i7=k7*k3/(k4+k7)*h7*(ET-h7)/(1+2*k3/(k4+k7)*h7);
i8=k7*k3/(k4+k7)*h8*(ET-h8)/(1+2*k3/(k4+k7)*h8);
i9=k7*k3/(k4+k7)*h9*(ET-h9)/(1+2*k3/(k4+k7)*h9);
i10=k7*k3/(k4+k7)*h10*(ET-h10)/(1+2*k3/(k4+k7)*h10);
res(1) = -i1+k7*k3/(k4+k7)*h1*(ET-h1)/(1+2*k3/(k4+k7)*h1);
res(2) = -i2+k7*k3/(k4+k7)*h2*(ET-h2)/(1+2*k3/(k4+k7)*h2);
res(3) = -i3+k7*k3/(k4+k7)*h3*(ET-h3)/(1+2*k3/(k4+k7)*h3);
res(4) = -i4+k7*k3/(k4+k7)*h4*(ET-h4)/(1+2*k3/(k4+k7)*h4);
res(5) = -i5+k7*k3/(k4+k7)*h5*(ET-h5)/(1+2*k3/(k4+k7)*h5);
res(6) = -i6+k7*k3/(k4+k7)*h6*(ET-h6)/(1+2*k3/(k4+k7)*h6);
res(7) = -i7+k7*k3/(k4+k7)*h7*(ET-h7)/(1+2*k3/(k4+k7)*h7);
res(8) = -i8+k7*k3/(k4+k7)*h8*(ET-h8)/(1+2*k3/(k4+k7)*h8);
res(9) = -i9+k7*k3/(k4+k7)*h9*(ET-h9)/(1+2*k3/(k4+k7)*h9);
res(10) = -i10+k7*k3/(k4+k7)*h10*(ET-h10)/(1+2*k3/(k4+k7)*h10);
end
0 个评论
回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!