Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SKM_02_2015.docx
Скачиваний:
86
Добавлен:
13.02.2018
Размер:
1.33 Mб
Скачать

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

Вопросы для самопроверки

  1. Какие окна имеет интерфейс MATLAB, и каково их назначение?

  2. Какова структура окна Command Windows?

  3. Как в MATLAB осуществляется ввод и выполнение команд?

  4. Назовите зоны окна Command Windows.

5. Как увеличить длину командной строки Command Windows, распро­странив ее на несколько физических строк командного окна?

6. Что называется рабочей областью MATLAB?

7. Как осуществляется просмотр и редактирование значений переменных в окне Workspace?

8. Как отобразить список переменных, созданных в данном сеансе рабо­ты, в командном окне?

9. Как удалить неиспользуемую более переменную из рабочего простран­ства MATLAB?

10. Как получить справку по выбранной команде MATLAB?

11. В каком формате в MATLAB представляются вещественные числа?

12. Какие форматы отображения вещественных чисел используются в MATLAB?

13. Как в MATLAB осуществляются операции с комплексными числами? 14. Как в MATLAB осуществляются операции с матрицами числами?

I5. Как в MATLAB осуществляется вычисление элементарных функций от векторов и матриц?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]