如何在Python中测试公式的所有可能结果?

时间:2016-01-14 18:29:53

标签: python matplotlib

您好我写了一个公式,我想知道如何测试所有实数(或特定范围)的公式的所有结果。另外我想知道我是否可以使用matplotlib绘制结果 我的公式是x = freq / t * 2

X输出freq是频率变化,t是时间。 freq 75 to 300t之间的0 to 5主要来自freq = -80 t = 5 x = freq / t * 2 print (x)

我用Python编写了这段代码,但我必须为变量的每种可能性进行更改。

我使用python 3.4 btw

cycle

编辑:我为直觉写了代码。

2 个答案:

答案 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()

产生

enter image description here