a=9;
d=0.6;
xr1=1;
xg1=1;
xb1=1.2;
x0=[2,2,2,2,2,2,0.6]; % 初始参考点
fun=@(x)[
(x(1)+x(2)+x(1)+2*x(7))-a ,...
(x(2)*3^0.5+d+(x(2)*3^0.5+d)/2)-a ,...
(3^0.5*(x(1)*x(2)+x(2)*x(2)/2)/a/a)/(3^0.5*(x(3)*x(4)+x(4)*x(4)/2)/a/a)-xr1/xg1 ,...
(3^0.5*(x(3)*x(4)+x(4)*x(4)/2)/a/a)/(3^0.5*(x(5)*x(6)+x(6)*x(6)/2)/a/a)-xg1/xb1 ,...
(3^0.5*(x(1)*x(2)+x(2)*x(2)/2)/a/a)/(3^0.5*(x(5)*x(6)+x(6)*x(6)/2)/a/a)-xr1/xb1 ,...
];
x=fsolve(fun,x0); %调用函数
Lr1=x(1)
Lr2=x(2)
Lg1=x(3)
Lg2=x(4)
Lb1=x(5)
Lb2=x(6)
Ld =x(7)
错误使用 vertcat
串联的矩阵的维度不一致。
出错 fsolve (line 230)
fuser = feval(funfcn{3},x,varargin{:});
出错 SIX (line 41)
x=fsolve(fun,x0); %调用函数
原因:
Failure in initial objective function evaluation.
FSOLVE cannot continue.
你好,把函数句柄里面的逗号改成分号就行
a=9;
d=0.6;
xr1=1;
xg1=1;
xb1=1.2;
x0=[2,2,2,2,2,2,0.6]; % 初始参考点
fun=@(x)[
(x(1)+x(2)+x(1)+2*x(7))-a ;...
(x(2)*3^0.5+d+(x(2)*3^0.5+d)/2)-a ;...
(3^0.5*(x(1)*x(2)+x(2)*x(2)/2)/a/a)/(3^0.5*(x(3)*x(4)+x(4)*x(4)/2)/a/a)-xr1/xg1 ;...
(3^0.5*(x(3)*x(4)+x(4)*x(4)/2)/a/a)/(3^0.5*(x(5)*x(6)+x(6)*x(6)/2)/a/a)-xg1/xb1 ;...
(3^0.5*(x(1)*x(2)+x(2)*x(2)/2)/a/a)/(3^0.5*(x(5)*x(6)+x(6)*x(6)/2)/a/a)-xr1/xb1 ;...
]; % 把函数句柄里面的逗号改成分号就行
x=fsolve(fun,x0); %调用函数
Lr1=x(1)
Lr2=x(2)
Lg1=x(3)
Lg2=x(4)
Lb1=x(5)
Lb2=x(6)
Ld =x(7)
结果
Lr1 =
1.722973255909702
Lr2 =
3.117691453619087
Lg1 =
2.367819755812734
Lg2 =
2.738056112727723
Lb1 =
2.522158681936574
Lb2 =
3.038179617322688
Ld =
1.218181017277643
有帮助望采纳哟,谢谢啦