matlab非线性方程组求解

遇到的问题

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