-2

我正在尝试在 MATLAB 上同时求解非线性方程组。我收到错误消息:

逗号分隔的列表扩展具有非单元格的数组的单元格语法”。

附上错误截图:

错误

我的代码如下:

syms x y z T
x1=1;
x2=1;
x3=1;
x4=1;
y1=1;
y2=1;
y3=1;
y4=1;
z1=1;
z2=1;
z3=1;
z4=1;
c=1;
t1=1;
t21=1;
t31=1;
t41=1;
eq1 = ((x1 - x)^2 + (y1 - y)^2 + (z1 - z)^2 )^1/2 - (c * t1) + (c * T)==0;
eq2 = ((x2 - x)^2 + (y2 - y)^2 + (z2 - z)^2 )^1/2 - (c * t21) - (c*t1) + (c*T)==0;
eq3 = ((x3 - x)^2 + (y3 - y)^2 + (z3 - z)^2 )^1/2 - (c * t31) - (c*t1) + (c*T)==0;
eq4 = ((x4 - x)^2 + (y4 - y)^2 + (z4 - z)^2 )^1/2 - (c * t41) - (c*t1) + (c*T)==0;
sol = solve(eq1, eq2, eq3, eq4);
xSol = sol.x
ySol = sol.y
zSol = sol.z
TSol = sol.T
4

1 回答 1

1

当我运行您的代码时,我的 MATLAB 2020a 中没有错误。

但是它返回一个空的解决方案。这是正常的,你的方程是不可解的。检查eq1eq2。对于您的价值观,它们是:

eq1 = ((1 - x)^2 + (1- y)^2 + (1 - z)^2 )^1/2 - (1) + (1 * T)==0;
eq2 = ((1 - x)^2 + (1- y)^2 + (1 - z)^2 )^1/2 - (2) + (1 * T)==0;

这当然没有解决方案,正如您基本上所说:

eq1= ((1 - x)^2 + (1- y)^2 + (1 - z)^2 )^1/2 + (1 * T)==1
eq2= ((1 - x)^2 + (1- y)^2 + (1 - z)^2 )^1/2 + (1 * T)==2

两者不能共存。

您可能使用的是旧版本的 MATLAB,当解决方案不存在时会引发警告,并且不允许您稍后阅读它,而您的错误发生在哪里。

于 2020-06-04T10:29:33.940 回答