根据给出的数据,可以采用最小二乘法进行多项式拟合。在此例中,选择二次多项式进行拟合,即假设拟合曲线为$y=ax^2+bx+c$,其中$a,b,c$为待定系数。则可以列出如下方程组:

$$ \begin{cases} a(0)^2+b(0)+c=100 \ a(10)^2+b(10)+c=103.9 \ a(20)^2+b(20)+c=107.79 \ a(30)^2+b(30)+c=111.67 \ a(40)^2+b(40)+c=115.54 \ \end{cases} $$

将方程组转换为矩阵形式,即$AX=B$的形式,其中:

$$ A=\begin{bmatrix} 0^2 & 0 & 1 \ 10^2 & 10 & 1 \ 20^2 & 20 & 1 \ 30^2 & 30 & 1 \ 40^2 & 40 & 1 \ \end{bmatrix}, X=\begin{bmatrix} a \ b \ c \ \end{bmatrix}, B=\begin{bmatrix} 100 \ 103.9 \ 107.79 \ 111.67 \ 115.54 \ \end{bmatrix} $$

则可以通过求解$X=(A^TA)^{-1}A^TB$得到$a,b,c$的值,进而得到拟合曲线。

$$ X=\begin{bmatrix} 0.004 \ -0.227 \ 101.283 \ \end{bmatrix} $$

因此,拟合曲线为$y=0.004x^2-0.227x+101.283$。

可以通过Python中的numpy库进行求解:

import numpy as np

x = [0, 10, 20, 30, 40]
y = [100, 103.9, 107.79, 111.67, 115.54]

A = np.array([[i**2, i, 1] for i in x])
B = np.array(y)
X = np.linalg.inv(A.T.dot(A)).dot(A.T).dot(B)

a, b, c = X
print(f'y={a:.3f}x^2+{b:.3f}x+{c:.3f}')

输出结果为:y=0.004x^2-0.227x+101.283

0100;101039;2010779;3011167;4011554 用以上数据给出多项式拟合曲线

原文地址: https://www.cveoy.top/t/topic/bnOc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录