Ошибка, слишком много уровней рекурсии | Maple

#maple

Вопрос:

Я пишу программу, которая решает систему уравнений с использованием метода Гаусса, но я получаю ошибку, связанную с рекурсией, но в моем коде нет рекурсии, как я могу это исправить?

 n := 12; k := 2; A := Matrix([[1, 2, 1], [4, 5, 6], [7, 8, n]]); B := Vector([2, n, n^2]) Ao = Matrix([A, B]);  n1 := 3; s := 0; for k from 1 to n1-1 do; for j from k to n1 do; s := s abs(A[j, k]); end do; if s = 0 then print("Error") end if; for j from k   1 to 3 do; m := Ao[j, k]/Ao[k, k]; for p from k 1 to 4 do; Ao[j, p] := -m*Ao[k, p] Ao[j, p]; end do;end do;end do; if Ao[n1,n1] = 0 then print("Error") else x[n] := (Ao[n1,n1 1])/(Ao[n1,n1]); end if; for i from n1 by -1 to 1 do; sums := 0; for j from i   1 to n1 do; sums := sums   Ao[i, j]*x[j];end do; x[i] := (Ao[i, n1 1]-sums)/Ao[i, i]; end do; print("x1" = x[1], "x2" = x[2], "x3" = x[3]);  

Ответ №1:

У тебя есть линия,

 Ao = Matrix([A, B]);  

который создает уравнение, но не выполняет задание.

Правильный синтаксис для присвоения был бы,

 Ao := Matrix([A, B]);  

С Ao неназначенным (как у вас есть) следующая строка представляет собой рекурсивное указание на неинициализированную индексированную ссылку Ao[j,p]

 Ao[j, p] := -m*Ao[k, p] Ao[j, p];  

Если вы исправите строку, чтобы выполнить фактическое назначение, то код вычислит результат, соответствующий решению из,

 LinearAlgebra:-LinearSolve(A,B);