数值计算 利用Python实现多项式最小二乘拟合(不调用函数库)

最小二乘拟合介绍

最小二乘拟合比较简单以及常见,这里就不介绍了。

代码实现

import numpy as np


def solve_f(x: list, f: list, fi: list): # 计算多项式系数
    ip = np.zeros((len(fi), len(fi))) # 定义内积矩阵
    ip_f = np.zeros(len(fi)) 
    for i in range(0, len(fi)):
        x_1 = [_ ** fi[i] for _ in x]
        ip_f[i] = sum(map(lambda a, b: a * b, x_1, f)) #计算内积,此处为(fi_i, f(x))
        for j in range(0, len(fi)):
            x_2 = [_ ** fi[j] for _ in x]
            ip[i, j] = sum(map(lambda a, b: a * b, x_1, x_2))
    # print(np.dot(np.linalg.inv(ip), ip_f))
    # print(ip, ip_f)
    return np.dot(np.linalg.inv(ip), ip_f) # 左乘逆矩阵计算系数矩阵


def get_function(p: float, coeff: np.ndarray, fi: list): # 计算某点函数拟合值
    res = 0
    for i in range(0, len(fi))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值