1

Привет Я пытаюсь решить линейную систему уравнений с математикой. У меня 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 ... ничего не работает. Почему математика решает подобные проблемы? Есть ли способ решить эту проблему?

Спасибо за помощь,

Andreas

+0

Вы можете попробовать linearsolve, но просто непрактично символически решать такие большие системы. – agentp

+0

LinearSolve, к сожалению, также не работает со следующим сообщением об ошибке: Больше доступной памяти. Ядро Mathematica отключилось. Попробуйте отказаться от других приложений и повторите попытку. – Madprofessor

+0

Какая у вас крупномасштабная стрелялка. Вероятно, невозможно решить систему уравнений 18-18 в полной общности. С какой целью вы хотите его решить? Мы можем дать некоторые советы, если мы знаем, что такое большая картина. –

ответ

2

Вам просто нужно больше памяти:

Символическое решение включает в себя п + 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

экстраполяцией к п = 18, мы можем видеть, вам нужно всего лишь около 10^8 гигабайтов ..

(Thats 1000x больше, чем крупнейших суперкомпьютеров для тех, кто не получает точку)