Главная страница

Учебное пособие для студентов высших учебных заведений


Скачать 5.41 Mb.
НазваниеУчебное пособие для студентов высших учебных заведений
Дата10.03.2022
Размер5.41 Mb.
Формат файлаpdf
Имя файлаmatlab.pdf
ТипУчебное пособие
#390741
страница5 из 44
1   2   3   4   5   6   7   8   9   ...   44
» cross(v1,v2)
ans = -3 6 -3
На этом перечень допустимых математических операций с векторами ис- черпывается.

1.3. Операции с векторами и матрицами
38
Поэлементное преобразование векторов
В языке MatLAB предусмотрен ряд операций, которые преобразуют задан- ный вектор в другой того же размера и типа, но не являются операциями с векто- ром как математическим объектом. К таким операциям относятся, например, все
элементарные математические функции, приведенные в разделе 1.2.4 и которые зависят от одного аргумента. В языке MatLAB запись, например, вида Y = sin(X), где X - некоторый известный вектор, приводит к формированию нового вектора
Y, имеющего тот же тип и размер, но элементы которого равняются синусам со- ответствующих элементов вектора-аргумента X. Например:
» x = [ -2,-1,0,1,2];
» y = sin(x)
y = -0. 9093 -0. 8415 0 0. 8415 0. 9093
» z = tan(x)
z = 2. 1850 -1. 5574 0 1. 5574 -2. 1850
» v = exp(x)
v = 0. 3679 1. 0000 2. 7183 7. 389
Кроме этих операций в МаtLAB предусмотрено несколько операций поэле- ментного преобразования, осуществляемых с помощью знаков обычных арифме- тических действий. Эти операции применяются к векторам одинакового типа и
размера. Результатом их есть вектор того же типа и размера.
Добавление (отнимание) числа к (из) каждому элемента вектора. Осу- ществляется с помощью знака ' + ' (' - ').
Поэлементное умножение векторов. Проводится с помощью совокупно- сти знаков ' .* ', которая записывается между именами перемножаемых векторов.
В результате получается вектор, каждый элемент которого является произведени- ем соответствующих элементов векторов - "сомножителей".
Поэлементное деление векторов. Осуществляется с помощью совокупно- сти знаков './ '. Результат - вектор, каждый элемент которого является частным от деления соответствующего элемента первого вектора на соответствующий эле- мент второго вектора.
Поэлементное деление векторов в обратном направлении. Осуществля- ется с помощью совокупности знаков '.\ '. В результате получают вектор, каждый элемент которого является частным от деления соответствующего элемента вто- рого вектора на соответствующий элемент первого вектора.
Поэлементное возведение в степень. Осуществляется с помощью сово- купности знаков '.^ '. Результат - вектор, каждый элемент которого является соот- ветствующим элементом первого вектора, возведенным в степень, величина кото- рой равняется значению соответствующего элемента второго вектора. Примеры:
» x = [1,2,3,4,5]; y = [-2,1,4,0,5];
» disp(x + 2)
3 4 5 6 7
» disp(y - 3)
-5 -2 1 -3 2
» disp(x. *y)
-2 2 12 0 25
» disp(x. /y)

1.3. Операции с векторами и матрицами
39
Warning: Divide by zero
-0. 5000 2. 0000 0. 7500 Inf 1. 0000
» disp(x. \y)
-2. 0000 0. 5000 1. 3333 0 1. 0000
» disp(x. ^y)
1 2 81 1 3125
Вышеуказанные операции позволяют очень просто вычислять (а затем - строить графики) сложные математические функции, не используя при этом опе- раторы цикла, т. е. осуществлять построение графиков в режиме калькулятора.
Для этого достаточно задать значение аргумента как арифметическую прогрессию так, как это было показано в п. 1.3.1, а потом записать нужную функцию, исполь- зуя знаки поэлементного преобразования векторов.
Например, пусть нужно вычислить значения функции:
y
a e
x
hx
= ⋅


