Python分段函数代码:在 Python中绘制分段函数

关于Python分段函数代码的问题,在how to sketch piecewise functions中经常遇到, 我想使用 Matplotlib 在 Python 中绘制以下分段函数,从 0 到 5。

我想使用 Matplotlib 在 Python 中绘制以下分段函数,从 0 到 5。

f(x) = 1,x!= 2;f(x) = 0,x =2

在 Python...

def f(x):
 if(x == 2): return 0
 else: return 1

使用 NumPy 我创建一个数组

x = np.arange(0., 5., 0.2)
    array([ 0. ,  0.2,  0.4,  0.6,  0.8,  1. ,  1.2,  1.4,  1.6,  1.8,  2. ,
        2.2,  2.4,  2.6,  2.8,  3. ,  3.2,  3.4,  3.6,  3.8,  4. ,  4.2,
        4.4,  4.6,  4.8])

我尝试过类似的东西...

import matplotlib.pyplot as plt
plt.plot(x,f(x))

vecfunc = np.vectorize(f)
result = vecfunc(t)

def piecewise(x):
 if x == 2: return 0
 else: return 1
import matplotlib.pyplot as plt
x = np.arange(0., 5., 0.2)
plt.plot(x, map(piecewise, x))
ValueError: x and y must have same first dimension

但我没有正确使用这些功能,现在只是随机猜测如何做到这一点。

一些答案开始到达那里...但是这些点在情节上被连接成一条线。我们如何绘制点?

enter image description here

11

一些答案开始到达那里...但是这些点在情节上被连接成一条线。我们如何绘制点?

import matplotlib.pyplot as plt
import numpy as np
def f(x):
 if(x == 2): return 0
 else: return 1
x = np.arange(0., 5., 0.2)
y = []
for i in range(len(x)):
   y.append(f(x[i]))
print x
print y
plt.plot(x,y,c='red', ls='', ms=5, marker='.')
ax = plt.gca()
ax.set_ylim([-1, 2])
plt.show()

enter image description here

6

问题是函数f不接受数组作为输入,而是一个数字。

plt.plot(x, map(f, x))

map函数接受一个函数f,一个数组x,并返回另一个数组,其中函数f应用于数组的每个元素。

3

您可以在数组上使用np.piecewise

x = np.arange(0., 5., 0.2)
import matplotlib.pyplot as plt
plt.plot(x, np.piecewise(x, [x  == 2, x != 2], [0, 1]))
1

您的函数是连续的,除了零度量的间隔。在我看来,绘制它的正确方法是

In [8]: import matplotlib.pyplot as plt
   ...: plt.plot((0, 5), (1, 1), color='blue', label='Discontinuos function')
   ...: plt.ter(2, 0, color='blue')
   ...: plt.grid()
   ...: plt.legend()
   ...: plt.show()
In [9]: 

enter image description here

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(290)
红豆cos:PHP红豆不返回正确的结果(red bean dating)
上一篇
Php学生管理系统源码:免费和安全的 PHP用户管理系统(user management system)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(39条)