@Alexander_The_Great

Как грамотно посчитать значение комплексного выражения в C++?

Пусть есть комплексное выражение:
d3 = (k1*k2*exp(-a*k1*1.0i)*exp(a*k2*1.0i)*4.0i)/(k1*k2*2.0i...
        + k1^2*1.0i + k2^2*1.0i - k1^2*exp(a*k2*2.0i)*1.0i - ...
        k2^2*exp(a*k2*2.0i)*1.0i + k1*k2*exp(a*k2*2.0i)*2.0i);

И стоит задача посчитать при известных k1 и k2.
Как это сделать грамотно, есть ли какие-то готовые решения?
  • Вопрос задан
  • 256 просмотров
Решения вопроса 2
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
посмотрите в этом направлении https://ru.wikipedia.org/wiki/Complex.h

Complex.h — заголовочный файл стандартной библиотеки языка программирования С, в котором объявляются функции для комплексной арифметики. Эти функции используют встроенный тип complex, который появился в стандарте C99. Функции в заголовочном файле complex.h представлены для трёх типов— double, float и long double (значения представлены в радианах): для вычисления тригонометрических значений синуса, косинуса, тангенса и котангенса для комплесных чисел, логарифм и экспонент, корень.

18 лет не программил на с++, так что не судите строго:)))
готовый код в песочнице
Ответ написан
В качестве workaround предлагаю объявить локальную переменную
const auto i = std::complex<double>(0, 1);
И домножать на неё в выражении
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Квадрат это умножение на самого себя.

d3*=d3
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы