import numpy as np
import scipy.integrate as integrate
import scipy.special as special
import matplotlib.pyplot as plt
omega = 5
omega *= 2*np.pi
time = np.arange(0.0, 1, 0.0001)
amp = np.sin(omega * time)
在这里,我设定了upa时间,并为所需的正弦波创建了一个omega。在这种情况下,所需的正弦波是sin(5 *2* PI *时间过去了)。
这里我画出正弦波正弦波的正弦波正弦波,得到了正弦波的正确结果:
hello = plt.plot(amp)
plt.xlabel('time 10^-3')
plt.ylabel('Voltage')
plt.grid(True, which='both')
plt.axhline(y=0, color='k')
plt.show()
接下来,我尝试使用special.sici进行集成,我相信它允许您集成sin函数,尽管我对这个概念有点怀疑。
test = special.sici(amp)
然后我试图绘制新创建的集成函数,我得到了一个非常奇怪和非常错误的结果。
hello = plt.plot(test)
plt.xlabel('time 10^-3')
plt.ylabel('Voltage')
plt.grid(True, which='both')
plt.axhline(y=0, color='k')
plt.show()
我不确定我是否开始沿着非标准正弦波积分的正确路径前进(我指的是非标准正弦波sin(2x),sin(2PIx)....etc),如果这不是这样做的话,我希望被指向正确的方向。我在网上找到的大部分内容只涉及到集成已经提供的标准和不变的正弦波/宇宙波。
以下是完整完整的脚本,以防您想要复制和粘贴它:
omega = 5
omega *= 2*np.pi
time = np.arange(0.0, 1, 0.0001)
amp = np.sin(omega * time)
hello = plt.plot(amp) # plot avethe sin w
plt.xlabel('time 10^-3')
plt.ylabel('Voltage')
plt.grid(True, which='both')
plt.axhline(y=0, color='k')
plt.show()
test = special.sici(amp)
hello = plt.plot(test)
plt.xlabel('time 10^-3')
plt.ylabel('Voltage')
plt.grid(True, which='both')
plt.axhline(y=0, color='k')
plt.show()
发布于 2022-05-10 00:34:35
这并不是真正的“非标准正弦波”,我只是称它为水平缩放的正弦波。从0到t的sin(omega*t)
积分仅为1/omega*(1-cos(omega*t))
(更好的格式设置参见WolframAlpha )。
如果要对其进行数值集成,则可以执行scipy.integrate.cumulative_trapezoid(amp, time, initial=0)
。
analytic = 1 / omega * (1 - np.cos(omega * time))
numerical = integrate.cumulative_trapezoid(amp, time, initial=0)
plt.plot(time, analytic, label="analytic")
plt.plot(time, numerical, linestyle="dashed", label="numerical")
plt.xlabel("time")
plt.ylabel("integrated voltage")
plt.grid(True, which="both")
plt.legend()
plt.show()
正弦积分是一个完全不同的函数:sin(t)/t
从0到t的积分,如sine文档中所述。
https://stackoverflow.com/questions/72170550
复制相似问题