1

嗨,我想用mathematica来求解线性方程组。我有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 ...没有任何工作了。 为什么数学这样的问题解决了这个问题? 有没有办法解决这个问题?

感谢您的帮助,

安德烈亚斯

+0

你可能会尝试linearsolve,但它象征性地解决这样的大型系统根本不实际。 – agentp 2014-09-19 11:49:32

+0

不幸的是,LinearSolve不能与以下错误消息一起使用: 没有更多可用内存。 Mathematica内核已关闭。 尝试退出其他应用程序,然后重试。 – Madprofessor 2014-09-19 12:20:34

+0

这里你的大目标是什么?完全一般地解决18乘18方程组可能是不可能的。为了什么目的,你想解决它?如果我们知道大局是什么,我们可能会提供一些建议。 – 2014-09-19 17:14:04

回答

2

你只需要更多的内存:

象征性的解决方案包括N + 1度的决定因素,在这里是需要的内存的估计。

bc[n_] := (A = Det[Array[a, {n, n}]];ByteCount[A]) 
ListLogPlot[ 
    t = Table[ {n, (n + 1) bc[n] /1024^3 // N} , {n,2,10}], Joined -> True] 

enter image description here

外推至n = 18,我们可以看到你只需要大约10^8千兆字节..

(这就是1000倍比任何人都没有得到该点的最大的超级计算机更)