数据拟合的最小二乘法

在这里插入图片描述
求其最小二乘逼近,取权系数为1,基函数:
φ 1 ( x ) = 1 , φ 2 ( x ) = x , φ 3 ( x ) = x 2 , φ 4 ( x ) = x 3 \varphi_{1}(x)=1, \varphi_{2}(x)=x, \varphi_{3}(x)=x^{2}, \varphi_{4}(x)=x^{3} φ1(x)=1,φ2(x)=x,φ3(x)=x2,φ4(x)=x3
Φ 1 = ( 1 , 1 , 1 , … , 1 , 1 ) T Φ 2 = ( − 1 , − 0.75 , − 0.5 , − 0.25 , 0 , 0.25 , 0.5 , 0.75 , 1 , 1.25 ) T Φ 3 = ( ( − 1 ) 2 , ( − 0.75 ) 2 , ( − 0.5 ) 2 , ( − 0.25 ) 2 , 0 2 , 0.2 5 2 , 0. 5 2 , 0.7 5 2 , 1 2 , 1.2 5 2 ) T Φ 4 = ( − 1 3 , − 0.7 5 3 , − 0. 5 3 , − 0.2 5 3 , 0 3 , 0.2 5 3 , 0. 5 3 , 0.7 5 3 , 1 3 , 1.2 5 3 ) T Y = ( 0.2209 , 0.3295 , 0.8826 , 1.4392 , 2.0003 , 2.5645 , 3.1334 , 3.7061 , 4.2836 , 3.1334 ) T \begin{array}{c} \Phi_{1}=(1,1,1, \ldots, 1,1)^{T} \\ \Phi_{2}=(-1,-0.75,-0.5,-0.25,0,0.25,0.5,0.75,1,1.25)^{T} \\ \Phi_{3}=\left((-1)^{2},(-0.75)^{2},(-0.5)^{2},(-0.25)^{2}, 0^{2}, 0.25^{2}, 0.5^{2}, 0.75^{2}, 1^{2}, 1.25^{2}\right)^{T} \\ \Phi_{4}=\left(-1^{3},-0.75^{3},-0.5^{3},-0.25^{3}, 0^{3}, 0.25^{3}, 0.5^{3}, 0.75^{3}, 1^{3}, 1.25^{3}\right)^{T} \\ Y=(0.2209,0.3295,0.8826,1.4392,2.0003,2.5645,3.1334,3.7061,4.2836,3.1334)^{T} \end{array} Φ1=(1,1,1,,1,1)TΦ2=(1,0.75,0.5,0.25,0,0.25,0.5,0.75,1,1.25)TΦ3=((1)2,(0.75)2,(0.5)2,(0.25)2,02,0.252,0.52,0.752,12,1.252)TΦ4=(13,0.753,0.53,0.253,03,0.253,0.53,0.753,13,1.253)TY=(0.2209,0.3295,0.8826,1.4392,2.0003,2.5645,3.1334,3.7061,4.2836,3.1334)T
一次多项式拟合数据:
在这里插入图片描述
拟 合 函 数 : f ( x ) = ∂ 1 + ∂ 2 x 拟合函数: f(x)=\partial_{1}+\partial_{2} x :f(x)=1+2x
二次多项式拟合数据:
在这里插入图片描述

拟 合 函 数 : f ( x ) = ∂ 1 + ∂ 2 x + ∂ 3 x 2 拟合函数: f(x)=\partial_{1}+\partial_{2} x+\partial_{3} x^{2} :f(x)=1+2x+3x2
三次多项式拟合数据:
在这里插入图片描述
拟 合 函 数 : f ( x ) = ∂ 1 + ∂ 2 x + ∂ 3 x 2 + ∂ 4 x 3 拟合函数: f(x)=\partial_{1}+\partial_{2} x+\partial_{3} x^{2}+\partial_{4} x^{3} :f(x)=1+2x+3x2+4x3
误 差 计 算 : ∑ n = 1 10 [ Y n − f ( x n ) ] 2 误差计算: \sum_{n=1}^{10}\left[Y_{n}-f\left(x_{n}\right)\right]^{2} :n=110[Ynf(xn)]2
程序求解:

import numpy as np

A1 = np.array([[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]])
A2 = np.array([[-1], [-0.75], [-0.5], [-0.25], [0], [0.25], [0.5], [0.75], [1], [1.25]])
A3 = np.array([[(-1)**2], [(-0.75)**2], [(-0.5)**2], [(-0.25)**2], [0**2], [0.25**2], [0.5**2], [0.75**2], [1**2], [1.25**2]])
A4 = np.array([[-1**3], [-0.75**3], [-0.5**3], [-0.25**3], [0**3], [0.25**3], [0.5**3], [0.75**3], [1**3], [1.25**3]])
B = np.array([[0.2209], [0.3295], [0.8826], [1.4392], [2.0003], [2.5645], [3.1334], [3.7061], [4.2836], [3.1334]])

# 一次
a1 = np.array([[np.dot(A1.T, A1), np.dot(A1.T, A2)],
               [np.dot(A2.T, A1), np.dot(A2.T, A2)]]).reshape(2,2)
b1 = np.array([[np.dot(B.T, A1)], [np.dot(B.T, A2)]]).reshape(2,1)
c1 = np.linalg.solve(a1, b1)
print(c1) #拟合系数

C1 = c1[0] + c1[1] * A1
D1 = (B-C1)**2
print(np.sum(D1)) #误差

# 二次
a2 = np.array([[np.dot(A1.T, A1), np.dot(A1.T, A2), np.dot(A1.T, A3)],
               [np.dot(A2.T, A1), np.dot(A2.T, A2), np.dot(A2.T, A3)],
               [np.dot(A3.T, A1), np.dot(A3.T, A2), np.dot(A3.T, A3)]]).reshape(3,3)
b2 = np.array([[np.dot(B.T, A1)], [np.dot(B.T, A2)], [np.dot(B.T, A3)]]).reshape(3,1)
c2 = np.linalg.solve(a2, b2)
print(c2) #拟合系数

C2 = c2[0] + c2[1] * A1 + c2[2] * A1**2
D2 = (B-C2)**2
print(np.sum(D2)) #误差

# 三次
a3 = np.array([[np.dot(A1.T, A1), np.dot(A1.T, A2), np.dot(A1.T, A3), np.dot(A1.T, A4)],
               [np.dot(A2.T, A1), np.dot(A2.T, A2), np.dot(A2.T, A3), np.dot(A2.T, A4)],
               [np.dot(A3.T, A1), np.dot(A3.T, A2), np.dot(A3.T, A3), np.dot(A3.T, A4)],
               [np.dot(A4.T, A1), np.dot(A4.T, A2), np.dot(A4.T, A3), np.dot(A4.T, A4)]]).reshape(4,4)
b3 = np.array([[np.dot(B.T, A1)], [np.dot(B.T, A2)], [np.dot(B.T, A3)], [np.dot(B.T, A4)]]).reshape(4,1)
c3 = np.linalg.solve(a3, b3)
print(c3) #拟合系数

C3 = c3[0] + c3[1] * A1 + c3[2] * A1**2 + c3[3] * A1**3
D3 = (B-C3)**2
print(np.sum(D3)) #误差

在这里插入图片描述
从多项式拟合数据的误差平方和来看,二次多项式的拟合效果相对较好,其次是一次多项式拟合,三次多项式拟合效果相对较差。

如有错误或者不足之处,欢迎大家留言指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

☆下山☆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值