您好我是python的新手,我使用的是2.7版本。我遇到了一个需要我绘制函数的问题:
f(z)=(z ^ 3)/ {exp [z /(1-z)] *(1-z)^ 5}
我必须编写一个代码来绘制从z = 0.01到0.99的f(z)。我必须猜测以下内容的价值:
我是python的新手,我不知道从哪里开始。真的很感激,如果你可以提供一些帮助,非常感谢!!
答案 0 :(得分:0)
对于绘图软件,你真的应该选择Matplotlib包,它是更大的包SciPy的一部分(这对于python中的任何类型的绘图或计算工作基本上是必须的。)
询问如何绘制函数,我们可以先从0-1生成一个50点的线空间。
>>> import numpy as np
>>> z = np.linspace(0, 1, 50)
>>> print z
array([ 0. , 0.02040816, 0.04081633, 0.06122449, 0.08163265,
0.10204082, 0.12244898, 0.14285714, 0.16326531, 0.18367347,
0.20408163, 0.2244898 , 0.24489796, 0.26530612, 0.28571429,
0.30612245, 0.32653061, 0.34693878, 0.36734694, 0.3877551 ,
0.40816327, 0.42857143, 0.44897959, 0.46938776, 0.48979592,
0.51020408, 0.53061224, 0.55102041, 0.57142857, 0.59183673,
0.6122449 , 0.63265306, 0.65306122, 0.67346939, 0.69387755,
0.71428571, 0.73469388, 0.75510204, 0.7755102 , 0.79591837,
0.81632653, 0.83673469, 0.85714286, 0.87755102, 0.89795918,
0.91836735, 0.93877551, 0.95918367, 0.97959184, 1. ])
然后,我们需要返回一个提供的功能。
def somefunc(z): return(z ** 3)/(np.exp(z /(1-z))*(1-z)** 5)
然后计算z:
的函数值>>> y = somefunc(z)
>>> print y
array([ 0.00000000e+00, 9.22864991e-06, 8.02624183e-05,
2.94878571e-04, 7.61913399e-04, 1.62437817e-03,
3.06834651e-03, 5.33405408e-03, 8.72976295e-03,
1.36490830e-02, 2.05926181e-02, 3.01950261e-02,
4.32588543e-02, 6.07968601e-02, 8.40849466e-02,
1.14728376e-01, 1.54744559e-01, 2.06666502e-01,
2.73671906e-01, 3.59743965e-01, 4.69871087e-01,
6.10293896e-01, 7.88808903e-01, 1.01513861e+00,
1.30137704e+00, 1.66251622e+00, 2.11705156e+00,
2.68764730e+00, 3.40181327e+00, 4.29248886e+00,
5.39833448e+00, 6.76336940e+00, 8.43532836e+00,
1.04616864e+01, 1.28816588e+01, 1.57115818e+01,
1.89200055e+01, 2.23880593e+01, 2.58517231e+01,
2.88295260e+01, 3.05606009e+01, 3.00285648e+01,
2.62351130e+01, 1.89494883e+01, 9.86526435e+00,
2.77918094e+00, 2.10803261e-01, 4.84858966e-04,
3.78425803e-13, nan])
如您所见,它计算了行空间中每个点的函数值。现在它应该给你一个零除错误,产生nan,(因为除数在1处为0),你可以忽略以下内容:
>>> def somefunc(z):
>>> with no.errstate(all='ignore'):
>>> return (z**3)/(np.exp(z/(1-z)) * (1-z)**5)
现在我们需要绘制图像:
>>> import matplotlib.pyplot as plt
>>> plt.figure()
<matplotlib.figure.Figure object at 0x7f44eeebc1d0>
>>> plt.plot(z, y, 'red')
[<matplotlib.lines.Line2D object at 0x7f44ef17db90>]
>>> plt.show()
至于限制,功能似乎清楚地定义了那些是什么。要验证,只需查看线条空间即可。如果您需要更复杂的限制查找,请查看核心SciPy堆栈。