Файл: Е. Г. Крушель, А. Э. Панфилов осваиваем mathcad.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.03.2024

Просмотров: 111

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
§7. Некоторые применения матриц и векторов
7.1. Нахождение всех корней уравнения n-й степени
Согласно Основной теореме алгебры (Нильс Хенрик Абель) уравне- ние n-й степени имеет n корней. Среди них могут быть действительные и комплексные. Каждый комплексный корень обязательно имеет свою па- ру – сопряженный корень, у которого такая же вещественная часть, а мнимая имеет противоположный знак. Для нахождения всех корней ис- пользуется встроенная Mathcad-функция polyroots( ) (переводится «мно- го корней»). Научимся пользоваться этой очень полезной функцией.
ДАНО: уравнение n-й степени:
0 1
2 2
1 1
0
=
+

+
+

+

+




n
n
n
n
n
a
y
a
y
a
y
a
y
a
,
(n+1) его коэффициентов a
i
, i = 0, …, n–1 заданы.
ПОЛУЧИТЬ: все корни y
i
, i = 1, …, n, удовлетворяющие заданному уравнению.
54

Способ решения: Сформируем (n+1)-мерный вектор, элементами спользование функции
polyroots
(…) для нахождения корней уравнения.
Уравнение, корни которого нужно найти:
Элеме вет вую которого являются коэффициенты уравнения. Важное замечание: если в уравнении отсутствуют некоторые промежуточные степени переменной, в соответствующий слот вектора следует вставить 0. Порядок ввода ко- эффициентов – с «конца» уравнения к началу, так что нулевому элементу вектора нужно присвоить значение a
n
, а n-му – значение a
0
. Идентифика- тор этого вектора и будет аргументом функции polyroots( ).
Пример
показан на рис. 2.36. Выполните его по шагам и обязательно сделайте про- верку. Вы увидите небольшие вычислительные неточности
(
это и не удивительно: выразить корни через коэффициенты уравнения можно точно только в том случае, когда его порядок
– не выше четвертого: этот результат получил юный гений Эварист Галуа в 21 год, за сутки до дуэли, на которой он был убит
).
7 y
7

3 y
4

+
5y

17
+
0
Рис. 2.36. И
нты вектора, соот- ствующие несущест- щим в уравнении сте- пеням переменной y, счита- ем равными нулю
D
0 0
3 17 5
0 7

0






















:=
z
1.231

0.688

0.895i

0.688

0.895i
+
0.348 1.11i
+
0.348 1.11i

0.955 0.48i
+
0.955 0.48i

⎛⎜








⎞⎟








=
verify j
7 z j
( )
7

3 z j
( )
4

+
5 z j

17
+
:=
Шаг 1.
Формируем 8-ми мерный ве
Жирный знак равенства исления
+<=> ктор D исключает выч
Шаг 2.
Используем функ- polyroots(…), которая цию возвращает вектор корней уравнения: z := polyroots(D)
Шаг 3.
Выводим значения корней на экра
Ша
н:
г 4.
Дела а) Вводим сч б) ден ем проверку. Для этого: етчик индексов корней j := 0 .. 6
Рассчитываем, чему равна левая часть уравнения при подстановке каждого j-го корня (должна быть равна правой части, т.е. нулю) в) Выводим на экран вектор значений левой части уравнения, в которое подставлены най- ные корни:
Имеют место незначительные вычислительные погрешности verify
4.742 10 6

×
9.646 10 9

×
8.726i 10 8

×
+
1.899 10 8

×
2.191i 10 8

×
+
1.736

10 8

×
5.121i 10 9

×
+
6


=
















6.856 10
×
1.1i 10 6
×

4.549 10 6

×
159i 10 7

×







1.


4.996

10 8

×
6.16i 10 8

×
+


55


7.2. Применение матриц и векторов для решения систем линей-
ных уравнений
7.2.1. Теоретические сведения. Традиционно решение систем ли- нейных уравнений рассматривается в терминах матричной алгебры.
Пусть задана система из n линейных уравнений. Коэффициенты этих уравнений – не обязательно постоянные, они могут зависеть от какого- либо внешнего параметра (на практике чаще всего – от времени), но не должны зависеть от искомых переменных (в этом случае уравнения были бы нелинейными).
Система уравнений, записанная в обычной форме, имеет вид:
)
(
12 1
11
a
x
t
a
2 2
1 1
2 2
2 22 1
21 1
1 2
t
b
x
t
a
x
t
a
x
t
a
t
b
x
t
a
x
t
a
x
t
a
t
b
x
t
a
x
t
n
n
nn
n
n
n
n
n
n
=

+
+

+

=

+
+

+

)
(
)
(
)
(
)
(
)
(
)
(
)
(
)
(
)
(
)
(
)
(
+

⋅ + +
⋅ =
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
Здесь t– некоторый параметр, от которого зависят коэффициенты уравнения.
Сформируем квадратную n
×n матрицу из коэффициентов левой час- ти и n-мерный вектор из значений b
i
(t), i = 1, … , n, входящих в правую часть. Эти матрицы будут иметь вид:
)
(
)
(
)
(
)
(
,
)
(
)
(
)
(
)
(
)
(
)
(
)
(
)
(
)
(
)
(
2 1
2 1
2 22 21 1
12 11
t
b
t
b
t
b
t
B
t
a
t
a
t
a
t
a
t
a
t
a
t
a
t
a
t
a
t
A
n
nn
n
n
n
n
L
L
L
L
L
L
L
L
=
=
Согласно правилам матричной алгебры решение системы линейных уравнений для случая, когда правая часть – не нулевой вектор, возможно тогда и только тогда, когда определитель матрицы не равен 0 ни для од- ного значения параметра t из диапазона, на котором он задан. В этом случае решение будет n-мерным вектором, зависящим от параметра t:
Как видим, для получения решения используются следующие матричные операции:
ƒ
Обращение квадратной матрицы;
ƒ
Умножение матрицы на вектор;
ƒ
Диагностика отличия определителя матрицы от 0 (для установ- ления существования решения).
7.2.2. Пример. Найдем значения двумерного вектора x(t) при изме- нении параметра t в диапазоне 0,…,5 с шагом 0.01. Пусть каждый эле мент матрицы A(t) – экспонента с заданным показателем степени, а каж
).
(
)]
(
[
)
(
1
t
B
t
A
t
x

=

-
-
56

дый
. Воспроизведите его. Попутно Вы научитесь делать масс но: ут ис- пользоваться как коэффициенты в формулах для операций с матрицей;
2. Ввести идентификатор матрицы с указанием ее ависимости от параметра (можно – тот же, что и для матрицы коэффициентов), присво- ить ему значение функции, которую мы хотим применить ко всем эле- ментам и
нус)>. Над функцией появится горизонтальная стрелка – сим сомножителем-элементом а непо д
Шаг
A
1 2
1.5 4
элемент вектора B(t) – синусоидальная функция. Решение показано на рис. 2.37, 2.38
овые операции над всеми элементами матриц (рис. 2.37).
7.2.2.1. Векторизация. Термин «векторизация» означает применение
одной и той же функции тотально ко всем элементам матрицы. Этот прием часто экономит время и при вводе, и при вычислениях за счет параллель- ных действий над всеми элементами матрицы сразу. Освоим технику век- торизации на примере, показанном на рис. 2.37, 2.38 Для того чтобы над всеми элементами матрицы выполнялась одна и та же операция, нуж
1. Ввести матрицу с постоянными элементами, которые буд з
матр цы.
3. Результат охватить синим контуром и нажать клавиши
<Ctrl>+<(ми вол векторизации.
Изучение операции векторизации закончено.


Шаг 1. Задаем матрицу и вектор коэффициентов.
Шаг 2. Проводим векторизацию матрицы А. Каждый элемент ее превратится в экспоненту. Показателем будет соответствующий элемент матрицы А
Шаг 3. Для контроля проведем вычисление экспонент непосредственно (должен быть получен тот же результат, что и при векторизации):
Шаг 4. Проводим векторизацию вектора В. Каждый его элемент должен превратиться в синус с вектора В:
Шаг 5. Для контроля вводим функцию синус сре ственно:
6. Проверяем, действительно ли выполнилась векторизация, например, при t
0.5
:=




:=
B
5 7
⎛ ⎞
⎜ ⎟
⎝ ⎠
:=
Для осуществления векторизации нажмите
+<(минус)>
A t
( )
e
A t

( )

⎯⎯
:=
A1 t
( )
e
1 t

e
2 t

e
1.5 t

e
4 t









:=
B t
( )
sin B t

(
)

⎯⎯⎯
:=
B1 t
( )
sin 5 t

(
)
sin 7 t

(
)






:=
A t
( )
1.649 2.718 2.117 7.389






=
A1 t
( )
1.649 2.718 2.117 7.389






=
B t
( )
0.351


0.598





=
B1 t
( )
0.351


0.598





=
Рис. 2.37. Векторизация матриц и векторов.
57

В матрично-векторных обозначениях (с учетом MathCAD-нумерации элементов матриц с нуля) система уравнений имеет вид:
A t
( )
0 0
,
x t
( )
0

A t
( )
0 1
,
x t
( )
1

+
B t
( )
0
A t
( )
1 0
,
x t
( )
0

A t
( )
1 1
,
x t
( )
1

+
B t
( )
1
Введем вектор искомых переменных (жирный знак равенства +<=> исключает вычисления):
x t
( )
x t
( )
0
x t
( )
1
⎛⎜


⎞⎟


Элементы матриц A(t) и B(t) найдены ранее в процессе векторизации, рис. 4.37
A t
( )
A t
( )

0 1.5 3
4.5 6
1 0.25 0.5 1.25 2
x t
( )
1
t
0 1.5 3
4.5 6
2 1
1 2
x t
( )
0
t
A t
( )
0 0
,
A t
( )
1 0
,
0 1
,
A t
( )
1 1
,








B t
( )
0
B t
( )
1
B t
( )
⎛⎜





Решение системы уравнений в матрицах:

x t
( )
A t
( )
1
B t
( )
:=
Исследование решения по графику. Задаем диапазон изменения параметра t:
t
0 0.001
,
5
:=

шаблона графика
Рис. 2.38. Решение системы линейных уравнений с помощью матриц.
7.3. Применение матриц и векторов в задаче интерполяции
7.3.1. Необходимые теоретические сведения. Интерполяцией на- зывается группа методов восстановления значений функции в промежут- ках между точками, заданными своими координатами.
Реализуем с помощью матрично-векторных операций один из наи- более применяемых методов интерполяции – интерполяция с помощью так называемых кубических сплайн в. Сплайны широко используются в компьютерной тех пьютерном черче- нии, компьютерной
Выводим графики элементов вектора x(t) (для получения нажмите +<2>)
о
нике (компьютерной графике, ком фотографии).
58


ДАНО: координаты точек (рис. 2.39).
ПОЛУЧИТЬ: уравнение гладкой кривой, которая проходит через все заданные точки. Такая кривая позволяет вычислить значение функции
между заданными точками – т. е. решить задачу интерполяции.
Рис. 2.39. Точки, через которые должна пройти интерполяционная кривая.
Если просто соединить точки участками прямых линий, то получит- ся ломаная линия – так называемая кусочно-линейная интерполяция
(иначе – сплайн первого порядка). Она непрерывна, но ее производные
(начиная с первой) разрывны, поэтому ломаная линия не кажется нам гладкой (рис. 2.40).
Рис. 2.40. Интерполяция сплайном первого порядка.
59

В результате многолетних исследований особенностей восприятия зрит и соеди- няются участками кубических парабол.
Примечание
: слово «сплайн» в переводе с английского языка означает гибкую метал- лическую линейку, которую чертежники 19-го века изгибали для плавного соединения то- чек. Термин «кубический» ассоциируется с
кубической
зависимостью. Другое название - кубического сплайна – сплайн
третьего
порядка (если для интерполяции использовать обычные параболы, получится сплайн второго порядка, а если прямые, как на рис. 2.40 – сплайн первого порядка).
Основная идея интерполяции кубическими сплайнами:
Кубическая парабола содержит 4 коэффициента a
i
, i
= 0, … , 3, поэтому если взять 4 значения аргумента x
i
подряд, i= 1, 2, 3, 4 и соответствующие им значения функции y(x
i
)
, то по этим данным можно рассчитать все a
i
, i
= 0, … , 3. Тогда, если постро- ить график функции y(x), то он пройдет точно через эти точки. В проме- жутках между точками можно будет рассчитать значение функции для любого аргумента, используя формулу кубической параболы.
Об стро резу сост парабол с разными коэффициентами, будет воспри- ниматься глазом как гладкая.
Опишем последовательность шагов для получения интерполяцион- ной кривой, построенной на кубических сплайнах.
Шаг 1
. Берем координаты первых четырех точек, охватываем их ок- ном (рис. 2.41). Составляем систему уравнений для определения коэф- фициентов a
i
, i
= 0, … , 3, решаем ее и получаем уравнение кубической параболы. Система уравнений имеет вид, показанный на рис. 2.41.
Шаг 2
. Используя найденные на шаге 1 значения коэффициентов a
i
,
i
= 0, … , 3, можно построить график функции y(x) = a
0
x
3
+ a
1
x
2
+ a
2
x
+ a
3
на интервале изменения аргумента x
1
xx
4
(рис. 2.42).
Шаг 3
. Но для интерполяции функции используем не весь график для интервала x
1
xx
4
, а лишь его фрагмент между точками x
2
и x
3
, т. е. прорисовываем кубическую параболу y(x) = a
0
x
3
+ a
1
x
2
+ a
2
+ a
3
только на интервале изменения аргумента x
xx (см. рис. 2.42). ельных образов человеком было установлено, что кривая воспринима- ется как вполне гладкая, если она сама и две первые ее производные не- прерывны. Так пришли к идее кубических сплайнов – когда точк
3 2
2 1
3 0
)
(
a
x
a
x
a
x
a
x
y
+

+

+

=
ычно точек гораздо больше, чем 4. Тогда поступим так: будем ить для каждых 4-х точек свою кубическую параболу – аналогично тому, как мы строили свою прямую линию для каждых двух точек при аппроксимации первого порядка, см. рис. 2.40. В узлах сопряжения двух соседних кубических парабол значения функции и первых двух произ- водных окажутся равными, в льтате чего кривая, авленная из участков кубических
x
2
3
60


Окно захвата точек для сплайна
Рис. 2.41. Иллюстрация к построению сплайна.
Шаг 4
. Далее сдвигаем окно, в которое попадают точки интерполи- руемой кривой, на одну точку (рис. 2.43). Мы видим, что точка с абсцис- сой x
1
в «новое» окно не попала; точки x
2
, x
3
и x
4
из «старого» окна пере- кочевали в новое, а точка с абсциссой x
5
, появившаяся в «новом» окне,
«старым» окном не охватывалась. Теперь, если мы рассчитаем значения коэф
Система уравнений для определения коэффициентов кубической параболы:






=

+

+

+

=

+

+

+

+

)
(
)
(
4 3
0 4
2 1
4 1
2 4
0 3
4 3
3 0
3 2
1 3
1 2
3 0
3

=

+

+

+

)
(
1 3
0 1
2 1
оди фициентов a
i
, i = 0, … , 3 по координатам точек «нового» окна (x
2
,
x
3
, x
4
и x
5
), то получим другую кубическую параболу (но отличающуюся от первой не слишком сильно, т.к. обе они должны пройти через общие для обоих окон точки x
2
, x
3
и x
4
), рис. 2.44.
Шаг 5
. Теперь прорисуем второй участок интерполирующей кривой по уравнению второй параболы, коэффициенты которой рассчитаны для аргументов «нового» окна x
2
, x
3
, x
4
и x
5.
Мы видим (рис. 2.45), что участки примыкают друг к другу гладко, без разрывов. Можно показать, что в точ- ке сопряжения участков (ее абсцисса равна x
3
) у обеих парабол наковы значения самих функций и их производных первого и второго порядков.
=

+

+

)
(
3 0
1 2
3 2
2 2
1 2
2 0
3 2
x
y
a
x
a
x
a
x
a
x
x
y
a
x
a
x
a
x
a
x
x
a
x
В этой системе уравнений неизвестные: a
1
x
y
a
x
a
x
a
1 2
1 0
3 1
x
y
a
x
a
x
a
x
a
x
0
, a
1
, a
2
, a
3
Известные: x
i
, y(x i
), i = 1, 2, 3, 4 61

Рис. 2.42. Иллюстрация к шагу 3: прорисовка первого фрагмента интерполирующей функции.
Рис. 2.43. Иллюстрация к шагу 4: точки для построения второй кубической параболы.
Последующие шаги
выполняются в цикле, начиная с шага 4: после- довательно сдвигаем окно, в которое попадают очередные 4 точки; по их коор инатам вычисляем коэффициенты соответствующей кубической параболы; прорисовываем эту параболу между второй и третьей точкой окна. Так получим кривую, плавно соединяющую точки, начиная со вто- рой и заканчивая предпоследней. д
62