我有一个由 4 个线性方程组成的系统,其变量是我通过求解以前的系统获得的,但 Solve 函数不会返回输出,尽管它看起来是一个非常容易求解的系统:
Solve[{
-d5c2 dn5t1 - d5c3 dn5t1 - a3 n3t1 -
(d4c1 n4t1 (dn4t2 n5t1 - dn4t1 n5t2))/(n4t2 n5t1 - n4t1 n5t2)
== dn3t1,
-a3 n3t2 - (d5c2 dn5t1 n5t2)/n5t1 -
(d5c3 dn5t1 n5t2)/n5t1 -
(d4c1 n4t2 (dn4t2 n5t1 - dn4t1 n5t2))/(n4t2 n5t1 - n4t1 n5t2)
== dn3t2,
-a3 n3t3 -
(d4c1 n4t3 (dn4t2 n5t1 - dn4t1 n5t2))/(n4t2 n5t1 - n4t1 n5t2) -
(d5c2 dn5t1 n5t3)/n5t1 - (d5c3 dn5t1 n5t3)/n5t1
== dn3t3,
-a3 n3t4 -
(d4c1 n4t4 (dn4t2 n5t1 - dn4t1 n5t2))/(n4t2 n5t1 - n4t1 n5t2) -
(d5c2 dn5t1 n5t4)/n5t1 - (d5c3 dn5t1 n5t4)/n5t1
== dn3t4
}, {a3, d5c2, d5c3, d4c1}]
返回空白输出:
{}
我是这门语言的新手; Solve 可以处理的非数值表达式的大小是否有某种限制或类似的限制?
最佳答案
您的系统没有解决方案。展示如何将其转化为规范的线性代数形式可能会很有用:
sys={
-d5c2 dn5t1 - d5c3 dn5t1 - a3 n3t1 -
(d4c1 n4t1 (dn4t2 n5t1 - dn4t1 n5t2))/(n4t2 n5t1 - n4t1 n5t2)
== dn3t1,
-a3 n3t2 - (d5c2 dn5t1 n5t2)/n5t1 -
(d5c3 dn5t1 n5t2)/n5t1 -
(d4c1 n4t2 (dn4t2 n5t1 - dn4t1 n5t2))/(n4t2 n5t1 - n4t1 n5t2)
== dn3t2,
-a3 n3t3 -
(d4c1 n4t3 (dn4t2 n5t1 - dn4t1 n5t2))/(n4t2 n5t1 - n4t1 n5t2) -
(d5c2 dn5t1 n5t3)/n5t1 - (d5c3 dn5t1 n5t3)/n5t1
== dn3t3,
-a3 n3t4 -
(d4c1 n4t4 (dn4t2 n5t1 - dn4t1 n5t2))/(n4t2 n5t1 - n4t1 n5t2) -
(d5c2 dn5t1 n5t4)/n5t1 - (d5c3 dn5t1 n5t4)/n5t1
== dn3t4
}
lhs = sys[[All, 1]];
rhs = sys[[All, 2]];
(m = Transpose[Coefficient[lhs, #] & /@ {a3, d5c2, d5c3, d4c1}]) // MatrixForm
此时您可以尝试LinearSolve[m,rhs]
,但在本例中它会报告
Linear equation encountered that has no solution
我们看到这是因为行列式为零。
Det[m]
0
从根本上来说,您的未知数 d5c2
和 d5c3
在每个方程中都具有相同的系数,因此您实际上有四个方程,而只有三个未知数。
关于wolfram-mathematica - 使用 Solve 解决线性系统问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39430108/