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

如何在Python中测试公式的所有可能结果?,python,matplotlib,Python,Matplotlib,嗨,我写了一个公式,我想知道如何测试所有实数或特定范围的公式的所有结果。我还想知道是否可以用matplotlib绘制结果 我的公式是x=freq/t*2 X是输出频率,t是时间。频率可以在75到300之间,而t通常在0到5之间 我已经用Python编写了这段代码,但我必须针对各种可能的变量对其进行更改 顺便说一句,我使用python 3.4 freq = -80 t = 5 x = freq / t * 2 print (x) 编辑:我为直觉编写了代码。首先,在一个范围内有零个、一个或无限多个

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

X是输出频率,t是时间。频率可以在75到300之间,而t通常在0到5之间

我已经用Python编写了这段代码,但我必须针对各种可能的变量对其进行更改

顺便说一句,我使用python 3.4

freq = -80
t = 5
x = freq / t * 2
print (x)

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

首先,在一个范围内有零个、一个或无限多个实数。您不能在任何非平凡的实数范围内测试函数,尽管您可以生成函数在该范围内工作的数学证明。撇开迂腐不谈,你想要的是嵌套的环:

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不能精确为零。

Numpy的网格使计算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()
产生


阅读文档。写一个函数。运行函数。无法测试所有可能的结果。了解。单元测试是为了验证精确的输入和精确的结果。@MadPhysicator我试着写一个函数,但它仍然不是我想要的。然后把它贴在这里。此外,您是否尝试过对每个变量的输入网格进行评估?这将计算出几乎所有可能的结果。不测试。原始问题中的测试含义不清楚;我回应了我用Python编写的这段代码,但我必须对每种可能的变量进行更改,并警告说,对每个值进行采样是不可能的。然而,OP想要描绘结果,我建议的抽样方式应该足以达到这个目的。首先,在我看来OP似乎没有花时间尝试自己的研究。这个问题表述得很糟糕,语法上有无数的疏忽。至于OP的问题,他似乎有两个。第一个问题是如何测试所有可能的结果。。。。问题1的答案是:没有明智的方法或理由尝试测试该范围内的每个实数。第二个问题是,我是否可以用matplotlib绘制结果,第二个问题的答案是:是。@QaziPython我已经搜索过了,我可以在Matlab中做同样的事情,但出于某些原因,我想使用Python。对于问题1,正如您所说,`没有合理的方法或理由尝试测试该范围内的每个实数',@user2752364提到的内容就足够了,而且效果良好。关于第二个问题,我知道我能画出来。但是,我如何绘制结果呢simultaneously@user2752364回答得很好,谢谢+1