Калькулятор комплексных чисел

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


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

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

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

Оглавление

Цели и основные задачи курсовой работы

Описание предметной области

Используемые подходы, методы и технологии программирования

Uml диаграмма «Прецедентов» решаемой задачи

Uml диаграмма «Классов» решаемой задачи

Текст программы на языке программирования C#

Выводы

Используемая литература

Цели и основные задачи курсовой работы

Курсовая работа является комплексным практическим заданием и решает следующие цели и задачи:

Цель — создание программы «Калькулятор комплексных чисел».

Задачи:

1. Описание предметной области

2. Реализация функций сложения, вычитания, умножения, деления, взятие комплексного числа по модулю, вычисление аргумента, перевод числа, записанного в алгебраической форме в показательную форму.

Описание предметной области

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

Используемые подходы, методы и технологии программирования

Необходимость в комплексных числах появилась при решении квадратных уравнений для случая D <0 (здесь D — дискриминант квадратного уравнения). Долгое время эти числа не находили физического применения, поэтому их и назвали «мнимыми» числами. Однако сейчас они очень широко применяются в различных областях физики и техники: электротехнике, гидро- и аэродинамике, теории упругости и др.

Комплексные числа записываются в виде: a+ bi. Здесь a и b действительные числа, а i — мнимая единица, т.e. i 2 = -1. Число a называется абсциссой, a b — ординатой комплексного числа a+ bi. Два комплексных числа a+ bi и a bi называются сопряжёнными комплексными числами.

Сложение — рисунок 1. Суммой комплексных чисел a+ bi и c+ di называется комплексное число (a+ c) + (b+ d) i. Таким образом, при сложениикомплексных чисел отдельно складываются их абсциссы и ординаты. Это определение соответствует правилам действий с обычными многочленами.

Рисунок 1

Вычитание — рисунок 2. Разностью двух комплексных чисел a+ bi (уменьшаемое) и c+ di (вычитаемое) называется комплексное число (a — c) + (b — d) i. Таким образом, при вычитании двух комплексных чисел отдельно вычитаются их абсциссы и ординаты.

Рисунок 2

Умножение — рисунок 3. Произведением комплексных чисел a+ bi и c+ di называется комплексное число: (ac — bd) + (ad + bc) i. Это определение вытекает из двух требований:

1) числа a+ bi и c+ di должны перемножаться, как алгебраические двучлены,

2) число i обладает основным свойством: i 2 = -1.

Рисунок 3

Разделить комплексное число (рисунок 4) a+ bi (делимое) на другое c+ di (делитель) — значит найти третье число e+ f i (чатное), которое будучи умноженным на делитель c+ di, даёт в результате делимое a+ bi. Если делитель не равен нулю, деление всегда возможно.

(a+bi/c+di) = ((a*c+b*d)/(c2+d2))+((b*c-a*d)/(c2+d2))*i.

Рисунок 4

Модулем комплексного числа (рисунок 5) называется длина вектора OP, изображающего комплексное число на координатной (комплексной) плоскости. Модуль комплексного числа a+ bi обозначается | a+ bi | или буквой r и равен: r=|a+bi| =.

Рисунок 5

Аргумент комплексного числа (рисунок 6,7) — это угол между осью OX и вектором OP, изображающим это комплексное число. Отсюда, tan = b / a.

Рисунок 6

Рисунок 7

Uml-диаграмма «Прецедентов» решаемой задачи

Рисунок 8

Uml-диаграмма «Классов» решаемой задачи

Рисунок 9

Текст программы на языке программирования С#

Программа реализована в двух формах.

Текст программы Form1:

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

namespace WindowsFormsApplication49

