溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python二分法怎樣查找函數(shù)底值

發(fā)布時(shí)間:2021-12-31 10:22:11 來源:億速云 閱讀:150 作者:柒染 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)python二分法怎樣查找函數(shù)底值,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

假設(shè)連續(xù)函數(shù)f(x)在區(qū)間(a,b)上有一個(gè)底值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。

例如:一項(xiàng)一年期投資,每個(gè)季度初投入10000元,期滿時(shí)收入44163.225,求內(nèi)部收益率(已設(shè)定為0.04)。

收益函數(shù)為:

python二分法怎樣查找函數(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)

看完上述內(nèi)容,你們對python二分法怎樣查找函數(shù)底值有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI