Python: 三步驟掌握 NumPy 多項式:polyfit 擬合、polyval 計算、poly1d 操作; coeffs = np.polyfit(x, y, 2) ; y_new = np.polyval(coeffs, x_new) ; p = np.poly1d(coeffs) ; print(p(x_new)) #效果同 np.polyval(coeffs, x_new)

加入好友
加入社群
Python: 三步驟掌握 NumPy 多項式:polyfit 擬合、polyval 計算、poly1d 操作; coeffs = np.polyfit(x, y, 2) ; y_new = np.polyval(coeffs, x_new) ; p = np.poly1d(coeffs) ; print(p(x_new)) #效果同 np.polyval(coeffs, x_new) - 儲蓄保險王

在資料科學、工程分析、自然科學研究等領域,多項式曲線擬合和運算是很常見的基本功。NumPy 提供了強大的工具:polyfitpolyvalpoly1d,讓你能輕鬆完成「數據擬合 → 曲線預測 → 多項式操作」的完整流程。本教學帶你三步驟完全掌握這些魔法工具!


1. polyfit:用資料點擬合多項式

numpy.polyfit(x, y, deg) 會根據你給定的 x、y 數據,找出最適合的多項式曲線(最小平方法),並回傳多項式係數。

範例:

import numpy as np

x = np.array([0, 1, 2, 3, 4])
y = np.array([1, 2.9, 7.2, 13.5, 24.1])

# 擬合二次多項式
coeffs = np.polyfit(x, y, 2)
print("多項式係數:", coeffs)

輸出結果:

Python: 三步驟掌握 NumPy 多項式:polyfit 擬合、polyval 計算、poly1d 操作; coeffs = np.polyfit(x, y, 2) ; y_new = np.polyval(coeffs, x_new) ; p = np.poly1d(coeffs) ; print(p(x_new)) #效果同 np.polyval(coeffs, x_new) - 儲蓄保險王

多項式係數: [1.38571429 0.13714286 1.15142857]
代表 1.38x^2 + 0.13x + 1.15

2. polyval:帶入 x 計算多項式數值

numpy.polyval(p, x) 可以將「多項式係數」和「自變數 x」帶入,計算對應的 y 值。

範例:

# 用剛剛 polyfit 得到的係數計算 y 
x_new = np.array([5, 6, 7])
y_new = np.polyval(coeffs, x_new)
print("預測值:", y_new)

輸出結果:

Python: 三步驟掌握 NumPy 多項式:polyfit 擬合、polyval 計算、poly1d 操作; coeffs = np.polyfit(x, y, 2) ; y_new = np.polyval(coeffs, x_new) ; p = np.poly1d(coeffs) ; print(p(x_new)) #效果同 np.polyval(coeffs, x_new) - 儲蓄保險王

3. poly1d:多項式物件,操作更進階

numpy.poly1d(coeffs) 將多項式係數包裝成一個「多項式物件」,不僅能直接像函數一樣帶入 x 計算,還能做加減乘除、微分積分等高級操作。

範例:

p = np.poly1d(coeffs)
print("多項式表示:")
print(p)

# 計算 p(5)
print("p(5) =", p(5))

# 多項式的微分積分
print("p 的微分:")
print(p.deriv())
print("p 的積分:")
print(p.integ())

# 與另一個多項式相加
q = np.poly1d([1, -1])  # q(x) = x - 1
print("p + q = ")
print(p + q)

輸出結果:

Python: 三步驟掌握 NumPy 多項式:polyfit 擬合、polyval 計算、poly1d 操作; coeffs = np.polyfit(x, y, 2) ; y_new = np.polyval(coeffs, x_new) ; p = np.poly1d(coeffs) ; print(p(x_new)) #效果同 np.polyval(coeffs, x_new) - 儲蓄保險王

綜合範例:從資料擬合到預測與運算

import numpy as np
import matplotlib.pyplot as plt

# 假設有一組實驗數據
x = np.array([0, 1, 2, 3, 4])
y = np.array([1, 2.9, 7.2, 13.5, 24.1])

# 1.  polyfit 擬合二次多項式
coeffs = np.polyfit(x, y, 2)

# 2.  polyval  poly1d 計算新點的預測值
x_pred = np.linspace(0, 5, 100)
y_pred = np.polyval(coeffs, x_pred)

# 3. 或用 poly1d 做同樣的事還能進行進階操作
p = np.poly1d(coeffs)
y_pred2 = p(x_pred)  # 結果跟 y_pred 一樣

# 畫圖比較
plt.scatter(x, y, label="原始數據")
plt.plot(x_pred, y_pred, "r-", label="polyval 預測")
plt.plot(x_pred, y_pred2, "g--", label="poly1d 預測")
plt.legend()
plt.show()

輸出結果:

Python: 三步驟掌握 NumPy 多項式:polyfit 擬合、polyval 計算、poly1d 操作; coeffs = np.polyfit(x, y, 2) ; y_new = np.polyval(coeffs, x_new) ; p = np.poly1d(coeffs) ; print(p(x_new)) #效果同 np.polyval(coeffs, x_new) - 儲蓄保險王

小結

  • polyfit:讓你從數據點得到「最佳多項式曲線」。
  • polyval:快速計算多項式在任何 x 的值,適合批量預測。
  • poly1d:多項式物件導向操作,進階運算更方便。

這三個工具配合使用,能大大提升你在數據擬合、預測、分析上的效率。
快動手試試,讓你的數據分析流程更流暢!

推薦hahow線上學習python: https://igrape.net/30afN

加入好友
加入社群
Python: 三步驟掌握 NumPy 多項式:polyfit 擬合、polyval 計算、poly1d 操作; coeffs = np.polyfit(x, y, 2) ; y_new = np.polyval(coeffs, x_new) ; p = np.poly1d(coeffs) ; print(p(x_new)) #效果同 np.polyval(coeffs, x_new) - 儲蓄保險王

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *