Как создать матрицу в maxima

Как создать матрицу в maxima

Appends the column(s) given by the one or more lists (or matrices) onto the matrix M .

Appends the row(s) given by the one or more lists (or matrices) onto the matrix M .

Returns the adjoint of the matrix M . The adjoint matrix is the transpose of the matrix of cofactors of M .

Returns the augmented coefficient matrix for the variables x_1 , …, x_n of the system of linear equations eqn_1 , …, eqn_m . This is the coefficient matrix with a column adjoined for the constant terms in each equation (i.e., those terms not dependent upon x_1 , …, x_n ).

Returns a n by m Cauchy matrix with the elements a[i,j] = 1/( x_i + y_i ). The second argument of cauchy_matrix is optional. For this case the elements of the Cauchy matrix are a[i,j] = 1/( x_i + x_j ).

Remark: In the literature the Cauchy matrix can be found defined in two forms. A second definition is a[i,j] = 1/( x_i — y_i ).

Returns the characteristic polynomial for the matrix M with respect to variable x . That is, determinant ( M — diagmatrix (length ( M ), x )) .

Returns the coefficient matrix for the variables x_1 , …, x_n of the system of linear equations eqn_1 , …, eqn_m .

Returns the i ’th column of the matrix M . The return value is a matrix.

Returns a matrix of one column and length ( L ) rows, containing the elements of the list L .

covect is a synonym for columnvector .

load ("eigen") loads this function.

This is useful if you want to use parts of the outputs of the functions in this package in matrix calculations.

Returns a copy of the matrix M . This is the only way to make a copy aside from copying M element by element.

Note that an assignment of one matrix to another, as in m2: m1 , does not copy m1 . An assignment m2 [i,j]: x or setelmx(x, i, j, m2) also modifies m1 [i,j] . Creating a copy with copymatrix and then using assignment creates a separate, modified copy.

Computes the determinant of M by a method similar to Gaussian elimination.

The form of the result depends upon the setting of the switch ratmx .

There is a special routine for computing sparse determinants which is called when the switches ratmx and sparse are both true .

Default value: false

When detout is true , the determinant of a matrix whose inverse is computed is factored out of the inverse.

For this switch to have an effect doallmxops and doscmxops should be false (see their descriptions). Alternatively this switch can be given to ev which causes the other two to be set correctly.

Returns a diagonal matrix of size n by n with the diagonal elements all equal to x . diagmatrix ( n , 1) returns an identity matrix (same as ident ( n ) ).

n must evaluate to an integer, otherwise diagmatrix complains with an error message.

x can be any kind of expression, including another matrix. If x is a matrix, it is not copied; all diagonal elements refer to the same instance, x .

Default value: true

When doallmxops is true , all operations relating to matrices are carried out. When it is false then the setting of the individual dot switches govern which operations are performed.

Default value: true

When domxexpt is true , a matrix exponential, exp ( M ) where M is a matrix, is interpreted as a matrix with element [i,j] equal to exp (m[i,j]) . Otherwise exp ( M ) evaluates to exp ( ev(M) ) .

domxexpt affects all expressions of the form base ^ power where base is an expression assumed scalar or constant, and power is a list or matrix.

Default value: true

When domxmxops is true , all matrix-matrix or matrix-list operations are carried out (but not scalar-matrix operations); if this switch is false such operations are not carried out.

Default value: false

When domxnctimes is true , non-commutative products of matrices are carried out.

dontfactor may be set to a list of variables with respect to which factoring is not to occur. (The list is initially empty.) Factoring also will not take place with respect to any variables which are less important, according the variable ordering assumed for canonical rational expression (CRE) form, than those on the dontfactor list.

Default value: false

When doscmxops is true , scalar-matrix operations are carried out.

Default value: false

When doscmxplus is true , scalar-matrix operations yield a matrix result. This switch is not subsumed under doallmxops .

Default value: true

When dot0nscsimp is true , a non-commutative product of zero and a nonscalar term is simplified to a commutative product.

Default value: true

When dot0simp is true , a non-commutative product of zero and a scalar term is simplified to a commutative product.

Default value: true

When dot1simp is true , a non-commutative product of one and another term is simplified to a commutative product.

Default value: true

When dotassoc is true , an expression (A.B).C simplifies to A.(B.C) .

Default value: true

When dotconstrules is true , a non-commutative product of a constant and another term is simplified to a commutative product. Turning on this flag effectively turns on dot0simp , dot0nscsimp , and dot1simp as well.

Default value: false

When dotdistrib is true , an expression A.(B + C) simplifies to A.B + A.C .

Default value: true

When dotexptsimp is true , an expression A.A simplifies to A^^2 .

Default value: 1

dotident is the value returned by X^^0 .

Default value: false

When dotscrules is true , an expression A.SC or SC.A simplifies to SC*A and A.(SC*B) simplifies to SC*(A.B) .

Returns the echelon form of the matrix M , as produced by Gaussian elimination. The echelon form is computed from M by elementary row operations such that the first non-zero element in each row in the resulting matrix is one and the column elements under the first one in each row are all zero.

triangularize also carries out Gaussian elimination, but it does not normalize the leading non-zero element in each row.

lu_factor and cholesky are other functions which yield triangularized matrices.

Returns a list of two lists containing the eigenvalues of the matrix M . The first sublist of the return value is the list of eigenvalues of the matrix, and the second sublist is the list of the multiplicities of the eigenvalues in the corresponding order.

eivals is a synonym for eigenvalues .

eigenvalues calls the function solve to find the roots of the characteristic polynomial of the matrix. Sometimes solve may not be able to find the roots of the polynomial; in that case some other functions in this package (except innerproduct , unitvector , columnvector and gramschmidt ) will not work. Sometimes solve may find only a subset of the roots of the polynomial. This may happen when the factoring of the polynomial contains polynomials of degree 5 or more. In such cases a warning message is displayed and the only the roots found and their corresponding multiplicities are returned.

In some cases the eigenvalues found by solve may be complicated expressions. (This may happen when solve returns a not-so-obviously real expression for an eigenvalue which is known to be real.) It may be possible to simplify the eigenvalues using some other functions.

The package eigen.mac is loaded automatically when eigenvalues or eigenvectors is referenced. If eigen.mac is not already loaded, load ("eigen") loads it. After loading, all functions and variables in the package are available.

Computes eigenvectors of the matrix M . The return value is a list of two elements. The first is a list of the eigenvalues of M and a list of the multiplicities of the eigenvalues. The second is a list of lists of eigenvectors. There is one list of eigenvectors for each eigenvalue. There may be one or more eigenvectors in each list.

eivects is a synonym for eigenvectors .

The package eigen.mac is loaded automatically when eigenvalues or eigenvectors is referenced. If eigen.mac is not already loaded, load ("eigen") loads it. After loading, all functions and variables in the package are available.

Note that eigenvectors internally calls eigenvalues to obtain eigenvalues. So, when eigenvalues returns a subset of all the eigenvalues, the eigenvectors returns the corresponding subset of the all the eigenvectors, with the same warning displayed as eigenvalues .

The flags that affect this function are:

nondiagonalizable is set to true or false depending on whether the matrix is nondiagonalizable or diagonalizable after eigenvectors returns.

hermitianmatrix when true , causes the degenerate eigenvectors of the Hermitian matrix to be orthogonalized using the Gram-Schmidt algorithm.

knowneigvals when true causes the eigen package to assume the eigenvalues of the matrix are known to the user and stored under the global name listeigvals . listeigvals should be set to a list similar to the output eigenvalues .

The function algsys is used here to solve for the eigenvectors. Sometimes if the eigenvalues are messy, algsys may not be able to find a solution. In some cases, it may be possible to simplify the eigenvalues by first finding them using eigenvalues command and then using other functions to reduce them to something simpler. Following simplification, eigenvectors can be called again with the knowneigvals flag set to true .

A matrix which has just one eigenvector per eigenvalue.

A matrix which has two eigenvectors for one eigenvalue (namely 2).

Returns an m by n matrix, all elements of which are zero except for the [ i , j ] element which is x .

Returns an m by n matrix, reading the elements interactively.

If n is equal to m , Maxima prompts for the type of the matrix (diagonal, symmetric, antisymmetric, or general) and for each element. Each response is terminated by a semicolon ; or dollar sign $ .

If n is not equal to m , Maxima prompts for each element.

The elements may be any expressions, which are evaluated. entermatrix evaluates its arguments.

Returns a matrix generated from a , taking element a [ i_1 , j_1 ] as the upper-left element and a [ i_2 , j_2 ] as the lower-right element of the matrix. Here a is a declared array (created by array but not by make_array ) or a hashed array , or a memoizing function , or a lambda expression of two arguments. (A memoizing function is created like other functions with := or define , but arguments are enclosed in square brackets instead of parentheses.)

If j_1 is omitted, it is assumed equal to i_1 . If both j_1 and i_1 are omitted, both are assumed equal to 1.

If a selected element i,j of the array is undefined, the matrix will contain a symbolic element a [i,j] .

Carries out the Gram-Schmidt orthogonalization algorithm on x , which is either a matrix or a list of lists. x is not modified by gramschmidt . The inner product employed by gramschmidt is F , if present, otherwise the inner product is the function innerproduct .

If x is a matrix, the algorithm is applied to the rows of x . If x is a list of lists, the algorithm is applied to the sublists, which must have equal numbers of elements. In either case, the return value is a list of lists, the sublists of which are orthogonal and span the same space as x . If the dimension of the span of x is less than the number of rows or sublists, some sublists of the return value are zero.

factor is called at each stage of the algorithm to simplify intermediate results. As a consequence, the return value may contain factored integers.

load("eigen") loads this function.

Gram-Schmidt algorithm using default inner product function.

Gram-Schmidt algorithm using a specified inner product function.

Returns an n by n identity matrix.

Returns the inner product (also called the scalar product or dot product) of x and y , which are lists of equal length, or both 1-column or 1-row matrices of equal length. The return value is conjugate (x) . y , where . is the noncommutative multiplication operator.

load ("eigen") loads this function.

inprod is a synonym for innerproduct .

Returns the inverse of the matrix M . The inverse is computed by the adjoint method.

invert_by_adjoint honors the ratmx and detout flags, the same as invert .

Function: invert ( M )

Returns the inverse of the matrix M . The inverse is computed via the LU decomposition.

When ratmx is true , elements of M are converted to canonical rational expressions (CRE), and the elements of the return value are also CRE.

When ratmx is false , elements of M are not converted to a common representation. In particular, float and bigfloat elements are not converted to rationals.

When detout is true , the determinant is factored out of the inverse. The global flags doallmxops and doscmxops must be false to prevent the determinant from being absorbed into the inverse. xthru can multiply the determinant into the inverse.

invert does not apply any simplifications to the elements of the inverse apart from the default arithmetic simplifications. ratsimp and expand can apply additional simplifications. In particular, when M has polynomial elements, expand(invert( M )) might be preferable.

invert( M ) is equivalent to M ^^-1 .

Returns a list containing the elements of the matrix M .

lmxchar is the character displayed as the left delimiter of a matrix. See also rmxchar .

Returns a rectangular matrix which has the rows row_1 , …, row_n . Each row is a list of expressions. All rows must be the same length.

The operations + (addition), — (subtraction), * (multiplication), and / (division), are carried out element by element when the operands are two matrices, a scalar and a matrix, or a matrix and a scalar. The operation ^ (exponentiation, equivalently ** ) is carried out element by element if the operands are a scalar and a matrix or a matrix and a scalar, but not if the operands are two matrices. All operations are normally carried out in full, including . (noncommutative multiplication).

Matrix multiplication is represented by the noncommutative multiplication operator . . The corresponding noncommutative exponentiation operator is ^^ . For a matrix A , A . A = A ^^2 and A ^^-1 is the inverse of A , if it exists. A ^^-1 is equivalent to invert( A ) .

There are switches for controlling simplification of expressions involving dot and matrix-list operations. These are doallmxops , domxexpt , domxmxops , doscmxops , and doscmxplus .

There are additional options which are related to matrices. These are: lmxchar , rmxchar , ratmx , listarith , detout , scalarmatrix and sparse .

There are a number of functions which take matrices as arguments or yield matrices as return values. See eigenvalues , eigenvectors , determinant , charpoly , genmatrix , addcol , addrow , copymatrix , transpose , echelon , and rank .

Математическая система Maxima

Система выполняет операции с комплексными числами. Они записываются в алгебраической форме с мнимой единицей, которая обозначается i (учитывается регистр, то есть используется именно маленькая буква); то есть в виде a+b*i, где а и b — соответственно действительная и мнимая части числа. Например:


Структурированные типы данных

Для создания массивов используется функция matrix.

[Имя матрицы:]matrix([значение элементов в строке, отделяющиеся друг от друга запятой] [,значение элементов в строке, отделяющиеся друг от друга запятой]. )

Значения строк также отделяются запятой.

Следовательно, для создания вектора-строки следует применить функцию так:

Пример создания матрицы:

Работу с матрицами обеспечивают также команды пункта главного меню Алгебра и несколько инструментов панели «Statistics».

Например, создание массива с помощью команд пункта главного меню Алгебра осуществляется так:

  1. Выполнить команду Алгебра > Enter Matrix (Ввести матрицу). Появится окно «Матрица».
  2. Определить размерность матрицы, а при необходимости и ее тип, например «диагональная».
  3. В поле «Name» (Имя) ввести имя матрицы.
  4. Появится окно с матрицей заданной размерности, в котором вводятся элементы матрицы.
  5. Щелкнуть «ОК».
Операции с массивами
Операция Примечание
М1+М2 Добавление Массивы должны быть одинаковой размерности
М1-М2 Вычитание
М1.М2 Умножение массивов Массивы должны быть соответствующей размерности: количество столбцов в левой матрице М1 должно равняться количеству строк в правой матрице М2. Результатом будет новая матрица, которая будет иметь такое же количество строк, как и в матрицы М1, и такое же количество столбцов, как и в матрице М2
М1*М2 Поэлементное умножение массивов или умножение массива на скаляр Массивы должны быть одинаковой размерности. Векторы должны иметь одинаковую структуру, то есть быть оба или столбцами или строками. При выполнении действия умножения двух массивов результатом будет массив такой же размерности, каждый элемент которого является произведением элементов массивов с одинаковыми порядковыми номерами

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

  1. Увеличение количества столбцов. Используется функция addcol, имеющая два аргумента: имя массива и новые элементы в виде списка или матрицы. Список элементов записывается в квадратных скобках; при этом каждый элемент отделяется друг от друга запятой. Следует не забывать применить перед этим оператором действие присвоения для массива, для которого происходит увеличение количества элементов. Например, если нужно прибавить к массиву V1 два элемента (9 и 10), то функция будет иметь вид:
    V1: addcol(V1,[9,10]);
  2. Увеличение количества строк. Используется функция addrow, имеющая два аргумента: имя массива и новые элементы в виде списка или матрицы. Например, если нужно прибавить к массиву V1 еще одну строку с элементами 1,2,3,4,5, то функция будет иметь вид:
    V1: addrow(V1,[1,2,3,4,5]);
  3. Уменьшение количества столбцов. Используется функция submatrix, имеющая синтаксис:
    submatrix(Имя матрицы; начальный номер удаляемого столбца; конечный номер удаляемого столбца).
    Например, если нужно удалить из матрицы V1 6-й и 7-й столбец, то функция будет иметь вид:
    V1: submatrix(V1, 6,7);
  4. Уменьшение количества строк. Используется функция submatrix, имеющая синтаксис:
    submatrix(начальный номер удаляемой строки, конечный номер удаляемой строки; Имя матрицы;)

Для обращения к конкретному элементу массива М используется выражение M[j, i], где М — имя массива, j — номер строки и i — номер столбца. При этом такая запись распространяется и на вектор (одномерный массив), и на матрицу (двумерный массив). Для одномерных массивов просто добавляется еще один элемент: для вектора-столбца это будет номер строки, а для вектора-строки — номер строки. Понятно, что в обоих случаях этот номер всегда равен «1».

Например, если нужно сложить значение второго элемента вектора-строки V0 и четвертого элемента вектора-столбца V1, то это осуществляется так:

Все значения элементов массива могут быть одновременно изменены на одно и то же значение. Для этого необходимо после имени массива добавить знак математической операции и число, на которое нужно изменить все элементы массива. Например, нужно создать новую матрицу, все элементы которой будут равняться «1». Это может быть осуществлено путем создания матрицы, например, с именем М7, все элементы которой равняются «0», а потом использованием оператора:

Специальные функции для создания матриц
zeromatrix(m, n) Создание матрицы размерностью m*n, все элементы которой равняются «0»
ident(n) Создание единичной квадратной матрицы размерностью n*n (все ее элементы равняются нулю, кроме элементов главной диагонали, значение которых равняется «1»)
diagmatrix(n, x) Создание диагональной квадратной матрицы размерностью n*n, элементами главной диагонали которой являются значения переменной x; а все другие ее элементы равняются «0»

Матрицу также можно создать автоматически по определенному алгоритму. Для этого следует выполнить команду Алгебра > Generate Matrix from Expression (Генерировать матрицу из выражения), после чего появится окно «Создать матрицу». В поле «matrix[i, j]» вводится математическое выражение, согласно которого и формируются элементы матрицы. Если в текущей сессии предусматривается использовать матрицу несколько раз, то в окне «Создать матрицу» целесообразно также задать имя матрицы. Такой вариант создания матрицы эквивалентен использованию циклов в языках программирования.


Построение графиков

Графические возможности системы достаточно скромны, но все же она позволяет строить графики трех форматов:

  1. Gnuplot graph. Используется при применении встроенных функций построения графиков. Имеет собственную систему команд, может работать интерактивно (в режиме командной строки) и выполнять скрипты.
  2. Встроенный. По умолчанию предлагается во время выбора инструмента построения графиков на панели «General Math» или по команде Plot > Plot 2d.
  3. Openmath. Система разметки математической семантики, которая назначена дополнить MathML. MathML (от англ. Mathematical Markup Language — язык математической разметки) — это дополнение XML, которое используется для представления математических символов и формул в документах WWW.
Функциональные возможности графиков
Gnuplot graph Встроенный Openmath
Копирование в буфер обмена и вставка из него в другие документы + +
Изменение размеров графика +
Изменение цвета фона +
Форматирование масштабных ординат, легенды +
Изменение цвета, типа и толщины линий + *
Сохранение в форматах JPG, BMP, PNG PS
* Возможно конфигурированием, после чего заданные параметры применяются для всех новых создаваемых графиков.

Формат построенного графика можно изменить. Для этого следует выделить команду для построения графика, выполнить команду Plot > Plot Format и ввести название другого формата графика в поле «Введите новый формат графиков» в окне «Формат графика».


Двумерная (2D) графика

Двумерные графики строятся с помощью функции plot2d.

plot2d(y(x), [x, xmin, xmax])

где y(x) — функция от x, значения которой изменяются на интервале от xmin до xmax.

Обязательными являются все четыре аргумента, при этом только первый аргумент (при условии, что график строится только для одной функции) может быть записан не в скобках, все другие аргументы записываются в квадратных скобках. Это связано с тем, что аргументами функции являются не отдельные переменные-параметры, а списки, для записи которых используются именно квадратные скобки. Например:

На одной координатной плоскости можно одновременно вывести графики нескольких функций. В этом случае первый аргумент plot2d содержит перечень этих функций и записывается в квадратных скобках.

Еще проще строить функции при помощи инструментов «График 2D» и «График 3D» панели «General Math» или по команде Plot > Plot 2d. (Plot 3d). Использование этих команд инициирует появление окна «График 2D» или «График 3D». В этом окне пользователь имеет возможность определить ряд параметров, в частности:

  1. Начальное и конечное значение изменений для переменных x и y.
  2. «Число точек» указывает, сколько опорных точек используется для построения графика.
  3. Опции. Это дополнительные действия, которые можно применить к графику. Их определение начинается с ключевого слова «set». Например, «set grid» задает в графике вывод линий масштабной сетки, а «set size ratio 1» выравнивает масштабы по осям координат: это будет полезно, когда строится круг и нужно, чтобы график строился действительно как круг, а не как овал. Следует заметить, что построение круга в виде овала связано с тем, что разрешающая способность монитора по горизонтали и вертикали является разной, поскольку пиксель не является «круглым».

После формирования график появляется в специальном окне, а автоматически сгенерированная команда построения графика, которая имеет синтаксис wxplot2d — в рабочем документе.

Каждая функция plot инициирует построение графика (или графиков) в новом окне.


Редактирование графика

Нажатие мышью на пиктограмме окна в его заголовке для графиков формата gnuplot открывает меню, пункт «Option» которого содержит команды для форматирования графика: изменение цвета фона, стиля линий, шрифта и т.п.

Последней командой пункта «Option» является «Update \..\wgnuplot.ini». Все изменения, осуществленные во время форматирования графика, являются временными и касаются только графика, для которого осуществляется форматирование. Выполнение пункта «Update \..\wgnuplot.ini» приводит к тому, что изменения запоминаются в файле параметров, применяемых для графиков автоматически, и для всех последующих графиков эти изменения будут применяться по умолчанию.

Для изменения параметров уже построенного графика любого типа следует установить курсор на имени функции для построения графика и щелкнуть «График 2D» на панели «General Math». Это приведет к появлению окна «Графики 2D», в котором, как отмечалось ранее, можно изменить ряд параметров.


Построение графика в полярных координатах

Для этого сначала следует загрузить пакет расширенных графических возможностей, который осуществляется по команде load(draw). В ответ система должна ответить, что она осуществила доступ к нужному файлу:

Для построения графика в полярных координатах применяется функция draw2d со следующими аргументами:

  • user_preamble = «set grid polar», // построение в полярных координатах
  • nticks = n, // n — число точек
  • xrange = [dx1, dx2], // диапазон изменения x
  • yrange = [dy1, dy2], // диапазон изменения y
  • color = red, // цвет
  • line_width = k, // ширина линии, которой строится график
  • title = «общее название графика»,
  • polar(функция, переменная, нижняя_граница _переменной, верхняя_граница _переменной) // функция построения графика

Обязательными являются первый и последний аргументы функции. Первый инициирует построение графика в полярных координатах, последний (polar) — это функция, по которой строится график.

В свою очередь, аргумент polar также имеет несколько аргументов:

  • Функция для графика. В математике в ее роли принято использовать греческие буквы. Эти буквы изменяются на имена-эквиваленты, например theta.
  • Аргумент функции (угловая координата).
  • Начальное значение угла.
  • Конечное значение угла.


Трехмерная (3D) графика

Для построения изображений трехмерных объектов используется функция plot3d.

plot3d(z(x, y), [x, xmin, xmax], [y, ymin, ymax], дополнительные опции)

где z(x,y) — функция от x, y, значения которой изменяются от xmin до xmax и от ymin до ymax.

plot3d(((x — 10)/5)*((y — 10)/5),[x, 0,20],[y, 0,20]);

На одной координатной плоскости можно одновременно построить до трех функций. В этом случае перечень функций записывается в квадратных скобках: plot3d ([функция1, функция2, функция3], [переменная 1, нижний предел переменной, верхний предел переменной], [переменная 2, нижний предел переменной, верхний предел переменной], дополнительные опции).

Редактирование трехмерного графика осуществляется так же, как и двумерного.

Трехмерная поверхность может быть заменена градиентным переходом цветов. Для этого следует применить опцию «set view map».

Задачи высшей математики с Maxima

Пакет Maxima включает большое число функций для решения разнообразных задач линейной алгебры.

Рассмотрим основные функции, позволяющие оперировать матрицами и решать основные задачи линейной алгебры.

3.2.1 Простейшие операции с матрицами

В Maxima на матрицах определены обычные операции умножения на число, сложения и матричного умножения. Последнее реализуется с помощью бинарной операции «.» (точка). Размерности матрицсомножителей должны быть согласованы.

Рассмотрим несколько примеров.

Создание двух прямоугольных матриц:

\parbox<8ex> <(\%o1)>\begin<pmatrix>1 & 2 & 3\cr 4 & 5 & 6\end<pmatrix>» /><br /> <img decoding=транспонирует матрицу:

\parbox<8ex> <(\%o1)>\begin<pmatrix>1 & 2 & 3\end <pmatrix>\quad \parbox<8ex> <(\%o2)>\begin<pmatrix>1\cr 2\cr 3\end<pmatrix>» /></p> <p>Умножение матрицы на число:</p> <p><img decoding=и bсогласованы по размерам):

\parbox<8ex> <(\%o6)>\begin<pmatrix>20 & 20\cr 47 & 47\end<pmatrix>» /></p> <p>Если матрица — левый сомножитель, то правым сомножителем может быть не только вектор-столбец, но и вектор-строка и даже список.</p> <p><b>Maxima</b> позволяет также возводить матрицы в степень, но фактически эта операция применяется к каждому элементу.</p> <h5>3.2.2 Обращение матриц и вычисление определителей</h5> <p>Для обращения матриц используется функция <img decoding=. Пример:

\parbox<8ex> <(\%o1)>\begin<pmatrix>1 & 2\cr 3 & 4\end <pmatrix>\quad \parbox<8ex> <(\%o2)>\begin<pmatrix>-2 & 1\cr \frac<3> <2>& -\frac<1><2>\end <pmatrix>\quad \parbox<8ex> <(\%o3)>\begin<pmatrix>1 & 0\cr 0 & 1\end<pmatrix>» /></p> <p>Определитель вычисляется функцией <img decoding=:

\parbox<8ex><(\%o4)>-2″ /></p> <h5>3.2.3 Характеристический полином, собственные числа и собственные векторы матрицы</h5> <p>Характеристический полином матрицы вычисляется функцией <img decoding=( M— матрица, x— переменная, относительно которой строится полином).

\left( 1-x\right) \,\left( 4-x\right) -6\leqno< (\%o6) >» /><br /> <img decoding=и eigenvectors.

Функция eigenvectorsаналитически вычисляет собственные значения и собственные вектора матрицы, если это возможно. Она возвращает список, первый элемент которого — список собственных чисел (аналогично eigenvalues), а далее идут собственные вектора, каждый из которых представлен как список своих проекций.

Пример:

\parbox<8ex> <(\%o1)>\begin<pmatrix>1 & 1 & 1\cr 2 & 2 & 2\cr 3 & 3 & 3\end<pmatrix>» /><br /> <img decoding=отличается от функции eigenvectorsтем, что возвращает нормированные на единицу собственные векторы.

3.2.4 Ортогонализация

Maxima включает специальную функцию для вычисления ортонормированного набора векторов из заданного. Используется стандартный алгоритм Грама-Шмидта.

Синтаксис вызова: gramschmidt(x)или gschmidt(x).

Аргумент функции — матрица или список. В качестве компонентов системы векторов, на базе которой строится ортонормированная система, рассматриваются строки матрицы alt=»x» />или подсписки списка alt=»x» />. Для использования данной функции необходимо явно загрузить пакет eigen.

/usr/share/maxima/5.13.0/share/matrix/eigen.mac \leqno< (\%o1) >» /><br /> <img decoding=(аналогичный результат даёт функция triangularize(M)):

\parbox<8ex> <(\%o1)>\begin<pmatrix>1 & 2 & 3\cr 4 & 5 & x\cr 6 & 7 & y\end<pmatrix>» /><br /> <img decoding=нормирует диагональный элемент на 1, а triangularize— нет. Обе функции используют алгоритм исключения Гаусса.

3.2.6 Вычисление ранга и миноров матрицы

Для расчёта ранга матрицы (порядка наибольшего невырожденного минора матрицы) используется функция rank.

Матрица a— невырожденная (две строки, ранг равен 2). Вычислим ранг вырожденной матрицы, содержащей линейно-зависимые строки.

\parbox<8ex> <(\%o1)>\begin<pmatrix>1 & 2 & 3 & 4\cr 2 & 5 & 6 & 9\end<pmatrix>» /><br /> <img decoding=, где M— матрица, i,j— индексы элемента, для которого вычисляется минор.

3.2.7 Решение матричных уравнений

Пусть дано матричное уравнение AX = B, где A— квадратная матрица размерности n; B— матрица размерности n\times k; X— неизвестная матрица размерности n\times k. Пусть A— невырожденная матрица (т.е. det(A) \neq 0, тогда существует единственное решение этого уравнения. Решение можно найти по формуле X=A^<-1>B» /></p> <p><b>Пример:</b> Найти решение матричного уравнения <img decoding=, где

A = \left[ \begin<array> <ccc>1 & 2 & 2\\ — 1 & — 1 & 3\\ 2 & 5 & 0 \end <array>\right]$, \ $B = \left[ \begin<array> <c>\begin<array> <cc>\text <10>& 0 \end<array>\\ \begin<array> <cc>— 2 & 5 \end<array>\\ \begin<array> <cc>1 & 4 \end <array>\end <array>\right].» /></p> <p>Сначала зададим матрицы <img decoding=и B:

\parbox<8ex> <(\%o1)>\begin<pmatrix>1 & 2 & 2\cr -1 & -1 & 3\cr 2 & 5 & 0\end<pmatrix>» /><br /> <img decoding=невырожденная, значит, решение существует и единственно. Найдём его:

\parbox<8ex> <(\%o4)>\begin<pmatrix>\frac<5> <3>& -\frac<10> <9>& -\frac<8><9>\cr -\frac<2> <3>& \frac<4> <9>& \frac<5><9>\cr \frac<1> <3>& \frac<1> <9>& -\frac<1><9>\end <pmatrix>\quad \parbox<8ex> <(\%o5)>\begin<pmatrix>18 & -\frac<82><9>\cr -7 & \frac<40><9>\cr 3 & \frac<1><9>\end<pmatrix>» /><br /> <img decoding=, где A— квадратная матрица размерности n, B— матрица размерности k \times n, X— неизвестная матрица размерности k \times n. Если A— невырожденная матрица, то существует единственное решение X=BA^<-1>» />.</p> <p><b>Пример:</b> Найти решение <img decoding=матичного уравнений XA = C, где матрица Aиз предыдущей задачи, C— заданная матрица. Аналогично предыдущему примеру, вычисляем решение:

\parbox<8ex> <(\%o10)>\begin<pmatrix>10 & 0 & -2\cr 5 & 1 & 4\end<pmatrix>\\ \parbox<8ex> <(\%o11)>\begin<pmatrix>16 & -\frac<34> <3>& -\frac<26><3>\cr 9 & -\frac<14> <3>& -\frac<13><3>\end <pmatrix>\quad \parbox<8ex> <(\%o12)>\begin<pmatrix>0 & 0 & 0\cr 0 & 0 & 0\end<pmatrix>» /></p> <p>В общем случае (когда <img decoding=— вырожденная матрица, или A— не квадратная матрица) матричное уравнение AX = Bможно решить при помощи функции solve.

Синтаксис вызова: solve([eq_1,eq_2 . ,eq_n], [x_1,x_2. ,x_m]), где [eq_1,eq_2 . ,eq_n]— список уравнений, [x_1,x_2. ,x_m]— список неизвестных, относительно которых осуществляется решение.

3.2.8 Специальные функции для решения систем линейных и полиномиальных уравнений

Функция linsolve([expr_1,expr_2. ,expr_m], [x_1,x_2. ,x_n])решает список одновременных линейных уравнений [expr_1,expr_2. ,expr_m]относительно списка переменных [x_1. ,x_n].

Выражения [expr_1. ,expr_n]могут быть полиномами указанных переменных и представляться в виде уравнений.

Пример: Решить системы линейных уравнений

\left\< \begin<array> <r>x \hspace <0.75em>+ \hspace <0.75em>y \hspace <0.75em>+ \hspace <0.75em>z \hspace <0.75em>+ \hspace <0.75em>t = 6,\\ 2 x — 2 y + z + 3 t = 2,\\ 3 x — y + 2 z — t = 8 \text <.>\end <array>\right.» /></p> <h2>Как создать матрицу в maxima</h2> <ul> <li>Open with Desktop</li> <li>View raw</li> <li>Copy raw contents Copy raw contents</p> </ul> <p>Copy raw contents</p> <p>Copy raw contents</p> <p><strong>Maxima</strong> -программа для выполнения различных математических операций, также строит графики с помощью прораммы gnuplot. Ее базовый интерфейс — это командная строка.</p> <p><strong>wxMaxima</strong> — пользовательский интерфейс основной программы maxima (имеются встроенные меню для выполнения стандартных математических операций).</p> <p>Символьные вычисления в Maxima</h3> </p> <p>Среда maxima и wxmaxima. Режим калькулятора</h4> </p> <p>Набрать выражение, закончить строку «;» и SHIFT-ENTER для выполнения.</p> <p><strong>(%i1)</strong> — метка для первой строки ввода;</p> <p><strong>(%o1)</strong> — метка для первой строки вывода (результат вычислений).</p> <p><strong>float(%);</strong> — эта команда, выведет строку, которую мы укажем (float(%i1);).</p> <p>Мы послали 5 строк (синие) на выполнение в Maxima. Каждая строка должна завершаться символом «;» или «$». Для «;», Maxima выведет (покажет) результат выполнения строки. При использовании «$» результат будет получен, но не выведен. (Полезно для скрытия промежуточных результатов громоздких вычислений).</p> <p><strong>«1/3»</strong> — вычисляется символьно (простая дробь);</p> <p><strong>«1.0/3.0»</strong> — вычисляется численно (десятичная дробь);</p> <p><strong>%</strong> — использует последний результат вычислений;</p> <p><strong>%o1</strong> — результат выведенный в строке с данным идентификатором.</p> <p>Пример символьного вычисления с последующим переводом в численный результат:</p> <p>Присвоение. Алгебраические выражения</h4> </p> <p>Перевод результата в численную форму:</p> <p>Работа с алгебраическими выражениями:</p> <p>Дифференцирование и интегрирование</h4> </p> <p>Для дифференцирования используется функция «diff».</p> <p>Неопределенные и определенные интегралы:</p> <p>Посмотрим на графике:</p> <p><img decoding=

Определим функцию и проинтегрируем её:

Иногда Maxima задает вопросы. Надо ответить и нажать SHIFT-ENTER. Можно сокращенно (вместо «positive;», можно «p»).

Можно «ответить» заранее (функция «assume») и отменить предположение функция «forget»).

Решение квадратного уравнения:

Функция «matrix» создает матрицы. Матрицы могут содержать нечисловые выражения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *