Калькулятор для работы с комплексными числами
Написание программы, позволяющей осуществлять операции с комплексными числами, обеспечивающей ввод с клавиатуры одного или двух комплексных чисел и вычисление требуемых параметров одного числа или осуществление арифметических операций с двумя числами.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 09.06.2012 |
Размер файла | 603,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Курсовой проект
по дисциплине
"Высокоуровневые методы информатики и программирования"
на тему:
"Калькулятор для работы с комплексными числами"
1. Условие задачи:
- Написать программу, позволяющую осуществлять операции с комплексными числами.
- Программа должна обеспечить ввод с клавиатуры одного или двух комплексных чисел и вычисление требуемых параметров одного числа или осуществление арифметических операций с двумя числами.
- калькулятор программа комплексный число
- 1.1 Назначение программы
- Программа предназначена для работы с комплексными числами. Программа может складывать, вычитать, умножать, делить одного или двух комплексных чисел, и вывести результат. На форме располагаются шесть текстовых окон. Верхние четыре окна, для ввода чисел z1 и z2, а нижнее для вывода расчетов. В нижнем правом углу окно для возведения в степень n.
- 1.2 Математическая постановка задачи
- Комплексным числом называется выражение вида a + ib, где a и b - любые действительные числа, i - специальное число, которое называется мнимой единицей. Для таких выражений понятия равенства и операции сложения и умножения вводятся следующим образом:
- а) Два комплексных числа a + ib и c + id называются равными тогда и только тогда, когда a = b и c = d.
- б) Суммой двух комплексных чисел a + ib и c + id называется комплексное число a + c + i (b + d).
- в) Произведением двух комплексных чисел a + ib и c + id называется комплексное число ac - bd + i (ad + bc).
- 2. Ход работы
- Классы:
- public class ComplexNumber // класс, реализующий комплексное число
- public float Re = 0f; // Действительная часть
- public float Im = 1f; // Мнимая часть
- Методы:
- public static float Abs (ComplexNumber cn)
- // Вычисляет модуль комплексного числа
- public static ComplexNumber Summa (ComplexNumber cn1, ComplexNumber cn2)
- // Вычисляет сумму двух комплексных чисел
- public static ComplexNumber Raznost (ComplexNumber cn1, ComplexNumber cn2)
- // Вычисляет разность двух комплексных чисел
- public static ComplexNumber Multipli (ComplexNumber cn1, ComplexNumber cn2)
- // Вычисляет произведение двух комплексных чисел
- public static ComplexNumber Delen (ComplexNumber cn1, ComplexNumber cn2)
- // Вычисляет деление двух комплексных чисел
- public static ComplexNumber Pow (ComplexNumber cn, float n) // Возводит комплексное число в степень n
- 2.1 Работа с программой
- Вычисляет сумму двух комплексных чисел:
- public static ComplexNumber Summa (ComplexNumber cn1, ComplexNumber cn2)
- {
- // переменная для записи результата суммы
- ComplexNumber CN = new ComplexNumber();
- // сумма вычисляется по формуле
- //z1+z2=(x1+x2)+i (y1+y2)
- // вычисляем действительную часть
- CN. Re = cn1. Re + cn2. Re;
- // вычисляем мнимую часть
- CN. Im = cn1. Im + cn2. Im;
- // возвращаем результат
- return CN;
- Вычисляет разность двух комплексных чисел:
- public static ComplexNumber Raznost (ComplexNumber cn1, ComplexNumber cn2)
- {
- // переменная для записи результата разности
- ComplexNumber CN = new ComplexNumber();
- // разность вычисляется по формуле
- //z1-z2=(x1-x2)+i (y1-y2)
- // вычисляем действительную часть
- CN. Re = cn1. Re - cn2. Re;
- // вычисляем мнимую часть
- CN. Im = cn1. Im - cn2. Im;
- // возвращаем результат
- return CN;
- }
- Вычисляет произведение двух комплексных чисел:
- public static ComplexNumber Multipli (ComplexNumber cn1, ComplexNumber cn2)
- {
- // переменная для записи результата умножения
- ComplexNumber CN = new ComplexNumber();
- // произведение вычисляется по формуле
- //z1*z2=(x1*x2-y1*y2)+i (x1*y2+y1*x2)
- // вычисляем действительную часть
- CN. Re = cn1. Re * cn2. Re - cn1. Im * cn2. Im;
- // вычисляем мнимую часть
- CN. Im = cn1. Re * cn2. Im + cn1. Im * cn2. Re;
- // возвращаем результат
- return CN;
- }
- Вычисляет деление двух комплексных чисел:
- public static ComplexNumber Delen (ComplexNumber cn1, ComplexNumber cn2)
- {
- // переменная для записи результата деления
- ComplexNumber CN = new ComplexNumber();
- // сумма вычисляется по формуле
- //z1/z2=(x1*x2+y1*y2)/(x2^2+y2^2)+i (y1*x2-x1*y2)/(x2^2+y2^2)
- // вычисляем действительную часть
- CN. Re = (cn1. Re * cn2. Re + cn1. Im * cn2. Im) / (cn2. Re * cn2. Re + cn2. Im * cn2. Im);
- // вычисляем мнимую часть
- CN. Im = (cn1. Im * cn2. Re - cn1. Re * cn2. Im) / (cn2. Re * cn2. Re + cn2. Im * cn2. Im);
- // возвращаем результат
- return CN;
- }
- Вычисляет модуль комплексного числа:
- public static float Abs (ComplexNumber cn)
- {
- // модуль вычисляем по формуле
- // |z|=sqrt (x^2+y^2)
- float m = (float) Math. Sqrt (cn. Re * cn. Re + cn. Im * cn. Im);
- // возвращаем результат
- return m;
- }
- Возводит комплексное число в степень n:
- public static ComplexNumber Pow (ComplexNumber cn, float n)
- {
- // комплексное число 1+i0
- ComplexNumber CN = new ComplexNumber (1, 0);
- // перемножаем данное число друг с другом n раз
- // где n - показатель степени, в которую возводят число
- for (int i = 0; i < n; i++)
- CN = Multipli (CN, cn);
- // возвращаем результат
- return CN;
- }
- Можно также складывать, вычитать, умножать и делить одного комплексного числа:
- Складывание:
- Вычитание:
- Умножение:
- Деление:
- 2.2 Блок-схема
- 2.3 Код программы
- using System;
- using System. Collections. Generic;
- using System. ComponentModel;
- using System. Data;
- using System. Drawing;
- using System. Text;
- using System. Windows. Forms;
- namespace ComplexNums
- {
- public partial class Form1: Form
- {
- public Form1 ()
- {
- // инициализация компонентов формы
- InitializeComponent();
- }
- // Меняет местами значения чисел z1 и z2
- private void button1_Click (object sender, EventArgs e)
- {
- // временная переменная
- string s;
- // считываем значение действительной части z1…
- s = textBox1. Text;
- // заменяем ее значением действительной части z2…
- textBox1. Text = textBox3. Text;
- // и записываем это значение в поле действительной части z2
- textBox3. Text = s;
- // считываем значение мнимой части z1…
- s = textBox2. Text;
- // заменяем ее значением мнимой части z2…
- textBox2. Text = textBox4. Text;
- // и записываем это значение в поле мнимой части z2
- textBox4. Text = s;
- }
- // производит операции над комплексными числами
- private void button2_Click (object sender, EventArgs e)
- {
- // переменная для записи результата
- ComplexNumber CN = new ComplexNumber (0, 0);
- // комплексное число 1
- ComplexNumber cn1 = new ComplexNumber();
- // комплексное число 2
- ComplexNumber cn2 = new ComplexNumber();
- // обрабатываем исключения при считывании чисел
- try
- {
- // Определяем комплексные числа
- // считываем действительную часть z1
- // если поле пусто, то ставим значение = 0
- if (textBox1. Text == «») cn1. Re = 0f;
- // иначе, считываем значение из элемента
- else cn1. Re = (float) Convert. ToDouble (textBox1. Text);
- // считываем мнимую часть z1
- // если поле пусто, то ставим значение = 0
- if (textBox2. Text == «») cn1. Im = 0f;
- // иначе, считываем значение из элемента
- else cn1. Im = (float) Convert. ToDouble (textBox2. Text);
- // если на z2 не стоит флажок, значит второе число
- // не используется
- if (! checkBox2. Checked)
- {
- // поэтому второе число будет являтся первым
- // т.е. все действия будут совершаться с одним
- // и тем же числом
- cn2. Re = cn1. Re;
- cn2. Im = cn1. Im;
- }
- // иначе, если второе чило используется…
- else
- {
- // считываем действительную часть z2
- // если поле пусто, то ставим значение = 0
- if (textBox3. Text == «») cn2. Re = 0f;
- // иначе, считываем значение из элемента
- else cn2. Re = (float) Convert. ToDouble (textBox3. Text);
- // считываем мнимую часть z2
- // если поле пусто, то ставим значение = 0
- if (textBox4. Text == «») cn2. Im = 0f;
- // иначе, считываем значение из элемента
- else cn2. Im = (float) Convert. ToDouble (textBox4. Text);
- }
- }
- catch
- {
- // если найдена ошибка, выводим в поле результата сообщение
- textBox5. Text = «Ошибка при вводе чисел»;
- // выходим из функции
- return;
- }
- // обрабатываем исключения при вычислениях
- try
- {
- // В зависимости от того, какая операция выбрана
- // вызываем соответствующие функции
- if (radioButton1. Checked) CN = ComplexNumber. Summa (cn1, cn2); // сложение
- if (radioButton2. Checked) CN = ComplexNumber. Raznost (cn1, cn2); // вычитание
- if (radioButton3. Checked) CN = ComplexNumber. Multipli (cn1, cn2); // умножение
- if (radioButton4. Checked) CN = ComplexNumber. Delen (cn1, cn2); // деление
- if (radioButton5. Checked) CN. Re = ComplexNumber. Abs(cn1); // модуль
- // возведение в степень
- if (radioButton6. Checked)
- {
- // считываем показатель степени
- float n = (float) Convert. ToDouble (textBox6. Text);
- // вызываем необходимую функцию
- CN = ComplexNumber. Pow (cn1, n);
- }
- }
- catch
- {
- // если найдена ошибка, выводим в поле результата сообщение
- textBox5. Text = «Ошибка при вычислении»;
- // выходим из функции
- return;
- }
- // Вывод результата
- // если мнимая часть положительная, выводим результат в виде Re + iIm
- if (CN. Im > 0) textBox5. Text = CN. Re. ToString() + «+ i» + CN. Im. ToString();
- // если мнимая часть отрицательная, выводим результат в виде Re - i(-Im)
- else if (CN. Im < 0) textBox5. Text = CN. Re. ToString() + «- i» + (-CN. Im).ToString();
- // если мнимая часть равна нулю, то выводим только действительную часть
- else textBox5. Text = CN. Re. ToString();
- // Если выбран флажок '>>z1'
- if (checkBox1. Checked)
- {
- // заносим результат в поле z1
- // копируем действительную часть
- textBox1. Text = CN. Re. ToString();
- // копируем мнимую часть
- textBox2. Text = CN. Im. ToString();
- }
- // Если выбран флажок '>>z2'
- if (checkBox3. Checked)
- {
- // заносим результат в z2
- // копируем действительную часть
- textBox3. Text = CN. Re. ToString();
- // копируем мнимую часть
- textBox4. Text = CN. Im. ToString();
- }
- }
- // вызывается при смене флажка элемента checkBox2
- private void checkBox2_CheckedChanged (object sender, EventArgs e)
- {
- // если флажек стоит…
- if (checkBox2. Checked)
- {
- // то разрешаем вводить значение числа z2
- textBox3. Enabled = true;
- textBox4. Enabled = true;
- }
- else // иначе…
- {
- // если z2 не выбрано, то запрещаем вводить
- // его значение
- textBox3. Enabled = false;
- textBox4. Enabled = false;
- }
- }
- }
- // класс, реализующий комплексное число
- public class ComplexNumber
- {
- // Действительная часть
- public float Re = 0f;
- // Мнимая часть
- public float Im = 1f;
- // пустой конструктор
- public ComplexNumber() {}
- // перегруженный конструктор
- public ComplexNumber (float re, float im)
- {
- // присваиваем значение действительной части
- Re = re;
- // присваиваем значение мнимой части
- Im = im;
- }
- // Вычисляет модуль комплексного числа
- public static float Abs (ComplexNumber cn)
- {
- // модуль вычисляем по формуле
- // |z|=sqrt (x^2+y^2)
- float m = (float) Math. Sqrt (cn. Re * cn. Re + cn. Im * cn. Im);
- // возвращаем результат
- return m;
- }
- // Вычисляет сумму двух комплексных чисел
- public static ComplexNumber Summa (ComplexNumber cn1, ComplexNumber cn2)
- {
- // переменная для записи результата суммы
- ComplexNumber CN = new ComplexNumber();
- // сумма вычисляется по формуле
- //z1+z2=(x1+x2)+i (y1+y2)
- // вычисляем действительную часть
- CN. Re = cn1. Re + cn2. Re;
- // вычисляем мнимую часть
- CN. Im = cn1. Im + cn2. Im;
- // возвращаем результат
- return CN;
- }
- // Вычисляет разность двух комплексных чисел
- public static ComplexNumber Raznost (ComplexNumber cn1, ComplexNumber cn2)
- {
- // переменная для записи результата разности
- ComplexNumber CN = new ComplexNumber();
- // разность вычисляется по формуле
- //z1-z2=(x1-x2)+i (y1-y2)
- // вычисляем действительную часть
- CN. Re = cn1. Re - cn2. Re;
- // вычисляем мнимую часть
- CN. Im = cn1. Im - cn2. Im;
- // возвращаем результат
- return CN;
- }
- // Вычисляет произведение двух комплексных чисел
- public static ComplexNumber Multipli (ComplexNumber cn1, ComplexNumber cn2)
- {
- // переменная для записи результата умножения
- ComplexNumber CN = new ComplexNumber();
- // произведение вычисляется по формуле
- //z1*z2=(x1*x2-y1*y2)+i (x1*y2+y1*x2)
- // вычисляем действительную часть
- CN. Re = cn1. Re * cn2. Re - cn1. Im * cn2. Im;
- // вычисляем мнимую часть
- CN. Im = cn1. Re * cn2. Im + cn1. Im * cn2. Re;
- // возвращаем результат
- return CN;
- }
- // Вычисляет деление двух комплексных чисел
- public static ComplexNumber Delen (ComplexNumber cn1, ComplexNumber cn2)
- {
- // переменная для записи результата деления
- ComplexNumber CN = new ComplexNumber();
- // сумма вычисляется по формуле
- //z1/z2=(x1*x2+y1*y2)/(x2^2+y2^2)+i (y1*x2-x1*y2)/(x2^2+y2^2)
- // вычисляем действительную часть
- CN. Re = (cn1. Re * cn2. Re + cn1. Im * cn2. Im) / (cn2. Re * cn2. Re + cn2. Im * cn2. Im);
- // вычисляем мнимую часть
- CN. Im = (cn1. Im * cn2. Re - cn1. Re * cn2. Im) / (cn2. Re * cn2. Re + cn2. Im * cn2. Im);
- // возвращаем результат
- return CN;
- }
- // Возводит комплексное число в степень n
- public static ComplexNumber Pow (ComplexNumber cn, float n)
- {
- // комплексное число 1+i0
- ComplexNumber CN = new ComplexNumber (1, 0);
- // перемножаем данное число друг с другом n раз
- // где n - показатель степени, в которую возводят число
- for (int i = 0; i < n; i++)
- CN = Multipli (CN, cn);
- // возвращаем результат
- return CN;
- }
- }
- }
- Заключение
- В результате курсового проектирования была разработана программа осуществляющий операции с комплексными числами с помощью языка программирования С#. Программа обеспечивает ввод с клавиатуры одного или двух комплексных чисел и вычисление требуемых параметров одного числа или осуществление арифметических операций с двумя числами.
- Программный проект предназначен для вычисления различных простых функций и рассчитан на любого пользователя, в том числе непрофессионального, т.к. программа является легкой в использовании.
- Список литературы
- 1. Чарльз Петцольд. Программирование для Microsoft Windows на C#. Том 1./М.:Издательство «Русская Редакция», 2002. -576с,:ил.
- 2. Лабор В.В. C#: Создание приложений для Windows/ В.В. Лабор.-Мн,:Харвест, 2003. - 384 с.
- 3. Трегуб С.Н. Использование C#. Специальное издание. - Санкт Петербург: «Питер», 2005. - 980 с.
- 4. Фролов А.В. Язык C#. Самоучитель. - Москва: «Бином Пресс», 2003. - 890 с.
- 5. Фаронов. Создание приложений с помощью С#. - Санкт Петербург: «Эксмо», 2008. - 576 с.
- Размещено на Allbest.ru
Подобные документы
Понятие и функции комплексных чисел. Правила выполнения арифметических операций с комплексными числами. Действия с комплексными числами: сложение, вычитание, произведение, деление. Программная реализация решения задачи. Пример выполнения программы.
курсовая работа [398,8 K], добавлен 01.02.2010Изучение методов и этапов создания класса Complex, позволяющего работать с комплексными числами и производить с ними следующие операции: сложение, вычитание, умножение, деление двух комплексных чисел. Написание кода для ввода и вывода исходных данных.
курсовая работа [628,4 K], добавлен 11.09.2010Разработка программы для выполнения арифметических операций с комплексными числами. Разработка эскизного проекта. Диаграмма последовательностей и классов. Разработка и описание программы. Разработка программного кода и руководства пользователя.
курсовая работа [1,2 M], добавлен 25.11.2011Проведение четырех основных арифметических операций над целыми числами – подзадача, реализованная в большинстве пользовательских программ. Реализация многоэтапных алгоритмов вычисления. Список макросов, процедур и описание их функциональной нагрузки.
курсовая работа [25,9 K], добавлен 17.05.2013Создание программы ввода с клавиатуры двух чисел в 9-ричной системе счисления размером с слово, выполнение над ними деления и вывода результата в исходной системе счисления. Программа предусматривает контроль вводимой информации и результат операции.
лабораторная работа [11,3 K], добавлен 13.02.2009Анализ математических и алгоритмических значений величин, получающихся в результате решения квадратных уравнений, которые имеют название комплексных чисел. Особенности их сложения, вычитания, деления и произведения. Программная реализация решения задачи.
курсовая работа [443,7 K], добавлен 22.01.2010Теоретическая и практическая реализация комплексной арифметики на языке программирования Си. Разработка программы, производящей арифметические действия с комплексными числами. Автоматизации решения комплексных чисел. Матричная и стандартная модель.
курсовая работа [495,4 K], добавлен 21.01.2012Строение класса complex. Примеры использования класса complex. Результат выполнения программы. Цикл возведения первого числа во второе. Операции с комплексными числами. Конструкторы и операции присваивания для типа complex. Неявные преобразования типов.
курсовая работа [1,5 M], добавлен 18.05.2011Арифметические операции с целыми числами. Сложение и вычитание в дополнительном коде. Представление чисел в формате с плавающей точкой. Особенности выполнения арифметических операций в соответствии с IEEE. Точность выполнения арифметических операций.
контрольная работа [5,6 M], добавлен 19.05.2010Сопоставление наиболее важных систем счисления. Перевод целых десятичных чисел в недесятичную систему и обратно. Особенности преобразования дробей. Правила выполнения арифметических действий над двоичными, восьмеричными и шестнадцатеричными числами.
контрольная работа [824,4 K], добавлен 17.11.2010