Решение задач линейной алгебры в системе MAPLE

Автор: Пользователь скрыл имя, 06 Мая 2013 в 18:29, реферат

Описание работы

Эру создания компьютерной символьной математики принято отсчитывать с начала 60-х годов. Именно тогда в вычислительной технике возникла новая ветвь компьютерной математики, не совсем точно, но зато броско названная компьютерной алгеброй. Речь шла о возможности создания компьютерных систем, способных осуществлять типовые алгебраические преобразования: подстановки в выражениях, упрощение выражений, операции со степенными многочленами (полиномами), решение линейных и нелинейных уравнений и их систем, вычисление их корней и т. д.

Содержание

ВВЕДЕНИЕ ………………………………………………………………………….3
Глава 1 Основные объекты и функции системы MAPLE ………………………..4
1.Основные объекты и системы…………………………………………………..4
2.Переменные, неизвестные и выражения……………………………………….5
3.Функции системы MAPLE …… ……………………………………………….7
Глава 2 Решение задач линейной алгебры с использованием MAPLE ………….9
2.1 Векторная алгебра……………………………………………………………….9
2.2 Действия с матрицами………………………………………………………….11
2.3 Спектральный анализ матрицы………………………………………………..16
2.4 Системы линейных уравнений и матричные уравнения…………………….19
2.5 Решение обыкновенных уравнений…………………………………………...21
2.6 Решение неравенств……………………………………………………………22
ЗАКЛЮЧЕНИЕ …………………………………………………………………….24
ЛИТЕРАТУРА……………………………………………………………………...25

Работа содержит 1 файл

курсовая.docx

— 214.18 Кб (Скачать)

 

 

 

 

 

 

Глава 2 Решение  задач линейной алгебры с использованием MAPLE

2.1 Векторная алгебра

Основная часть команд для решения задач линейной алгебры  содержится в библиотеке linalg. Поэтому перед решением задач с матрицами и векторами следует загрузить эту библиотеку командой with(linalg).

Способы задания векторов.

Для определения вектора  в Maple используется команда vector([x1,x2,…,xn]), где в квадратных скобках через запятую указываются координаты вектора. Например:

> x:=vector([1,0,0]);

x:=[1, 0, 0]

Координату уже определенного  вектора x можно получить в строке вывода, если ввести команду x[i] , где i - номер координаты. Например, первую координату заданного в предыдущем примере вектора можно вывести так:

> x[1];

1

Вектор можно преобразовать  в список и, наоборот, с помощью  команды convert(vector, list) или convert(list, vector). 

Сложение векторов.

Сложить два вектора a и b можно с помощью двух команд:

1) evalm(a+b);

2) matadd(a,b).

Команда add позволяет вычислять линейную комбинацию векторов a и b:  , где   - скалярные величины, если использовать формат: matadd(a,b,alpha,beta)

Скалярное, векторное произведение векторов и угол между векторами.

Скалярное произведение двух векторов   вычисляется командой dotprod(a,b).

Векторное произведение двух векторов   вычисляется командой crossprod(a,b).

Угол между двумя векторами a и b вычисляется с помощью команды angle(a,b). 

Норма вектора.

Норму (длину) вектора  , которая равна  , можно вычислить с помощью командыnorm(а,2).

Можно нормировать вектор а с помощью команды normalize(a), в результате выполнения которой будет получен вектор единичной длины  . 

Нахождение базиса системы  векторов. Ортогонализация системы  векторов по процедуре Грамма-Шмидта.

Если имеется система n векторов  , то с помощью команды basis([a1,a2,…,an]) можно найти базис этой системы.

При помощи команды GramSchmidt([a1,a2,…,an]) можно ортогонализовать систему линейно-независимых векторов  .

Задание.

1. Даны два вектора:   и  . Найти   и угол между a и b. Для решения этой задачи наберите:

> with(linalg):

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

a:=[2,1,3,2]

b:=[1,2,-2,1]

> dotprod(a,b);

0

> phi=angle(a,b);

2. Найти векторное произведение  , а затем скалярное произведение  , где  ,  .

> restart; with(linalg):

> a:=([2,-2,1]); b:=([2,3,6]);

a:=[2,- 2,1]

b:=[2,3,6]

> c:=crossprod(a,b);

c:=[- 15,- 10,10]

> dotprod(a,c);

0

3. Найти норму вектора  .

> restart; with(linalg):

