Python vs R / Matlab реализация экспоненты комплексного числа - PullRequest
0 голосов
/ 08 ноября 2018

Я сталкиваюсь с разными результатами при реализации этого простого вычисления в Python против R

e ^ (2 * pi * 1j) = cos (2 * pi) + j * sin (2 * pi) = 1

В R это дает ожидаемый результат

j   <- complex(real = 0, imaginary = 1)
exp(2*pi*j)
>>1 -0j

В то время как в Python

import math
import cmath

cmath.exp(2*math.pi*1j)
>>(1-2.4492935982947064e-16j)
## Also tried this
math.e ** (2*math.pi*1j)
>>(1-2.4492935982947064e-16j)

Что я делаю не так при реализации его в Python?

1 Ответ

0 голосов
/ 08 ноября 2018

Вы не делаете ничего плохого.Мнимые части крошечные, результат неизбежной неточности с плавающей точкой.Разница между R и Python заключается только в представлении выходных данных;R (изначально разработанный как платформа для интерактивного статистического анализа) не показывает очень маленькую мнимую часть, но он все еще там:

j   <- complex(real = 0, imaginary = 1)
> exp(2*pi*j)
[1] 1-0i
> Im(exp(2*pi*j))
[1] -2.449294e-16
print(Im(exp(2*pi*j)),digits=22)
[1] -2.449293598294706414348e-16
...