- •Численные методы и универсальные математические пакеты (Номер занятия в оглавлении равен номеру лабораторной работы. Лабораторные работы состоят из практических заданий из соответствующих занятий)
- •Введение
- •Занятие 1. Теория погрешностей Источники и классификация погрешностей.
- •Приближенные числа.
- •2. Погрешность произведения.
- •3. Погрешность частного.
- •Введение в Maple
- •Константы
- •Переменные, неизвестные и выражения
- •Команды преобразования выражений
- •Упрощение выражения: simplify()
- •Раскрытие скобок в выражении: expand()
- •Разложение полинома на множители: factor()
- •Ограничения на неизвестные: assume()
- •Сложные типы данных
- •Последовательность выражений
- •Списки и множества
- •Внутренняя структура выражений
- •Подстановка и преобразование выражений
- •Практическое задание
- •Занятие 2. Приближение функций
- •Приближение полиномом Тейлора
- •Приближение функий заданных таблицей своих значений
- •Алгебраическое интерполирование
- •Интерполяционный многочлен Лагранжа
- •Многочлены Чебышева
- •Разделенные разности и многочлен Ньютона
- •Решение уравнений, неравенств и их систем
- •Команда solve()
- •Команда fsolve()
- •Решение неравенств
- •Дифференцирование и интегрирование
- •Int(выражение, переменная);
- •Практическое задание 1
- •Практическое задание 2
- •Занятие 3. Построение кривой по точкам
- •Линия, построенная методом наименьших квадратов
- •Метод линеаризации данных для экспоненциальной кривой
- •Нелинейный метод наименьших квадратов
- •Линейный метод наименьших квадратов
- •Интерполирование сплайнами
- •Графика в Maple
- •Команда двумерной графики plot()
- •Двумерные команды пакета plots
- •Несколько советов
- •Пространственная графика, команда plot3d()
- •Трехмерные команды пакета plots
- •Практическое задание 1.
- •Практическое задание 2.
- •Практическое задание 3.
- •Практическое задание 4.
- •Занятие 4. Численное дифференцирование Приближение производной
- •Анимация
- •Двумерная анимация
- •Трехмерная анимация
- •Практическое задание 1
- •Практическое задание 2
- •Занятие 5. Численное интегрирование
- •Квадратурные формулы
- •Основы программирования в Maple
- •If булево_выражение then последовательность_операторов
- •Практическое задание 1.
- •Практическое задание 2.
- •Практическое задание 3.
- •Занятие 6. Решение нелинейных уравнений
- •Метод простой итерации
- •Метод бисекции (деления пополам)
- •Метод Ньютона
- •Процедуры в Maple
- •Практическое задание 1.
- •Практическое задание 2.
- •Практическое задание 3.
- •Практическое задание 4.
- •Занятие 7. Решение систем Линейные системы. Метод Гаусса
- •Пакет LinearAlgebra
- •Основные типы данных
- •Элементарные операции с матрицами и векторами
- •Решение систем линейных уравнений
- •Практическое задание 1.
- •Практическое задание 2
- •Практическое задание 3
- •Занятие 8. Решение дифференциальных уравнений
- •Задача Коши
- •Метод Эйлера
- •Методы Рунге-Кутта
- •Системы дифференциальных уравнений
- •Решение обыкновенных дифференцильных уравнений в Maple
- •Практическое задание 1
- •Практическое задание 2.
- •Практическое задание 3.
Пакет LinearAlgebra
Все команды пакета LinearAlgebra можно вызывать непосредственно по имени, предварительно подключив все его команды функцией
> with(LinearAlgebra);
Основные типы данных
Основные типы данных, с которыми работают команды пакета LinearAlgebra, являются скаляры, представляющие как числа, так и алгебраические выражения, а также матрицы и векторы.
Конструктором матриц является команда Matrix() (обязательно с заглавной буквы).
Создание матриц
> Matrix(2);
> Matrix(2,3);
> Matrix(1..1,1..4,6);
> Matrix([[1,2,3],[4,5,6]]);
> Matrix(2,(i,j)->x^i+y^j);
Создать вектор можно конструктором Vector().
В пакете LinearAlgebra различаются векторы-столбцы и векторы-строки. Их можно определять, задавая соответствующее значение последнего параметра: column или row. Первый параметр задает размерность вектора.
Создание векторов
> Vector(2);
> Vector[row](1..3,5);
> Vector([1,2,3]);
> Vector(2,i->x^i);
Разработчики пакета LinearAlgebra предоставили пользователю возможность использования краткой формы задания векторов и матриц:
<a,b,c> создает матрицу или вектор по строкам;
<a|b|c> создает матрицу или вектор по столбцам.
Если величины, задаваемые в угловых скобках, не являются скалярами, то создается матрица, в противном случае вектор.
Краткая форма задания векторов и матриц
> V1:=<1,2,3>; # Создание вектора-столбца
> V2:=<1|2|3>; # Создание вектора-строки
> M1:=<<1|2>,<3|4>>; # Создание матрицы по строкам
> М2:=<<1,3>|<2, 4>>; # Создание матрицы по столбцам
> <М2|M1>; # Создание матрицы из двух других
Для создания специальных типов матриц и векторов — единичных, нулевых, матриц и векторов констант и скалярных — можно использовать специальные конструкторы, хотя объекты указанных типов можно создать и при помощи общих конструкторов.
Специальные типы матриц
> IdentityMatrix(2,2); # Единичная матрица
При задании матриц и векторов больших размеров они не отображаются на рабочем листе. Вместо их содержимого отображается подсказка, что здесь расположен соответствующий объект и указывается его структура и размерность:
> Matrix(15,15,(i,j)->i*j);
Для просмотра подобных векторов и матриц в Maple включена специальная программа просмотра структурированных данных (Structured Data Browser), которую можно вызвать щелкнув дважды в области вывода (на матрицу).
Элементарные операции с матрицами и векторами
Основные операции с матрицами в пакете LinearAlgebra выполняются проще, чем такие же в пакете linalg.
Элементарные операции с векторами и матрицами
> M1:=<<1|2>,<3|4>>;
> M2:=<<10|7>,<8|15>>;
> M1+M2;
> M1-M2;
> 3.1*M1+5*M2;
Так как произведение матриц (имеется в виду операция скалярного умножения) не является коммутативной, то использование операции коммутативного умножения (*) для векторов и матриц приводит к ошибке. Коммутативное умножение можно использовать для перемножения скаляра и матрицы или вектора. В этом случае все элементы этих объектов умножаются на соответствующий скаляр:
> 4*<<7,8>| <1,6*t>>;
Выполнить некоммутативное умножение в Maple можно операцией, символом которой является точка (.). Она никогда не меняет сомножители местами, поэтому произведения x.y.z и x.z.y не являются тождественными:
Скалярные произведения векторов и матриц
> <1,3>.<4|6>; # Вектор-столбец умножается на вектор-строку
> <4|6>.<1,3>; # Вектор-строка умножается на вектор-столбец
> <<3,-1>|<-8,15>|<9,10>>.<<1,x,y>|<4,-7,2>>;
# Матрица 2x3 умножается на матрицу 3x2
Для получения степени квадратной матрицы можно последовательно применить операцию скалярного умножения необходимое число раз или операцию возведения в степень (^):
> M:=<<2,8>|<7,0.5>>;
> M.M.M.M.M;
> M^5;
Показатель степени может быть и отрицательным целым числом, что позволяет вычислять обратную матрицу и ее степени:
> M^(-1);
> %.M;
Для выделения элементов матрицы и ее подматриц используется индексная запись, причем в качестве индекса можно применять диапазон, что позволяет выделять целые блоки исходной матрицы:
> M:=Matrix(5, (i,j)->3*i-j);
> M[3,2];
> M[3,1..-1];
> M[1..-1,2];
> M[2..3,2..4];
Все перечисленные операции можно выполнять с помощью команд пакета LinearAlgebra, которые рекомендуется использовать при программировании в Maple, хотя и допустимо их использование при интерактивной работе. Неполный список команд допустимых операций над матрицами и векторами приведен в таблице
Команды выполнения операций над матрицами и векторами
Название команды |
Описание |
DeleteRow |
Удаление строки матрицы |
DeleteColumn |
Удаление столбца матрицы |
Row |
Выделение строки матрицы |
Column |
Выделение строки матрицы |
SubMatrix |
Выделение подматрицы из заданной матрицы |
SubVector |
Выделение подвектора из заданного вектора |
ScalarMultiply |
Умножение матрицы/вектора на скаляр |
MatrixVectorMultiply |
Скалярное произведение матрицы на вектор-столбец |
DeleteCplumn |
Удаление строки матрицы |
VectorMatrixMultiply |
Скалярное произведение вектора-строки на матрицу |
MatrixMatrixrMultiply |
Скалярное произведение матрицы на матрицу |
Matrixlnverse |
Вычисление обратной матрицы |
Determinant |
Вычисление определителя матрицы |
Minor |
Выделение миноров матрицы |
ConditionNumber |
Вычисление числа обусловленности матрицы |
Eigenvalues |
Вычисление собственных значений матрицы |
Eigenvectors |
Вычисление собственных векторов |
