第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

python scipy fsolve遞歸函數(shù)

python scipy fsolve遞歸函數(shù)

拉風(fēng)的咖菲貓 2021-10-26 18:58:55
scipy.optimize.fsolve似乎不適用于調(diào)用自身的函數(shù)。這是一個(gè) MWEfrom scipy.optimize import fsolvedef f(x):    if f.n==0:        return x    f.n -= 1    return 1+f(x)# Consider n=2 i.e. f(x) = 1 + 1 + x = 2 + xf.n=2soln = fsolve(f, -1.5) # Expect [-2]print(soln) # [0.]相比def g(x):    return 1 + 1 + xsoln = fsolve(g, -1.5)print(soln) # [-2.]是否有將 fsolve 與此類功能一起使用的解決方法?我的用例是我有一個(gè)由遞歸公式定義的函數(shù),手動(dòng)輸入 large 需要很長(zhǎng)時(shí)間n。
查看完整描述

1 回答

?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊

問(wèn)題不在于 fsolve 無(wú)法處理遞歸函數(shù),而是您的遞歸函數(shù)正在污染全局命名空間以進(jìn)行遞歸。添加一個(gè)簡(jiǎn)單的打印語(yǔ)句有助于更清楚地了解正在發(fā)生的事情。


from scipy.optimize import fsolve

def f(x):

    print(f.n)

    if f.n==0:

        return x

    f.n -= 1

    return 1+f(x)

# Consider n=2 i.e. f(x) = 1 + 1 + x = 2 + x

f.n=2

soln = fsolve(f, -1.5) # Expect [-2]

print(soln) # [0.]

輸出:


2

1

0

0

0

0

0

0

[0.]

求解器本質(zhì)上必須使用不同的輸入運(yùn)行函數(shù),并猜測(cè)下一個(gè)“最佳”值以迭代運(yùn)行。對(duì)于依賴全局變量的函數(shù),您的函數(shù)“狀態(tài)”本身是不穩(wěn)定的,并且第一次運(yùn)行函數(shù)時(shí),全局變量會(huì)受到影響,并且您的函數(shù)不再具有正確的全局變量以在下一次迭代中正確運(yùn)行求解器。


您需要修改遞歸函數(shù),并通過(guò)顯式參數(shù)傳遞使其獨(dú)立。


from scipy.optimize import fsolve

def f(x, state):

    print(state)

    if state==0:

        return x

    state -= 1

    return 1+f(x, state)

# Consider n=2 i.e. f(x) = 1 + 1 + x = 2 + x

state=2

soln = fsolve(lambda x: f(x, state), -1.5) #wrapping the 2 arg recursive function with a lambda to mimic a 1 argument function. You may also use functools.partial for this.

print(soln) 

輸出:


2

1

0

2

1

0

2

1

0

2

1

0

2

1

0

2

1

0

[-2.]


查看完整回答
反對(duì) 回復(fù) 2021-10-26
  • 1 回答
  • 0 關(guān)注
  • 221 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)