Розробка програмного забезпечення для реалізації арифметичних операцій над комплексними числами

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

ЗМІСТ

Введення

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. Таким чином, i 2 = -1, звідки . Рішення квадратного рівняння, наприклад, х 2 - 8х + 25 = 0, можна записати наступним чином:

.

Числа виду 4 +3 i і 4-3 i називають комплексними числами. У загальному вигляді комплексне число записується а + bi, де a і b - дійсні числа, а i - уявна одиниця. Число а називається дійсною частиною комплексного числа, bi-уявною частиною цього числа, b - коефіцієнтом уявної частини комплексного числа.

2.2.1 Складання комплексних чисел

Сумою двох комплексних чисел z 1 = a + bi і z 2 = 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 Твір комплексних чисел

Твір комплексних чисел z 1 = a + bi і z 2 = c + di називається комплексне число

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

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

З визначення множення отримаємо, що твір сполучених комплексних чисел дорівнює дійсному числу: (a + bi) (a - bi) = a 2 + b 2

2.2.4 Розподіл комплексних чисел

Розподіл комплексних чисел, крім ділення на нуль, визначається як дія, зворотне множення. Конкретне правило ділення отримаємо, записавши приватне у вигляді дробу і помноживши чисельник і знаменник цього дробу на число, поєднане зі знаменником:

.

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

Файл UComplex. H

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

# Ifndef UComplexH

# Define UComplexH

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

# Include <Classes.hpp>

# Include <Controls.hpp>

# Include <StdCtrls.hpp>

# Include <Forms.hpp>

# Include "HandTuning.h"

# Include <ExtCtrls.hpp>

# Include <Menus.hpp>

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

class TfrmComplex: public TForm

{

__published: / / IDE-managed Components

TButton * btnCalc;

THandTuning * Real1;

THandTuning * Img1;

TLabel * Label1;

TLabel * Label2;

THandTuning * Real2;

THandTuning * Img2;

TLabel * Label3;

TRadioGroup * rgrOperation;

TLabel * Label4;

THandTuning * resReal;

THandTuning * resImg;

TLabel * Label5;

TLabel * Label6;

TLabel * Label7;

TButton * btnExit;

TButton * btnClear;

TLabel * Label8;

TLabel * Label9;

TMainMenu * MainMenu1;

TMenuItem * N1;

TMenuItem * N2;

TMenuItem * N3;

TMenuItem * N4;

TMenuItem * N5;

TMenuItem * N6;

TMenuItem * N7;

void __fastcall btnCalcClick (TObject * Sender);

void __fastcall btnExitClick (TObject * Sender);

void __fastcall btnClearClick (TObject * Sender);

void __fastcall NClick (TObject * Sender);

private: / / User declarations

void __fastcall Sum (double r1, double img1, double r2, double img2, double & r, double & img);

void __fastcall Subtr (double r1, double img1, double r2, double img2, double & r, double & img);

void __fastcall Mult (double r1, double img1, double r2, double img2, double & r, double & img);

void __fastcall Div (double r1, double img1, double r2, double img2, double & r, double & img);

public: / / User declarations

__fastcall TfrmComplex (TComponent * Owner);

};

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

extern PACKAGE TfrmComplex * frmComplex;

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

# Endif

Файл UComplex.cpp

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

# Include <vcl.h>

# Pragma hdrstop

# Include "UComplex.h"

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

# Pragma package (smart_init)

# Pragma link "HandTuning"

# Pragma resource "*. dfm"

TfrmComplex * frmComplex;

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

void __fastcall TfrmComplex:: Sum (double r1, double img1, double r2, double img2, double & r, double & img)

{

r = r1 + r2;

img = img1 + img2;

}

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

void __fastcall TfrmComplex:: Subtr (double r1, double img1, double r2, double img2, double & r, double & img)

{

r = r1 - r2;

img = img1 - img2;

}

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

void __fastcall TfrmComplex:: Mult (double r1, double img1, double r2, double img2, double & r, double & img)

{

r = r1 * r2 - img1 * img2;

img = r1 * img2 + img1 * r2;

}

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

void __fastcall TfrmComplex:: Div (double r1, double img1, double r2, double img2, double & r, double & img)

{

if ((r2 * r2 + img2 * img2) == 0)

{

Application -> MessageBoxA (L "При виконанні операції ділення \ n виникла помилка: поділ на нуль. \ N Перевірте числа.",

L "Помилка", MB_OK + MB_ICONERROR);

return;

}

r = (r1 * r2 + img1 * img2) / (r2 * r2 + img2 * img2);

img = (r2 * img1 - r1 * img2) / (r2 * r2 + img2 * img2);

}

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

__fastcall TfrmComplex:: TfrmComplex (TComponent * Owner)

: TForm (Owner)

{

}

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

void __fastcall TfrmComplex:: btnCalcClick (TObject * Sender)

{

double r1 = Real1-> Value;

double img1 = Img1-> Value;

double r2 = Real2-> Value;

double img2 = Img2-> Value;

double real = 0;

double img = 0;

switch (rgrOperation-> ItemIndex)

{

case 0:

Sum (r1, img1, r2, img2, real, img);

break;

case 1:

Subtr (r1, img1, r2, img2, real, img);

break;

case 2:

Mult (r1, img1, r2, img2, real, img);

break;

case 3:

Div (r1, img1, r2, img2, real, img);

break;

}

resReal-> Value = real;

resImg-> Value = img;

}

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

void __fastcall TfrmComplex:: btnExitClick (TObject * Sender)

{

this-> Close ();

}

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

void __fastcall TfrmComplex:: btnClearClick (TObject * Sender)

{

Real1-> Value = 0;

Img1-> Value = 0;

Real2-> Value = 0;

Img2-> Value = 0;

resReal-> Value = 0;

resImg-> Value = 0;

}

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

void __fastcall TfrmComplex:: NClick (TObject * Sender)

{

rgrOperation-> ItemIndex = ((TMenuItem *) Sender) -> Tag;

btnCalc -> Click ();

}

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

4. Приклад виконання програми

Приклад 1

Рисунок 1 - Вхідні дані

Приклад 2

Рисунок 2 - Вихідні дані

Приклад 3

Рисунок 3 - Вхідні дані

Приклад 4

Рисунок 4 - Вхідні дані

Приклад 5

Малюнок 5 - Вхідні дані

Приклад 6

Малюнок 6 - Вхідні дані

Приклад 7

Малюнок 7 - Вхідні дані

Приклад 8

Малюнок 8 - Вхідні дані

ВИСНОВОК

Застосування комплексних чисел дозволяє зручно і компактно сформулювати багато математичні моделі, що застосовуються в математичній фізиці і в природничих науках - електротехніці, гідродинаміці, картографії, квантової механіки, теорії коливань і багатьох інших.

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

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ та літератури

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

  2. Ахо А.. Побудова та аналіз обчислювальних алгоритмів [Електронний ресурс] / А. Ахо, Дж. Хопкрофта, Дж. Ульман. - М.: Мир. 1999. С. 143.

  3. Вигодський М.Я. Довідник з елементарної математики. [Текст] / М.Я. Вигодський - М.: АСТ: Астрель, 2006. С. 509.

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

  5. Камалян Р.З. Вища математика. [Текст] / Р.З. Камалян. - М.: ІМСІТ, 2004. С.310.

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

  7. Мейерс С. Найбільш ефективне використання С + +. [Електронний ресурс] / С. Мейерс. - М.: ДМК Пресс, 2000. С. 304.

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

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
65.2кб. | скачати


Схожі роботи:
Лісп-реалізація математичних операцій над комплексними числами
Виконання арифметичних операцій над числами з фіксованою комою
Розробка програмного забезпечення для пошуку коренів біквадратні рівняння
Розробка бази даних і прикладного програмного забезпечення для автобусного парку
Розробка програмного забезпечення для розр та дисперсійної характеристики планарного хвилеводу
Зображення струмів і напруг комплексними числами
Розробка програмного забезпечення для вирішення рівнянь з однією змінною методом Ньютона дотичних
Операція над множинами як основа навчання арифметичних дій над цілими невід`ємними
Розробка програмного забезпечення
© Усі права захищені
написати до нас