拟合(最小二乘拟合)
拟合(最小二乘拟合)
一、整体思路

二、代码(含详细注释)
#程序文件ex7_10.py
import numpy as np
t=np.arange(8)
y=np.array([27.0, 26.8, 26.5, 26.3, 26.1, 25.7, 25.3, 24.8])
# 方法一
tb=t.mean(); yb=y.mean()
# 用1到8之间的数1减去它们的平均值乘以y-去均值的,求出它们的和然后除以(t-tb)的平方
a1=sum((t-tb)*(y-yb))/sum((t-tb)**2)
# 用y(函数值)的均值-a1*t的均值
b1=yb-a1*tb
# 直接以下面这种方式输出多项式拟合系数即可
print('拟合的多项式系数:',[a1,b1]) #输出第一种方法的解# 方法二
# np.ones() 是NumPy中的一个函数,用于生成一个给定形状和类型的新数组,其所有元素均初始化为1。
# len(t) 计算的是 t 的长度,即 t 中元素的数量。
# np.ones(len(t)) 生成了一个长度为 len(t) 的数组,其中每个元素都是1。
# t, np.ones(len(t))]:
# 这是一个Python列表,包含两个元素:t 和 np.ones(len(t)) 生成的数组。
# np.vstack() 是NumPy中的一个函数,用于垂直(按行)堆叠数组。
# 它接受一个数组序列(如列表)作为输入,并将这些数组垂直堆叠成一个新的二维数组。
# .T是装置
A=np.vstack([t, np.ones(len(t))]).T
p=np.linalg.pinv(A) @ y
print('拟合的多项式系数:', p) #输出第二种方法的解