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 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by