3

我正在尝试从 Python 中的一篇论文中实现一个方程(黑色方形方程) -

在此处输入图像描述

到目前为止,我有一个简化的模型,但我无法生成预期的输出(下图);我怀疑问题出在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()

在此处输入图像描述

4

3 回答 3

2

为了说明 Jacob 的评论,您可以通过调整常量来获得以下信息:

图形

代码:

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)

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

于 2013-10-27T22:20:44.973 回答
2

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

于 2013-10-27T22:13:04.603 回答
0

另外,我认为你犯的一个主要错误是你正在密谋y反对i——恕我直言,这实际上应该是一个y1/i阴谋。结合@BasSwinckels 的评论,当您开始摆弄参数时,您应该更接近目标图。

干杯! 一切顺利!

于 2013-10-27T22:17:48.587 回答