python 库函数实现最小二乘法拟合

目的

目的

概述

使用 scipy.optimize 中 curve_fit 方法实现最小二乘法拟合。

代码实现

import numpy as np
import random
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
plt.rcParams['font.sans-serif'] = ['SimHei'] 
 
#自定义函数 
def func(x, a, b, c, d):
    return a + b*x + c*pow(x, 2) + d*pow(x, 3)
 
#定义x、y散点坐标
x = np.arange(1, 10, 0.5)
y = []
for i in range(5, 20, 2):
    y.append(i + random.uniform(-3, 3))
for i in range(17, 27, 1):
    y.append(i + random.uniform(-1, 1))
y = np.array(y)
#非线性最小二乘法拟合
popt, pcov = curve_fit(func, x, y)
#获取popt里面是拟合系数
a = popt[0] 
b = popt[1]
c = popt[2]
d = popt[3]
yvals = func(x, a, b, c, d) #拟合y值
print('系数a:', a)
print('系数b:', b)
print('系数c:', c)
print('系数d:', d)
#绘图
fig = plt.figure(figsize = (10, 7))
plot1 = plt.plot(x, y, 's', label = '数据值')
plot2 = plt.plot(x, yvals, 'r',label = '拟合曲线')
plt.xlabel('x')
plt.ylabel('y')
plt.legend(loc = 'best') #指定legend的位置右下角
plt.title('最小二乘法拟合曲线', fontSize = 15)
plt.show()

解得系数如下图1,拟合曲线如下图2。

图1 求解系数

图1 求解系数

图2 拟合曲线

图2 拟合曲线
  • 8
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lazyn

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

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

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

打赏作者

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

抵扣说明:

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

余额充值