- •Государственный
- •1. Обзор систем компьютерной математики
- •Контрольные вопросы?
- •2. Matlab. Основы работы
- •2.1. Графический интерфейс пользователя и простейшие вычисления
- •1.1. Командное окно пакета matlab
- •2.3. Рабочее пространство пакета matlab
- •2.3. Формат представления вещественных чисел
- •1.4. Комплексные числа
- •5. Векторы и матрицы
- •Глава 2
- •2.2. Компьютерные технологии решения задач управления
- •2.2.1. Задачи управления
- •Функции matlab для создания передаточных функций звеньев системы
- •Функции pole() и zero()
- •Функция conv()
- •1.2.5. Функция polyval ()
- •1.3. Операции с передаточными функциями звеньев
- •1.3.1. Сложение передаточных функций
- •Функция pz map ()
- •1.3.3. Функция series ()
- •Функция parallel ()
- •1.3.5. Функция feedback ()
- •Часть 3
- •3.1. Комплексные числа
- •3.1.1. Понятие комплексного числа[1]
- •3.1.2.Алгебраическая форма комплексного числа. Сложение, вычитание, умножение и деление комплексных чисел
- •Сложение комплексных чисел
- •Вычитание комплексных чисел
- •Умножение комплексных чисел
- •Деление комплексных чисел
- •Тригонометрическая и показательная форма комплексного числа
- •Возведение комплексных чисел в степень
- •Извлечение корней из комплексных чисел. Квадратное уравнение с комплексными корнями
- •Как извлечь корень из произвольного комплексного числа?
- •3.2. Операции с числами
- •3.2.1. Ввод действительных чисел
- •3.2.3. Ввод комплексных чисел
- •3.2.4. Элементарные математические функции
- •3.2.5. Элементарные действия с комплексными числами
- •3.2.6. Функции комплексного аргумента
- •4. Алгебра вектор и матриц
- •4.1. Создание векторов и матриц
- •Преобразование матриц
- •Вызов на экран и замена элементов матрицы
- •4.2.2. Изменение размера вектора или матрицы
- •Математические операции с векторами и матрицами
- •Транспортирование матрицы
- •След матрицы
- •Обратная матрица
- •Единичная матрица
- •Образование матрицы с единичными элементами
- •Образование матрицы с нулевыми элементами
- •Вектор равностоящих точек
- •Перестановка элементов матрицы
- •Создание матриц с заданной диагональю
- •Создание массивов со случайными элементами
- •Поворот матрицы
- •Выделение треугольных частей матрицы
- •Вычисление математического квадрата
- •Математические операции над векторами и матрицами
- •Примеры образования функций от вектора и матриц
- •Библиографический список
1.4. Комплексные числа
В MATLAB переменным i, j по умолчанию присвоено значение √–1.
» clear
» i
ans =
0 + 1i
» J
ans =
0 + 1i
» i*i
ans =
-1
При работе с комплексными числами существует опасность, что переменным i, j будут присвоены новые значения, например, при использовании в циклах for в качестве индексной переменной. Для избежания подобной ситуации следует перед началом работы с комплексными числами выполнять команду
» clear i, j
Основные приемы работы с комплексными числами поясним на следующих примерах:
1. Зададим комплексные числа:
» а=1 + i
а =
1 + li
» b = 2 - 3i
b =
2 - 3i
2. Вычислим произведение комплексных чисел
» а* b
ans =
5 - li
3. Вычислим √a
» d = sqrt(a)
d = 1.0987 + 0.4551i
4. Вычислим b3
» b^3
ans =
-46.0000 - 9.0000i
»
5. Вычислим | a |
» abs(a)
ans = 1.4142
6. Вычислим действительную (re(b)) и мнимую (im(b)) части комплексного числа
» real(b)
ans =
2
» imag(b)
ans =
-3
Вычислим аргумент комплексного числа (arg(a))
>> angle(a)
>> a=1+i
a =
1.0000 + 1.0000i
>> angle(a)
ans =
0.7854 >> b=2-3i
b =
2.0000 - 3.0000i
вычислим число комплексно сопряженное числу b
>> conj(b)
ans =
2.0000 + 3.0000i
Вычислим sin(a)
>> sin(a)
ans =
1.2985 + 0.6350i
5. Векторы и матрицы
Основные приемы работы с векторами и матрицами продемонстрируем следующими примерами.
Зададим вектор-строку:
>> u1=[2 2 2]
u1 =
2 2 2
>> whos u1
Name Size Bytes Class
u1 1x3 24 double array
Grand total is 3 elements using 24 bytes
Зададим вектор-столбец:
>> u2=[2;1;-2]
u2 =
2
1
-2
>> whos u2
Name Size Bytes Class
u2 3x1 24 double array
Grand total is 3 elements using 24 bytes
Зададим, вектор с использованием числового диапазона:
>> dialp=3.5:0.5:9.874;
>> dialp
dialp =
3.5000 4.0000 4.5000 5.0000 5.5000 6.0000 6.5000 7.0000 7.5000 8.0000 8.5000 9.0000 9.5000
>> length(dialp)
ans =
13
4. Вычислим скалярное произведение векторов
>> a=[1 2 3];
>> b=[3 2 1];
>> a*b
??? Error using ==> mtimes
Inner matrix dimensions must agree.
Здесь MATLAB выдал сообщение об ошибке, потому что в соответствии с правилами умножения матриц, принятыми в линейной алгебре можно умножать вектор-строку на вектор столбец, поэтому, для вычисления скалярного произведения необходимо предварительно транспонировать вектор b:
>> a*b'
ans =
10
5. Поэлементное умножение векторов
>> a=[3 2 1];
>> b=[1 2 3];
>> a.*b
ans =
3 4 3
6. Создадим матрицу
>> A=[-1 1 2;3 -1 1;-1 3 4]
A =
-1 1 2
3 -1 1
-1 3 4
7. Выделим заданный столбец матрицы
>> A(:,1)
ans =
-1
3
-1
8. Выделим заданную строку матрицы
>> A(2,:)
ans =
3 -1 1
Выделим определитель матрицы
>> det(A)
ans =
10
Вычислим обратную матрицу
>> inv(A)
ans =
-0.7000 0.2000 0.3000
-1.3000 -0.2000 0.7000
0.8000 0.2000 -0.2000
|
1.6. Элементарные функции
В MATLAB встроены все основные элементарные математические функции, которые представлены в табл. 1.1. Таблица 1.1. Основные элементарные математические функции
| ||
|
Тригонометрические функции | ||
|
п |
sin(X) вычисляет синус от элементов числового массиваX. Области определения и значений могут быть комплексными. Углы измеряются в радианах. | |
|
nh |
Вычисляет гиперболический синус. Области определения и значений могут быть комплексными. | |
|
sin |
Y=asin(X) вычисляет арксинус от элементов массива. Области определения и значений могут быть комплексными. Углы измеряются в радианах. Для вещественныхXиз отрезка [—1, 1] значенияYпринадлежат отрезку [–π/2, π/2]. Для вещественныхXвне отрезка [—1, 1]Yпринимает комплексные значения. | |
|
sinh |
Y=asinh(X) вычисляет гиперболический арксинус от элементов массива. Области определения и значений могут быть комплексными. | |
|
|
Вычисляет косинус от элементов массива. | |
|
osh |
Вычисляет гиперболический косинус от элементов массива. | |
|
cos |
Y=acos(X) вычисляет арккосинус от элементов массива. Области определения и значений могут быть комплексными. Углы измеряются в радианах. Для вещественныхXиз отрезка [—1, 1] значенияYпринадлежат отрезку [—π, π]. Для вещественныхXвне отрезка [-1, 1]Yпринимает комплексные значения. | |
|
cosh |
Вычисляет гиперболический арккосинус от элементов массива. | |
|
tan |
Вычисляет тангенс от элементов массива. Области определения и значений могут быть комплексными. Углы измеряются в радианах. Выражение tan(π /2) не является точнымinf, поскольку π есть лишь приближение к π. | |
|
tanh |
Вычисляет гиперболический тангенс от элементов массива. | |
|
atan |
Вычисляет арктангенс. Области определения и значений могут быть комплексными. Углы измеряются в радианах. Для вещественных XзначенияYпринадлежат отрезку (–π /2, π /2). | |
|
atan2 |
Для вещественных х, у z=atan2(x,y) есть угол наклона вектора с координатами х, у и принимает значения из [-π, π]. х, у могут быть массивами одинаковых размеров. | |
|
atanh |
Вычисляет гиперболический арктангенс от элементов массива. Области определения и значений могут быть комплексными. Углы измеряются в радианах. | |
|
sec |
Вычисляет секанс от элементов массива. Области определения и значений могут быть комплексными. Углы измеряются в радианах. | |
|
seen |
Вычисляет гиперболический секанс от элементов массива. Области определения и значений могут быть комплексными | |
|
asec |
Вычисляет арксеканс от элементов массива Области определения и значений могут быть комплексными. Углы измеряются в радианах. | |
|
asech |
Вычисляет гиперболический арксеканс от элементов массива. Области определения и значений могут быть комплексными. | |
|
csc |
Вычисляет косеканс от элементов массива. Области определения и значений могут быть комплексными. Углы измеряются в радианах. | |
|
csch |
Вычисляет гиперболический косеканс от элементов массива. Области определения и значений могут быть комплексными. | |
|
acsc |
Вычисляет арккосеканс от элементов массива. Области определения и значений могут быть комплексными. Углы измеряются в радианах. | |
|
acsch |
Вычисляет гиперболический арккосеканс от элементов массива. Области определения и значений могут быть комплексными. | |
|
cot |
Вычисляет котангенс от элементов массива. Области определения и значений могут быть комплексными. Углы измеряются в радианах. | |
|
coth |
вычисляет гиперболический котангенс от элементов массива. Области определения и значений могут быть комплексными. Углы измеряются в радианах. | |
|
acot |
Вычисляет арккотангенс от элементов массива. Области определения и значений могут быть комплексными. Единица измерения углов — радиан. | |
|
acoth |
Вычисляет гиперболический арккотангенс от элементов массива. Области определения и значений могут быть комплексными. | |
|
|
Экспоненциальные функции | |
|
exp |
Вычисляет экспоненциальную функцию от элементов числового массива. Области определения, и значений могут быть комплексными. | |
|
log |
Вычисляет натуральный логарифм от элементов массива Области определения и значений могут быть комплексными. | |
|
logl0 |
Вычисляет десятичный логарифм от элементов массива. Области определения и значений могут быть комплексными. | |
|
pow2 |
Y=pow2(X) есть показательная функция по основанию 2 от элементов массиваX. Области определения и значений могут быть комплексными.Y=pow2(F,E) вычисляет значениеy=F·2E для соответствующих элементов вещественного массиваFи целочисленного массива Е. | |
|
sqrt |
Y=sqrt(X) вычисляет квадратный корень из элементов массиваX. Для отрицательных и комплексных элементовXфункция принимает комплексные значения. | |
|
nextpow2 |
Для комплексного числа а в обращении р = nextpow2(a) вычисляется такое минимальное р, что 2Р≥abs(a). Если, а не является скаляром, то вычисляетсяnextpow2(length(a)). | |
|
Комплексные функции | ||
|
abs |
Вычисляет модуль для каждого элемента комплексного массива. | |
|
angle |
Вычисляет аргумент в радианах для каждого элемента комплексного массива. Область значений –полуинтервал (–π, π]. | |
|
conj |
Вычисляет комплексное сопряжение для каждого элемента комплексного массива. | |
|
imag |
Выдает мнимую часть числа для каждого элемента комплексного массива. | |
|
real |
Выдает вещественную часть числа для каждого элемента комплексного массива. | |
|
unwrap |
Для вектора р, элементы которого равны углам некоторой последовательности комплексных чисел, в векторе q=unwrap(p) последовательно ликвидированы разрывы из р, превосходящие по модулю π, путем добавления кратного ±2π. При обращенииunwrap(p,tol) для обнаружения скачка вместо π используетсяtol. Для многомерного массива Р команда работает по первому неединичному измерению,unwrap(P,[],dim) – по измерениюdimвunwrap(P,tol,dim) используютсяtolиdim. | |
|
isreal |
K=isreal(A) равно 1 если все элементы массива А — вещественные числа и равно 0 в любом другом случае. | |
|
cplxpair |
B=cplxpair(A) упорядочивает элементы вдоль различных измерений комплексного массива А, группируя вместе сопряженные пары. Эти пары упорядочиваются по возрастанию вещественной части, и первым в паре идет элемент с отрицательной мнимой частью. Чисто вещественные числа располагаются после сопряженных пар. Все сравнения для нахождения сопряженных пар т отделения чисто вещественных чисел от комплексных выполняются с относительной кabs(A(i)) точностью 100*eps, при этом приблизительно сопряженные пары считаются точно сопряженными. Измерение в массиве для работы команды выбирается так же, как в командеunwrap, а вместо 100*epsможно использовать параметрtol. Если в упорядочиваемом массиве не все строго комплексные числа имеют комплексно сопряженные (с требуемой точностью) пары командаcplxpairвыдает сообщение об ошибкеComplex numbers can't be paired. | |
|
Функции округления и вычисления остатков | ||
|
fix |
fix(A) округляет элементы вещественного массива А в сторону -inf.У комплексных массивов мнимые и вещественные части округляются независимо. | |
|
floor |
floor(A) округляет элементы вещественного массива А в сторону нуля. В остальном действует какfix. | |
|
ceil |
ceil(A) округляет элементы вещественного массива А в сторонуinf. | |
round |
round(A) округляет элементы вещественного массива А до ближайшего целого. | ||
[mod |
M=mod(X,Y) возвращает остаток от деленияXнаY. | ||
rem |
M=rem(X,Y) возвращает целую часть от деленияXнаY. | ||
sign |
sign(x) возвращает -1 если х < 0, 0, если х = 0, 1, если х > 0. |
В языках программирования высокого уровня вычисления с массивами осуществляются поэлементно, поэтому в соответствующих процедурах приходится программировать вычисление выражений для каждого элемента массива. В MATLAB этого не требуется, так как в М-языке имеются групповые операции, выполняемые сразу над всем массивом. В частности, в М-языке MATLAB можно производить групповые вычисления над массивами, используя обычные математические функции, которые в традиционных языках программирования работают только со скалярными аргументами. В результате запись команд становится более компактной и, следовательно, удобной для ввода с клавиатуры. Например, для вычисления таблицы значений функции косинус в равноотстоящих точках отрезка [0; π/2], отстоящих друг от друга на расстояние 0,01, достаточно использовать всего две команды
>> x=0:0.01:pi/2;
>> y=cos(x);
>> whos x y
Name Size Bytes Class
x 1x158 1264 double array
y 1x158 1264 double array
Grand total is 316 elements using 2528 bytes
>> Аналогично вычисляются функции от двумерных массивов:
>> A=[0 pi/6; pi/4 pi/2; 5*pi/6 3*pi/4]
A =
0 0.5236
0.7854 1.5708
2.6180 2.3562
>> sin(A)
ans =
0 0.5000
0.7071 1.0000
0.5000 0.7071
Вопросы для самопроверки
Какие окна имеет интерфейс MATLAB, и каково их назначение?
Какова структура окна Command Windows?
Как в MATLAB осуществляется ввод и выполнение команд?
Назовите зоны окна Command Windows.
5. Как увеличить длину командной строки Command Windows, распространив ее на несколько физических строк командного окна?
6. Что называется рабочей областью MATLAB?
7. Как осуществляется просмотр и редактирование значений переменных в окне Workspace?
8. Как отобразить список переменных, созданных в данном сеансе работы, в командном окне?
9. Как удалить неиспользуемую более переменную из рабочего пространства MATLAB?
10. Как получить справку по выбранной команде MATLAB?
11. В каком формате в MATLAB представляются вещественные числа?
12. Какие форматы отображения вещественных чисел используются в MATLAB?
13. Как в MATLAB осуществляются операции с комплексными числами? 14. Как в MATLAB осуществляются операции с матрицами числами?
I5. Как в MATLAB осуществляется вычисление элементарных функций от векторов и матриц?