求助各位大神,我用fsolve求解了一个四元非线性方程组,方程比较复杂,得到了结果不符合条件。
代码
syms a b c d e g s r t
e=0.2;
g=0.08;
s=1.5;
r=0.1;
t=2;
eq1=0.014696*(1-s*(1+r))*exp(t*(-(1-a-b-c-d-e)-s*a*(1+r)-s*d))+0.985304*exp(t*(-(1-a-b-c-d-e)))+0.03903*(s-s^2*(1+r)-(1+r))*exp(t*(-s*(1-a-b-c-d-e)-a*(1+r)-s^2*a*(1+r)-s^2*d))+0.001513038*(s-(1+r))*exp(t*(-s*(1-a-b-c-d-e)-c/0.004-a*(1+r)))+0.581751*(s-(1+r))*exp(t*(-s*(1-a-b-c-d-e)-a*(1+r)))+0.026544385*(s^2-s*(1+r)-s^3*(1+r))*exp(t*(-s^2*(1-a-b-d-e)-a*s*(1+r)-a*s^3*(1+r)-d*s^3))+0.000703601*(s^2-s*(1+r))*exp(t*(-s^2*(1-a-b-d-g)-a*s*(1+r)-c*s/0.004))+0.336909*(s^2-s*(1+r))*exp(t*(-s^2*(1-a-b-d-g)-a*s*(1+r)))+0.219802093*(s^3-s^2*(1+r))*exp(t*(-s^3*(1-a-b-d-g)-a*s^2*(1+r)-d*s^3))-0.132650563*s^3*(1+r)*exp(t*(-s^3*a-b*(1+s+s^2+s^3)/0.776036))
eq2=0.014696*exp(t*(-(1-a-b-c-d-e)-s*a*(1+r)-s*d))+0.985304*exp(t*(-(1-a-b-c-d-e)))+0.030275854*exp(t*(-s*(1-a-b-c-d-e)-a*(1+r)-s^2*a*(1+r)-s^2*d))+0.002269557*exp(t*(-s*(1-a-b-c-d-e)-c/0.004-a*(1+r)))+0.872625847*exp(t*(-s*(1-a-b-c-d-e)-a*(1+r)))+0.059724865*exp(t*(-s^2*(1-a-b-d-e)-a*s*(1+r)-a*s^3*(1+r)-d*s^3))+0.001583103*exp(t*(-s^2*(1-a-b-d-g)-a*s*(1+r)-c*s/0.004))+0.758045*exp(t*(-s^2*(1-a-b-d-g)-a*s*(1+r)))+0.741832063*(s^3-s^2*(1+r))*exp(t*(-s^3*(1-a-b-d-g)-a*s^2*(1+r)-d*s^3))-10.46988*exp(t*(-s^3*a-b*(1+s+s^2+s^3)/0.776036))
eq3=0.014696*exp(t*(-(1-a-b-c-d-e)-s*a*(1+r)-s*d))+0.985304*exp(t*(-(1-a-b-c-d-e)))-0.021169475*exp(t*(-s*(1-a-b-c-d-e)-c/0.004-a*(1+r)-s^2*a*(1+r)-s^2*d))+0.030275854*exp(t*(-s*(1-a-b-c-d-e)-a*(1+r)-s^2*a*(1+r)-s^2*d))-0.610157226*exp(t*(-s*(1-a-b-c-d-e)-c/0.004-a*(1+r)))+0.872625847*exp(t*(-s*(1-a-b-c-d-e)-a*(1+r)))-0.043864723*exp(t*(-s^2*(1-a-b-d-e)-c*s/0.004-a*s*(1+r)-a*s^3*(1+r)-d*s^3))+0.059724865*exp(t*(-s^2*(1-a-b-d-e)-a*s*(1+r)-a*s^3*(1+r)-d*s^3))-0.370634601*exp(t*(-s^2*(1-a-b-d-g)-a*s*(1+r)-c*s/0.004))+0.758045*exp(t*(-s^2*(1-a-b-d-g)-a*s*(1+r)))+0.219802093*exp(t*(-s^2*(1-a-b-d-g)-a*s*(1+r)))
eq4=-0.00735*exp(t*(-(1-a-b-c-d-e)-s*a*(1+r)-s*d))+0.985304364*exp(t*(-(1-a-b-c-d-e)))-0.00355*exp(t*(-s*(1-a-b-c-d-e)-c/0.004-a*(1+r)-s^2*a*(1+r)-s^2*d))-0.011623989*exp(t*(-s*(1-a-b-c-d-e)-a*(1+r)-s^2*a*(1+r)-s^2*d))+0.204830512*exp(t*(-s*(1-a-b-c-d-e)-c/0.004-a*(1+r)))+0.670065*exp(t*(-s*(1-a-b-c-d-e)-a*(1+r)))-0.01118*exp(t*(-s^2*(1-a-b-d-e)-c*s/0.004-a*s*(1+r)-a*s^3*(1+r)-d*s^3))-0.018742499*exp(t*(-s^2*(1-a-b-d-e)-a*s*(1+r)-a*s^3*(1+r)-d*s^3))+0.09519189*(s^3-s^2*(1+r))*exp(t*(-s^3*(1-a-b-d-g)-a*s^2*(1+r)-d*s^3))
eq1=matlabFunction(eq1);
eq2=matlabFunction(eq2);
eq3=matlabFunction(eq3);
eq4=matlabFunction(eq4);
eq=@(a)[eq1(a(1),a(2), a(3), a(4));eq2(a(1),a(2), a(3), a(4)); eq3(a(1),a(2), a(3), a(4));eq4(a(1),a(2), a(3), a(4))]
[sol,fval]=fsolve(eq,[0.03,0.08,0.001,0.4])
结果是
sol =
0.9799 -0.0319 -0.0039 -2.4881
fval =
1.0e-11 *
-0.1603
0.2842
0.5883
0.0997
但是a,b,c,d应在0,1之间,且加起来不超过1我可以在定义变量时就限制范围吗?
求助大神!!!