【发布时间】:2021-12-30 18:37:38
【问题描述】:
我是 python 新手,如果这个问题很琐碎,请多多包涵。我正在努力解决的问题是绘制一个由许多函数组成的函数,这些函数的“模式”数字都不同,我称它们为 i 和 k。我认为解决此类问题最有效的方法是 for 循环。
我的第一个猜测是使用这样的代码:
# Define vectors and lists
chi = sc.jn_zeros(0, order)
om = np.zeros((order, order))
P = [[0]*order]*order
for i, k in itertools.product(range(order), range(order)):
om[i][k] = c*(np.sqrt(chi[i]/R)**2 + (pi*k/L))
P[i][k] = lambda t: (N np.sin(om[i][k] * t / 2)** 2 )/(2*om[i][k])**2)
print()
# sum up list of functions to one function
def p(t):
return sum(sum(P, []))
# plot
t1 = np.arange(0.0, 5.0 * 10**(-9), 0.001*10**(-9))
plt.figure()
plt.plot(t1, p(t1))
plt.show()
但是,我总是得到错误:
in p return sum(sum(P, []))
TypeError: unsupported operand type(s) for +: 'int' and 'function'
我的第二个猜测是避免使用列表,而是使用 for 循环,例如:
def p(t):
return 0*t
for i, k in itertools.product(range(order), range(order)):
om[i][k] = c*(np.sqrt(chi[i]/R)**2 + (pi*k/L))
def p(t):
return p(t) + (np.sin(om[i][k] * t ) ** 2 / (2*(om[i][k]) ** 2)
print()
t1 = np.arange(0.0, 5.0 * 10**(-9), 0.001*10**(-9))
plt.figure()
plt.plot(t1, p(t1))
plt.show()
尽管如此,代码并没有产生情节。只有输出:
Process finished with exit code -1073741571 (0xC00000FD)
我还没有发现关于两个以上函数求和的问题。因此,如果有人可以参考类似的问题,或者是否有人可以分享有关我的代码中出现的错误的一些信息,我将不胜感激。我已经检查了变量向量(omega、chi、...)是否计算正确。提前致谢。
【问题讨论】:
-
您在此处粘贴的代码没有正确缩进并包含语法错误(如
return sum(sum(P[])),因此与产生错误的代码明显不同。请提供minimal reproducible example。
标签: python function for-loop plot sum