亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Scipy curve_fit做一個不適合一個簡單的指數

Scipy curve_fit做一個不適合一個簡單的指數

長風秋雁 2022-09-06 18:02:18
我試圖使用scipy curve_fit將一個簡單的指數擬合到一些數據中,結果是指數,其數量級太大了。import matplotlib.pyplot as pltfrom scipy.optimize import curve_fitimport mathimport numpy as npcases_DE = [16,18,26,48,74,79,130,165,203,262,545,670,800,1040,1224,1565,1966,2745,3675,4599,5813, 7272, 9367, 12327]def simple_DE(A,c,t):    return A*math.e**(c*t)range_thing = np.array(range(len(cases_DE)))popt, pcov = curve_fit(simple_DE, range_thing, cases_DE, bounds=((-np.inf, 0), (np.inf, 1)))print(popt)plt.scatter(range_thing, simple_DE(*popt, range_thing))plt.scatter(range_thing, cases_DE)print(simple_DE(*popt, 20))plt.xlabel('x')plt.ylabel('y')plt.show()任何人都可以告訴我我哪里錯了嗎?
查看完整描述

1 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

看來你混淆了參數的順序。提供給curve_fit函數應具有以下簽名:

它必須將自變量作為第一個參數,并將參數作為單獨的剩余參數進行擬合:。ydata = f(xdata, *params) + eps

所以你需要改變函數的參數順序:simple_DE

def simple_DE(t, A, c):
    ...

同樣,在繪制擬合度時:

plt.scatter(range_thing, simple_DE(range_thing, *popt))


查看完整回答
反對 回復 2022-09-06
  • 1 回答
  • 0 關注
  • 95 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號