Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metoda_po_inf_ch_2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.83 Mб
Скачать

6.3. Приведение матриц

Практически все алгоритмы приведения матриц к различным специальным формам можно найти в Maple. Ограничимся несколькими замечаниями.

Пример 7 (приведение матриц).

Зададим матрицу

> restart: with(linalg):

> A:=matrix(3,3,[x,y,z,0,9,8,7,6,5]);

Применим алгоритм гауссова исключения

> gausselim(A);

алгоритм гауссова исключения без деления

> ffgausselim(A);

Для работы с символьными матрицами последняя команда предпочтительнее, поскольку исключает деление на ноль.

Приведение матрицы к треугольному виду при помощи алгоритмя Гаусса-Жордана

> A:= array( [[4,-6,1,0],[-6,12,0,1],[-2,6,1,1]] );

> gaussjord(A, 'r');

Эрмитова часть матрицы, зависящей от x, выделяется командой

> H:= inverse(hilbert(2,x));

> hermite(H,x);

Для определения размерности векторного пространства, порожденного столбцами (строками) матрицы и векторов, заметающих это пространство, используют команды

> B:=array( [[0,0,0,1,0],[0,x,0,0,0],[0,0,y,y,0],[0,x,0,1,0]] );

> rowspace(B, 'd');

> d;

> colspace(B, 'd');

> d;

> rowspan(B);

> colspan(B);

Алгоритм разложения Холецкого

> S:= matrix(3,3, [1,2,3,0,1,1,0,0,4]);

> A:= evalm(transpose(S)&*S);

> R := cholesky(A);

LU разложение матриц

> A:= matrix([[1,-2,3,1],[2,k,6,6],[-1,3,k-3,0]]);

> x:= LUdecomp(A,L='l',U='u',U1='u1',R='r',P='p',det='d',rank='ran');

с побочными результатами

> ran;

> evalm(l);

> evalm(x);

и QR разложение

> A:= matrix(3, 3, [1, 2, 3, 0, 0, 1, 2, 3, 4]):

> linalg[QRdecomp](A, Q='q', rank='r');

6.4. Системы линейных уравнений

Если системы уравнений заданы в матричной форме, удобнее использовать пакет linalg.

Пример 8 (решение систем уравнений).

Команда linsolve(A, B) находит вектор (матрицу) X который удовлетворяет уравнению A X = B.

Отметим так же команду leastsqrs(A, b), которая позволяет получить приближение к решению данного уравнения по методу наименьших квадратов, т.е. минимизируя норму вектора (A x - b, 2).

> restart: with(linalg):

> A:= matrix([[1,2],[1,3]]);

> b:= vector([1,-2]);

> linsolve(A, b);

> B:= matrix( [[1,1],[-2,1]] ):

> linsolve(A, B);

> A:= matrix([[5,7],[0,0]]):

> b:= vector([3,0]):

> linsolve(A, b, 'r');

> r;

В последнем примере мы вычислили так же ранг матрицы A.

> A:= array([[1,-1,1],[1,1,-2],[2,0,-1]]);

> b:= vector([1,2,4]);

> leastsqrs(A,b);

> leastsqrs(A,b,'optimize');

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

Контрольные вопросы:

  1. Знать и уметь пользоваться основными командами Maple приведенными выше

  2. Самостоятельно рассмотреть такие темы как: «Решение уравнений» и «Решение дифференциальных уравнений».

  3. Выделить список основных команд с которыми вы познакомились выполняя задание 2. Уметь ими пользоваться.

Задания:

  1. Получить у преподавателя сложную функцию F(G(x,y),z ) )

  2. Продиффиренцировать ее (найти производные всех порядков)

  3. Проверить правильность полученных производных путем интегрирования

  4. Получить матрицу А , (i,j=1..4) и столбец свободных членов B (i=1..4)

  5. Из полученных матриц составить систему линейных уравнений вида A*X=B, и решить ее.

  6. Для выполнения заданий 1..5 использовать приложение Maple.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]