您好我写了一个公式,我想知道如何测试所有实数(或特定范围)的公式的所有结果。另外我想知道我是否可以使用matplotlib
绘制结果
我的公式是x = freq / t * 2
X
输出freq
是频率变化,t
是时间。 freq
75 to 300
和t
之间的0 to 5
主要来自freq = -80
t = 5
x = freq / t * 2
print (x)
我用Python编写了这段代码,但我必须为变量的每种可能性进行更改。
我使用python 3.4 btw
cycle
编辑:我为直觉写了代码。
答案 0 :(得分:3)
首先,范围内有零个,一个或无限多个实数。您不能在任何非平凡的实数范围内测试函数,尽管您可以生成一个数学证明,该函数将在该范围内工作。除了那个迂腐之外,你想要的就是陷入困境的循环:
freq = 75.0
while freq <= 500.0:
t = 0.5
while t <= 5.0:
x = freq / t * 2
print '%f\t%f\t%f' % (freq, t, x)
t += 0.5
freq += 25.0
请注意,t不能正好为零。
答案 1 :(得分:2)
Numpy的meshgrid
使得在N-d网格上的每个点计算函数变得非常容易:
import numpy as np
# introduce bases
freq_min, freq_max, freq_spacing = 75., 300., 5.
freqs = np.arange(freq_min, freq_max + freq_spacing, freq_spacing)
t_min, t_max, t_spacing = 0.1, 5., 0.1
ts = np.arange(t_min, t_max + t_spacing, t_spacing)
# do calculation
F, T = np.meshgrid(freqs, ts)
Z = F / T * 2
然后我们可以像
那样绘制它from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import matplotlib.cm as cm
# display result
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(F, T, Z,
rstride=1, cstride=1, cmap=cm.RdPu, antialiased=True, linewidth=0.2)
ax.view_init(elev=35, azim=160)
ax.dist = 10
plt.show()
产生