【发布时间】:2014-09-19 10:33:30
【问题描述】:
您好,我正在尝试使用数学求解线性方程组。我有 18 个方程和 18 个未知数,系数矩阵有满秩。所有条目都是象征性的,因为我试图分析解决问题。不幸的是,Mathematica 从未停止评估。我准备了一个最小的工作示例:
n = 18
A = Table[AA[i, j], {i, 1, n}, {j, 1, n}];
A // MatrixForm
x = Table[xx[i], {i, 1, n}]
b = Table[bb[i], {i, 1, n}]
MatrixRank[A]
sol = Timing[Solve[{A.x == b}, x, Reals]]
A.x == b //. sol[[2]][[1]] // Simplify
对于 n=2,3,4,.. 一切正常。但是在 n=10 的情况下......没有任何效果了。 为什么mathematica 这样的问题能够解决这个问题? 有没有办法解决这个问题?
感谢您的帮助,
安德烈亚斯
【问题讨论】:
-
你可以试试linearsolve,但是用符号来解决这么大的系统根本不切实际。
-
LinearSolve 很遗憾也不适用于以下错误消息:没有更多可用内存。 Mathematica 内核已关闭。尝试退出其他应用程序,然后重试。
-
您在这里的更大目标是什么?完全通用地求解 18 x 18 的方程组可能是不可能的。你想解决它的目的是什么?如果我们知道大局是什么,我们也许可以提供一些建议。
-
我有18个边界条件的边界值问题。所以我必须解决一个由 18 个方程组成的系统。该问题在系统矩阵中几乎没有零值。上面的代码只是一个例子。我尝试用数值求解方程组,但结果不合理。我认为原因是如果我对它进行数值评估,我在系统矩阵中有非常大和非常小的数字。这就是我试图以分析的方式解决它的原因。
-
(1) 解析解决方案不会解决数值错误的问题。它只会将它们推迟到您用数字代替变量的时候。 (2) 对于 10x10,如果您指定
Method选项,例如"OneStepRowReduction"或"CofactorExpansion",您可能会得到结果。 (3) 没有方法可以处理您显示的 18x18 设置。只需考虑它在辅因子方面的样子,以及它们必须有多少不同的术语。 (4) 如果您发布一个指示性数字示例,人们可能会对使用什么方法来避免数字错误产生想法。
标签: wolfram-mathematica symbolic-math equation-solving linear-equation