Инструментальные средства математического моделирования. Учебное пособие
.pdf
6.2. Перечень пакетов расширения Maple V
|
|
Окончание табл. 1 |
|
|
|
№ п/п |
Пакет |
Функции, описание |
|
|
|
74. |
Student[Calculus1] |
Помощь в обучении и изуче- |
|
|
нии вычислений одномерных |
|
|
задач |
75. |
Student[LinearAlgebra] |
Помощь в обучении и изуче- |
|
|
нии основ линейной алгебры |
76. |
sumtools |
Команды для вычисления ко- |
|
|
нечных и бесконечных сумм |
77. |
SumTools |
Пакет программ для нахожде- |
|
|
ния закрытых форм конеч- |
|
|
ных и бесконечных сумм |
78. |
tensor |
Команды тензорных вычисле- |
|
|
ний и их приложения в общей |
|
|
теории относительности |
79. |
TypeTools |
Команды для распознавания |
|
|
типов |
80. |
Units |
Команды межмодульного |
|
|
окружения и обмена данными |
81. |
VariationalCalculus |
Пакет программ вариацион- |
|
|
ного исчисления |
82. |
VectorCalculus |
Пакет векторных вычислений |
83. |
Worksheet |
Пакет программ для создания |
|
|
и работы с рабочим полем |
|
|
среды Maple |
84. |
XMLTools |
Пакет программ для исполь- |
|
|
зования XML-документов |
Контрольные вопросы
1.Перечислите основные пакеты расширений Maple V.
2.Приведите название пакетов по линейной алгебре.
3.Какие задачи решает пакет DETools?
4.Назовите пакет, необходимый для решения задач оптимизации.
5.При решении каких задач используется пакет geometry?
6.Для чего используется пакет plots?
7.Назовите пакет расширения Maple V для проведения статистических расчетов.
51
7. Обращение к пакетам линейной алгебры
7.1. Вызов пакета linalg и его основных команд
Для эффективного анализа широкого класса базовых линейных алгебраических задач применяется linalg – пакет линейной алгебры, базирующийся на данных в виде массивов и содержащий необходимые математические функции, обеспечивающие его операционную полноту. Идентификаторы функций этого пакета перечислены ниже и возвращаются командой подключения пакета:
> with(linalg);
7.2. Функции основных команд linalg
Ниже в таблице приводятся краткие сведения, поясняющие функциональные свойства основных команд пакета linalg:
|
|
Таблица 2 |
|
|
|
|
|
№ |
Команды |
Описание |
|
п/п |
|||
|
|
||
1. |
BlockDiagonal |
Создает блок-диагональную матрицу |
|
2. |
Wronskian |
Создает матрицу Вронского векторных функ- |
|
|
|
ций |
|
|
|
|
|
3. |
addcol |
Линейное преобразование столбцов матрицы |
|
4. |
addrow |
Линейное преобразование строк матрицы |
|
5. |
adjoint (adj) |
Возвращает сопряженную матрицу. |
|
6. |
angle |
Функция вычисляет угол между двумя век- |
|
|
|
торами |
|
|
|
|
|
7. |
augment |
Горизонтально объединяет две матрицы и |
|
|
|
более |
|
|
|
|
|
8. |
backsub |
Обратная подстановка в матрице |
|
9. |
band |
Создает ленточную матрицу |
52
7.2. Функции основных команд linalg
|
|
Продолжение табл. 2 |
|
|
|
|
|
№ |
Команды |
Описание |
|
п/п |
|||
|
|
||
10. |
basis |
Находит базис для векторного пространства |
|
11. |
bezout |
Создает Bezout-матрицу двух полиномов |
|
12. |
blockmatrix |
Создает блок-матрицу |
|
13. |
charmat |
Создает характеристическую матрицу |
|
14. |
charpoly |
Находит характеристический полином ма- |
|
|
|
трицы |
|
|
|
|
|
15. |
col |
Извлекает столбцы матрицы как векторы |
|
16. |
coldim |
Определяет размерность столбца матрицы |
|
17. |
colspace |
Вычисляет базис пространства столбцов |
|
18. |
colspan |
Находит базис столбцов матрицы |
|
19. |
companion |
Вычисляет парную матрицу для полинома |
|
20. |
cond |
Находит условные числа матрицы |
|
21. |
copyinto |
Перемещает элементы из одной матрицы |
|
|
|
в другую |
|
|
|
|
|
22. |
crossprod |
Находит векторное произведение |
|
23. |
сurl |
Вычисляет ротор вектора |
|
24. |
definite |
Проводит тест на положительно (отрицатель- |
|
|
|
но) определенные матрицы |
|
|
|
|
|
25. |
delcols |
Удаляет столбцы матрицы |
|
26. |
delrows |
Удаляет строки матрицы |
|
27. |
det |
Вычисляет определитель матрицы |
|
28. |
diag |
Создает блок-диагональную матрицу |
|
29. |
diverge |
Находит дивергенцию векторной функции |
|
30. |
dotprod |
Вычисляет скалярное произведение векто- |
|
|
|
ров |
|
|
|
|
53
7. Обращение к пакетам линейной алгебры
|
|
Продолжение табл. 2 |
|
|
|
|
|
№ |
Команды |
Описание |
|
п/п |
|||
|
|
||
31. |
eigenvals |
Находит собственные числа матрицы |
|
32. |
eigenvectors |
Вычисляет собственные векторы матрицы |
|
33. |
eigenvects |
Вычисляет собственные векторы матрицы |
|
34. |
entermatrix |
Обеспечивает интерактивный ввод матрицы |
|
35. |
equal |
Проверяет, являются ли матрицы равными |
|
36. |
exponential |
Создает экспоненциальную матрицу |
|
37. |
extend |
Создает расширенную матрицу |
|
38. |
ffgausselim |
Преобразует матрицу к верхнетреугольному |
|
|
|
виду |
|
|
|
|
|
39. |
fibonacci |
Матрица Фибоначчи |
|
|
|
|
|
40. |
forwardsub |
Прямая подстановка в матрицу |
|
41. |
frobenius |
Находит форму frobenius матрицы |
|
42. |
gausselim |
Преобразует матрицу к верхнетреугольному |
|
|
(gaussjord) |
виду |
|
|
|
||
|
|
|
|
43. |
geneqns |
Создает уравнение по коэффициентам матри- |
|
|
|
цы |
|
|
|
|
|
44. |
genmatrix |
Записывает матрицу коэффициентов уравне- |
|
|
|
ний |
|
|
|
|
|
45. |
grad |
Функция вычисления градиента |
|
46. |
hadamard |
Вычисляет ограничение на коэффициенты |
|
|
|
детерминанта |
|
|
|
|
|
47. |
hermite |
Эрмитова нормальная форма матрицы |
|
48. |
hessian |
Вычисление Гессиана функции |
|
49. |
hilbert |
Создает матрицу Гильберта |
|
50. |
htranspose |
Вычисляет Эрмитову транспонированную |
|
|
|
матрицу |
|
|
|
|
54
7.2. Функции основных команд linalg
|
|
Продолжение табл. 2 |
|
|
|
|
|
№ |
Команды |
Описание |
|
п/п |
|||
|
|
||
51. |
ihermite |
Находит целочисленную Эрмитову нормаль- |
|
|
|
ную форму |
|
|
|
|
|
52. |
indexfunc |
Определяет функцию индексации массива |
|
53. |
innerprod |
Вычисляет обобщенное скалярное произве- |
|
|
|
дение |
|
|
|
|
|
54. |
intbasis |
Определяет базис для пересечения простран- |
|
|
|
ства |
|
|
|
|
|
55. |
inverse |
Вычисляет обратную матрицу |
|
56. |
ismith |
Создает целочисленную нормальную форму |
|
|
|
Шмидта |
|
|
|
|
|
57. |
issimilar |
Проверяет подобие матриц |
|
58. |
iszero |
Проверяет, является ли матрица ноль- |
|
|
|
матрицей |
|
|
|
|
|
59. |
jacobian |
Вычисляет якобиан векторной функции |
|
60. |
jordan |
Вычисляет Жорданову форму матрицы |
|
61. |
kernel |
Вычисляет базис для нулевого промежутка |
|
62. |
laplacian |
Вычисляет Лапласиан |
|
63. |
leastsqrs |
Решение уравнений по методу наименьших |
|
|
|
квадратов |
|
|
|
|
|
64. |
linsolve |
Решение линейных уравнений |
|
65. |
matadd |
Сложение матриц и векторов |
|
66. |
matrix |
Создает матрицу |
|
67. |
minor |
Вычисляет миноры матрицы |
|
68. |
mulcol |
Умножает столбец матрицы на заданное вы- |
|
|
|
ражение |
|
|
|
|
|
69. |
mulrow |
Умножает строку матрицы на заданное вы- |
|
|
|
ражение |
|
|
|
|
55
7. Обращение к пакетам линейной алгебры
|
|
|
Продолжение табл. 2 |
|
№ |
Команды |
|
Описание |
|
п/п |
|
|
||
|
|
|
|
|
70. |
multiply |
Умножает матрицы |
|
|
71. |
norm |
Вычисляет норму матрицы или вектора |
||
72. |
normalize |
Нормализация вектора |
|
|
73. |
orthog |
Проверка ортогональности матрицы |
||
74. |
permanent |
Вычисляет |
постоянную |
матрицы |
|
|
(permanent) |
|
|
|
|
|
||
75. |
pivot |
Обеспечивает вращение относительно эле- |
||
|
|
ментов матрицы |
|
|
|
|
|
||
76. |
potential |
Вычисляет потенциал векторного поля |
||
77. |
randmatrix |
Создает случайные матрицы |
|
|
78. |
randvector |
Создает случайные векторы |
|
|
79. |
rank |
Возвращает ранг матрицы |
|
|
80. |
ratform |
Вычисляет |
рациональную |
каноническую |
|
|
форму |
|
|
|
|
|
||
81. |
references |
Выводит список основных работ по линейной |
||
|
|
алгебре |
|
|
|
|
|
||
82. |
row |
Извлекает строку матрицы как вектор |
||
83. |
rowdim |
Определяет размерность строки матрицы |
||
84. |
rowspace |
Вычисляет базис пространства строки |
||
85. |
rowspan |
Вычисляет базис для строк матрицы |
||
86. |
rref |
Сокращенная форма эшелона строки |
||
87. |
scalarmul |
Умножение матрицы (вектора) на заданное |
||
|
|
выражение |
|
|
|
|
|
||
88. |
singularvals |
Вычисляет сингулярные значения матрицы |
||
89. |
smith |
Вычисляет |
Шмидтову нормальную форму |
|
|
|
матрицы |
|
|
|
|
|
|
|
56
7.3. Обращение к пакету LinearAlgebra
|
|
Окончание табл. 2 |
|
|
|
|
|
№ |
Команды |
Описание |
|
п/п |
|||
|
|
||
90. |
stackmatrix |
Объединяет две матрицы и более вертикаль- |
|
|
|
но |
|
|
|
|
|
91. |
submatrix |
Извлекает указанную подматрицу из матри- |
|
|
|
цы |
|
|
|
|
|
92. |
subvector |
Извлекает указанный вектор из матрицы |
|
93. |
sumbasis |
Определяет базис для суммы векторных про- |
|
|
|
странств |
|
|
|
|
|
94. |
swapcol |
Меняет два столбца в матрице |
|
95. |
swaprow |
Меняет две строки в матрице |
|
96. |
sylvester |
Создает матрицу Сильвестра из двух полино- |
|
|
|
мов |
|
|
|
|
|
97. |
toeplitz |
Создает симметричную матрицу, соответ- |
|
|
|
ствующую списку |
|
|
|
|
|
98. |
trace |
Возвращает след матрицы |
|
99. |
transpose |
Вычисляет транспонированную матрицу |
|
100. |
vandermonde |
Создает матрицу Вандервуда |
|
101. |
vecpotent |
Вычисляет векторный потенциал |
|
102. |
vectdim |
Определяет размерность вектора |
|
103. |
vector |
Создает вектор |
|
104. |
wronskian |
Создает матрицу Вронскиана векторной |
|
|
|
функции |
|
|
|
|
7.3. Обращение к пакету LinearAlgebra
Расширенный пакет линейной алгебры, базирующийся на матричных данных и реализуемый, начиная с версии Maple 6, вызывается командой подключения пакета
> with(LinearAlgebra);
Она возвращает список идентификаторов функций этого пакета, большинство из которых дублируют функции команд преды-
57
7. Обращение к пакетам линейной алгебры
дущего пакета, хотя имеют несколько отличные имена. При этом идентификаторы этих команд поясняют их назначение.
Контрольные вопросы
1.Основная структура пакета linalg.
2.Для решения каких задач предназначена функция linsolve?
3.Перечислите основные команды пакета linearalgebra.
4.Назовите команду, вычисляющую обратную матрицу.
5.Какую задачу решает функция rank?
6.Какая команда определяет собственные числа матрицы?
7.Назовите функцию, проверяющую ортогональность матрицы?
58
8. Технологии решения задач линейной алгебры в среде
Maple V
8.1. Решение систем линейных уравнений
Для системы линейных уравнений вида A·x=b, используя спе-
циальные команды linsolve(A, b) или Linearsolve(A, b, Opc), вхо-
дящие в пакет линейной алгебры linalg или – пакет Linearalgebra, построим решение и оценим степень его удовлетворения системе, вычислив невязку ∆= |A·x-b|.
Необходимо отметить, что команда Linearsolve, реализуемая начиная с версии Maple 6, в отличие от linsolve позволяет конкретизировать метод решения заданием соответствующих опций Opc.
Примеры решения линейных систем
Ниже приведены характерные схемы реализации задания, записанные на языке программирования Maple. Следует учитывать, что при использовании символа «;» в качестве разделителя операторов Maple, выводятся на печать возвращаемые значения сразу после команды. Если же используется разделитель «:», то возвращаемые значения не визуализируются:
Задаем матрицу 3х3 и вектор
>with(linalg): A:=array(1..3,1..3,[[2.8,3.8,-
3.2],[2.5,-2.8, 3.3],[6.5,-7.1,4.8]]): b:=array(1..3,[4.5,7.1,6.3]):
ирешаем систему
>rez:=linsolve(A,b);
rez = [1.590548028, 2.834902787, 3.351926584
Для версий, начиная с Maple 6 и выше, вызываем расширенный пакет
> with(LinearAlgebra):
задаем матрицу G, вектор f и решаем систему:
59
8.Технологии решения задач линейной алгебры в среде Maple V
>G:=<<2.0,1.4,1.2>|<1.2,3.0,-1.4>|<- 1.1,2.2,4.0>>:f:=<-3,6,4>: x:=LinearSolve(G,f);
–1.25412541254125398
1.25412541254125398
1.81518151815181517
Вычисляем невязку ∆, проверяя решение:
> Delta:=Multiply(G,x)-f;
0. := 0.
0.
Исходно можно задать расширенную матрицу и получить решение:
> M:=<<1,1,1,4>|<1,1,-2,1>|<3,1,1,8>|<-1,1,-1,- 1>|<0,1,1,0>>:
res:=LinearSolve(M): evalf(res);
4.166666667
1.333333333
–2.500000000
2
Можно и так: задаем матрицу S, вектор t и решаем систему
> S:= Matrix([[5,0,0],[0,2,-1],[0,0,3]]): t:= Vector([15,12,18], datatype=float): LinearSolve(S, t, method=’LU’);
3.
6.
9.
Матрица и вектор системы может быть задан функциями, например:
60
