Создайте матрицы по конкретным звонкам

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

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

Команда matrix создает матрицу по Dom::ExpressionField(). Компоненты таких матриц могут быть произвольными арифметическими выражениями. Также можно создать собственного матричного конструктора и использовать его, чтобы создать матрицы с элементами в конкретном звонке. При работе с такими матрицами большинство функций MuPAD® выполняет вычисления по заданному звонку. Одним исключением являются библиотечные функции numeric. Вызов Dom::Matrix(R) создает конструктора для матриц произвольных размерностей с элементами в кольцевом R. Чтобы задать кольцевой R, можно использовать предопределенные звонки и поля, такие как Dom::Integer или Dom::IntegerMod(n) или другие от библиотеки Dom. Например, задайте конструктора, который создает матрицы по звонку целых чисел:

constructor := Dom::Matrix(Dom::Integer)

Используйте того конструктора, чтобы произвести матрицы с целочисленными элементами:

A := constructor(3, 3, [[1, 2, 3], [2, 3, 1], [3, 1, 2]])

Когда вы используете конструктора, чтобы создать матрицу, необходимо гарантировать, что все элементы матрицы принадлежат звонку или могут быть преобразованы в элементы в том звонке. В противном случае конструктор выдает ошибку и не создает матрицу:

constructor(3, 3, [[1/3, 2, 3], [2, 3, 1], [3, 1, 2]])
Error: Unable to define a matrix over 'Dom::Integer'. [(Dom::Matrix(Dom::Integer))::new]

Если вы используете конструктора, чтобы создать матрицу по конкретному звонку, вы не можете использовать ту матрицу в операциях, которые создают матрицы с элементами за пределами звонка. Например, вы не можете вычислить инверсию матричного A, потому что обратная матрица содержит числа нецелого числа:

1/A

Теперь, создайте матрицу, содержащую те же элементы как A, но используйте конструктора для матриц с рациональными числами:

constructorRational := Dom::Matrix(Dom::Rational):
B := constructorRational(3, 3, [[1, 2, 3], [2, 3, 1], [3, 1, 2]])

Вычислите инверсию матричного B:

1/B