sin при значениях аргумента х от 0 до 10 с шагом 1. Вычисление массива значений этой функции в указанных условиях можно осуществить с помощью лишь двух простых операторов :
» a = 3; h = 0.5; x = 0:10;
» y = a * exp(-h*x) . * sin(x)
y =
Columns 1 through 7 0 1.5311 1.0035 0.0945 -0.3073 -0.2361 -0.0417
Columns 8 through 11 0. 0595 0. 0544 0. 0137 -0. 0110
1.3.5. Поэлементное преобразование матриц
Для поэлементного преобразования матрицы пригодны все указанные ранее в п. 1.2.4 алгебраические функции. Каждая такая функция формирует матрицу то- го же размера, что и заданная, каждый элемент которой вычисляется как указан- ная функция от соответствующего элемента заданной матрицы.Кроме этого, в
MatLAB определены операции поэлементного умножения матриц одинакового размера (совокупностью знаков ' .* ', записываемой между именами перемножае- мых матриц), поэлементного деления (совокупности './ ' и '.\'), поэлементного
возведения в степень (совокупность '.^' ), когда каждый элемент первой матрицы возводится в степень, равную значению соответствующего элемента второй мат- рицы.
Приведем несколько примеров:
» A = [1,2,3,4,5; -2, 3, 1, 4, 0]
A =
1 2 3 4 5
-2 3 1 4 0
» B = [-1,3,5,-2,1; 1,8,-3,-1,2]
B =
-1 3 5 -2 1 1 8 -3 -1 2
» sin(A)
ans =
0. 8415 0. 9093 0. 1411 -0. 7568 -0. 9589
-0. 9093 0. 1411 0. 8415 -0. 7568 0

1.3. Операции с векторами и матрицами
40
» A . * B
ans =
-1 6 15 -8 5
-2 24 -3 -4 0
» A . / B
ans =
-1. 0000 0. 6667 0. 6000 -2. 0000 5. 0000
-2. 0000 0. 3750 -0. 3333 -4. 0000 0
» A . \ B
Warning: Divide by zero ans =
-1. 0000 1. 5000 1. 6667 -0. 5000 0. 2000
-0. 5000 2. 6667 -3. 0000 -0. 2500 Inf
» A . ^ B
ans =
1. 0e+003 *
0. 0010 0. 0080 0. 2430 0. 0001 0. 0050
-0. 0020 6. 5610 0. 0010 0. 0002 0
Оригинальной в языке MatLAB является операция прибавления к матрице числа. Она записывается следующим образом: A + x, или х + A (А - матрица, а x - число). Такой операции нет в математике. В MatLAB она эквивалентна совокуп- ности операций
А + х * Е, где Е - обозначение матрицы, которая состоит только из единиц, тех же размеров, что и матрица А. Например:
» A = [ 1 2 3 4 5; 6 7 8 9 11 ]
A =
1 2 3 4 5 6 7 8 9 11
» A + 2
ans =
3 4 5 6 7 8 9 10 11 13
» 2 + A
ans =
3 4 5 6 7 8 9 10 11 13
1.3.6. Матричные действия над матрицами
К матричным действиям над матрицами относят такие операции, которые используются в матричном исчислении в математике и не противоречат ему.
Базовые действия с матрицами - сложение, вычитание, транспонирова-
ние, умножение матрицы на число, умножение матрицы на матрицу, возве-
дение матрицы в целую степень - осуществляются в языке MatLAB с помощью обычных знаков арифметических операций. При использовании этих операций
важно помнить условия, при которых эти операции являются возможными:
при сложении или вычитании матрицы должны иметь одинаковые разме-
ры;
при умножении матриц количество столбцов первой матрицы должно сов-
падать с количеством строк второй матрицы.

1.3. Операции с векторами и матрицами
41
Невыполнение этих условий приведет к появлению в командном окне со- общения об ошибке. Приведем несколько примеров.
Пример сложения и вычитания:
» A = [ 1 2 3 4 5; 6 7 8 9 11 ]
A =
1 2 3 4 5 6 7 8 9 11
» B = [ 0 -1 -2 -3 -4; 5 6 7 8 9 ]
B =
0 -1 -2 -3 -4 5 6 7 8 9
» A + B
ans =
1 1 1 1 1 11 13 15 17 20
» A - B
ans =
1 3 5 7 9 1 1 1 1 2.
Пример умножения на число:
» 5*A
ans =
5 10 15 20 25 30 35 40 45 55
» A*5
ans =
5 10 15 20 25 30 35 40 45 55.
Пример транспонирования матрицы:
» A'
ans =
1 6 2 7 3 8 4 9 5 11.
Пример умножения матрицы на матрицу:
» A' * B
ans =
30 35 40 45 50 35 40 45 50 55 40 45 50 55 60 45 50 55 60 65 55 61 67 73 79
» С = A * B'
С =
-40 115
-94 299.
Функция обращения матрицы - inv(A) - вычисляет матрицу, обратную за- данной матрице А. Исходная матрица А должна быть квадратной, а ее определи- тель не должен равняться нулю.
Приведем пример:
» inv(C)
ans =
-2. 6000e-001 1. 0000e-001

1.3. Операции с векторами и матрицами
42
-8. 1739e-002 3. 4783e-002
Проверим правильность выполнения операции обращения, применяя ее еще раз к полученному результату:
» inv(ans)
ans =
-4. 0000e+001 1. 1500e+002
-9. 4000e+001 2. 9900e+002
Как видим, мы получили исходную матрицу С, что является признаком пра- вильности выполнения обращения матрицы.
Возведение матрицы в целую степень осуществляется в MatLAB с помо- щью знака "^": А^n. При этом матрица должна быть квадратной, а n - целым (по- ложительным или отрицательным) числом. Это матричное действие эквивалентно умножению матрицы А на себя n раз (если n - положительно) или умножению обратной матрицы на себя (при n отрицательно).
Приведем пример:
» A^2
ans =
8 -3 -10
-5 10 16
-2 4 9
» A^(-2)
ans =
1.5385e-001 -7.6923e-002 3.0769e-001 7. 6923e-002 3. 0769e-001 -4. 6154e-001 2. 1328e-018 -1. 5385e-001 3. 8462e-001
Оригинальными в языке MatLAB являются две новые, неопределяемые в математике функции деления матриц. При этом вводятся понятие деления
матриц слева направо и деление матриц справа налево. Первая операция записывается с помощью знака ' / ' , а вторая - ' \ '.
Операция В / A эквивалентна последовательности действий B * inv(A), где функция inv осуществляет обращение матрицы. Ее удобно использовать для решения матричного уравнения:
Х * А = В.
Аналогично операция A\B равносильна совокупности операций inv(A)*B, которая представляет собой решение матричного уравнения:
А * Х = В.
Для примера рассмотрим задачу отыскания корней системы линейных ал- гебраических уравнений:
x
1
+ 2x
2
+ 3x
3
= 14
2x
1
- x
2
- 5x
3
= -15
x
1
- x
2
- x
3
= -4
В среде MatLAB это можно сделать таким образом:
» A = [ 1 2 3; 2 -1 -5; 1 -1 -1]
A =
1 2 3 2 -1 -5 1 -1 -1
» B = [ 14;-15;-4]
B =

1.3. Операции с векторами и матрицами
43
14
-15
-4
» x = A \ B
x =
1 2
3
1.3.7. Матричные функции
Вычисление матричной экспоненты (e
А
)осуществляется с помощью функций expm, expm1, expm2, expm3. Эти функции следует отличать от прежде рассмотренной функции exp(A), которая формирует матрицу, каждый элемент ко- торой равняется е в степени, которая равняется соответствующему элементу матрицы А.
Функция expm является встроенной функцией MatLAB. Функция expm1(A) реализована как М-файл, который вычисляет матричную экспоненту путем ис- пользования разложения Паде матрицы А. Функция еxpm2(A) вычисляет матрич- ную экспоненту, используя разложение Тейлора матрицы А. Функция expm3(A) вычисляет матричную экспоненту на основе использования спектрального разло- жения А.
Приведем примеры использования этих функций:
» A = [1,2,3; 0, -1,5;7, -4,1]
A =
1 2 3 0 -1 5 7 -4 1
» expm(A)
ans =
131.3648 -9.5601 80.6685 97. 8030 -7. 1768 59. 9309 123. 0245 -8. 8236 75. 4773
» expm1(A)
ans =
131.3648 -9.5601 80.6685 97. 8030 -7. 1768 59. 9309 123. 0245 -8. 8236 75. 4773
» expm2(A)
ans =
131.3648 -9.5601 80.6685 97. 8030 -7. 1768 59. 9309 123. 0245 -8. 8236 75. 4773
» expm3(A)
ans =
1.0e+002 *
1. 3136 + 0. 0000i -0. 0956 + 0. 0000i
0. 8067 - 0. 0000i
0. 9780 + 0. 0000i -0. 0718 - 0. 0000i
0. 5993 - 0. 0000i
1.2302 + 0. 0000i
-0. 0882 - 0. 0000i
0. 7548 - 0. 0000i
Функция logm(А) осуществляет обратную операцию - логарифмирование матрицы по натуральному основанию, например:
A =
1 2 3 0 1 5

1.3. Операции с векторами и матрицами
44
7 4 1
» B = expm3(A)
B =
1.0e+003 *
0.9378 0.7987 0.9547 1. 0643 0. 9074 1. 0844 1. 5182 1. 2932 1. 5459
» logm(B)
ans =
1. 0000 2. 0000 3. 0000 0. 0000 1. 0000 5. 0000 7.0000 4. 0000 1. 0000
Функция sqrtm(А) вычисляет такую матрицу Y, что Y*Y = A:
» Y = sqrtm(A)
Y =
0.7884 + 0.8806i 0.6717 - 0.1795i 0.8029 - 0.4180i
0. 8953 + 0. 6508i 0. 7628 + 0. 8620i 0. 9118 - 1. 0066i
1.2765 - 1. 4092i 1. 0875 - 0. 5449i 1. 3000 + 1. 2525i
» Y * Y
ans =
1. 0000 + 0. 0000i 2. 0000 - 0. 0000i 3. 0000 + 0. 0000i
0. 0000 - 0. 0000i 1. 0000 - 0. 0000i 5. 0000 - 0. 0000i
7.0000 + 0. 0000i 4. 0000 + 0. 0000i 1. 0000 + 0. 0000i
1.3.8. Задания
Задание 1.5. Вычислите значения функции f(x) на отрезке [a; b] с шагом h.
Таблица 1.3
Вариант
( )
f x
a
b
h
1
x
x
2 1 0 25
+ ,
1,1 3,1 0,2 2
x
x
x
3 0 3 1 2

+
,
2,05 3,05 0,1 3
2 2
3
e
x
x

+
π
0 1,6 0,16 4 cos
π
x
x
2 1 3

-1 0
0,1 5
1 4
+ x
x
sin
π
0,1 0,8 0,07 6
e
x
x
3 2
1
+
1,4 2,4 0,1 7
e
x
x

+

2 2
1 0,25 2,25 0,2 8
(
)
(
)
e x
x
+

sin
π
1 1,8 2,8 0,1 9
3 2 2
3
+

x tg
x
π
0,1 0,9 0,08

1.3. Операции с векторами и матрицами
45
10
(
)
2 3 1 3 2
+

+
x
x
ln
-0,1 0,9 0,1 11
x
x
2 3
3 2
+ ⋅ cos
π
1 2,5 0,15 12
(
)
(
)
4 7 1
3
+
+
x
x
sin
π
0 7
0,7 13
(
)
e
x
x

+

2 1 3 2
x
0 2
0,2 14
x
x
x
3 2
3 8
1

+
+
0 1,7 0,17 15
sh
x
2
π
, sh x
e
e
x
x
=








2 0
1,2 0,12 16
ch
x
2
π
, ch x
e
e
x
x
=
+







2 0,5 1,5 0,1 17
x
x
e
x
3 2
1
+
+
-0,2 0,8 0,1 18 1 2 3
2 2
+

x
x
sin
2 4
0,2 19 3
5 2
2
x
x
+ ⋅ cos
π
0,5 1,5 0,1 20 arccose
x
− 3 3
0,2 0,5 0,03 21 arcsin e
x

2 5
8 13 0,5 22
(
)
x
x
x
+
+
+
ln
1 2
-0,5 0,5 0,1 23 1
3 1
2 2
+
+

e
x
x
3 5
0,2 24 3
1 3
2 2
x
x
e
x
+ +

1,2 2,2 0,1 25
x
x
x
x
2 1 3
2
+
+

1 5
0,4
1.3.9. Вопросы
1. Как вводятся векторы в языке MatLAB? Какими функциями можно фор- мировать векторы в языке MatLAB?
2. Какие функции MatLAB разрешают преобразовывать вектор поэлемент- но?
3. С помощью каких средств в MatLAB осуществляются основные операции с векторами?
4. Как вводятся матрицы в системе MatLAB?

1.3. Операции с векторами и матрицами
46
5. Какие функции имеются в MatLAB для формирования матриц опреде- ленного вида?
6. Как сформировать матрицу: а) по заданным векторам ее строк? б) по заданным векторам ее столбцов? в) по заданным векторам ее диагоналей?
7. Какие функции поэлементного преобразования матрицы есть в MatLAB?
8. Как осуществляются в MatLAB обычные матричные операции?
9. Как решить в MatLAB систему линейных алгебраических уравнений?

