【分享】Python逆函数计算——pynverse库
生活随笔
收集整理的這篇文章主要介紹了
【分享】Python逆函数计算——pynverse库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python逆函數計算——pynverse庫
官方鏈接:https://pypi.org/project/pynverse/
安裝
使用pip安裝庫:
pip install pynverse用法
Pynverse提供了一個主要函數inversefunc,它計算作為第一個參數以callable形式傳遞的函數f的數值逆。
from pynverse import inversefunc它可用于計算某些y_values 點的反函數:
cube = (lambda x: x**3) invcube = inversefunc(cube, y_values=3)# array(3.0000000063797567)或者,如果未提供y_values,則獲得一個可計算任何其他點的逆值的可調用對象:
invcube = inversefunc(cube) invcube(27)# array(3.0000000063797567)它要求函數在函數的范圍內必須是連續且嚴格單調的(即純遞減或純遞增)。默認情況下,域包括所有實數,但是可以使用domain參數限制其區間:
import numpy as np inversefunc(np.cos, y_values=[1, 0, -1], # Should give [0, pi / 2, pi] ... domain=[0, np.pi])# array([ 0. , 1.57079632, 3.14159265])此外,參數open_domain可用于指定開閉區間:
inversefunc(np.log10, y_values=-2, # Should give 0.01 ... domain=0, open_domain=[True, False])# array(0.0099999999882423)或同時在兩端設置開區間:
invtan = inversefunc(np.tan, ... domain=[-np.pi / 2, np.pi / 2], ... open_domain=True) invtan([1, 0, -1]) # Should give [pi / 4, 0, -pi / 4]array([ 7.85398163e-01, 1.29246971e-26, -7.85398163e-01])可以使用args參數將其他參數傳遞給函數,以更輕松地重用可調用項:
invsquare = inversefunc(np.power, args=(2), domain=0) invsquare([4, 16, 64])# array([ 2., 4., 8.])在以下情況下,也可以提供間隔中函數的圖像:在打開間隔結束時函數不連續且帶有image參數的情況下:
invmod = inversefunc(np.mod, args=(1), domain=[5,6], ... open_domain=[False,True], image=[0,1]) invmod([0.,0.3,0.5])# array([ 5. , 5.3, 5.5])另外,可以使用一個參數來檢查結果中準確度的位數,如果不滿足要求,則會發出警告:
inversefunc(np.log10, y_values=-8, # Should give 0.01 ... domain=0, open_domain=True, accuracy=6) pynverse\inverse.py:195: RuntimeWarning: Results obtained with less than 6 decimal digits of accuracy# array(9.999514710830838e-09)由于它與數組兼容,因此可以很容易地用于獲得寬范圍的逆。這些是將返回的數字逆可調用量與數組一起使用以繪制圖表并將其與解析逆進行比較的一些示例,每個計算都簡單地如下:
log = lambda x: np.log10(x) invlog = scipy.misc.inversefunc(log, domain=0, open_domain=True) x1=np.linspace(0.00001,10,100) x2=np.linspace(-5,1,100) ax1.plot(x1,log(y1),'b-') ax2.plot(x2,invlog(x2),'b-')invlog_a = lambda x: 10**x ax2.plot(x2,invlog_a(x2),'r--')特別是,對于分段函數的定義,提供了一個piecewise效用函數,該函數可解決在處理標量和數組時的np.piecewise問題。例如,最后一個圖的逆獲得為:
from pynverse import inversefunc, piecewisepw=lambda x: piecewise(x,[x<1,(x>=1)*(x<3),x>=3],[lambda x: x, lambda x: x**2, lambda x: x+6]) invpw =inversefunc(pw)總結
以上是生活随笔為你收集整理的【分享】Python逆函数计算——pynverse库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arm-linux-gcc找不到命令,u
- 下一篇: 简信CRM直观展示客户分布图,让客户拜访