Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Пример.
Разложить в степенной ряд
в окрестности х0=0, удерживая 5 первых членов.
[> f(x)=series(exp(-x)*sqrt(x+1), x=0, 5);

Пример.
Построить в одной системе координат графики интеграла ошибок
и его разложения в ряд Тейлора в окрестности нуля (рис. 8.2).
[> restart; readlib(mtaylor):with(plot):
[> taylor(erf(x),x,8): p:=convert(%,polynom);
[> plot({erf(x),p},x=-2..2,thickness=[2,2],
linestyle=[1,3], color=[red, green]);
Рис. 8.2. Графики интеграла ошибок и его разложения в ряд Тейлора
Пунктирной линей изображен график ряда Тейлора, а сплошной – график самой функции.
Пример.
Разложить
в ряд Тейлора в окрестности точки (0, 0) до 6-го порядка.
[> restart; readlib(mtaylor):
[> f=mtaylor(sin(x^2+y^2), [x=0,y=0], 7);
8.5. Интегральные преобразования
В Maple имеется пакет inttrans, в котором содержатся команды различных интегральных преобразований.
8.5.1. Преобразование Фурье
Прямое преобразование Фурье функции f(x) вычисляется по формуле
.
В Maple оно может быть найдено командой fourier(f(x),x, k), где x - переменная, по которой производится преобразование; k - имя переменной, которое следует присвоить параметру преобразования.
Обратное преобразование Фурье задается формулой

и вычисляется командой invfourier(F(k),k, x).
Описанное выше прямое и обратное преобразования Фурье называются комплексными и применяются в тех случаях, когда функция f(x) задана на всей числовой оси. Если функция f(x) задана только при х>0, то рекомендуется использовать синус - и косинус-преобразования Фурье.
Прямое и обратное синус-преобразования Фурье функции f(x) определяются формулами
и
.
Поскольку формулы синус-преобразования Фурье симметричны относительно замены x на k, то в Maple эти преобразования вычисляются одной командой, но с различным порядком указания параметров: fouriersin(f(x),x, k) - вычисляет прямое синус-преобразование Фурье; invfouriersin(F(k),k, x) - вычисляет обратное синус-преобразование Фурье.
Аналогично, прямое и обратное косинус-преобразования Фурье функции f(x) определяются формулами
и
.
В Maple эти преобразования вычисляются одной командой, но с различным порядком указания параметров: fourierсоs(f(x),x, k) - вычисляет прямое косинус-преобразование Фурье; invfourierсоs(F(k),k, x) - вычисляет обратное косинус-преобразование Фурье.
Пример.
Для функции
, a>0 найти обратное преобразование Фурье.
[> invfourier(1/(k^2-a^2),k, x);
После обратного преобразования Фурье результат может содержать специальные функции. В данном примере в строке вывода отобразится функция Хевисайда:
Heaviside(x)=![]()
Результат выполнения обратного преобразования Фурье может иметь более компактный вид после применения команды convert(%,trig).
[> convert(%,trig);

Пример.
Для функции
, a>0 найти синус - и косинус- преобразования Фурье.
[> f:=exp(-a*x)*sin(b*x):
[> fouriercos(f, x,k);
[> fouriersin(f, x,k);

8.5.2. Преобразование Лапласа
Преобразование Лапласа функции f(x) (если оно существует) вычисляется по формуле
.
Получаемая функция F(p) называется изображением.
В Maple это преобразование вычисляется командой laplace(f(x),x, p), где x - переменная, по которой производится преобразование; p - имя переменной, которое следует присвоить параметру преобразования.
Обратное преобразование Лапласа (называемое оригиналом) вычисляется по формуле
.
Оригинал f(x) (если он существует) может быть найден по изображению F(p) командой invlaplace(F(p),p, x).
9. ЛИНЕЙНАЯ АЛГЕБРА
Основная часть команд для решения задач линейной алгебры содержится в библиотеке linalg. Поэтому перед решением задач с матрицами и векторами следует загрузить эту библиотеку командой with(linalg).
9.1. Векторная алгебра
Для задания вектора в 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).
С помощью команды matadd можно также вычислять линейную комбинацию векторов 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]) можно ортогонализовать систему линейно-независимых векторов
.
Пример.
Даны два вектора:
и
. Найти
и угол между a и b.
Пример.
[> restart; with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected
[> 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);
Пример.
Найти векторное произведение
, а затем скалярное произведение
, где
,
.
[> 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
Пример.
Из системы векторов:
,
,
,
,
выделить базис и ортогонализовать его по процедуре Грамма–Шмидта:
[> 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],
,
9.2. Действия с матрицами
9.2.1. Определение матрицы
Для задания матрицы в 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).
9.2.2. Арифметические операции с матрицами
Сложение двух матриц одинаковой размерности осуществляется теми же командами, что и сложение векторов: 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);
![]()
Команда evalf позволяет также прибавлять к матрице число и умножать матрицу на число.
Пример.
[> restart;
[> with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected
[> C:=matrix([[1,1],[2,3]]);
![]()
[> evalm(2+3*C);
![]()
9.2.3. Определители, миноры и алгебраические дополнения,
ранг и след матрицы
Определитель матрицы А вычисляется командой det(A). Команда minor(A, i,j) возвращает матрицу, полученную из исходной матрицы А вычеркиванием i-й строки и j-го столбца. Минор Mij элемента aij матрицы А можно вычислить командой det(minor(A, i,j)). Ранг матрицы А вычисляется командой rank(A). След матрицы А, равный сумме ее диагональных элементов, вычисляется командой trace(A).
Пример.
[> A:=matrix([[4,0,5],[0,1,-6],[3,0,4]]);
[> det(A);
1
[> minor(А,3,2);
[> det(%);
-24
[> trace(A);
9
9.2.4. Обратная и транспонированная матрицы
Обратную матрицу А-1, такую что А-1А=АА-1=Е,
где Е - единичная матрица, которую можно вычислить двумя способами:
1) evalm(1/A);
2) inverse(A).
Транспонирование матрицы А – это изменение местами строк и столбцов. Полученная в результате этого матрица называется транспонированной и обозначается А'. Транспонированную матрицу А' можно вычислить командой transpose(A).
Пример.
Используя заданную в предыдущем пункте матрицу А, найдем ей обратную и транспонированную:
[> inverse(A);
[> multiply(A,%);
[> transpose(A);

9.2.5. Определение типа матрицы
Выяснить положительную или отрицательную определенность матрицы можно при помощи команды definite(A, параметры), где параметры могут принимать значения:
– '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
9.2.6. Функции от матриц
Возведение матрицы А в степень n производится командой evalm(A^n). Вычисление матричной экспоненты
возможно с помощью команды exponential(A).
Пример.
[> Т:=matrix([[5*a,2*b],[-2*b,5*a]]);
[> exponential(Т);
[> evalm(Т^2);
9.3. Спектральный анализ матрицы
Из курса линейной алгебры известно, что если Ах = lх, то вектор х называется собственным вектором матрицы А, а число l – собственным числом, соответствующим данному собственному вектору.
Совокупность всех собственных чисел матрицы называется спектром матрицы. Если в спектре матрицы одно и тоже собственное число встречается k раз, то говорят, что кратность этого собственного числа равна k.
Для нахождения собственных чисел матрицы А используется команда eigenvalues(A). Для нахождения собственных векторов матрицы А используется команда eigenvectors(A). В результате выполнения этих команд будут получены собственные числа, их кратность и соответствующие им собственные векторы.
Пример.
Найти для матрицы
три собственных вектора:
, отвечающий собственному числу
кратности 1,
, отвечающий собственному числу
кратности 1,
, отвечающий собственному числу
кратности 1.
[> 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).
9.4. Системы линейных уравнений, матричные уравнения
Система линейных уравнений
может быть решена двумя способами.
Способ 1: стандартная команда solve находит решение системы линейных уравнений, записанных в развернутом виде:
.
Способ 2: команда linsolve(A, b) из пакета linalg находит решение уравнения
. Аргументы этой команды: А – матрица, b – вектор.
С помощью команды linsolve(A, b) можно найти решение матричного уравнения АХ=В, если в качестве аргументов этой команды указать, соответственно, матрицы А и В.
Ядро матрицы А – это множество векторов х таких, произведение матрицы А на которые равно нулевому вектору:
. Поиск ядра матрицы А эквивалентен решению системы линейных однородных уравнений. Найти ядро матрицы А можно командой kernel(A).
Пример.
Используя матричные методы, привести полученное экспериментальным путем уравнение регрессии второго порядка для помола песка к каноническому виду
,
используя мультипликацию представить графическое отображение изменения dфр от переменных х1, х2, х3.
[> restart;
[> with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected
[> a0:=14.568: a1:=-4.921: a2:=4.851: a3:=5.66: a12:=-1.75: a21:=a12: a13:=-2: a31:=a13: a23:=3.25: a32:=a23: a11:=-7.089: a22:=3.724: a33:=3.118:
[> J1:=a11+a22+a33;
[> A1:=matrix([[a11,a12],[a21,a22]]);
[> A2:=matrix([[a11,a13],[a31,a33]]);
[> A3:=matrix([[a22,a23],[a32,a33]]);
[> J2:=det(A1)+det(A2)+det(A3);
[>J3:=matrix([[a11,a12,a13],[a21,a22,a23], [a31,a23,a33]]);
[> J3:=det(J3);
[>J4:=matrix([[a11,a12,a13,a1],[a21,a22,a23,a2],[a31,a32,a33,a3],[a1,a2,a3,a0]]);
[> J4:=det(J4);
[> R:=J4/J3;
[> ur:=lambda^3-J1*lambda^2+J2*lambda-J3=0;
[> q1:=solve(ur, lambda);
[> lambda1:=q1[1];
[> lambda2:=q1[2];
[> lambda3:=q1[3];
[>ur1:=lambda1*x1^2+lambda2*x2^2+lambda3*x3^2 =d-R;
[> ur2:=ur1/(d-R);
[> with(plots):
Warning, the name changecoords has been redefined
Dфр изменяется от 0 до 10 мкм
[>animate(implicitplot3d,[ur2,x1=-1..1,x2=-1..1, x3=-1..1], d=0..10, scaling=CONSTRAINED, orientation=[-56,49], axes=boxed, frames=50);
На рисунке 9.1. показаны наиболее характерные графические структуры (9 шт.), хотя опция frames=50 показывает 50 графических структур в интервале dфр = 0 -10 мкм









Рис. 9.1. Графическое отображение изменения dфр от переменных х1, х2, х3
10. ПРОГРАММИРОВАНИЕ В СРЕДЕ MAPLE
Математический пакет Maple предоставляет возможность пользователям составлять собственные программы, процедуры и библиотеки. Для этого в пакете существует довольно широкий набор команд и конструкций аналогичный алгоритмическим языкам программирования высокого уровня.
10.1. Условный оператор
Условный оператор в Maple начинается с зарезервированного слова if и обязательно должен заканчиваться, словом fi и имеет следующую структуру:
if условие then выражение 1 else выражение 2 fi;
Данная конструкция дает возможность зависимости от значения логического условия выполнять выражение 1 (в случае если условие истинно) или выражение 2 (в случае если условие ложно). В качестве выражений 1 или 2 могут выступать любые последовательности команд из пакета Maple. Условный оператор может быть записан в сокращенном виде:
if условие then выражение 1 fi;
Пример.
[> restart;
[> x:=4;
x:=4
[>if x>4 then print (‘x>4’); else x:=x^2;
print (2*x); fi;
32
Для реализации сложных условий необходимо использовать полный вариант условного оператора, который имеет следующую структуру.
if условие 1 then выражение 1 elif условие2 then выражение2 … elif условие n then выражение n else выражение n+1 fi;
Как следует из структуры данного оператора вложенность условий может быть практически неограниченной и реализуется при помощи служебного слова elif. В качестве выражений можно использовать любые последовательности команд Maple.
Пример:
[> restart;
[>x:=8:
[>if x<0 then x:=a; elif x=0 then x:=b;elif x<10 then x:=c; else x:=d; fi;
x:=c
10.2. Операторы цикла
В математическом пакете Maple для реализации циклического вычислительного процесса используются четыре вида операторов цикла. Телом всех операторов цикла является последовательность команд, заключенных между служебными словами do и od. Оператор цикла перечисляемого типа, который содержится практически во всех алгоритмических языках имеет, следующую структуру:
for имя переменной цикла from начальное значение переменной цикла by шаг приращения значения переменной цикла to конечное значение переменной цикла
Пример:
[>for i from 0 by 4 to 8 do i od;
0
4
8
Оператор цикла типа «пока» в Maple имеет вид
while условие do выражение od;
В данном случае тело цикла (выражение) выполняется до тех пор, пока значение логического условия истинно и прекращается, если условие - ложно.
Пример.
[> restart;
[>n:=0:
[>while n<5 do n:=(n+1)^n od;
1
2
9
Следующий оператор цикла является симбиозом двух предыдущих и имеет следующую структуру:
for имя переменной цикла from начальное значение переменной цикла by значение приращение шага while условие do выражения od;
В данном операторе цикла выражения выполняются до тех пор, пока логическое выражение условия является истинным, а переменная цикла изменяется от своего начального значения с заданным шагом.
Пример.
[> restart;
[> for y from 0 by 2 while y<=6 do print(y); od;
0
2
4
6
Четвертый оператор цикла предназначен для работы с аналитическими выражениями и представляется следующей структурой:
for имя переменной цикла in выражение 1 do выражение 2 od;
Здесь тело цикла выражение 2 выполняется, в случае если символьная переменная заданная своим именем последовательно принимает значение каждого из операндов алгебраического выражения 1. Отметим, что работа данной конструкции зависит от внутреннего представления выражения 1. Так в случае если выражение 1 является суммой, то имя переменной цикла принимает поочередно значение каждого слагаемого, если произведение – то каждого сомножителя.
Пример.
[> restart;
[> a:=5*x^2+x+6/x;
[> b:=simplify(%);
[> for m in a do m; od;
[> for m in b do m; od;
10.3. Процедуры-функции
Процедуры-функции в Maple можно задавать двумя способами. Для задания процедур-функций первый способ использует символ (à) и задается следующей структурой:
имя функции:=(список формальных параметров) à выражение;
где имя функции задается набором символов латинского алфавита, список формальных параметров вводится через запятую. Выражение – команда Maple, реализующая тело процедуры-функции.
Пример.
[> f1:=(x1,x2)->simplify(x1^2+x2^2);
[> f1(cos(x),sin(x));
1
Второй способ задания процедур-функций использует команду unapply и имеет следующую структуру:
имя функции:=unapply(выражение или операция, список переменных);
Этот способ задания процедур-функций полезен при определении новой функции через известную или, когда вычисленное выражение предполагает использовать как функцию.
Пример.
[> f3:=unapply(diff(z(r)^2,r)-2,z);
[> f3(sin);
[> combine(%);
10.4. Процедуры
Любая процедура в Maple начинается с заголовка, состоящего из имени процедуры, за которым следует знак присваивания и служебное слово proc, далее в круглых скобках через запятую указываются формальные параметры. Процедура обязательно заканчивается служебным словом end. Все выражения и команды заключенными между служебными словами proc и end составляют тело процедуры.
имя процедуры := proc (список формальных параметров); команды (или выражения); end;
Если процедура загружена, то ее вызов осуществляется по имени. Возвращаемым значением по умолчанию является значение последнего выполненного оператора (команды) из тела процедуры, при этом тип результата работы процедуры зависит от типа возвращаемого значения.
Пример.
[> f:=proc(x, y);x^2+y^2;simplify(%);end:
[> f(sin(x),cos(x));
1
При написании процедур в Maple можно использовать ряд команд и служебных слов, кроме указанного выше обязательного минимального набора, которые позволяют описывать переменные, управлять выходом из процедуры, сообщать об ошибках.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 |


