Программирование на языке высокого уровня

Тип работы:
Контрольная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Министерство образования и науки Российской Федерации

Контрольная работа

По дисциплине «Программирование на языке высокого уровня»

2010 год

СОДЕРЖАНИЕ

Введение

1. Постановка задачи

  • 2. Математические и алгоритмические основы решения задачи
  • 2.1 Понятие о комплексных числах
  • 2.2 Действия с комплексными числами
  • 2.2.1 Сложение комплексных чисел
  • 2.2.2 Вычитание комплексных чисел
  • 2.2.3 Произведение комплексных чисел
  • 2.2.4 Деление комплексных чисел
  • 3. Программная реализация решения задачи
  • 4. Пример выполнения программы
  • Заключение
  • Список использованных источников и литературы

ВВЕДЕНИЕ

Решение многих задач физики и техники приводит к квадратным уравнениям с отрицательным дискриминантом. Эти уравнения не имеют решения в области действительных чисел. Но решение многих таких задач имеет вполне определенный физический смысл. Значение величин, получающихся в результате решения указанных уравнений, назвали комплексными числами.

Комплексные числа широко использовал отец русской авиации Н. Е. Жуковский (1847 — 1921) при разработке теории крыла, автором которой он является.

Комплексные числа и функции от комплексного переменного находят применение во многих вопросах науки и техники.

Цель настоящей курсовой работы: разработка программного обеспечения для реализации арифметических операций над комплексными числами.

1. Постановка задачи

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

1) Сложение:.

2) Вычитание:.

3) Умножение:.

4) Деление:.

Пример 1.

Выполнить сложение двух комплексных чисел:

и.

.

Ответ:.

Пример 2.

Выполнить вычитания двух комплексных чисел:

и.

.

Ответ:.

Пример 3.

Выполнить умножение двух комплексных чисел:

и.

.

Ответ:.

Пример 4.

Выполнить деление двух комплексных чисел:

и.

.

Ответ: i.

2. Математические и алгоритмические основы решения задачи

2.1 Понятие о комплексных числах

Для решения алгебраических уравнений недостаточно действительных чисел. Поэтому естественно стремление сделать эти уравнения разрешимыми, что в свою очередь приводит к расширению понятия числа. Например, для того чтобы любое уравнение x+a=b имело корни, положительных чисел недостаточно и поэтому возникает потребность ввести отрицательные числа и нуль.

Древнегреческие математики считали, что a=c и b=а только натуральные числа, но в практических расчетах за два тысячелетия до нашей эры в Древнем Египте и Древнем Вавилоне уже применялись дроби. Следующим важным этапом в развитии понятия о числе было введение отрицательных чисел — это было сделано китайскими математиками за 2 века до нашей эры. Отрицательные числа применял в 3 веке нашей эры древнегреческий математик Диофант, знавший уже правила действий над ними, а в 7 веке нашей эры эти числа подробно изучили индийские ученые, которые сравнивали такие числа с долгом. С помощью отрицательных чисел можно было единым образом описывать изменение величин. Уже в 8 веке нашей эры было установлено, что квадратный корень из положительного числа имеет два значение — положительное и отрицательное, а из отрицательных чисел квадратные корни извлечь нельзя: нет такого числа х, чтобы х2 = -9. В 16 веке в связи с изучением кубических уравнений оказалось необходимым извлекать квадратные корни из отрицательных чисел. В формуле для решения кубических уравнений содержатся кубические и квадратные корни. Эта формула безотказно действует в случае, когда уравнение имеет один действительный корень (например, для уравнения х3+3х-4=0), а если оно имело 3 действительных корня (например, х3-7х+6=0), то под знаком квадратного корня оказывалось отрицательное число. Получалось, что путь к этим 3 корням уравнения ведет через невозможную операцию извлечения квадратного корня из отрицательного числа.

