数学运用 -- 使用最小二乘与勒让德多项式拟合离散数据

使用最小二乘与勒让德多项式拟合离散数据

1. 准备离散数据

假设我们有以下离散数据集:

x x x y y y
0.01.0
0.50.8
1.00.5
1.50.2
2.0-0.1

我们想用勒让德多项式拟合这些数据,并通过最小二乘法找到勒让德多项式的系数。

2. 勒让德多项式

勒让德多项式的前几项为:

  • P 0 ( x ) = 1 P_0(x) = 1 P0(x)=1
  • P 1 ( x ) = x P_1(x) = x P1(x)=x
  • P 2 ( x ) = 1 2 ( 3 x 2 − 1 ) P_2(x) = \frac{1}{2}(3x^2 - 1) P2(x)=21(3x21)
  • P 3 ( x ) = 1 2 ( 5 x 3 − 3 x ) P_3(x) = \frac{1}{2}(5x^3 - 3x) P3(x)=21(5x33x)
  • P 4 ( x ) = 1 8 ( 35 x 4 − 30 x 2 + 3 ) P_4(x) = \frac{1}{8}(35x^4 - 30x^2 + 3) P4(x)=81(35x430x2+3)

3. 最小二乘法拟合

为了拟合勒让德多项式,我们需要使用最小二乘法来找到数据集的最优拟合系数。设我们使用前4阶的勒让德多项式,即:

f ( x ) = c 0 P 0 ( x ) + c 1 P 1 ( x ) + c 2 P 2 ( x ) + c 3 P 3 ( x ) f(x) = c_0 P_0(x) + c_1 P_1(x) + c_2 P_2(x) + c_3 P_3(x) f(x)=c0P0(x)+c1P1(x)+c2P2(x)+c3P3(x)

其中 c 0 , c 1 , c 2 , c 3 c_0, c_1, c_2, c_3 c0,c1,c2,c3 是待求的系数。

4. 构建矩阵并解方程

构建矩阵 A A A,其中每一列是勒让德多项式在数据点 x i x_i xi 处的值:

A = [ P 0 ( 0.0 ) P 1 ( 0.0 ) P 2 ( 0.0 ) P 3 ( 0.0 ) P 0 ( 0.5 ) P 1 ( 0.5 ) P 2 ( 0.5 ) P 3 ( 0.5 ) P 0 ( 1.0 ) P 1 ( 1.0 ) P 2 ( 1.0 ) P 3 ( 1.0 ) P 0 ( 1.5 ) P 1 ( 1.5 ) P 2 ( 1.5 ) P 3 ( 1.5 ) P 0 ( 2.0 ) P 1 ( 2.0 ) P 2 ( 2.0 ) P 3 ( 2.0 ) ] A = \begin{bmatrix} P_0(0.0) & P_1(0.0) & P_2(0.0) & P_3(0.0) \\ P_0(0.5) & P_1(0.5) & P_2(0.5) & P_3(0.5) \\ P_0(1.0) & P_1(1.0) & P_2(1.0) & P_3(1.0) \\ P_0(1.5) & P_1(1.5) & P_2(1.5) & P_3(1.5) \\ P_0(2.0) & P_1(2.0) & P_2(2.0) & P_3(2.0) \end{bmatrix} A= P0(0.0)P0(0.5)P0(1.0)P0(1.5)P0(2.0)P1(0.0)P1(0.5)P1(1.0)P1(1.5)P1(2.0)P2(0.0)P2(0.5)P2(1.0)P2(1.5)P2(2.0)P3(0.0)P3(0.5)P3(1.0)P3(1.5)P3(2.0)

代入勒让德多项式的表达式:

A = [ 1 0.0 − 0.5 0.0 1 0.5 − 0.125 − 0.4375 1 1.0 0.5 − 0.5 1 1.5 1.375 − 0.9375 1 2.0 2.5 − 1.0 ] A = \begin{bmatrix} 1 & 0.0 & -0.5 & 0.0 \\ 1 & 0.5 & -0.125 & -0.4375 \\ 1 & 1.0 & 0.5 & -0.5 \\ 1 & 1.5 & 1.375 & -0.9375 \\ 1 & 2.0 & 2.5 & -1.0 \end{bmatrix} A= 111110.00.51.01.52.00.50.1250.51.3752.50.00.43750.50.93751.0

然后,构建 y y y 向量:

y = [ 1.0 0.8 0.5 0.2 − 0.1 ] y = \begin{bmatrix} 1.0 \\ 0.8 \\ 0.5 \\ 0.2 \\ -0.1 \end{bmatrix} y= 1.00.80.50.20.1

5. 计算最小二乘解

最小二乘法要求我们解方程:

A T A c = A T y A^T A c = A^T y ATAc=ATy

其中 c c c 是待求的系数向量:

c = [ c 0 c 1 c 2 c 3 ] c = \begin{bmatrix} c_0 \\ c_1 \\ c_2 \\ c_3 \end{bmatrix} c= c0c1c2c3

6. PYTHON代码及输出结果

import numpy as np

# 定义勒让德多项式的矩阵 A
A = np.array([
    [1, 0.0, -0.5, 0.0],
    [1, 0.5, -0.125, -0.4375],
    [1, 1.0, 0.5, -0.5],
    [1, 1.5, 1.375, -0.9375],
    [1, 2.0, 2.5, -1.0]
])

# 定义观测的 y 值
y = np.array([1.0, 0.8, 0.5, 0.2, -0.1])

# 使用最小二乘法求解勒让德多项式的系数
c, residuals, rank, s = np.linalg.lstsq(A, y, rcond=None)

# 输出结果
print("勒让德多项式的系数为:", c)
print("残差:", residuals)

得到勒让德多项式的系数为:
勒让德多项式的系数为: [ 0.7952381 0.06507937 -0.57301587 -0.06349206] 残差: [0.00634921]

7. 解释结果

  • 勒让德多项式的系数 c 0 ≈ 0.795 c_0 \approx 0.795 c00.795 c 1 ≈ 0.065 c_1 \approx 0.065 c10.065 c 2 ≈ − 0.573 c_2 \approx -0.573 c20.573 c 3 ≈ − 0.063 c_3 \approx -0.063 c30.063
  • 残差很小,表示拟合的效果较好。

通过最小二乘法拟合了一组离散数据,得到了勒让德多项式的系数。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值