Я пытаюсь решить систему уравнений, которая возникает в результате оценки дифференциального уравнения 4-го порядка. Для этого требуется создать большую матрицу (А), обычно 105 х 105, принимая обратное и умножая на матрицу 105 х 1 (В). Для этого я использую линейную алгебру подход, решая Ax = B.Решение большой системы уравнений с использованием VBA
Запуск следующего кода:
Dim A(1 To 105, 1 To 105) As Double
Dim B(1 To 105) As Double
Dim i As Integer
' Used to make sure all values of A are initialized to zero
For i = 1 To 105
For j = 1 To 105
A(i, j) = 0
Next
Next
For i = 1 To 105
A(i, i) = EI
A(i, i + 1) = -4 * EI + axial * h^2
A(i, i + 2) = 6 * EI - 2 * axial * h^2 + km(i) * h^4
A(i, i + 3) = -4 * EI + axial * h^2
A(i, i + 4) = EI
B(i) = W * h^4
Next
Dim x(1 To 105) As Variant
x = Application.WorksheetFunction.MMult((Application.WorksheetFunction.MInverse(A)), B)
результатов «ошибка времени выполнения„1004“: Не удается получить свойство MINVERSE класса рабочего листа «
Я исследовал эту ошибку, и, похоже, это означает, что я передаю плохие данные функции как текстовые, так и пустые значения, поэтому я добавил две петли вверху, чтобы инициализировать матрицу А до 0 однако это ничего не делало. Изучив еще несколько, я нашел несколько неясных сообщений о максимальном размере матриц 52 х 52, но не смог найти больше информации об этом.
Ограничение 52 x 52 было снято в версии 2007 года, я верю, но большие матрицы часто близки к сингулярным, что, я думаю, будет проблемой здесь. Вместо этого попробуйте найти методы для инвертирования разреженных матриц, которые могут быть более эффективными и точными для этого типа проблем. Также обратите внимание, что последний аргумент в коде требует транспонирования. –