在MATLAB中求解非线性方程系统时出现的错误。

问题描述 投票:-1回答:1

我试图在MATLAB上同时解决非线性方程系统。我得到的错误是:"逗号分隔的列表扩展有一个不是单元格的数组的单元格语法"。

逗号分隔的列表扩展有一个数组的单元格语法不是单元格"。

该错误的截图附后。

error

我的代码如下

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
matlab equation symbolic-math non-linear
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的旧版本,当解决方案不存在时,它就会发出警告,并且不允许你以后读取它,你的错误就发生在这里。

© www.soinside.com 2019 - 2024. All rights reserved.