Синтаксическая ошибка при попытке определить сложную экспоненциальную - PullRequest
1 голос
/ 10 февраля 2020
def GetE(x1, x2, k, x, z, N):
    firstHeight = math.exp(((k/(2*math.pi*z)) * ((x-x1) ** 2))j)

Моя функция выдает синтаксическую ошибку в строке, определяющей firstHeight. Я считаю, что это связано с невозможностью определить комплексное число с переменными, как я пытался:

test = 2 + (k)j

, а также получил синтаксическую ошибку. Кто-нибудь знает как это исправить?

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Суффикс j может использоваться только в воображаемом литерале, а не с переменными. Чтобы получить отрицательное мнимое число из переменной, умножьте переменную на -1j.

firstHeight = math.exp(((k/(2*math.pi*z)) * ((x-x1) ** 2)) * -1j)
test = 2 + k * -1j
1 голос
/ 10 февраля 2020

math не поддерживает комплексные числа, для этого у вас есть cmath:

import math, cmath

cmath.exp(((k/(2*math.pi*z)) * ((x-x1) ** 2))*1j)
# (0.998966288513345+0.045457171204028084j)

Или вы можете использовать NumPy:

np.exp(((k/(2*np.pi*z)) * ((x-x1) ** 2))*1j)
#(0.998966288513345+0.045457171204028084j)

Это, а также, как указывает @GreenCloakGuy, нельзя использовать j для преобразования не-литерала в комплексное число. Вместо этого вы можете использовать complex() или 1j

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...