Статьи

НОУ ІНТУЇТ | лекція | Структури в мові C ++

Завдання 9.2. Дано два комплексних числа Завдання 9 і . Виконати над ними основні операції:

Сумою двох комплексних чисел Сумою двох комплексних чисел   і   називається комплексне число і називається комплексне число .

Різницею двох комплексних чисел Різницею двох комплексних чисел   і   називається комплексне число і називається комплексне число .

Твором двох комплексних чисел Твором двох комплексних чисел   і   називається комплексне число і називається комплексне число .

Приватним двох комплексних чисел Приватним двох комплексних чисел   і   називається комплексне число і називається комплексне число

Числом, зв'язаних комплексному числу Числом, зв'язаних комплексному числу   , Називається число   (   Рис , Називається число ( Рис. 9.2 ).

Будь-яке комплексне число, записане в алгебраїчній формі Будь-яке комплексне число, записане в алгебраїчній формі   , Можна записати в тригонометричної   або в показовій формі   , де   - модуль комплексного числа   - його аргумент (   Рис , Можна записати в тригонометричної або в показовій формі , де - модуль комплексного числа - його аргумент ( Рис. 9.2 ).

Для зведення в ступінь комплексного числа, записаного в тригонометричної формі Для зведення в ступінь комплексного числа, записаного в тригонометричної формі   ), Можна скористатися формулою Муавра ), Можна скористатися формулою Муавра

Формула для добування кореня Формула для добування кореня   -го ступеня з комплексного числа   має вигляд де -го ступеня з комплексного числа має вигляд де .

Далі наведено текст програми, який реалізує алгоритм розв'язання задачі 9.2. У програмі описані дві структури для роботи з комплексними числами: структура complex1 для подання комплексних чисел в алгебраїчній формі (Re - дійсна частина комплексного числа, Im - його уявна частина) і структура complex2 для подання комплексних чисел в показовою або тригонометричної формі (Modul - модуль комплексного числа, Argum - його аргумент). Крім того в програмі створені функції, що реалізують основні дії над комплексними числами, перехід між різними формами подання комплексних чисел, а також введення-виведення комплексних чисел.

