Форум программистов, компьютерный форум CyberForum.ru

Комплексные числа - C++

Восстановить пароль Регистрация
 
serik8989
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 54
25.04.2013, 18:23     Комплексные числа #1
народ помогите пожалуйста реализовать в следующих формах: в тригонометрической форме и логарифмической форме.
я сам несколько заданий сделал. вот сама прога
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include "stdafx.h"
#include <iostream>//ввод вывод строк,для работы cin и cout
#include <stdlib.h>//просто стандартная библиотека
#include <conio.h>//консольный ввод вывод
#include <math.h>//подключение математической библиотеки
 
using namespace std;
 
void num(double,double);//вывод числа (чтоб красиво было)
class complex {public://общие свойства
//параметры передаются как (int r1,int c1,int r2,int c2) => r1,r2-вещественная часть c1,c2-комплексная часть
               void summa(double ,double ,double,double ,char *);//сумма
               void stepen(double ,double ,int);//возведение в степень (степень целочисленая)
               void koren(double ,double ,int );//извлечение квадратного корня
              };
void num(double r,double c)
{if((c>0)||(c==0)) cout<<"("<<r<<"+"<<c<<"j"<<")";
 if(c<0) cout<<"("<<r<<c<<"j"<<")";
};
 
void complex::summa(double r1,double c1,double r2,double c2, char *s)//метод сумма
{double r,c;//r-конечная целая часть,с-конечная комплексная часть
 num(r1,c1);//вывод 1 числа
 if(strcmp("+",s)==0)//если операция +   
   {cout<<"+";
    r=r1+r2;//подчсет целой части
    c=c1+c2;//посдчет комплексной части
   };
 if(strcmp("-",s)==0)//если операция -
   {cout<<"-"; 
    r=r1-r2;//подчсет целой части
    c=c1-c2;//посдчет комплексной части
   };
 num(r2,c2);//вывод 2 числа
 cout<<"=";
 num(r,c);//вывод результата 
 cout<<endl;
};
void complex::stepen(double r1,double c1,int s)//метод возведение в целочисленную степень s
//чтобы возвести число в степень переведем его в тригонометрическую форму,при условии что r=Rcosx;c=Rsinx;R=sqrt(r^2+c^2) и само 
//число z=r+c*i; z^n=(Rconx+Rsinx)^n=R^n(cos(nx)+sin(nx))-Формула Муавра=>целая часть r=cos(nx)*R^n,а комплексная c=sin(nx)*R^n;
{double r,c;//r-конечная целая часть,с-конечная комплекcная часть
 double R;//Ро;R=sqrt(r^2+c^2)
 double y;//угол
 y=atan(c1/r1);//подсчет арктангенса угла
 R=pow((r1*r1+c1*c1),0.5);//вычисление R
 r=cos(s*y)*pow(R,s);//вычисление целой части
 c=sin(s*y)*pow(R,s);//вычисление комплексной части
 num(r1,c1);//вывод числа
 cout<<"^"<<s;//вывод числа степени
 cout<<"=";
 num(r,c);//вывод результата
 cout<<endl;
};
 
void complex::koren(double r1,double c1,int s)//метод извлечение квадратного корня//и не только квадратного,работает на все степени
//s-передается как знаменатель степени,т.е. сама степеноь это 1/s
//чтобы возвести число в степень переведем его в тригонометрическую форму,при условии что r=Rcosx;c=Rsinx;R=sqrt(r^2+c^2) и само 
//число z=r+c*i; Формула вычисления (R(cosx+i*sinx))^(1/s)=(cos((x+2pi*k)/s)+i*sin((x+2pi*k)/s)*R^(1/s);
{double r,c;//r-конечная целая часть,с-конечная комплексная часть
 double R;//Ро;R=sqrt(r^2+c^2)
 double y;//угол 
 int k;//для корней,k=(1,s-1);
 num(r1,c1);//вывод числа
 cout<<"^(1/"<<s<<")="<<endl;
 y=atan(c1/r1);//подсчет арктангенса угла
 R=pow((r1*r1+c1*c1),0.5);//вычисление R
 for(k=0;k<s;k++)
    {r=cos((y/180+3.14*k)/s)*pow(R,(1/s));//вычислени целой части 
     c=sin((y/180+3.14*k)/s)*pow(R,(1/s));//вычисление дробной части
     cout<<"koren N "<<k+1<<": ";
     num(r,c);//вывод корня
     cout<<endl;
    }
 cout<<endl;
};
 
int main(array<System::String ^> ^args)
{complex x;//объект класса complex
 double r1,r2,c1,c2;//составляющие чисел (r1,c1) и (r2,c2)
 double s;//степень
 cout<<"vvedite chislo 1(cherez probel):";
 cin>>r1>>c1;//ввод первого числа
cout<<"vvedite chislo 2(cherez probel):";
cin>>r2>>c2;//ввод второго числа
 cout<<"summa"<<endl;
 x.summa(r1,c1,r2,c2,"+");//вывод суммы
 cout<<"raznost"<<endl;
 x.summa(r1,c1,r2,c2,"-");//вывод разности
 cout<<"vvedite stepen(stepen celoe chislo):";
 cin>>s;//ввод возводимой степени
 cout<<"vozvedenei v stepen 1-go chisla"<<endl;
 x.stepen(r1,c1,s);//вывод возведения в степень 1 числа
 cout<<"vozvedenei v stepen 2-go chisla"<<endl;
 x.stepen(r2,c2,s);//вывод возведения в степень 2 числа
 cout<<"vvedite stepen izvlekaemogo kornya s((r1+c1)^(1/s)):";
 cin>>s;//ввод степени извлекаемого корня
 cout<<"vichislenie kornya 1-go chisla"<<endl;
 x.koren(r1,c1,s);//вывод извлечения корня степени 1/s 1 числа
 cout<<"vichislenie kornya 2-go chisla"<<endl;
 x.koren(r2,c2,s);//вывод извлечения корня степени 1/s 2 числа
 getch();
}
у меня те две формы КЧ не выходят!!или подскажите как сделать.прога рабочая
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2013, 18:23     Комплексные числа
Посмотрите здесь:

C++ Комплексные числа
C++ Комплексные числа
комплексные числа C++
C++ Комплексные числа..
C++ Комплексные числа
Комплексные числа C++
C++ Комплексные числа
Комплексные числа C++
Комплексные числа C++
Комплексные числа в с++ C++
C++ Комплексные числа
Комплексные числа C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 09:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru