首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我正在尝试整合一个改变后的正弦波。我没有得到正确的积分

我正在尝试整合一个改变后的正弦波。我没有得到正确的积分
EN

Stack Overflow用户
提问于 2022-05-09 10:30:34
回答 1查看 42关注 0票数 2
代码语言:javascript
运行
复制
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 *时间过去了)。

这里我画出正弦波正弦波的正弦波正弦波,得到了正弦波的正确结果:

代码语言:javascript
运行
复制
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函数,尽管我对这个概念有点怀疑。

代码语言:javascript
运行
复制
test = special.sici(amp)

然后我试图绘制新创建的集成函数,我得到了一个非常奇怪和非常错误的结果。

代码语言:javascript
运行
复制
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),如果这不是这样做的话,我希望被指向正确的方向。我在网上找到的大部分内容只涉及到集成已经提供的标准和不变的正弦波/宇宙波。

以下是完整完整的脚本,以防您想要复制和粘贴它:

代码语言:javascript
运行
复制
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()
EN

回答 1

Stack Overflow用户

发布于 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)

代码语言:javascript
运行
复制
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文档中所述。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72170550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档