Python绘制函数和限制

时间:2015-03-06 13:22:48

标签: python-2.7

您好我是python的新手,我使用的是2.7版本。我遇到了一个需要我绘制函数的问题:

f(z)=(z ^ 3)/ {exp [z /(1-z)] *(1-z)^ 5}

我必须编写一个代码来绘制从z = 0.01到0.99的f(z)。我必须猜测以下内容的价值:

  1. lim z-> 0+ f(z)
  2. lim z-> 0- f(z)
  3. 我是python的新手,我不知道从哪里开始。真的很感激,如果你可以提供一些帮助,非常感谢!!

1 个答案:

答案 0 :(得分:0)

对于绘图软件,你真的应该选择Matplotlib包,它是更大的包SciPy的一部分(这对于python中的任何类型的绘图或计算工作基本上是必须的。)

http://matplotlib.org/

询问如何绘制函数,我们可以先从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()

Here is what is plotted. As you can see, the z is the horizontal labels and y is the vertical labels.

至于限制,功能似乎清楚地定义了那些是什么。要验证,只需查看线条空间即可。如果您需要更复杂的限制查找,请查看核心SciPy堆栈。