Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по курсу.docx
Скачиваний:
107
Добавлен:
24.02.2016
Размер:
2.8 Mб
Скачать

12.3. Использование записей для работы с комплексными числами

Комплексные числа представляют собой расширенное понятие дейст­вительных чисел. Исторически они возникли при решении алгебраических уравнений. Например, решение уравнения x - x +1=0:

1,2 2 2 2

приводит к выражению вида u+V-1 *v. Оказывается, к аналогичным выражениям приводит решение многих задач.

Обозначив = i, получим i2 = - 1 < 0. Но мы знаем, что квадрат

обычного числа >0. Выход из этой ситуации нашли, введя понятие «мнимая

единица» и обозначив ее i =V-1. В результате выражение а =u+V-1 *v при­нимает вид а = u+iv = are+iaim и называется комплексным числом (числом, имеющим действительную (are) и мнимую (aim) части). Точка сверху отличает его от действительного.

Геометрическая интерпретация комплексного числа - точка с координа­тами (are, aim) на комплексной плоскости позволяет также однозначно опреде­лить комплексное число через модуль (расстояние от начала координат до точки) и фазу комплексного числа (угол между радиус - вектором точки и положительным направлением оси абцисс). Таким образом, комплексное чис­ло можно записать двумя способами:

&= are+iaim=aeJ9=a(cos9+isin9),

a=^а2п + afm , (p=arctg(aim / are)+2kn, are = a*cosp, aim = a*sinp.

Операции над комплексными числами Рассмотрим два числа & и с:

& * C=(are+iaim)(cre+icim)=(arecre—aimcim)+i(arecim+aimcre)

22

&/ C=((arecre+aimcim)+i(aimcre - arecim))/(c re+ c im)

В языке Паскаль отсутствуют специальные встроенные операции с комплексными числами. Однако этот недостаток легко можно компенсиро­вать, если дополнить свою библиотеку специальным модулем (Unit Cmplx) в котором все операции под комплексными числами и функциями комплексной переменной оформлены в виде набора функций и процедур. Начальный фраг­мент такого модуля приведен ниже. При желании, его легко дополнить всеми необходимыми для решения задач функциями. В этом модуле тип комплекс­ных чисел - complex вводится, как запись, имеющая два поля с именами re и im. Первое поле трактуется как действительная часть комплексного числа, второе - как мнимая часть.

Unit Cmplx;

Interface

Type Complex=record re,im:extended; end; function Addc(x,y:Complex):Complex; function Mulc(x,y:Complex):Complex; function Divc(x,y:Complex):Complex;

Implementation function Addc; // x+y begin

Addc.re:=x.re+y.re; Addc.im:=x.im+y.im;

end;

function Mulc; // x*y begin

Mulc.re:=x.re*y.re-x.im*y.im;

Mulc.im:=x.re*y.im+x.im*y.re;

end;

function Divc; // x/y var z:extended; begin

z:=sgr(y.re)+sgr(y.im);

Divc.re:=(x.re*y.re+x.im*y.im)/z;

Divc.im:=(x.im*y.re-x.re*y.im)/z; end;

end.

Предположим, что требуется ввести два комплексных числа а, b и рас­считать u=(a+b)/(a-b).

Фрагмент вычислений с комплексными числами при использовании этого модуля выглядит следующим образом:

Uses Cmplx;

Var a,b,u:Complex;

begin

a.re:=1.2; a.im:=0.8; b.re:=0.5; b.im:=0;

u:=Divc(Addc(a,b),Mulc(a,b)); memo1.lines.add(floattostr(u.re)+' '+

floattostr(u.im)); // вывод в memo1

ЛЕКЦИЯ 13. ИСПОЛЬЗОВАНИЕ ФАЙЛОВ