利用Matplotlib和Numpy确定正弦波的波长

wswtfjt7  于 2022-12-18  发布在  其他
关注(0)|答案(2)|浏览(153)

我正在尝试使用numpy和matplotlib绘制一个正弦波。虽然波的振幅(默认值为1)是正确的,但波的波长应该是$2 \pi$。如下图所示,正弦波的波长约为60。
Sine Wave Image Here .
我的代码如下:

from matplotlib import pyplot as plt
import numpy as np

plt.style.use('Solarize_Light2')

plt.xlim(0, 100)
plt.ylim(-10, 10)

x = np.arange(0, 100, 0.1)

plt.grid(True)

amp = float(input('Amplitude of sinusoidal wave: '))
y = amp * np.sin(x)
plt.ylim(-10, 10)

plt.plot(y,color='b')
plt.title(f"f(x)={amp}sin(x)")

plt.xlabel('x')
plt.ylabel('f(x)')

plt.show()

我试着调整x = np.arange()的值,但似乎没有得到任何结果。任何帮助将不胜感激。

vnjpjtjt

vnjpjtjt1#

这个问题有两个方面:
(1)你的网格。如果你想从周期的Angular 来观察函数,你需要绘制至少半周期(pi)。你可以创建一个网格,选择你想看到的半周期数(2),然后用pi乘以得到的网格。这是通过np.linspace(0,2,1000)*np.pi(或者arange,但我喜欢linspace)来完成的。
(2)不绘制任何x值。默认情况下,如果只为plt.plot函数提供一个数组,则matplotlib将在y轴上显示函数值,在x轴上显示数组索引。(按pi缩放)和你的函数,它正好落在[0,2pi]范围内,因为你告诉matplotlib,这个函数应该和什么值一致。
下面是我使用的代码:

from matplotlib import pyplot as plt
import numpy as np

plt.style.use('Solarize_Light2')

plt.ylim(-10, 10)

x = np.linspace(0, 2, 1000)*np.pi

plt.grid(True)

amp = 1
y = amp * np.sin(x)
plt.ylim(-10, 10)

plt.plot(x/np.pi, y,color='b')
plt.title(f"f(x)={amp}*sin(x)")

plt.xlabel('x [$\\pi$ units]')
plt.ylabel('f(x)')

plt.show()

ovfsdjhp

ovfsdjhp2#

不适用于sin(x)文件here
期望x类似array_like,并且是以弧度为单位的Angle(rad等于360度)。
尝试移交

x = np.linspace(-np.pi, np.pi, 180)

用于linspace here的记录片。

相关问题