Функции комплексного аргумента
Задание № 2
Тема: Основы работы с Matlab.
Цель занятия: изучение реализации средствами системы MATLAB основных операций с комплексными числами.
Ввод комплексных чисел
Язык системы MatLAB, в отличие от многих языков программирования высокого уровня, содержит в себе очень простую в пользовании встроенную арифметику комплексных чисел. Большинство элементарных математических функций допускают в качестве аргументов комплексные числа, а результаты формируются как комплексные числа. Эта особенность языка делает его очень удобным и полезным для инженеров и научных работников.
Для обозначения мнимой единицы в языке MatLAB зарезервированы два
имени i и j. Ввод с клавиатуры значения комплексного числа осуществляется путем записи в командное окно строки вида:
<имя комплексной переменной> = <значение ДЧ> + i [j] *<значение МЧ>,
где ДЧ - действительная часть комплексного числа, МЧ - мнимая часть. Например:
Рис.1
Из приведенного примера видно, в каком виде система выводит комплексные числа на экран (и на печать).
Элементарные действия с комплексными числами.
Простейшие действия с комплексными числами - сложение, вычитание, умножение, деление и возведение в степень - осуществляются при помощи обычных арифметических знаков +, -, *, /, \ и ^ соответственно.
Примеры использования приведены на рис. 1.11.
Рис. 2
Примечание. В приведенном фрагменте использована функция disp (от слова 'дисплей'), которая тоже выводит в командное окно результаты вычислений или некоторый текст. При этом численный результат, как видно, выводится уже без указания имени переменной или ans.
Функции комплексного аргумента
Практически все элементарные математические функции, вычисляются при комплексных значениях аргумента и получают в результате этого комплексные значения результата.
Благодаря этому, например, функция sqrt вычисляет, в отличие от других языков программирования, квадратный корень из отрицательного аргумента, а функция abs при комплексном значении аргумента вычисляет модуль комплексного числа. Примеры приведены на рис.3.
В MatLAB есть несколько дополнительных функций, рассчитанных только на комплексный аргумент:
real(Z) - выделяет действительную часть комплексного аргумента Z;
imag(Z) - выделяет мнимую часть комплексного аргумента;
angle(Z) - вычисляет значение аргумента комплексного числа Z (в радианах в диапазоне от - до + );
conj(Z) - выдает число, комплексно сопряженное относительно Z.
Примеры приведены на рис. 4.
Рис. 3 Рис. 4
Кроме того, в MatLAB есть специальная функция cplxpair(V), которая осуществляет сортировку заданного вектора V с комплексными элементами таким образом, что комплексно-сопряженные пары этих элементов располагаются в векторе-результате в порядке возрастания их действительных частей, при этом элемент с отрицательной мнимой частью всегда располагается первым. Действительные элементы завершают комплексно-сопряженные пары. Например (в дальнейшем в примерах команды, которые набираются с клавиатуры, будут написаны жирным шрифтом, а результат их выполнения - обычным шрифтом):
» v = [ -1, -1+2i,-5,4,5i,-1-2i,-5i]
v =
Columns 1 through 4
-1.0000 -1.0000 + 2.0000i -5.0000 4.0000
Columns 5 through 7
0 + 5. 0000i -1. 0000 - 2. 0000i 0 - 5. 0000i
» disp(cplxpair(v))
Columns 1 through 4
-1. 0000 - 2. 0000i -1. 0000 + 2. 0000i 0 - 5. 0000i 0 + 5. 0000i
Columns 5 through 7
-5. 0000 -1. 0000 4. 0000
Приспособленность большинства функций MatLAB к оперированию с комплексными числами позволяет значительно проще строить вычисления с действительными числами, результат которых является комплексным, например, находить комплексные корни квадратных уравнений.
Порядок выполнения
1. В командном окне задать значения переменных, согласно варианту задания, представленному в таблице 1.
2. Записать выражение на языке MATLAB.
Задание 1. Выполните такие действия (см. таблицу 1.1):
а) число z1, заданное в алгебраической (экспоненциальной) форме, переведите в экспоненциальную (алгебраическую), проверьте и запишите результат;
б) число z2, заданное в экспоненциальной (алгебраической) форме, переведите в алгебраическую (экспоненциальную), проверьте и запишите результат;
в) вычислите заданное выражение; запишите результат экспоненциальной форме, причем аргумент результата обеспечьте в границах между (-) и +.
Задание 2. Найдите корни квадратного уравнения
ax 2 + bx + c = 0
при заданных значениях коэффициентов a, b и c (см. таблицу 1.2).
Содержание отчета
1. Цель работы.
2. Пример расчета и вывода данных.
Контрольные вопросы
1. Как представляются действительные числа при вычислениях в системе MatLAB?
2. Как изменить формат представления действительных чисел в командном окне?
3. Каким образом объявляются переменные в языке MatLAB?
4. Как сделать так, чтобы результат действий, записанных в очередной строке
а) выводился в командное окно; б) не выводился на экран?
5. Какую роль играет системная переменная ans?
6. Как возвратить в командную строку ранее введенную команду?
7. Как ввести значения комплексного числа, и в каком виде оно выведется на экран?
8. Как на языке MatLAB обеспечить сложение, вычитание, умножение, деление и возведение в степень комплексных чисел?
9. Какие функции работы с комплексными числами предусмотрены в языке MatLAB?