Используйте разреженные и плотные матрицы

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Когда вы используете матрицы в вычислениях MuPAD®, и вычислительное использование эффективности и памяти может зависеть от того, является ли матрица разреженной или плотной. Разреженные матрицы содержат большое количество элементов с нулевым знаком. Внутренняя память матриц в MuPAD оптимизирована для разреженных данных. MuPAD сохраняет ненулевые элементы и их индексы. Когда вы используете разреженные матрицы, MuPAD принимает, что все незаданные элементы являются нулями. При работе с большими разреженными матрицами рассмотрите следующие методы для лучшей производительности:

  • Чтобы создать матрицы, используйте функцию matrix или конструктора Dom::Matrix(), когда это возможно. И конструктор и функция создают матрицы по звонку произвольных выражений MuPAD Dom::ExpressionField().

  • При решении систем уравнений, представленных разреженными матрицами, избегайте вычислительных обратных матриц. Вместо этого используйте linalg::matlinsolve, чтобы найти, что точные символьные решения или numeric::matlinsolve находят числовые приближения.

  • Постарайтесь не создавать большие пустые матрицы, и затем использовать индексированные присвоения для ненулевых значений. Индексируемые присвоения в MuPAD являются дорогими операциями. Указывание элементов одновременно, когда вы создаете матрицу, более эффективно. Например, команда

    matrix(10, 10, [-1, 2, -1], Banded):

    более эффективно, чем

    A := matrix(10, 10):
    for i from 1 to 10 do
      A[i, i] := 2:
    end_for:
    for i from 1 to 9 do
        A[i, i + 1] := -1:
        A[i + 1, i] := -1:
    end_for:

Плотные матрицы содержат только некоторых или никакие элементы с нулевым знаком. MuPAD обеспечивает специальную матричную область для плотных матриц. Чтобы создать такие матрицы, используйте функцию densematrix, которая является ярлыком для конструктора Dom::DenseMatrix(). Также можно использовать конструктора самостоятельно. Для матриц области Dom::DenseMatrix(), индексированного чтения и записи быстрее, чем для матриц области Dom::Matrix().