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

Экспонента в комплексной степени - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
nullpointer
 Аватар для nullpointer
45 / 45 / 5
Регистрация: 30.03.2009
Сообщений: 518
26.05.2013, 00:11     Экспонента в комплексной степени #1
Подскажите пожалуйста, как вернуть значение экспоненты в комплексной степени? Мне не на выводе нужно подписать эту i, а именно в самой формуле запрограммировать ее. Собственно нужно вернуть значение вот такой формулы:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{exp{i*\left|x-y \right|}}{4*\left|x-y \right|}-\frac{exp{i*\left|x-\bar{y} \right|}}{4*\left|x-\bar{y}\right|}

Я все запрограммировал, проблема только с этой самой мнимой единицей. Вот что у меня получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
_complex Grin(double* x, double* y, double* ys){
    double ry[N], rys[N];
    double sqy = 0.0, sqys = 0.0;
    double mody = 0.0, modys = 0.0;
 
    for (int i = 0; i < N; i++){
        ry[i] += x[i] - y[i];
        rys[i] += x[i] - ys[i];
    }
 
    for (int i = 0; i < N; i++){
        sqy += ry[i] * ry[i];
        sqys += rys[i] * rys[i];
    }
 
    mody = sqrt(sqy);
    modys = sqrt(sqys);
 
    return exp(i * mody)/(4 * M_PI * mody) - exp(i * modys)/(4 * M_PI * modys);
    
}
Добавлено через 6 часов 36 минут
Help me! Как используя стандартный класс комплексных чисел произвести умножение мнимой единицы на число, а то пришлось самописный класс подключать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
27.05.2013, 09:53     Экспонента в комплексной степени #2
Цитата Сообщение от }{@k Посмотреть сообщение
Как используя стандартный класс комплексных чисел произвести умножение мнимой единицы на число
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cstdlib>
#include <complex>
 
int main()
{
    std::complex<double> c( 0,1 ); // мнимая единица 
    double k = 2.345; // вещественное число
    std::cout << c * k << std::endl; // умножение
    std::system( "pause" );
}
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,167
Завершенные тесты: 1
27.05.2013, 10:03     Экспонента в комплексной степени #3
Только создавайте сразу комплексное число
complex<double> c( 0,mody ),d(0,imodys);
и вызывайте функцию exp от комплексного аргумента
return exp(c)/(4 * M_PI * mody) - exp(d)/(4 * M_PI * modys);
nullpointer
 Аватар для nullpointer
45 / 45 / 5
Регистрация: 30.03.2009
Сообщений: 518
27.05.2013, 14:32  [ТС]     Экспонента в комплексной степени #4
Всем спасибо. Так я делал. Просто я думал может мнимая единица как то прописана в библиотеке стандартной, на подобие _i или вроде того.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
27.05.2013, 14:42     Экспонента в комплексной степени #5
Цитата Сообщение от }{@k Посмотреть сообщение
Просто я думал может мнимая единица как то прописана в библиотеке стандартной, на подобие _i или вроде того.
Ничего такого нет. Если хочется создавать литералы, описывающие комплексные числа, можно воспользоваться operator "" из C++11 (user-defined literals).
nullpointer
 Аватар для nullpointer
45 / 45 / 5
Регистрация: 30.03.2009
Сообщений: 518
27.05.2013, 15:02  [ТС]     Экспонента в комплексной степени #6
Это я уже создал Просто подумал может быть без лишних телодвижений получится.
Yandex
Объявления
27.05.2013, 15:02     Экспонента в комплексной степени
Ответ Создать тему
Опции темы

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