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

МИНООБРНАУКИ  РОССИИ

ФЕДЕРАЛЬНОЕ Государственное БЮДЖЕТНОЕ образовательное  учреждение высшего профессионального  образования

«пензенский государственный университет»

 

Физико-математический

факультет

Кафедра

«Компьютерные технологии»


 

 

 

КУРСОВАЯ РАБОТА

на тему:

 

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

 

 

 

                                      Выполнил: студент гр. МИ-52

          Кузина Е.А.

Проверил: к.ф-м.н., доцент Горюнов Ю.Ю.

                        Оценка:___________

 

 

 

Пенза 2013 г.

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ ………………………………………………………………………….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

 

 

 

 

 

 

 

 

 

 

 

 

 

ВВЕДЕНИЕ

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

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

Заметное развитие получили языки программирования для символьных вычислений Reduce, система muMath для малых ЭВМ, а в дальнейшем — интегрированные системы символьной математики для персональных компьютеров: Maple, MathCad, Mathematicа, Maxima, Scilab и т.д. Тем самым обуславливается актуальность темы, так как применение математических систем облегчает самые сложные математические, статистические и финансово-экономические расчеты, для проведения которых раньше приходилось привлекать научную элиту — математиков-аналитиков.

В этой связи целью работы является изучение основ работы с программой Maple; знать команды, используемые при решении уравнений и их систем, неравенств и их систем в системе аналитических вычислений Maple; уметь применять указанные команды для решения математических задач.

 

 

Глава 1 Синтаксис. Основные объекты и функции системы MAPLE

    1. Основные объекты системы

Система аналитических вычислений Maple – интерактивная система. В данном случае это означает, что пользователь вводит команду или оператор языка Maple в области ввода рабочего листа и, нажав клавишу<Enter>, сразу же передает ее аналитическому анализатору системы, который выполняет ее. При правильном введении команды в области вывода появляется результат выполнения этой команды, если команда содержит синтаксические ошибки или ошибки выполнения, система печатает сообщение об этом. Если ошибку надо исправить, то следует вернуться к оператору, откорректировать его и снова выполнить. Выполнив введенную команду, система ожидает очередной команды от пользователя. Можно вернуться в любой момент к любой команде или оператору на рабочем листе, подкорректировать его и снова выполнить. Однако, если, на рабочем листе есть команда, использующая результат вновь вычисленной, то ее следует также снова вычислить, установив на нее курсор, и, нажав клавишу<Enter>, а если таких команд много, то можно выполнить команду графического интерфейса Edit ®Execute ®Worksheet для повторного вычисления всех команд рабочего листа.

Каждый оператор или команда  обязательно завершаются разделительным знаком. Таких знаков в системе Maple два – точка с запятой (;) и двоеточие (:). Если предложение завершается точкой с запятой, то оно вычисляется, а в области вывода отображается результат. При использовании двоеточия в качестве разделителя команда выполняется, но результаты ее работы не отображаются в области вывода рабочего листа. Это удобно, например, при программировании в Maple, когда нет необходимости в выводе каких-то промежуточных результатов, получаемых из операторов цикла, так как вывод этих результатов может занять много места на рабочем листе, да и может потребоваться значительное количество времени на их отображение.

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

Простейшими объектами, с которыми может работать Maple, являются числа, константы и строки.

 

    1. Переменные, неизвестные и выражения

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

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

MyName, myname, my_name

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

В качестве имен запрещено  использовать зарезервированные слова  языка Maple:

 

and

end

in

od

save

break

error

intersect

option

stop

by

export

local

options

then

catch

fi

minus

or

to

description

finally

mod

proc

try

do

for

module

quit

union

done

from

next

read

use

elif

global

not

return

while

else

if

     

 

Нельзя использовать защищенные слова Maple, к которым относятся имена неизменяемых констант. Попытка присвоить такому имени какое-либо значение приводит к ошибке:

>Catalan:=7;

Error, attempting to assign to `Catalan` which is protected

Ошибка, попытка присвоить значение защищенному символу `Catalan`

Выражение – это комбинация имен переменных, чисел и, возможно, других объектов Maple, соединенных знаками допустимых операций. Единственным предназначением выражения является его вычисление и получение некоего результата, который можно использовать в операторах языка Maple при дальнейших вычислениях.

Если в выражении используется переменная, которой не присвоено никакого числового или строкового значения, то такая переменная рассматривается системой Maple как некая неизвестная величина, а выражение, содержащее неизвестные, называется символьным выражением. Именно для работы с такими выражениями прежде всего и разрабатывался Maple.

Основная деятельность пользователя Maple направлена на выполнение разнообразных преобразований с символьными выражениями.

Важной операцией в Maple является операция присваивания(:=). Она имеет следующий синтаксис:

переменная: = выражение

С помощью переменных можно  хранить и обрабатывать разнообразные  типы данных, с которыми работает Maple. По умолчанию переменная Maple имеет тип symbol, представляющий символьную переменную, и ее значением является ее собственное имя. Поэтому простое объявление переменной m оператором m; приведет к отображению в области вывода рабочего листа имени этой переменной.

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

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

 

    1. Функции системы MAPLE

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

Таблица 3. Основные математические функции

Функция

Синтаксис Maple

 

Функция

Синтаксис Maple

ex

exp(x)

 

sqrt(x)

ln(x)

ln(x) или log(x)

 

abs(x)

log10 (x)

 

sgn(x)

signum(x)

log[a] (x)

 

n!

n!


 

Тригонометрические и  гиперболические функции указаны  в табл. 4. Отметим несоответствие записи некоторых функций в русскоязычной математической литературе и в англоязычной, например функции тангенса угла. Значения параметров тригонометрических функций задаются в радианах.

Таблица 4. Тригонометрические и гиперболические функции

Функция

Синтаксис Maple

 

Функция

Синтаксис Maple

sin(x)

sin(x)

 

sh(x)

sinh(x)

cos(x)

cos(x)

 

ch(x)

cosh(x)

tg(x)

tan(x)

 

th(x)

tanh(x)

sec(x)

sec(x)

 

sech(x)

sech(x)

cosec(x)

csc(x)

 

cosech(x)

csch(x)

ctg(x)

cot(x)

 

cth(x)

coth(x)


 

Задание обратных тригонометрических и обратных гиперболических функций представлено табл. 5.

 

Таблица 5. Обратные тригонометрические и гиперболические функции

Функция

Синтаксис Maple

 

Функция

Синтаксис Maple

arcsin(x)

arcsin(x)

 

arcsh(x)

arcsinh(x)

arccos(x)

arccos(x)

 

arcch(x)

arccosh(x)

arctg(x)

arctan(x)

 

arcth(x)

arctanh(x)

arcsec(x)

arcsec(x)

 

arcsech(x)

arcsech(x)

arccosec(x)

arccsc(x)

 

arccosech(x)

arccsch(x)

arcctg(x)

arccot(x)

 

arccth(x)

arccoth(x)


 

 

 

 

 

 

Глава 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