matlab进行非线性方程组求解时,想使用fsolve解非线性方程组,但是自定义函数一直报错:显示输入参数的数目不足
n=[1.3330 1.54427 1.461 1.489847];
d=[1 2.165 1.254];
v=1.26717E-16;
x0=[0,0,0];
x = fsolve(myRi,x0)
function F = myRi(x)
F(1)=1-(((n(1)-1)*x(1)+(n(2)-1)*x(2)+(n(3)-1)*x(3))/((n(4)-1)*v));
F(2)=v-x(1)-x(2)-x(3);
F(3)=(d(2)*x(2)/0.035/v)-(3/(1-((x(2)/(x(2)+x(3))*(1-(3/(d(2)*d(2)+2))))+(x(3)/(x(2)+x(3))*(1-(3/(d(3)*d(3)+2))))))-2)^(0.5);
end
计算出方程的三个解
把n d v放在函数里,fsolve里再加个@就行了,不过初始点[0,0,0]在你的函数里没有意义,所以我把初始值改成[1,1,1]了
x0=[1,1,1];
x = fsolve(@myRi,x0);
function F = myRi(x)
n=[1.3330 1.54427 1.461 1.489847];
d=[1 2.165 1.254];
v=1.26717E-16;
F(1)=1-(((n(1)-1)*x(1)+(n(2)-1)*x(2)+(n(3)-1)*x(3))/((n(4)-1)*v));
F(2)=v-x(1)-x(2)-x(3);
F(3)=(d(2)*x(2)/0.035/v)-(3/(1-((x(2)/(x(2)+x(3))*(1-(3/(d(2)*d(2)+2))))+(x(3)/(x(2)+x(3))*(1-(3/(d(3)*d(3)+2))))))-2)^(0.5);
end