Чтобы объяснить получившийся парадокс, итальянский алгебраист Дж. Кардано в 1545 предложил ввести числа новой природы. Он показал, что система уравнений х+у=10, ху=40 не имеющая решений в множестве действительных чисел, имеет решение всегда, , нужно только условиться действовать над такими выражениями по правилам обычной алгебры и считать, что. Кардано называл такие величины «чисто отрицательными» и даже «софистически отрицательными», считая их бесполезными и стремился не применять их. В самом деле, с помощью таких чисел нельзя выразить ни результат измерения какой-нибудь величины, ни изменение этой величины. Но уже в 1572 г. вышла книга итальянского алгебраиста Р. Бомбелли, в котором были установлены первые правила арифметических операций над такими числами, вплоть до извлечения из них кубических корней. Название «мнимые числа» ввел в 1637 г. французский математик и философ Р. Декарт, а в 1777 г. один из крупнейших математиков VIII века Х. Эйлер предложил использовать первую букву французского числа (мнимой единицы), этот символ вошел во всеобщее употребление благодаря К. Гауссу (1831г).

В течение 17 века продолжалось обсуждение арифметической природы мнимостей, возможности дать им геометрическое истолкование. Постепенно развивалась техника операций над комплексными числами. На рубеже 17−18 веков была построена общая теория корней n-й степени сначала из отрицательных, а впоследствии и из любых комплексных чисел.

В конце 18 века французский математик Ж. Лагранж смог сказать, что математический анализ уже не затрудняют мнимые величины. С помощью комплексных чисел научились выражать решения линейных дифференциальных уравнений с постоянным коэффициентом. Такие уравнения встречаются, например, в теории колебаний материальной точки в сопротивляющейся среде.

Я. Бернулли применил комплексные числа для вычисления интегралов. Хотя в течении 18 века с помощью комплексных чисел были решены многие вопросы, в том числе и прикладные задачи, связанные с картографией, гидродинамикой и т. д., однако еще не было строго логического обоснования теории этих чисел. Поэтому французский ученый П. Лаплас считал, что результаты, получаемые с помощью мнимых чисел, — только наведение, приобретающие характер настоящих истин лишь после подтверждения прямыми доказательствами. В конце 18- начале 19 веков было получено геометрическое истолкование комплексных чисел. Датчанин Г. Вессель, француз Ж. Арган и немец К. Гаусс независимо друг от друга предложили изображать комплексное число точкой М (а, b) на координатной плоскости. Позднее оказалось, что еще удобнее изображать число не самой точкой М, а вектором ОМ, идущим в эту точку из начала координат. При таком истолковании сложению и вычитанию комплексных чисел соответствуют эти же операции над векторами.

Геометрические истолкования комплексных чисел позволили определить многие понятия, связанные с функциями комплексного переменного, расширило область их применения.

Стало ясно, что комплексные числа полезны во многих вопросах, где имеют дело с величинами, которые изображаются векторами на плоскости: при изучении течения жидкости, задач теории упругости, в теоретической электротехнике.

2.2 Действия с комплексными числами

Рассмотрим решение квадратного уравнения х2 +1 = 0. Отсюда х2 = -1. Число х, квадрат которого равен -1, называется мнимой единицей и обозначается i. Таким образом, i2 = -1, откуда. Решение квадратного уравнения, например, х2 — 8х + 25 = 0, можно записать следующим образом:

.

Числа вида 4+3i и 4−3i называют комплексными числами. В общем виде комплексное число записывается, а + bi, где a и b- действительные числа, а i — мнимая единица. Число, а называется действительной частью комплексного числа, bi-мнимой частью этого числа, b- коэффициентом мнимой части комплексного числа.

2.2.1 Сложение комплексных чисел

Суммой двух комплексных чисел z1 = a + bi и z2 = c + di называется комплексное число

z = (a+c) + (b+d)i

Числа a + bi и a-bi называются сопряженными. Их сумма равна действительному числу 2а,

(а+bi) + (а-bi) = 2а.

Числа а+bi и -a-bi называются противоположными. Их сумма равна нулю. Комплексные числа равны, если равны их действительные части и коэффициенты мнимых частей: а+bi = c+di, если a = c, b = d. Комплексное число равно нулю тогда, когда его действительная часть и коэффициент мнимой части равны нулю, т. е. z=a + bi = 0, если a=0, b=0.

Действительные числа являются частным случаем комплексных чисел. Если b=0, то a+bi=a — действительное число. Если, а = 0,, то a + bi = bi — чисто мнимое число. Для комплексных чисел справедливы переместительный и сочетательный законы сложения. Их справедливость следует из того, что сложение комплексных чисел по существу сводится к сложению действительных частей и коэффициентов мнимых частей, а они являются действительными числами, для которых справедливы указанные законы.

