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

Вычисление корня квадратного из комплексного числа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.92
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
15.09.2012, 21:15     Вычисление корня квадратного из комплексного числа #1
Всем доброго время суток. Вычислить корень квадратный из комплексного числа z = x + i*y. такая операция на множестве комплексных чисел, как известно, имеет два решения:
http://www.cyberforum.ru/cgi-bin/latex.cgi?{z}_{1}= \sqrt{|z|}*exp(\frac{i*\varphi }{2})
и
http://www.cyberforum.ru/cgi-bin/latex.cgi?{z}_{2}= \sqrt{|z|}*exp(\frac{i*\varphi }{2} + i*\pi ), где

http://www.cyberforum.ru/cgi-bin/latex.cgi?|z| = \sqrt{{x}^{2} + {y}^{2}} есть модуль комплексного числа z, а http://www.cyberforum.ru/cgi-bin/latex.cgi?\varphi - его аргумент. Вычислить действительную и мнимую части чисел
http://www.cyberforum.ru/cgi-bin/latex.cgi?{z}_{1} и http://www.cyberforum.ru/cgi-bin/latex.cgi?{z}_{2}. Параметры x и y вводятся пользователем с клавиатуры. Вот код:
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
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
setlocale( LC_ALL,"Russian" );
 double x, y, X, Y; 
 double r, phi, R, Phi;
 cout << "Введите действительную часть x: ";
 cin >> x;
 cout << "Введите мнимую часть y: ";
 cin >> y;   
phi = atan2(y,x);
r = sqrt(x*x + y*y);
R = sqrt(r);  
Phi = (1/2) * phi;
X = R * cos(Phi);
Y = R * sin(Phi);
cout << "Результат равен: \n "; 
cout << "Действительная часть  "<<X<<"\n ";
cout << "Мнимая часть  "<<Y<<"\n ";   
system("pause");
return 0;
}
Проверьте пожалуйста правильность работы программы. Похоже где то вот здесь
C++
1
2
R = sqrt(r);  
Phi = (1/2) * phi;
И почему берется арктангенс двойного угла
C++
1
phi = atan2(y,x);
, а не просто арктангенс???? Заранее огромное спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2012, 21:15     Вычисление корня квадратного из комплексного числа
Посмотрите здесь:

C++ алгоритм для вычисления квадратного корня x из вещественного числа y.
Многопоточность (вычисление корня квадратного уравнения, используя несколько независимых потоков) C++
C++ Разработать алгоритм вычисления корня n-ой степени из комплексного числа
Вычисление квадратного корня из числа C++
C++ извлечения квадратного корня из комплексного числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
15.09.2012, 22:01     Вычисление корня квадратного из комплексного числа #2
Цитата Сообщение от isaak Посмотреть сообщение
И почему берется арктангенс двойного угла
Код C++
1
phi = atan2(y,x);
, а не просто арктангенс???? Заранее огромное спасибо.
Во-первых, это просто название функции, а не "арктангенс двойного угла", во-вторых - арктангенс это функция не от угла :-)
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
15.09.2012, 22:37  [ТС]     Вычисление корня квадратного из комплексного числа #3
А программа сама правильная?
-=ЮрА=-
Заблокирован
Автор FAQ
15.09.2012, 22:43     Вычисление корня квадратного из комплексного числа #4
Цитата Сообщение от isaak Посмотреть сообщение
И почему берется арктангенс двойного угла
Код C++
1
phi = atan2(y,x);
, а не просто арктангенс????
- какой двойной угол?
Почитай что это за функция http://www.cplusplus.com/reference/c...y/cmath/atan2/

С кодом всё ОК только вконце к радианам надо прибавлять Пи (посмотри свою же формулу для корня http://www.cyberforum.ru/cgi-bin/latex.cgi?{z}_{2}= \sqrt{|z|}*exp(\frac{i*\varphi }{2} + i*\pi ))
Цитата Сообщение от isaak Посмотреть сообщение
Phi = (1/2) * phi;
- но этого не делаем и поэтому ответ выходит неверным
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
15.09.2012, 22:52  [ТС]     Вычисление корня квадратного из комплексного числа #5
-=ЮрА=- спасибо за ответ. На сколько я понял прибавить Пи к радианам:
C++
1
phi = atan2(y,x) * 180 / PI;
И программа получается:
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
#include <iostream>
#include <cmath>
#define PI 3.1416
using namespace std;
int main()
{
setlocale( LC_ALL,"Russian" );
 double x, y, X, Y; 
 double r, phi, R, Phi;
 cout << "Введите действительную часть x: ";
 cin >> x;
 cout << "Введите мнимую часть y: ";
 cin >> y;   
phi = atan2(y,x) * 180 / PI;
r = sqrt(x*x + y*y);
R = sqrt(r);  
Phi = (1/2) * phi;
X = R * cos(Phi);
Y = R * sin(Phi);
cout << "Результат равен: \n "; 
cout << "Действительная часть  "<<X<<"\n ";
cout << "Мнимая часть  "<<Y<<"\n ";   
system("pause");
return 0;
}
Правильно да????
-=ЮрА=-
Заблокирован
Автор FAQ
15.09.2012, 22:56     Вычисление корня квадратного из комплексного числа #6
Цитата Сообщение от isaak Посмотреть сообщение
я понял прибавить Пи к радианам:
Код C++
1
phi = atan2(y,x) * 180 / PI;
- какое же это прибавление
Вот прибавление
C++
1
 phi = atan2(y,x) + PI;
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
15.09.2012, 23:11  [ТС]     Вычисление корня квадратного из комплексного числа #7
Спасибо огромное -=ЮрА=-

Добавлено через 4 минуты
-=ЮрА=- подскажи пожалуйста какое нужно взять -=ЮрА=-, чтобы результат мнимой части был не нулевой. Заранее огромное спасибо.
-=ЮрА=-
15.09.2012, 23:43
  #8

Не по теме:

Цитата Сообщение от isaak Посмотреть сообщение
-=ЮрА=- подскажи пожалуйста какое нужно взять -=ЮрА=-
- честно не понял, меня под корень не надо

isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
16.09.2012, 11:21  [ТС]     Вычисление корня квадратного из комплексного числа #9
-=ЮрА=- извиняюсь за опечатку, хотел спросить какое нужно взять значение мнимой части y, чтобы результат мнимой части было ненулевое число, а то у меня при всех значениях y, в ответе мнимая часть равна 0. Еще раз приношу извинения за свой предыдущий ляп. Заранее огромное спасибо.
-=ЮрА=-
Заблокирован
Автор FAQ
16.09.2012, 12:46     Вычисление корня квадратного из комплексного числа #10
isaak, я вчера просмотрел - убери перевод в радианы
Цитата Сообщение от isaak Посмотреть сообщение
phi = atan2(y,x) * 180 / PI;
, здесь он совершенно не нужен при вычислениях.
-=ЮрА=-
Заблокирован
Автор FAQ
16.09.2012, 14:12     Вычисление корня квадратного из комплексного числа #11
isaak, вот твой алгоритм
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cmath>
#include <iostream>
using namespace std;
 
int main()
{
    double x, y, z, phi;
    cout<<"x = ";cin>>x;
    cout<<"y = ";cin>>y;
    z = sqrt(x*x + y*y);
    phi = atan2(y, x);
    cout<<"Input complex : "<<z<<"*exp("<<phi<<"*j)"<<endl;
    cout<<"\tSQRT\n";
    cout<<"z1 = "<<sqrt(z)<<"*exp("<<phi/2<<"*j) = "
        <<sqrt(z)*cos(phi/2)<<" + "<<sqrt(z)*sin(phi/2)<<"*j"<<endl;
    cout<<"z2 = "<<sqrt(z)<<"*exp("<<phi/2 + asin(1.0)<<"*j) = "
        <<sqrt(z)*cos(phi/2 + asin(1.0))<<" + "<<sqrt(z)*sin(phi/2 + asin(1.0))<<"*j"<<endl;
    return 0;
}
Проверка в маткаде (правда маткад выдаёт только первый корень(он совпадает с отработкой программы), второй(тот что на Пи отстоит) считает уже наш алгоритм)
Миниатюры
Вычисление корня квадратного из комплексного числа  
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
16.09.2012, 20:52  [ТС]     Вычисление корня квадратного из комплексного числа #12
-=ЮрА=- спасибо огромное за ответ посмотри пожалуйста, а этот код правильный:
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
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
const double  PI = 3.1416;
setlocale( LC_ALL,"Russian" );
 
 double x, y, X, Y; 
 double r, phi, R, Phi;
 cout << "Введите действительную часть x: ";
 cin >> x;
 cout << "Введите мнимую часть y: ";
 cin >> y;   
phi = atan2(y,x) + PI;
r = sqrt(x*x + y*y);
R = sqrt(r);  
Phi = (1/2) * phi;
X = R * cos(Phi);
Y = R * sin(Phi);
cout << "Результат равен: \n "; 
cout << "Действительная часть  "<<X<<"\n ";
cout << "Мнимая часть  "<<Y<<"\n ";   
system("pause");
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2012, 09:56     Вычисление корня квадратного из комплексного числа
Еще ссылки по теме:

C++ Вычисление корня квадратного из комплексного числа
C++ Вычисление квадратного корня из числа (без использования стандартных математических функций)
C++ Вычисление квадратного корня четных элементов массива

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
18.09.2012, 09:56     Вычисление корня квадратного из комплексного числа
  #13

Не по теме:

isaak, да всё гуд, ты получаешь значение 2-го корня, тот что отстоит на Пи

Yandex
Объявления
18.09.2012, 09:56     Вычисление корня квадратного из комплексного числа
Ответ Создать тему
Опции темы

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