1.4. Функции прикладной численной математики
47
1.4. Функции прикладной численной математики
1.4.1. Операции с полиномами
В системе MatLAB предусмотрены некоторые дополнительные возможно- сти математического оперирования с полиномами.
Полином (многочлен) как функция определяется выражением:
0 1
2 2
)
(
a
x
a
x
a
x
a
x
P
n
n
+

+

+
+

=
В системе MatLAB полином задается и сохраняется в виде вектора, элемен- тами которого являются коэффициенты полинома от до в указанном по- рядке:
n
a
0
a
]
[
0 1
2
a
a
a
a
P
n
=
Введение полинома в MatLAB осуществляется так же, как и ввод вектора длиной n+1, где n - порядок полинома.
Умножение полиномов. Произведением двух полиномов степеней n и m соответственно, как известно, называют полином степени n+m, коэффициенты ко- торого определяют простым перемножением этих двух полиномов. Фактически операция умножения двух полиномов сводится к построению расширенного век- тора коэффициентов по заданным векторам коэффициентов полиномов- сомножителей. Эту операцию в математике называют сверткой векторов (а сам вектор, получаемый в результате такой процедуры - вектором-сверткой двух
векторов). В MatLAB ее осуществляет функция
1   2   3   4   5   6   7   8   9   ...   44


написать администратору сайта