2.2.2 Вычитание комплексных чисел

Вычитание комплексных чисел определяется как действие, обратное сложению: разностью двух комплексных чисел a + bi и с + di называется комплексное число х + уi, которое в сумме с вычитаемым дает уменьшаемое. Отсюда, исходя из определения сложения и равенства комплексных чисел получим два уравнения, из которых найдем, что

х = а-с, у = b-d

Значит,

(а+bi) — (c+di) = (a-c) + (b-d)i.

2.2.3 Произведение комплексных чисел

Произведение комплексных чисел z1=a+bi и z2=c+di называется комплексное число

z =(ac-bd) + (ad + bc) i, z1z2 = (a + bi)(c + di) = (ac — bd) + (ad + bc) i.

Легко проверить, что умножение комплексных чисел можно выполнять как умножение многочленов с заменой i2 на -1. Для умножения комплексных чисел также справедливы переместительный и сочетательный законы, а также распределительный закон умножения по отношению к сложению.

Из определения умножения получим, что произведение сопряженных комплексных чисел равно действительному числу: (a + bi)(a — bi) = a2 + b2

2.2.4 Деление комплексных чисел

Деление комплексных чисел, кроме деления на нуль, определяется как действие, обратное умножению. Конкретное правило деления получим, записав частное в виде дроби и умножив числитель и знаменатель этой дроби на число, сопряженное со знаменателем:

.

3. Программная реализация решения задачи

Файл Unit1. h

#ifndef Unit1H

#define Unit1H

//---------------------------------------------------------------------------

#include < Classes. hpp>

#include < Controls. hpp>

#include < StdCtrls. hpp>

#include < Forms. hpp>

#include < ExtCtrls. hpp>

//---------------------------------------------------------------------------

class TForm1: public TForm

