Методичка Maple, Стребуляев
.pdf
|
0.5000000000 |
|
2 |
|
PR := |
( 2 R cos(u ) 3 R2 cos(u )2 ) R sin(u) cos(u ) du 0. |
|||
|
||||
|
|
|
|
|
|
0 |
|||
Ищем радиусы предельных циклов
> h:=R*alpha/2-(3*delta*R^3)/8;
|
1 |
3 |
||
h := |
|
R |
|
R3 |
2 |
|
|||
|
8 |
|||
> solve(h,R);
0, |
2 3 |
, |
2 |
3 |
3 |
|
3 |
||
|
|
|
>mu:=0.01:alpha:=0;beta:=0.5;delta:=0.3;sys;
:= 0
:= 0.5
:= 0.3
{ddt y(t ) x(t ) 0.01 (1.0 x(t ) 0.9 x(t )2 ) y(t ), ddt x(t ) y(t )}
>phaseportrait(sys,[x(t),y(t)],t=-6..6, [[x(0)=0.3,y(0)=0.3], [x(0)=1,y(0)=1]],stepsize=0.1,scene=[x(t),y(t)] ,method=classical[foreuler],linecolor=[black,bl ue]);
1.10. Операции с векторами и матрицами
91
Уникальной возможностью системы Maple является возможность решения задач линейной алгебры в символьном виде. Однако такое решение представляет скорее теоретический, чем практический интерес, поскольку даже при небольших размерах матриц символьные результаты оказываются очень громоздкими и необозримыми. Они полезны только при решении специфических аналитических задач. Поэтому, разработчиками Maple, наряду с символьными, реализованы и численные методы решения задач линейной алгебры, которые широко используются при моделировании различных технических систем. Основным из пакетов решения задач линейной алгебры является пакет linalg. В основе его положены функции, реализующие операции с векторами и матрицами.
Способы задания векторов:
>restart;with(linalg):with(LinearAlgebra):
>v[1]:=array(1..3,[-3,0,4]);
v1 := [-3, 0, 4]
> v[2]:=array(1..3,[1,2,7]);
v2 := [1, 2, 7]
> v[3]:=array(1..3,[3,4,-8]);
v3 := [3, 4, -8]
> u[1]:=<3|-2|0>;
u1 := [3, -2, 0]
> u[2]:=<13|-22|0.1>;
u2 := [13, -22, 0.1]
> u[3]:=<23|-29|54>;
u3 := [23, -29, 54]
> s[1]:=vector[row]([-3,0,4]);
s1 := [-3, 0, 4]
> s[2]:=vector[row]([1,2,7]);
s2 := [1, 2, 7]
> s[3]:=vector[row]([3,4,-8]);
92
s3 := [3, 4, -8]
> alpha[1]:=vector(3,[-3,0,4]);
1 := [-3, 0, 4]
> alpha[2]:=vector(3,[1,2,7]);
2 := [1, 2, 7]
> alpha[3]:=vector(3,[3,4,-8]);
3 := [3, 4, -8]
Операции с векторами:
># Скалярное произведение векторов;
>dotprod(v[1],v[2]);
25
> dotprod(s[1],s[2]);
25
> dotprod(alpha[1],alpha[2]);
25
># Векторное произведение векторов;
>crossprod(v[1],v[2]);
[-8, 25, -6]
>crossprod(s[1],s[2]);
[-8, 25, -6]
>crossprod(alpha[1],alpha[2]);
[-8, 25, -6]
># Смешанное произведение векторов;
>dotprod(crossprod(alpha[1],alpha[2]),alpha[3]);
124
># Угол между векторами;
>angle(alpha[1],alpha[2]);
|
25 |
54 |
|
arccos |
|
|
|
|
|
||
|
54 |
|
|
|
|
|
|
> evalf(%);
0.8224691544
93
> norm(alpha[1],3); evalf(%);# Норма трехмерного
вектора;
91(1/3)
4.497941445
> normalize(alpha[1]);# Нормировать вектор;
-53, 0, 45
> Basis([u[1],u[2],u[3]]);# Нахождение базиса век-
торов, задаваемых только как u[i] (пакет LinearAlgebra);
[[3, -2, 0], [13, -22, 0.1], [23, -29, 54]]
>GramSchmidt([u[1],u[2],u[3]]); # Ортогонализация системы векторов векторов, задаваемых только как u[i] (пакет LinearAlgebra);
[[3, -2, 0], [-6.15384616000000052, -9.23076922999999994, 0.100000000000000004 ],
[0.269465600000000192, 0.404198399999998515, 53.8931211840000018 ]]
>convert(alpha[1],list[1]);# Преобразование вектора в список;
[-3, 0, 4]
Способы задания матриц:
> restart: with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected
> C:=matrix(3,3);
C := array(1 .. 3, 1 .. 3, [ ])
> C1:=array(1..3,1..3);
C1 := array(1 .. 3, 1 .. 3, [ ])
> A:=matrix(3,3,[1,2,-5,2,8,0,-4,-3,-7]);
1 |
2 |
-5 |
|
|
2 |
8 |
|
A := |
0 |
||
|
|
-3 |
|
-4 |
-7 |
||
|
|
|
|
> B:=matrix(3,3,[1,2,-5,7,6,-8,3,4,-9]);
94
1 |
2 |
-5 |
|
6 |
|
B := 7 |
-8 |
|
|
4 |
|
3 |
-9 |
|
|
|
|
> C2:=matrix(2,3,[1,2,3,4]);
C2 |
1 |
2 |
3 |
|
|
:= |
C2 |
|
C2 |
|
|
|
4 |
2, 2 |
|
||
|
|
|
2, 3 |
||
> C3:=array(1..3,1..3,[[1,2,-5],[2,8,0],[-4,-3,-
7]]);
|
1 |
2 |
-5 |
|
C3 |
|
2 |
8 |
|
:= |
0 |
|||
|
|
|
-3 |
|
|
-4 |
-7 |
||
|
|
|
|
|
> C4:=array(1..3,1..3,[[1,2,-5],[7,6,-8],[3,4,-
9]]);
|
1 |
2 |
-5 |
C4 |
|
6 |
|
:= 7 |
-8 |
||
|
|
4 |
|
|
3 |
-9 |
|
|
|
|
|
Операции над матрицами:
> rowdim(A); # Число строк матрицы;
3
> coldim(A); # Число столбцов матрицы;
3
> evalm(C3+C4);# Сложение (вычитание) матриц;
2 |
4 |
-10 |
|
|
9 |
14 |
|
|
-8 |
||
|
|
1 |
|
-1 |
-16 |
||
|
|
|
|
> matadd(C3,C4);# Сложение матриц;
2 |
4 |
-10 |
|
|
9 |
14 |
|
|
-8 |
||
|
|
1 |
|
-1 |
-16 |
||
|
|
|
|
> multiply(C3,C4);#Перемножение матриц;
|
0 |
-6 |
24 |
|
58 |
52 |
|
|
-74 |
||
|
|
-54 |
|
-46 |
107 |
||
|
|
|
|
> evalm(C3&*C4);#Перемножение матриц;
|
0 |
-6 |
24 |
|
58 |
52 |
|
|
-74 |
||
|
|
-54 |
|
-46 |
107 |
||
|
|
|
|
95
> evalm(2*C3); # Умножение матрицы на число;
2 |
4 |
-10 |
|
|
4 |
16 |
|
|
0 |
||
|
|
-6 |
|
-8 |
-14 |
||
|
|
|
|
> evalm(2+C4);# Сложение матрицы с числом, умножен-
ным на единичную матрицу;
3 |
2 |
-5 |
|
8 |
|
7 |
-8 |
|
|
4 |
|
3 |
-7 |
|
|
|
|
> evalm(C3^3);# Возведение матрицы в степень;
|
-29 |
224 |
-335 |
|
194 |
610 |
|
|
-20 |
||
|
|
-259 |
|
-280 |
-573 |
||
|
|
|
|
> evalm(A^(-1));# Нахождение обратной матрицы;
|
28 |
-29 |
|
-20 |
||||||
|
|
|
|
|
|
|
|
|
|
|
79 |
158 |
79 |
||||||||
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
-7 |
|
27 |
|
5 |
|
|
|||
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
79 |
158 |
79 |
|
||||||
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
-13 |
5 |
|
|
-2 |
|
|
|||
|
|
|
|
|||||||
|
79 |
158 |
79 |
|
||||||
|
|
|||||||||
> inverse(A); # Нахождение обратной матрицы;
|
28 |
-29 |
|
-20 |
||||||
|
|
|
|
|
|
|
|
|
|
|
79 |
158 |
79 |
||||||||
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
-7 |
|
27 |
|
5 |
|
|
|||
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
79 |
158 |
79 |
|
||||||
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
-13 |
5 |
|
|
-2 |
|
|
|||
|
|
|
|
|||||||
|
79 |
158 |
79 |
|
||||||
|
|
|||||||||
> C:=A^3+4*A+5;# Матрица - функция от матрицы;
C := A3 4 A 5
> evalm(C);
|
-20 |
232 |
-355 |
|
202 |
647 |
|
|
-20 |
||
|
|
-271 |
|
-296 |
-596 |
||
|
|
|
|
> evalm(A^0);
1
> transpose(A);# Нахождение транспонированной мат-
рицы;
1 |
2 |
-4 |
|
|
2 |
8 |
|
|
-3 |
||
|
|
0 |
|
-5 |
-7 |
||
|
|
|
|
96
> det(A);#Нахождение определителя матрицы;
-158
> rank(A);# Нахождение ранга матрицы;
3
> trace(A);# Нахождение следа матрицы;
2
> norm(B);# Норма матрицы;
21
>kernel(B); # Ядро матрицы;
{}
Спектральный анализ матрицы:
> evalf(eigenvalues(B,C)); # Собственные числа мат-
рицы;
0.00885552382 0.36 10-9 I, -0.1647751158 0.91858429 10-11 I,
0.00035980130 0.3891858429 10-9 I
> evalm(C);
|
-20 |
232 |
-355 |
|
202 |
647 |
|
|
-20 |
||
|
|
-271 |
|
-296 |
-596 |
||
|
|
|
|
> evalf(eigenvectors(B)); # собственные числа + их
кратности + собственные вектора;
[4.142790972 0.1 10-8 I, 1.,
{[0.338459235 0.1074774346 10-8 I, 3.031853317 0.6310807598 10-9 I, 1. ]}], [ -5.897200018 0.2660254040 10-9 I, 1.,
{[0.638960942 0.3163025798 10-9 I, 0.296479288 0.3687332859 10-9 I, 1. ]}], [
-0.245590958 0.1466025404 10-8 I, 1.,
{[-2.448008414 0.1681121105 10-9 I, 4.024608571 0.1754222681 10-9 I, 1. ]}]
>evalf(eigenvals(B,C));
0.00885552382 0.36 10-9 I, -0.1647751158 0.91858429 10-11 I,
0.00035980130 0.3891858429 10-9 I
> evalm(C);
|
-20 |
232 |
-355 |
|
202 |
647 |
|
|
-20 |
||
|
|
-271 |
|
-296 |
-596 |
||
|
|
|
|
97
>charpoly(A,lambda); # Характеристический многочлен матрицы ;
3 2 2 79 158
>charmat(A,lambda); # Характеристическая матрица ;
1 |
-2 |
5 |
|
|
|
|
|
|
|
|
-2 |
8 |
0 |
|
|
|
|||
|
4 |
3 |
|
|
|
7 |
|||
|
|
|
|
|
>minpoly(A,lambda); # Минимальный многочлен (делитель) матрицы;
3 2 2 79 158
>jordan(A);# Жорданова форма матрицы;
2 |
0 |
0 |
|
|
|
|
|
|
79 |
0 |
|
0 |
|
||
|
|
|
|
|
0 |
79 |
|
0 |
|
> gausselim(A); # Приведение матрицы к треугольному
виду методом Гаусса;
1 |
2 |
-5 |
||
|
|
|
|
|
|
0 |
4 |
10 |
|
|
|
|||
|
|
|
-79 |
|
0 0
2
>gaussjord(A); # Приведение матрицы к треугольному виду методом Гаусса - Жордана;
1 |
0 |
0 |
|
|
0 |
1 |
|
|
0 |
||
|
0 |
0 |
|
|
1 |
||
|
|
|
|
> definite(B,'positive_def'); # Определение положи-
тельной определенности матрицы (да - true,нет - false);
false
Символьные операции с матрицами: > restart: with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected
> M1:=array(1..2,1..2,[[a1,b1],[c1,d1]]);
M1 |
a1 |
b1 |
:= |
|
|
|
|
|
|
c1 |
d1 |
> M2:=array(1..2,1..2,[[a2,b2],[c2,d2]]);
98
M2 |
a2 |
b2 |
:= |
|
|
|
|
|
|
c2 |
d2 |
> evalm(M1+M2);
|
|
|
|
a1 a2 |
|
b1 b2 |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
c1 c2 |
|
d1 d2 |
|
|
|
|
|
|
|||||
> evalm(M1/M2); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
a1 d2 |
|
|
b1 c2 |
|
|
|
|
|
a1 b2 |
|
|
|
b1 a2 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
a2 d2 b2 c2 |
|
a2 d2 b2 c2 |
|
|||||||||||||
a2 d2 b2 c2 |
|
|
|
|
a2 d2 b2 c2 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
c1 d2 |
|
|
d1 c2 |
|
|
|
|
|
c1 b2 |
|
|
|
|
d1 a2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
a2 d2 b2 c2 |
|
|
a2 d2 b2 c2 |
|
a2 d2 b2 c2 |
|
||||||||
a2 d2 b2 c2 |
|
|
|
|
|
||||||||||||
> evalm(M1^2); |
|
|
a12 b1 c1 |
|
a1 b1 b1 d1 |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
c1 |
|
|
b1 c1 d1 |
2 |
|
|
|
|
|
||
|
|
|
c1 a1 d1 |
|
|
|
|
|
|
|
|
||||||
> evalm(sin(M1)); |
sin(a1) |
|
sin(b1) |
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sin(c1) |
|
sin(d1 ) |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
> evalm(M1+z); |
|
|
a1 z |
|
b1 |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
c1 |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
d1 z |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
> M3:=array(1..2,1..2,[[x,x^2],[x^3,x^4]]); |
|
||||||||||||||||
|
|
|
|
M3 |
:= |
x |
x2 |
|
|
|
|
|
|
||||
|
|
|
|
|
3 |
4 |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
x |
|
x |
|
|
|
|
|
|
|
> map(diff,M3,x);# Функция map - применяет заданную |
||||
операцию к каждому элементу матрицы; |
||||
|
1 |
|
2 x |
|
|
|
2 |
|
|
|
|
|
3 |
|
3 x |
|
4 x |
||
> map(int,%,x); |
x |
x2 |
||
|
||||
|
|
|
|
|
|
|
3 |
4 |
|
|
x |
|
x |
|
> map(sin,M3);
sin(x) |
sin(x2 ) |
|||||
|
|
|
|
|
|
|
|
sin(x |
3 |
) |
sin(x |
4 |
|
|
|
|
) |
|||
|
|
|
|
|
|
|
># Генерация функциональной матрицы;
>f[1]:=(i,j)->x^i+y^j;
f1 := (i, j) xi yj
99
> AA:=matrix(2,3,f[1]);
x y |
x y2 |
x y3 |
|||
AA := |
2 |
2 |
2 |
2 |
|
|
3 |
||||
x y |
x y |
x y |
|||
>restart:
>A:=Matrix(3,3,[[omega,2,3],[4,5,6],[7,8,9]],readonly=true);
|
2 |
3 |
|
|
4 |
5 |
|
A := |
6 |
||
|
7 |
8 |
|
|
9 |
||
|
|
|
|
>omega:=1:
>as:=Matrix(3,3,readonly=false);
0 |
0 |
0 |
|
|
0 |
0 |
|
as := |
0 |
||
|
0 |
0 |
|
|
0 |
||
|
|
|
|
> as:=A;
1 |
2 |
3 |
|
|
4 |
5 |
|
as := |
6 |
||
|
7 |
8 |
|
|
9 |
||
|
|
|
|
>omega:=2:
>print(as);
2 |
2 |
3 |
|
|
|
|
|
|
4 |
5 |
|
|
6 |
||
|
7 |
8 |
|
|
9 |
||
>restart:
>a:=(omega)->matrix(2,2,[[12,omega],[43,566]]);
a := matrix(2, 2, [[12, ], [43, 566]])
> a(23);
12 |
23 |
|
|
43 |
566 |
|
|
Решение систем линейных уравнений С*X=B: > restart:with(linalg):
Warning, the protected names norm and trace have been redefined and unprotected
100