{

public partial class Form1: Form

{

public Form1()

{

InitializeComponent ();

}

/// < summary>

/// Переход на новую форму для представления комплексного числа на плоскости

/// < /summary>

/// < param name="sender"> </param>

/// < param name="e"> </param>

private void button7_Click (object sender, EventArgs e)

{

Form2 f1 = new Form2();

f1. Show ();

}

private void оПрограммеToolStripMenuItem_Click (object sender, EventArgs e)

{

MessageBox. Show («Программа предназначена для работы с комплексными числами. Возможно реализовать сложение, вычитание, умножение и деление числа, представленного в алгебраической форме, а также перевод результата арифметических действий в показательную форму, нахождение модуля и аргумента комплексного числа. В программе также имеется возможность изображения комплексного числа на плоскости. «);

}

/// < summary>

/// Обработка события «нажатие на кнопку»

/// < /summary>

/// < param name="sender"> </param>

/// < param name="e"> </param>

private void button1_Click (object sender, EventArgs e)

{

if (checkBox1. Checked == true) //Сложение

{

int a = Convert. ToInt32(textBox1. Text);

int b = Convert. ToInt32(textBox2. Text);

int c = Convert. ToInt32(textBox3. Text);

int d = Convert. ToInt32(textBox4. Text);

int x = a + c;

int y = b + d;

textBox5. Text = x. ToString ();

textBox6. Text = y. ToString ();

}

if (checkBox2. Checked == true) //Вычитание

{

int a = Convert. ToInt32(textBox1. Text);

int b = Convert. ToInt32(textBox2. Text);

int c = Convert. ToInt32(textBox3. Text);

int d = Convert. ToInt32(textBox4. Text);

int x = a — c;

int y = b — d;

textBox5. Text = x. ToString ();

textBox6. Text = y. ToString ();

}

if (checkBox3. Checked == true) // Умножение

{

int a = Convert. ToInt32(textBox1. Text);

int b = Convert. ToInt32(textBox2. Text);

int c = Convert. ToInt32(textBox3. Text);

int d = Convert. ToInt32(textBox4. Text);

int x = a * c — b * d;

int y = a * d + b * c;

textBox5. Text = x. ToString ();

textBox6. Text = y. ToString ();

}

if (checkBox4. Checked == true) // Деление

{

double a = Convert. ToDouble (textBox1. Text);

double b = Convert. ToDouble (textBox2. Text);

double c = Convert. ToDouble (textBox3. Text);

double d = Convert. ToDouble (textBox4. Text);

double x = (a * c + b * d) / (Math. Pow (c, 2) + Math. Pow (d, 2));

double y = (b * c — a * d) / (Math. Pow (c, 2) + Math. Pow (d, 2));

textBox5. Text = x. ToString ();

textBox6. Text = y. ToString ();

}

if (checkBox5. Checked == true) // Модуль

{

int a = Convert. ToInt32(textBox5. Text);

int b = Convert. ToInt32(textBox6. Text);

double mod = Math. Sqrt (Math. Pow (a, 2) + Math. Pow (b, 2));

textBox7. Text = mod. ToString ();

}

if (checkBox6. Checked == true) // Аргумент

{

double a = Convert. ToDouble (textBox5. Text);

double b = Convert. ToDouble (textBox6. Text);

double KSI = (Math. Atan (b / a) * 180) / Math. PI;

textBox10. Text = KSI. ToString ();

}

}

/// < summary>

/// Очистка

/// < /summary>

/// < param name="sender"> </param>

/// < param name="e"> </param>

private void button3_Click (object sender, EventArgs e)

{

textBox1. Clear ();

textBox2. Clear ();

textBox3. Clear ();

textBox4. Clear ();

textBox5. Clear ();

textBox6. Clear ();

textBox8. Clear ();

textBox9. Clear ();

textBox7. Clear ();

textBox10. Clear ();

}

/// < summary>

/// Представление результата вычислений в показательной форме

/// < /summary>

/// < param name="sender"> </param>

/// < param name="e"> </param>

private void button2_Click (object sender, EventArgs e)

{

double a = Convert. ToDouble (textBox5. Text);

double b = Convert. ToDouble (textBox6. Text);

double A = Math. Sqrt (Math. Pow (a, 2) + Math. Pow (b, 2));

textBox8. Text = A. ToString ();

double KSI = (Math. Atan (b / a) * 180) / Math. PI;

textBox9. Text = KSI. ToString ();

}

/// < summary>

/// Выход из программы (кнопка на форме)

/// < /summary>

/// < param name="sender"> </param>

/// < param name="e"> </param>

private void button4_Click (object sender, EventArgs e)

{

if (MessageBox. Show («Хотите выйти из программы?»,

«Завершение», MessageBoxButtons. YesNo) == DialogResult. Yes)

Application. Exit ();

}

/// < summary>

/// Выход из программы (в меню)

/// < /summary>

/// < param name="sender"> </param>

/// < param name="e"> </param>

private void выходToolStripMenuItem_Click (object sender, EventArgs e)

{

if (MessageBox. Show («Хотите выйти из программы?»,

«Завершение», MessageBoxButtons. YesNo) == DialogResult. Yes)

Application. Exit ();

}

}

}

Текст программы Form2:

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

namespace WindowsFormsApplication49

{

public partial class Form2: Form

{

public Form2()

{

InitializeComponent ();

}

/// < summary>

/// Представление комплексного числа на комплексной плоскости

/// < /summary>

/// < param name="sender"> </param>

/// < param name="e"> </param>

private void button1_Click (object sender, EventArgs e)

{

double a = Convert. ToDouble (textBox1. Text);

double b = Convert. ToDouble (textBox2. Text);

double A = Math. Sqrt (Math. Pow (a, 2) + Math. Pow (b, 2));

textBox3. Text = A. ToString ();

double KSI = (Math. Atan (b / a) * 180) / Math. PI;

textBox4. Text = KSI. ToString ();

double x, y, k=0, f1 = 0;

double f0 = Convert. ToDouble (textBox4. Text);

if (f0 > 0 & & f0 < 90)

{

f1 = f0 * Math. PI / 180;

k = Math. Tan (f1);

for (x = 0; x <= 180; x += 0. 01)

{

y = k * x;

chart2. Series["Series1"]. Points. AddXY (x, y);

}

}

if (f0 > 90 & & f0 < 180)

{

f1 = f0 * Math. PI / 180;

k = Math. Tan (f1);

for (x = -180; x <= 0; x += 0. 01)

{

y = k * x;

chart2. Series["Series1"]. Points. AddXY (x, y);

}

}

if (f0 > 180 & & f0 < 270)

{

f1 = f0 * Math. PI / 180;

k = Math. Tan (f1);

for (x = -180; x <= 0; x += 0. 01)

{

y = k * x;

chart2. Series["Series1"]. Points. AddXY (x, y);

}

}

if (f0 > 270 & & f0 < 360)

{

f1 = f0 * Math. PI / 180;

k = Math. Tan (f1);

for (x = 0; x <= 180; x += 0. 01)

{

y = k * x;

chart2. Series["Series1"]. Points. AddXY (x, y);

}

}

if (f0 > 89 & & f0< 91)

{

for (y = 0; y <= 180; y += 0. 01)

{

x = 1;

chart2. Series["Series1"]. Points. AddXY (x, y);

}

}

if (f0 > 179 & & f0 < 181)

{

for (x = -180; x < =0; x += 0. 01)

{

y = 1;

chart2. Series["Series1"]. Points. AddXY (x, y);

}

}

if (f0 > 269 & & f0 < 271)

{

for (y = -180; y <= 0; y += 0. 01)

{

x = 1;

chart2. Series["Series1"]. Points. AddXY (x, y);

}

}

if (f0 > 359 & & f0 < 361)

{

for (x = 0; x <= 180; x += 0. 01)

{

y = 1;

chart2. Series["Series1"]. Points. AddXY (x, y);

}

}

}

/// < summary>

/// Очистка графика

/// < /summary>

/// < param name="sender"> </param>

/// < param name="e"> </param>

private void button2_Click (object sender, EventArgs e)

{

chart2. Series[0]. Points. Clear ();

}

/// < summary>

/// Очистка TextBox

/// < /summary>

/// < param name="sender"> </param>

/// < param name="e"> </param>

private void button4_Click (object sender, EventArgs e)

{

textBox1. Clear ();

textBox2. Clear ();

textBox3. Clear ();

textBox4. Clear ();

}

}

}

Выводы

комплексный число программирование

В результате выполнения данной курсовой работы были закреплены теоретические знания по дисциплине «Объектно-ориентированное программирование», а именно созданы Uml-диаграмма прецедентов и Uml-диаграмма классов, освоены новые приемы в комментировании и документировании текста программы. Таким образом, был создан готовый программный продукт, на основе технологий объектно-ориентированного программирования в срезе разработки Visual Studio 2012 Ultimate — калькулятор комплексных чисел, реализующий функции сложения, вычитания, умножения, деления, взятие комплексного числа по модулю и вычисление аргумента, а также реализована возможность изображения комплексного числа на комплексной плоскости.

Используемая литература

1. С# / X. Дейтел, П. Дейтел, Д. Листфилд и др. — СПб. :БХВ-Петербург, 2006. — С. 1056.

2. Петцольд, Ч. Программирование для Microsoft Windows на С# / Ч. Петцольд. — М.: Издательско-торговый дом «Русская Редакция», 2002. — Т. 1. — С. 576.

3. Петцольд, Ч. Программирование для Microsoft Windows на С# / Ч. Петцольд, — М.: Издательско-торговый дом «Русская Редакция», 2002. — Т. 2. — С. 624.

4. Рамбо, Д. UML 2.0. Объектно-ориентированное моделирование и разработка. 2-е изд. / Д. Рамбо, М. Блаха. — СПб. Литер, 2007. — С. 544.

5. Рихтер, Д. CLR via С#. Программирование на платформе Microsoft. NET Framework 2.0 на языке С#. Мастер-класс. / Пер. с англ. / Д. Рихтер. — М.: Издательско-торговый дом «Русская Редакция»; СПб.: Питер, 2007. — С. 656.

6. Фаулер, М. UML. Основы. -Пер. с англ. / М. Фаулер, К. Скотт, — СПб.: Символ-Плюс, — С. 192.

7. Шилдт, Г. С#: учебный курс / Г. Шилдт. — СПб.: Питер: К.: Издательская группа BHV, 9 — С. 512.

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