Квантовые компьютеры
Оглавление
Цели и основные задачи курсовой работы
Описание предметной области
Используемые подходы, методы и технологии программированиядиаграмма «Прецедентов» решаемой задачидиаграмма «Классов» решаемой задачи
Текст программы на языке программирования C#
Выводы
Используемая литература
Цели и основные задачи курсовой работы
Курсовая работа является комплексным практическим заданием и решает следующие цели и задачи:
Цель - создание программы «Калькулятор комплексных чисел».
Задачи:
. Описание предметной области
. Реализация функций сложения, вычитания, умножения, деления, взятие комплексного числа по модулю, вычисление аргумента, перевод числа, записанного в алгебраической форме в показательную форму.
Описание предметной области
Предметной областью решаемой задачи является калькулятор комплексных чисел, реализующий операции сложения, умножения, вычитания, деления, нахождение модуля и аргумента комплексного. Также имеется возможность представить результат в показательной форме и изобразить комплексное число на комплексной плоскости.
Используемые подходы, методы и технологии программирования
Необходимость в комплексных числах появилась при решении квадратных уравнений для случая 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 . Это определение вытекает из двух требований:
) числа a+ bi и c+ di должны перемножаться, как алгебраические двучлены,
) число 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)/(c^2+d^2))+((b*c-a*d)/(c^2+d^2))*i.
Рисунок 4
Модулем комплексного числа (рисунок 5) называется длина вектора OP, изображающего комплексное число на координатной (комплексной) плоскости. Модуль комплексного числа a+ bi обозначается | a+ bi | или буквой r и равен: r=|a+bi| = .
Рисунок 5
Аргумент комплексного числа (рисунок 6,7) - это угол между осью OX и вектором OP, изображающим это комплексное число. Отсюда, tan = b / a .
Рисунок 6
Рисунок 7
Uml-диаграмма «Прецедентов» решаемой задачи
Рисунок 8
диаграмма «Классов» решаемой задачи
Рисунок 9
Текст программы на языке программирования С#
Программа реализована в двух формах.
Текст программы Form1:
using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;WindowsFormsApplication49
{partial class Form1 : Form
{Form1()
{();
}
/// <summary>
/// Переход на новую форму для представления комплексного числа на плоскости
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button7_Click(object sender, EventArgs e)
{f1 = new Form2();.Show();
}void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)
{.Show("Программа предназначена для работы с комплексными числами. Возможно реализовать сложение, вычитание, умножение и деление числа, представленного в алгебраической форме, а также перевод результата арифметических действий в показательную форму, нахождение модуля и аргумента комплексного числа. В программе также имеется возможность изображения комплексного числа на плоскости.");
}
/// <summary>
/// Обработка события "нажатие на кнопку"
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>void button1_Click(object sender, EventArgs e)
{(checkBox1.Checked == true) //Сложение
{a = Convert.ToInt32(textBox1.Text);b = Convert.ToInt32(textBox2.Text);c = Convert.ToInt32(textBox3.Text);d = Convert.ToInt32(textBox4.Text);
int x = a + c;y = b + d;
textBox5.Text = x.ToString();.Text = y.ToString();
}(checkBox2.Checked == true) //Вычитание
{a = Convert.ToInt32(textBox1.Text);b = Convert.ToInt32(textBox2.Text);c = Convert.ToInt32(textBox3.Text);d = Convert.ToInt32(textBox4.Text);
int x = a - c;y = b - d;
textBox5.Text = x.ToString();.Text = y.ToString();
}(checkBox3.Checked == true) // Умножение
{a = Convert.ToInt32(textBox1.Text);b = Convert.ToInt32(textBox2.Text);c = Convert.ToInt32(textBox3.Text);d = Convert.ToInt32(textBox4.Text);
int x = a * c - b * d;y = a * d + b * c;
textBox5.Text = x.ToString();.Text = y.ToString();
}(checkBox4.Checked == true) // Деление
{a = Convert.ToDouble(textBox1.Text);b = Convert.ToDouble(textBox2.Text);c = Convert.ToDouble(textBox3.Text);d = Convert.ToDouble(textBox4.Text);x = (a * c + b * d) / (Math.Pow(c, 2) + Math.Pow(d, 2));y = (b * c - a * d) / (Math.Pow(c, 2) + Math.Pow(d, 2));.Text = x.ToString();
textBox6.Text = y.ToString();
}(checkBox5.Checked == true) // Модуль
{a = Convert.ToInt32(textBox5.Text);b = Convert.ToInt32(textBox6.Text);mod = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));.Text = mod.ToString();
}(checkBox6.Checked == true) // Аргумент
{a = Convert.ToDouble(textBox5.Text);b = Convert.ToDouble(textBox6.Text);KSI = (Math.Atan(b / a) * 180) / Math.PI;.Text = KSI.ToString();
}
}
/// <summary>
/// Очистка
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>void button3_Click(object sender, EventArgs e)
{.Clear();.Clear();.Clear();.Clear();.Clear();.Clear();
textBox8.Clear();.Clear();.Clear();
textBox10.Clear();
}
/// <summary>
/// Представление результата вычислений в показательной форме
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>void button2_Click(object sender, EventArgs e)
{a = Convert.ToDouble(textBox5.Text);b = Convert.ToDouble(textBox6.Text);A = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));.Text = A.ToString();KSI = (Math.Atan(b / a) * 180) / Math.PI;.Text = KSI.ToString();
}
/// <summary>
/// Выход из программы (кнопка на форме)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>void button4_Click(object sender, EventArgs e)
{(MessageBox.Show("Хотите выйти из программы?",
"Завершение", MessageBoxButtons.YesNo) == DialogResult.Yes).Exit();
}
/// <summary>
/// Выход из программы (в меню)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>void выходToolStripMenuItem_Click(object sender, EventArgs e)
{(MessageBox.Show("Хотите выйти из программы?",
"Завершение", MessageBoxButtons.YesNo) == DialogResult.Yes).Exit();
}
}
}
Текст программы Form2:
using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;WindowsFormsApplication49
{partial class Form2 : Form
{Form2()
{();
}
/// <summary>
/// Представление комплексного числа на комплексной плоскости
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>void button1_Click(object sender, EventArgs e)
{a = Convert.ToDouble(textBox1.Text);b = Convert.ToDouble(textBox2.Text);A = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));.Text = A.ToString();KSI = (Math.Atan(b / a) * 180) / Math.PI;.Text = KSI.ToString();x, y, k=0, f1 = 0; f0 = Convert.ToDouble(textBox4.Text);(f0 > 0 && f0 < 90)
{= f0 * Math.PI / 180;= Math.Tan(f1);(x = 0; x <= 180; x += 0.01)
{= k * x;.Series["Series1"].Points.AddXY(x, y);
}
}(f0 > 90 && f0 < 180)
{= f0 * Math.PI / 180;= Math.Tan(f1);(x = -180; x <= 0; x += 0.01)
{= k * x;.Series["Series1"].Points.AddXY(x, y);
}
}(f0 > 180 && f0 < 270)
{= f0 * Math.PI / 180;= Math.Tan(f1);(x = -180; x <= 0; x += 0.01)
{= k * x;.Series["Series1"].Points.AddXY(x, y);
}
}(f0 > 270 && f0 < 360)
{= f0 * Math.PI / 180;= Math.Tan(f1);(x = 0; x <= 180; x += 0.01)
{= k * x;.Series["Series1"].Points.AddXY(x, y);
}
}(f0 > 89 && f0<91)
{(y = 0; y <= 180; y += 0.01)
{= 1;
chart2.Series["Series1"].Points.AddXY(x, y);
}
}(f0 > 179 && f0 < 181)
{(x = -180; x <=0 ; x += 0.01)
{= 1;.Series["Series1"].Points.AddXY(x, y);
}
}(f0 > 269 && f0 < 271)
{(y = -180; y <= 0; y += 0.01)
{= 1;.Series["Series1"].Points.AddXY(x, y);
}
}(f0 > 359 && f0 < 361)
{(x = 0; x <= 180; x += 0.01)
{= 1;.Series["Series1"].Points.AddXY(x, y);
}
}
}
/// <summary>
/// Очистка графика
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>void button2_Click(object sender, EventArgs e)
{.Series[0].Points.Clear();
}
/// <summary>
/// Очистка TextBox
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>void button4_Click(object sender, EventArgs e)
{.Clear();.Clear();.Clear();
textBox4.Clear();
}
}
}
Выводы
комплексный число программирование
В результате выполнения данной курсовой работы были закреплены теоретические знания по дисциплине «Объектно-ориентированное программирование», а именно созданы Uml-диаграмма прецедентов и Uml-диаграмма классов, освоены новые приемы в комментировании и документировании текста программы. Таким образом, был создан готовый программный продукт, на основе технологий объектно-ориентированного программирования в срезе разработки Visual Studio 2012 Ultimate - калькулятор комплексных чисел, реализующий функции сложения, вычитания, умножения, деления, взятие комплексного числа по модулю и вычисление аргумента, а также реализована возможность изображения комплексного числа на комплексной плоскости.
Используемая литература
1.С# / X. Дейтел, П. Дейтел, Д. Листфилд и др. - СПб.:БХВ-Петербург, 2006. - С. 1056.
2.Петцольд, Ч. Программирование для Microsoft Windows на С# / Ч. Петцольд. - М.: Издательско-торговый дом «Русская Редакция», 2002. - Т. 1. - С. 576.
.Петцольд, Ч. Программирование для Microsoft Windows на С# / Ч. Петцольд, - М.: Издательско-торговый дом «Русская Редакция», 2002. - Т. 2. - С. 624.
.Рамбо, Д. UML 2.0. Объектно-ориентированное моделирование и разработка. 2-е изд. / Д. Рамбо, М. Блаха. - СПб. Литер, 2007. - С. 544.
.Рихтер, Д. CLR via С#. Программирование на платформе Microsoft .NET Framework 2.0 на языке С#. Мастер-класс. / Пер. с англ. / Д. Рихтер. - М.: Издательско-торговый дом «Русская Редакция»; СПб.: Питер, 2007. - С. 656.
.Фаулер, М. UML. Основы.-Пер. с англ. / М. Фаулер, К. Скотт,- СПб.: Символ-Плюс, - С. 192.
.Шилдт, Г. С#: учебный курс / Г. Шилдт. - СПб.: Питер: К.: Издательская группа BHV, 9 - С. 512.
Больше работ по теме:
Предмет: Информационное обеспечение, программирование
Тип работы: Курсовая работа (т)
Новости образования
КОНТАКТНЫЙ EMAIL: [email protected]
Скачать реферат © 2017 | Пользовательское соглашение
ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