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倍比任何人都沒有得到該點的最大的超級計算機更)