#include <iostream> #include <math.h> using namespace std; struct complex1 {float Re; float Im; }; struct complex2 {float Modul; float Argum; }; // Введення числа в алгебраїчній формі complex1 vvod1 () {complex1 temp; cout << "Введіть дійсну частину числа \ n"; cin >> temp.Re; cout << "Введіть уявну частину комплексного числа \ n"; cin >> temp.Im; return temp; } // Введення числа в тригонометричної або показовою формі complex2 vvod2 () {complex2 temp; cout << "Введіть модуль комплексного числа \ n"; cin >> temp.Modul; cout << "Введіть аргумент комплексного числа \ n"; cin >> temp.Argum; return temp; } // Виведення числа в алгебраїчній формі void vivod (complex1 chislo) {cout << chislo.Re; if (chislo.Im> = 0) cout << "+" << chislo.Im << "i" << endl; else cout << "" << chislo.Im << "i" << endl; } // Виведення числа в тригонометричної формі void vivod (complex2 chislo) {cout << chislo.Modul << "(cos (" << chislo.Argum << ") + i sin (" << chislo.Argum << " )) "<< endl; } // Переклад числа з тригонометричної форми в алгебраїчну, // pr визначає, виводити чи ні отримане число на екран. complex1 perevod (complex2 chislo, bool pr = false) {complex1 temp; temp.Re = chislo.Modul * cos (chislo.Argum); temp.Im = chislo.Modul * sin (chislo.Argum); if (pr) vivod (temp); return temp; } // Переклад числа з алгебраїчної форми в тригонометричну, // pr визначає, виводити чи ні отримане число на екран. complex2 perevod (complex1 chislo, bool pr = false) {complex2 temp; temp.Modul = sqrt (chislo.Re * chislo.Re + chislo.Im * chislo.Im); temp.Argum = atan (chislo.Im/ chislo.Re); if (pr) vivod (temp); return temp; } // Функція складання двох чисел в алгебраїчній формі, // pr визначає, виводити чи ні число на екран. complex1 plus1 (complex1 chislo1, complex1 chislo2, bool pr = true) {complex1 temp; temp.Re = chislo1.Re + chislo2.Re; temp.Im = chislo1.Im + chislo2.Im; if (pr) vivod (temp); return temp; } // Функція віднімання двох чисел в алгебраїчній формі, // pr визначає, виводити чи ні число на екран. complex1 minus1 (complex1 chislo1, complex1 chislo2, bool pr = true) {complex1 temp; temp.Re = chislo1.Re-chislo2.Re; temp.Im = chislo1.Im-chislo2.Im; if (pr) vivod (temp); return temp; } // Функція множення двох чисел в алгебраїчній формі, // pr визначає, виводити чи ні число на екран. complex1 mult1 (complex1 chislo1, complex1 chislo2, bool pr = true) {complex1 temp; temp.Re = chislo1.Re * chislo2.Re-chislo1.Im * chislo2.Im; temp.Im = chislo1.Im * chislo2.Re + chislo1.Re * chislo2.Im; if (pr) vivod (temp); return temp; } // Функція розподілу двох чисел в алгебраїчній формі, // pr визначає, виводити чи ні число на екран. complex1 divide1 (complex1 chislo1, complex1 chislo2, bool pr = true) {complex1 temp; temp.Re = (chislo1.Re * chislo2.Re + chislo1.Im * chislo2.Im) / (chislo2.Re * chislo2. Re + chislo2.Im * chislo2.Im); temp.Im = (chislo1.Im * chislo2.Re-chislo1.Re * chislo2.Im) / (chislo2.Re * chislo2. Re + chislo2.Im * chislo2.Im); if (pr) vivod (temp); return temp; } // Функція зведення комплексного числа в алгебраїчній формі // в цілу ступінь n, pr визначає, виводити чи ні отримане число на екран. complex1 pow1 (complex1 chislo1, int n, bool pr = true) {complex1 temp; complex2 temp2; float p = 1; int i = 1; temp2 = perevod (chislo1, true); // Переклад числа в тригонометричну форму. for (; i <= n; p * = temp2.Modul, i ++); temp.Re = p * cos (n * temp2.Argum); temp.Im = p * sin (n * temp2.Argum); if (pr) vivod (temp); return temp; } // Функція витягання кореня ступеня n з комплексного числа // в алгебраїчній формі, pr визначає, виводити чи ні // отримані значення на екран. Функція повертає ro і fi. void sqrt n 1 (complex1 chislo1, int n, float _ ro, float _ fi, bool pr = true) {complex1 temp; complex2 temp2; int i = 0; temp2 = perevod (chislo1, true); // Переклад числа в тригонометричну форму. * Ro = pow (temp2.Modul, (float) 1 / n); * Fi = temp2.Argum; if (pr) {for (i = 0; i <n; i ++) {cout << i << "- е значення кореня \ n"; temp.Re = * ro * cos ((* fi + 2 * M_PI * i) / n); temp.Im = * ro * sin ((* fi + 2 * M_PI * i) / n); vivod (temp); }}} Int main () {complex1 chislo1, chislo2; // Опис комплексних complex1 chislo5; // чисел в алгебраїчній формі. complex2 chislo3, chislo4; // Опис комплексних чисел в тригонометричної формі. float ro1, fi1; chislo1 = vvod1 (); // Введення вихідних даних chislo2 = vvod1 (); // в алгебраїчній формі. vivod (chislo1); // Висновок вихідних даних vivod (chislo2); // в алгебраїчній формі. chislo 3 = perevod (chislo1, true); // Переклад чисел chislo 4 = perevod (chislo2, true); // в тригонометричну форму і виведення їх на екран. cout << "Сума чисел"; chislo5 = plus1 (chislo1, chislo2, true); cout << "Різниця чисел"; chislo5 = minus1 (chislo1, chislo2, true); cout << "Твір чисел"; chislo5 = mult1 (chislo1, chislo2, true); cout << "Приватне чисел"; chislo5 = divide1 (chislo1, chislo2, true); chislo5 = pow1 (chislo1, 5, true); // Зведення числа в п'яту ступінь. sqrtn1 (chislo1, 5, & Ro1, & fi1, true); // Витяг кореня п'ятого ступеня. return 0; }

Результати роботи програми до задачі 9.2.

Введіть дійсну частину числа 5 Введіть уявну частину комплексного числа -7 Введіть дійсну частину числа 11 Введіть уявну частину комплексного числа 1.85 5 -7 i 11 +1.85 i 8.60233 (cos (-0.950547) + i sin (-0.950547)) 11.1545 (cos ( 0.166623) + i sin (0.166623)) Сума чисел 16 -5.15 i Різниця чисел -6 -8.85 i Твір чисел 67.95 -67.75 i Приватне чисел 0.337961 -0.693203 i 8.60233 (cos (-0.950547) + i sin (-0.950547)) 1900 +47068 i 8.60233 (cos (-0.950547) + i sin (-0.950547)) 0-е значення кореня 1.51018 -0.290608 i 1-е значення кореня 0.743054 +1.34646 i 2-е значення кореня -1.05094 +1.12277 i 3-е значення кореня -1.39257 -0.652552 i 4-е значення кореня 0.190285 -1.52606 i

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал

Как оформить диск малыш от рождения до года из фото и видео
Оформить диск "Малыш от рождения до года" из фото и видео можно совершенно разными способами! Кто-то для достижения данной цели идет на шоу-таланты, кто-то пользуется услугами профессионалов, а кто-то