【发布时间】:2021-05-29 00:54:45
【问题描述】:
我有以下用 python 2.7 编写的代码。
这里我定义了两个函数,一个余弦函数和一个指数函数
我需要将这些函数乘以一个浮点值,但我收到了这个错误。
我假设我们不能将浮点值乘以list() 格式的函数...
如果有人告诉我该怎么做,我将不胜感激。
提前致谢。
这是我的代码:
import numpy as np
import math
import cmath
delta = 2.0*math.pi*1.46*((1.0/1530)-(1.0/1550))
#defining main func
def apFunc(x):
return np.exp(-4*math.log(2)*((x-(5/2))/5)**2)*(1+math.cos((2*math.pi/0.001)*x))
Domain = list(np.arange(0,5,0.001))
APF = map(apFunc,Domain)
#defining modulation function
def modFunc(x):
return (1+math.cos((2*math.pi/0.001)*x))
d = list(np.arange(0,5,0.001))
mod = map(modFunc,d)
#making sig and kaa functions
sgima = (2*math.pi/1530)*APF
sig = sigma + delta
kaa = (math.pi/l1530)*mod
gamma = math.sqrt(sig**2 + kaa**2)
【问题讨论】:
-
对于列表,
*和+不是数学运算,它们重复并加入列表。可以对多个元素进行数学运算的是numpy数组。还要注意math函数只能作用于单个数字,而不是列表或数组。 -
如果您将此代码移至 Python3(当前),则需要更改
map的使用。 -
我看到了
math.cos()、math.pi等。不坚持使用 numpy 有什么具体原因吗?这将自行解决您的问题。 -
为什么在同一个表达式中使用
np.exp而math.log? -
谢谢先生问题解决了,一旦我更改了代码并得到相同的错误,但后来我只看到了一个数学。 s 被遗忘了 :-)
标签: python python-2.7 numpy typeerror python-cmath