{

__published: // IDE-managed Components

TPanel *Panel1;

TMemo *Memo1;

TPanel *Panel2;

TEdit *Edit1;

TEdit *Edit2;

TEdit *Edit3;

TEdit *Edit4;

TLabel *Label1;

TLabel *Label2;

TLabel *Label3;

TLabel *Label4;

TLabel *Label5;

TPanel *Panel3;

TButton *Button1;

TButton *Button2;

TButton *Button3;

TButton *Button5;

TButton *Button6;

void __fastcall Button5Click (TObject *Sender);

void __fastcall Button6Click (TObject *Sender);

void __fastcall Button1Click (TObject *Sender);

void __fastcall Button2Click (TObject *Sender);

void __fastcall Button3Click (TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

Файл Unit1. cpp

//---------------------------------------------------------------------------

#include < vcl. h>

#pragma hdrstop

#include «Unit1. h»

//---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource «*. dfm»

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1: :TForm1(TComponent* Owner)

: TForm (Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1: :Button5Click (TObject *Sender)

{

Memo1-> Clear ();

}

//---------------------------------------------------------------------------

void __fastcall TForm1: :Button6Click (TObject *Sender)

{

Form1-> Close ();

}

//---------------------------------------------------------------------------

void __fastcall TForm1: :Button1Click (TObject *Sender)

{

String z1, z2;

float a, b;

z1="z1 = «+Edit1-> Text+"+» +" «+Edit2-> Text+"i»;

z2="z2 = «+Edit3-> Text+"+» +" «+Edit4-> Text+"i»;

Memo1-> Lines->Add (z1+" и «+z2);

a=StrToFloat (Edit1-> Text)+StrToFloat (Edit3->Text);

b=StrToFloat (Edit2-> Text)+StrToFloat (Edit4->Text);

z1=FloatToStr (a);

z2=FloatToStr (b)+"i";

Memo1-> Lines->Add («z1 + z2 = «+z1+» + «+z2);

}

//---------------------------------------------------------------------------

void __fastcall TForm1: :Button2Click (TObject *Sender)

{

String z1, z2;

float a, b;

z1="z1 = «+Edit1-> Text+"+» +" «+Edit2-> Text+"i»;

z2="z2 = «+Edit3-> Text+"+» +" «+Edit4-> Text+"i»;

Memo1-> Lines->Add (z1+" и «+z2);

a=(StrToFloat (Edit1-> Text)*StrToFloat (Edit3->Text))-(StrToFloat (Edit2->Text)*StrToFloat (Edit4->Text));

b=(StrToFloat (Edit2-> Text)*StrToFloat (Edit3->Text))+(StrToFloat (Edit1->Text)*StrToFloat (Edit4->Text));

z1=FloatToStr (a);

z2=FloatToStr (b)+"i";

Memo1-> Lines->Add («z1 * z2 = «+z1+» + «+z2);

}

//---------------------------------------------------------------------------

void __fastcall TForm1: :Button3Click (TObject *Sender)

{

String z1, z2;

float a, b;

z1="z1 = «+Edit1-> Text+"+» +" «+Edit2-> Text+"i»;

z2="z2 = «+Edit3-> Text+"+» +" «+Edit4-> Text+"i»;

Memo1-> Lines->Add (z1+" и «+z2);

if (((StrToFloat (Edit3-> Text)*StrToFloat (Edit3->Text))+(StrToFloat (Edit4->Text)*StrToFloat (Edit4->Text)))==0)

{

Application-> MessageBoxA («При выполнении операции деления nвозникла ошибка: деление на ноль. nПроверьте числа. «,

«Ошибка», MB_OK + MB_ICONERROR);

return;

}

a=((StrToFloat (Edit1-> Text)*StrToFloat (Edit3->Text))+(StrToFloat (Edit2->Text)*StrToFloat (Edit4->Text)))/((StrToFloat (Edit3->Text)*StrToFloat (Edit3->Text))+(StrToFloat (Edit4->Text)*StrToFloat (Edit4->Text)));

b=((StrToFloat (Edit2-> Text)*StrToFloat (Edit3->Text))-(StrToFloat (Edit1->Text)*StrToFloat (Edit4->Text)))/((StrToFloat (Edit3->Text)*StrToFloat (Edit3->Text))+(StrToFloat (Edit4->Text)*StrToFloat (Edit4->Text)));

z1=FloatToStr (a);

z2=FloatToStr (b)+"i";

Memo1-> Lines->Add («z1 / z2 = «+z1+» + «+z2);

}

//---------------------------------------------------------------------------

4. Пример выполнения программы

Пример 1

Рисунок 1 — Операция сложения

Пример 2

Рисунок 2 — Операция умножения

Пример 3

Рисунок 3 — Операция деления

Пример 4

Рисунок 4 — Вывод ошибки при делении на ноль.

ЗАКЛЮЧЕНИЕ

Применение комплексных чисел позволяет удобно и компактно сформулировать многие математические модели, применяемые в математической физике и в естественных науках — электротехника, гидродинамика, картография, квантовая механика, теория колебаний и многих других.

Итогом работы можно считать созданную программу для реализации арифметических операций над комплексными числами. Созданный алгоритм и его программная реализация могут служить органической частью решения более сложных задач.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ и литературы

Архангельский А. Я. Программирование в С++ Builder 6. [Текст] / А. Я. Архангельский. — М.: Бином, 2003. С. 1154.

Ахо А. Построение и анализ вычислительных алгоритмов [Электронный ресурс] / А. Ахо, Дж. Хопкрофт, Дж. Ульман. — М.: Мир. 1999. С. 143.

Выгодский М. Я. Справочник по элементарной математике. [Текст] / М. Я. Выгодский — М.: АСТ: Астрель, 2006. С. 509.

Дадаян А. А. Алгебра и геометрия. [Текст] / А. А Дадаян, В. А. Дударенко. — М.: Минск, 1999. С. 342.

Камалян Р. З. Высшая математика. [Текст] / Р. З. Камалян. — М.: ИМСИТ, 2004. С. 310.

Комплексное число [Электронный ресурс] - Режим доступа: http: //ru. wikipedia. org/wiki/Комплексное_число.

Мейерс С. Наиболее эффективное использование С++. [Электронный ресурс] / С. Мейерс. — М.: ДМК Пресс, 2000. С. 304.

Эккель Б. Введение в стандартный С++. [Электронный ресурс] / Б. Эккель. — М. :Питер, 2004. С. 572.

ПоказатьСвернуть
Заполнить форму текущей работой