Программирование на языке высокого уровня
Разработка программы, реализующей арифметические операции над комплексными числами (сложением, вычитанием, произведением, делением) с целью упрощения формулирования математических моделей, применяемых в математической физике и естественных науках.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 23.04.2010 |
Размер файла | 533,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Министерство образования и науки Российской Федерации
Контрольная работа
По дисциплине "Программирование на языке высокого уровня"
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.
Подобные документы
Теоретическая и практическая реализация комплексной арифметики на языке программирования Си. Разработка программы, производящей арифметические действия с комплексными числами. Автоматизации решения комплексных чисел. Матричная и стандартная модель.
курсовая работа [495,4 K], добавлен 21.01.2012Понятие и функции комплексных чисел. Правила выполнения арифметических операций с комплексными числами. Действия с комплексными числами: сложение, вычитание, произведение, деление. Программная реализация решения задачи. Пример выполнения программы.
курсовая работа [398,8 K], добавлен 01.02.2010Особенности вывода на экран содержимого файла BAZA.txt. Анализ функций вывода информации о количестве каждой марки машин. Рассмотрение способов проектирования тестов программы методами черного ящика. Проблемы программирования на языке высокого уровня.
контрольная работа [1,6 M], добавлен 04.01.2015Сравнительный анализ языков программирования высокого уровня Си и Паскаль: структура программы, типы данных, арифметические операции, операторы ветвления и циклы. Создание программы поиска подпоследовательностей одинаковых элементов в множественном виде.
курсовая работа [78,9 K], добавлен 28.12.2012Изучение методов и этапов создания класса Complex, позволяющего работать с комплексными числами и производить с ними следующие операции: сложение, вычитание, умножение, деление двух комплексных чисел. Написание кода для ввода и вывода исходных данных.
курсовая работа [628,4 K], добавлен 11.09.2010Двоично-десятичный формат (BCD - Binary Coded Decimal). Преобразование ASCII формата в двоичный формат. Арифметические инструкции и флаги. Форматы арифметических данных. Выполнение арифметических операции. Сложение. Вычитание. Умножение. Деление.
доклад [16,2 K], добавлен 22.09.2008Разработка программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С средствами Microsoft Visual Studio 2010. Построение алгоритма реализации. Класс программы, инструкция по использованию программы.
курсовая работа [1,0 M], добавлен 26.12.2013Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.
курсовая работа [2,7 M], добавлен 21.02.2011Исследование классификации компьютерных игр, двигателей прогресса индустрии для персональных компьютеров. Характеристика общей структуры, протокола и текста программы, сценария и процесса игры. Изучение алгоритмизации и программирования на языке Паскаль.
реферат [2,1 M], добавлен 16.09.2011Формулировка, спецификация и математическая постановка задачи. Описание схемы алгоритма. Рассмотрение результата машинного тестирования программы. Получение на занятиях навыков алгоритмизации и программирования задач на языке высокого уровня C#.
курсовая работа [268,2 K], добавлен 22.03.2015