Python中的方程式

时间:2013-10-27 21:58:59

标签: python numpy plot

我正在尝试用Python中的纸张(黑方方程式)实现方程 -

enter image description here

到目前为止,我有一个简化的模型,但我无法生成预期的输出(图片下方);我怀疑问题出在np.exp()虽然我不确定 - 有关如何做到这一点的任何建议吗?

import numpy as np
import math
import matplotlib.pyplot as plt

f     = 1e6
T     = 1/f
Omega = 2*np.pi*f

i = np.arange(0,50e-6,100e-9)
y = np.sin(Omega*i) * (i**2) * np.exp(-i)   

plt.figure(1)
plt.plot(i,y,'b-')
plt.grid()
plt.show()

enter image description here

3 个答案:

答案 0 :(得分:2)

我建议使用与论文中完全相同的变量名称,这样可以使事情变得更加清晰。对于时间,请始终使用ttime,没有任何借口。变量i通常用于索引或复数。您还缺少变量m(您硬编码为2),v_0h。我想你需要将h设置为正确的值才能解决问题。在这类问题中,h通常是衰减时间,通过在公式中将其遗忘,您隐式地将其视为1秒。鉴于您的问题频率很高,这应该更短。查看示例图,您应该将其设置为T几次。

答案 1 :(得分:2)

为了说明雅各布的评论,这是你可以通过调整常数得到的:

Graph

代码:

import numpy as np
import matplotlib.pyplot as plt

f     = 5
Omega = 2*np.pi*f

i = np.arange(0, 10, 0.001)
y = np.sin(Omega*i) * (i**2) * np.exp(-i)

plt.figure(1)
plt.plot(i,y,'b-')
plt.grid()
plt.show()

或者,你可以保持时间尺度并引入约5e-6的 h ,正如Bas Swinckels在他的回答中建议的那样:

f     = 1e6
Omega = 2*np.pi*f

i = np.arange(0,50e-6,100e-9)
y = np.sin(Omega*i) * (i**2) * np.exp(-i/5e-6)

这会产生非常相似的输出。

答案 2 :(得分:0)

另外,我认为你犯的一个主要错误就是你正在yi进行策划 - 恕我直言应该是y vs。 1/i图。 这一点,结合@BasSwinckels的评论,当你开始摆弄参数时,你应该更接近目标情节。

干杯!一切顺利!