> a:=vector([1,2,3,4,5,6]): norm(a,2);

4. Из системы векторов:  ,  ,  ,  ,   выделить базис и ортогонализовать его по процедуре Грамма-Шмидта:

> restart; with(linalg):

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

a2:=vector([1,1,-5,3]):

a3:=vector([3,2,8,7]): a4:=vector([0,1,7,-4]):

a5:=vector([2,1,12,-10]):

> g:=basis([a1,a2,a3,a4,a5]);

g:= [a1, a2, a3, a5]

> GramSchmidt(g);

[[1,2,2,- 1], [2,3,- 3,2],  , 

 

2.2 Действия с матрицами  

Определение матрицы.

Для определения матрицы  в Maple можно использовать команду matrix(n, m, [[a11,a12,…,a1n], [a21,a22,…,a2m],…, [an1,an2,…,anm]]), где n - число строк, m – число столбцов в матрице. Эти числа задавать необязательно, а достаточно перечислить элементы матрицы построчно в квадратных скобках через запятую. Например:

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

В Maple матрицы специального вида можно генерировать с помощью дополнительных команд. В частности диагональную матрицу можно получить командой diag. Например:

> J:=diag(1,2,3);

Генерировать матрицу  можно с помощью функции f(i, j) от переменных i, j – индексов матрицы: matrix(n, m, f), где где n- число строк, m – число столбцов. Например:

> f:=(i, j)->x^i*y^j;

> A:=matrix(2,3,f);

Число строк в матрице А можно определить с помощью команды rowdim(A), а число столбцов – с помощью командыcoldim(A). 

Арифметические  операции с матрицами.

Сложение двух матриц одинаковой размерности осуществляется теми же командами, что и сложение векторов:evalm(A+B) или matadd(A,B). Произведение двух матриц может быть найдено с помощью двух команд:

  1. evalm(A&*B);
  2. multiply(A,B).

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

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

> B:=matrix([[-5,1], [7,4]]);

 

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

> multiply(A,v);

> multiply(A,B);

> matadd(A,B);

Команда evalm позволяет также прибавлять к матрице число и умножать матрицу на число. Например:

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

> evalm(2+3*С);

 

 

Определители, миноры и алгебраические дополнения. Ранг и след матрицы.

Определитель матрицы А вычисляется командой det(A).  Команда minor(A,i,j) возвращает матрицу, полученную из исходной матрицы А вычеркиванием i-ой строки и j-ого столбца. Минор Mij элемента aij матрицы А можно вычислить командой det(minor(A,i,j)).  Ранг матрицы А вычисляется командой rank(A).  След матрицы А, равный сумме ее диагональных элементов, вычисляется командой trace(A). 7

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

> det(A);

1

> minor(А,3,2);

> det(%);

-24

> trace(A);

 

Обратная и  транспонированная матрицы.

Обратную матрицу А- , такую что А- 1А=АА- 1=Е, где Е - единичная матрица, можно вычислить двумя способами:

  1. evalm(1/A);
  2. inverse(A).

Транспонирование матрицы А – это изменение местами строк и столбцов. Полученная в результате этого матрица называется транспонированной и обозначается А'. Транспонированную матрицу А' можно вычислить командойtranspose(A).

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

> inverse(A);

> multiply(A,%);

> transpose(A);

 

 

Выяснение типа матрицы.

Выяснить положительную  или отрицательную определенность матрицы можно при помощи команды definite(A,param),где param может принимать значения: 'positive_def' – положительно определена (A>0), 'positive_semidef' – неотрицательно определенная  , 'negative_def' – отрицательно определенная (A<0), 'negative_semidef' -неположительно определенная  . Результатом действия будет константа true – подтверждение, false – отрицание сделанного предположения. Например:

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

> definite(А,'positive_def');

true

Проверить ортогональность  матрицы А можно командой orthog(A).

> В:=matrix([[1/2,1*sqrt(3)/2],

[1*sqrt(3)/2,-1/2]]);

> orthog(В);

true 

 

Функции от матриц.

Возведение матрицы А в степень n производится командой evalm(A^n). Вычисление матричной экспоненты   возможно с помощью команды exponential(A). Например:

> Т:=matrix([[5*a,2*b],[-2*b,5*a]]);

> exponential(Т);

> evalm(Т^2);

 

 

 

 Задание.

  1. Даны матрицы:  ,  ,  . Найти: (AB)C , detA, detB, detC, det[(AB)C]. Наберите:

> with(linalg):restart;

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

> B:=matrix([[-28,93],[38,-126]]):

> C:=matrix([[7,3],[2,1]]):

> F:=evalm(A&*B&*C);

> Det(A)=det(A); Det(B)=det(B); Det(C)=det(C);

Det(F)=det(F);

Det(A)=- 1

Det(B)=- 6

Det(C)=1

Det(F)=6

  1. Дана матрица  , найти: detA,  , A’, det(M22). Наберите:

> A:=matrix([[2,5,7],[6,3,4],[5,-2,-3]]);

> Det(A)=det(A);

Det(A)=- 1

> transpose(A);

> inverse(A);

> det(minor(A,2,2));

- 41

  1. Найти ранг матрицы  .

> A:=matrix([[8,-4,5,5,9], [1,-3,-5,0,-7],

[7,-5,1,4,1], [3,-1,3,2,5]]):

> r(A)=rank(A);

r(A)=3

  1. Вычислить  , где  .

> exponential([[3,-1],[1,1]]);

  1. Дана матрица  . Найти значение многочлена  .

> A:=matrix([[5,1,4],[3,3,2],[6,2,10]]):

> P(A)=evalm(A^3-18*A^2+64*A);

 

2.3 Спектральный анализ матрицы

Собственные числа  и собственные векторы матрицы.

Из курса линейной алгебры  известно, что если Ах=l х, то вектор х называется собственным вектором матрицы А, а число l– собственным числом, соответствующим данному собственному вектору. Совокупность всех собственных чисел матрицы называется спектром матрицы. Если в спектре матрицы одно и тоже собственное число встречается k раз, то говорят, что кратность этого собственного числа равна k.

Для нахождения собственных  чисел матрицы А используется команда eigenvalues(A). Для нахождения собственных векторов матрицы А используется команда eigenvectors(A). В результате выполнения этой команды будут получены собственные числа, их кратность и соответствующие собственные векторы.

Чтобы понять, в каком  виде получаются результаты выполнения команды eigenvectors, внимательно разберитесь со следующим примером: матрица   имеет 3 собственных вектора:  , отвечающий собственному числу   кратности 1,  , отвечающий собственному числу   кратности 1,  , отвечающий собственному числу   кратности 1. Найдем их в Maple:

> A:=matrix([[3,-1,1],[-1,5,-1],[1,-1,3]]):

> eigenvectors(A);

[2,1,{[-1,0,1]}], [3,1,{[1,1,1]}], [6,1,{[1,-2,1]}]

В строке вывода перечислены  в квадратных скобках собственное  число, его кратность и соответствующий  собственный вектор в фигурных скобках , затем следующие наборы таких же данных.  

Характеристический  и минимальный многочлены матрицы.

Для вычисления характеристического  многочлена   матрицы A используется командаcharpoly(A,lambda).

Минимальный многочлен (делитель) матрицы А можно найти с помощью команды minpoly(A,lambda). 

Канонические  и специальные виды матрицы.

Привести матрицу А к нормальной форме Жордана можно командой jordan(A).

К треугольному виду матрицу А можно привести тремя способами:

  1. команда gausselim(A) приводит матрицу А к треугольному виду методом Гаусса;
  2. команда ffgausselim(A) приводит матрицу А к треугольному виду методом Гаусса без деления. Эта команда предпочтительней для работы с символьными матрицами, так как не производит нормировку элементов и исключает возможные ошибки, связанные с делением на нуль;
  3. команда gaussjord(A) приводит матрицу А к треугольному виду методом Гаусса-Жордана.

Характеристическую матрицу   можно вычислить командой charmat(A,lambda).

Задание.

  1. Дана матрица  . Найти ее собственные векторы и собственные числа.

> U:=matrix([[3,2-I],[2+I,7]]):

> eigenvectors(U);

,

  1. Дана матрица  . Найти собственные векторы, собственные числа, характеристический многочлен и минимальный многочлен, Жорданову форму.

> A:=matrix([[3,-I,0],[I,3,0],[0,0,4]]):

> eigenvectors(A);

[2, 1, {([1, - I, 0])}], [4, 2, {([0, 0, 1]), ([- I, 1, 0])}]

> P(lambda):=charpoly(A,lambda);

> d(lambda):=minpoly(A,lambda);

> jordan(A);

  1. Дана матрица  .

Информация о работе Решение задач линейной алгебры в системе MAPLE