【发布时间】:2022-01-24 12:01:22
【问题描述】:
生成的图形使用名为 w 的数组作为 x 轴,使用名为 A1 的数组作为 y 轴。我必须找到并打印结果图形上的最大值。为此,我使用 max() 函数在名为 A1 的数组中查找最大值。为了找到相应的 X 值,我使用 np.interp() 函数并交换 x 和 y 输入轴,因此返回的值实际上是生成图的 x 值(np.interp 使用 x 值来查找 ay,我我正在使用 ay 值来查找 x)。但是,无论我给 np.interp 函数赋予什么值,它总是返回 4.99。我认为问题必须在于交换轴的事实?但这是让函数返回给定 y 的 x 值的唯一方法。
import numpy as np
import matplotlib.pyplot as plt
F = 10
m = 5
w0 = 1
w = np.array(np.arange(0.01, 5, 0.01))
b1 = 0.25*m*w0
G1 = np.array(np.sqrt((m**2)*(((w**2)-(w0**2))**2)+(b1**2)*(w**2)))
A1 = np.array(F/G1)
A1_Max = max(A1)
我在这里打印值只是为了测试它是否正确。如您所见,np.interp 函数中的 x 轴应为 w 和 y A1,但是如前所述,轴已交换:
w1_Max = np.interp(A1_Max, A1, w)
print(w1_Max)
plt.figure(figsize=(20, 20))
plt.plot(w, A1, '-', label='b=0.25*m*w0')
plt.xlabel('Frequency (rad/s)')
plt.ylabel('Amplitude (a.u.)')
plt.title('F = {0} m = {1}'.format(F,m))
plt.legend()
【问题讨论】:
标签: python numpy matplotlib