python隱函式畫圖以及匿名函式lambda使用.md
阿新 • • 發佈:2018-12-01
python隱函式畫圖以及匿名函式lambda使用
一.匿名函式lambda使用
因為一會畫隱函式畫圖想用一下lambda匿名函式,所以就在這裡學習一下其用法,本質上來講lambda就是把函式換了中說法,其應用場景可以用在一些簡單函式的定義上,比如你想定義一個比較大小的函式,而該函式就一句話,所以你不想很麻煩的使用def定義,此時就可以用lambda進行定義。用法如下:
comp = lambda a,b: a>b
comp(3,2)
這段程式碼的意思就是定義一個函式comp,只是是使用lambda定義的,一個函式要有引數和返回值,它的引數就是lambda後面的a,b而返回值就是冒號後面的a>b,這樣本來要
def comp(a,b):
return a>b
這樣定義的函式就變成了一句話,所以lambda函式簡單的使用就是這樣。
二.畫隱函式
在python開發中,很多時候要畫函式圖,對於顯函式比較好畫直接使用pyplot就行了,但是對於隱函式就有點麻煩,下面介紹兩種隱函式畫圖的方式。
1. 使用Sympy庫畫隱函式
使用方式如下:
%pylab inline from sympy.parsing.sympy_parser import parse_expr from sympy import plot_implicit exc = lambda exper: plot_implicit(parse_expr(exper)) exc('x**2+(y-x**(2/3))**2-1')
執行後是一個小心心:
這段程式碼意思很簡單,%pylab inline是因為使用的Jupyter編譯器,所以要加上,下面兩個from是匯入庫,exc就是定義了一個函式,輸入一個隱函式表示式,然後就能畫出對應圖形, 就是一個心形線。 不過這段程式碼執行效率很低,要執行很久才能執行出來。
2. 使用Matplotlib結合等高線畫隱函式
import matplotlib.pyplot as plt
import numpy as np
#作點
x=np.linspace(-3,3,500)
y=np.linspace(-3,3,500)
#構造網格
x,y=np.meshgrid(x,y)
z = x**2+(y-x**(2/3))**2-1
#繪製等高線,8表示等高線數量加1
plt.contour(X,Y,z,0)
plt.show()
這個畫圓還行,畫心就只能畫一半,不過其執行很快。程式碼的含義:
x,y就是在座標域畫成網格線,然後定義一個z就相當於等高線函式,最後關鍵是contour中最後一個引數,你需要傳入0,否則其會畫出來很多線。具體含義我也不太清楚,你如果自己定義的話,只需要修改z就行了,把z等於你的隱函式就能畫出一個隱函式圖來。