python二分法查找函數(shù)底值
假設連續(xù)函數(shù)f(x)在區(qū)間(a,b)上有一個底值m,且在該底值下的函數(shù)輸出值為M,即f(m)=M,利用二分法查找該底值:(s為足夠小的數(shù))
令t=(a+b)/2,若|f(t)-M|<=s,則m=t,若|f(t)-M|>s,如果(f(t)-M)和(f(a)-M)同號,a=t,反之b=t,繼續(xù)二分法t=(a+b)/2...直到|f(t)-M|<=s,則m=t。
例如:一項一年期投資,每個季度初投入10000元,期滿時收入44163.225,求內(nèi)部收益率(已設定為0.04)。
收益函數(shù)為:
從(0,1)區(qū)間中查找該內(nèi)部收益率,用二分法令t=(0+1)/2=0.5,比較發(fā)現(xiàn)|f(t)-44163.225|>10**(-10),并且f(t)-44163.225和f(1)-44163.225同號,則繼續(xù)令t=(0+0.5)/2=0.25,,,直到查找出內(nèi)部收益率為0.03999999445689362,約等于0.04
def f(i):
y = 10000 * (1 + i) ** 4 + 10000 * (1 + i) ** 3 + 10000*(1+i)**2+10000*(1+i)**1
return y
def division(a,b,M,n):
#a,b為自選值范圍,(f(a)-M)*(F(b)-M)<或=0
#M為f(x)輸出值,n為輸出值精度要求小數(shù)位數(shù)
while True:
t = (a + b) / 2
if abs(f(t) - M) <= 10 ** (-n):
m = t
break
if (f(t) - M) / abs(f(t) - M) == (f(a) - M) / abs(f(a) - M):
a = t
else:
b = t
return m
y=division(0,1,44163.225,10)
print(y)
到此這篇關于python二分法查找函數(shù)底值的文章就介紹到這了,更多相關python函數(shù)底值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python3.4用循環(huán)往mysql5.7中寫數(shù)據(jù)并輸出的實現(xiàn)方法
下面小編就為大家?guī)硪黄猵ython3.4用循環(huán)往mysql5.7中寫數(shù)據(jù)并輸出的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
python 實現(xiàn)查詢Neo4j多節(jié)點的多層關系
今天小編就為大家分享一篇python 實現(xiàn)查詢Neo4j多節(jié)點的多層關系,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
手把手教你jupyter?notebook更換環(huán)境的方法
在日常使用jupyter-notebook時,可能會碰到需要切換不同虛擬環(huán)境的場景,下面這篇文章主要給大家介紹了關于jupyter?notebook更換環(huán)境的方法,需要的朋友可以參考下2023-05-05
Python調(diào)用Google?Bard的圖文詳解
Google?Bard?是一種開源數(shù)據(jù)可視化和探索工具,可為?開發(fā)人員?提供支持,本文主要為大家介紹了Python調(diào)用Google?Bard的方法,需要的可以參考下2023-08-08
python使用pygame實現(xiàn)笑臉乒乓球彈珠球游戲
這篇文章主要為大家詳細介紹了python使用pygame實現(xiàn)笑臉乒乓球彈珠球游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-11-11

