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,求內部收益率(已設定為0.04)。
收益函數(shù)為:
從(0,1)區(qū)間中查找該內部收益率,用二分法令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,,,直到查找出內部收益率為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ù)底值內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
一次性徹底講透Python中pd.concat與pd.merge
本文主要介紹了一次性徹底講透Python中pd.concat與pd.merge,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06python編程開發(fā)之類型轉換convert實例分析
這篇文章主要介紹了python編程開發(fā)之類型轉換convert用法,結合實例形式分析了Python中常見的數(shù)據(jù)類型及類型轉換convert的具體使用方法,需要的朋友可以參考下2015-11-11python測試開發(fā)django之使用supervisord?后臺啟動celery?服務(worker/beat)
Supervisor是用Python開發(fā)的一個client/server服務,是Linux/Unix系統(tǒng)下的一個進程管理工具,不支持Windows系統(tǒng),這篇文章主要介紹了python測試開發(fā)django之使用supervisord?后臺啟動celery?服務(worker/beat),需要的朋友可以參考下2022-07-07解決virtualenv -p python3 venv報錯的問題
這篇文章主要介紹了解決virtualenv -p python3 venv報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02numpy.transpose()實現(xiàn)數(shù)組的轉置例子
今天小編就為大家分享一篇numpy.transpose()實現(xiàn)數(shù)組的轉置例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12