最小二乘法相关知识,我把他分解成了四篇文章,第一篇是推导过 程 ,第二篇是 系数求解 ,第三篇是C语言实现二乘法(二次曲线)。有兴趣可以看文章底部,往期推荐。
这篇文章是第四篇,主要是用Python验证C语言实现二乘法的正确性,因为网络上的文章错综复杂,复制粘贴有风险,需要保证功能的正确性。
相关代码如下:
# -*- coding: utf-8 -*-
import numpy as np
#import random
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
#自定义函数
def func(x, a, b, c):
return a + b*x + c*pow(x, 2)
#定义x、y散点坐标
x = np.array([0,2,4,6,8,10])
y = np.array([0,9,24,42,76,118])
#非线性最小二乘法拟合
popt, pcov = curve_fit(func, x, y)
#获取popt里面是拟合系数
a = popt[0]
b = popt[1]
c = popt[2]
yvals = func(x, a, b, c) #拟合y值
print('a:', a)
print('b:', b)
print('c:', c)
#绘图
plot1 = plt.plot(x, y, 's') #square
plot2 = plt.plot(x, yvals, 'r')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
上述代码运行结果如下图:
其中,蓝色的矩形点是已知的坐标点,而红色的则是对已知坐标点拟合而成二次曲线。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
C语言
+关注
关注
180文章
7604浏览量
136713 -
最小二乘法
+关注
关注
0文章
22浏览量
8446
发布评论请先 登录
相关推荐
讲讲递推最小二乘法是什么
,正好沉浸下来,好好填填坑吧。1、递推最小二乘法最小二乘法最早由高斯在形体运动轨道报告研究工作中提出,此后称为参数辨识理论的基石,被广泛应用于系统辨识和参数估计之中,不得不感叹数学家们的伟大,工程威廉希尔官方网站
发表于 08-27 07:15
浅析递推最小二乘法
,正好沉浸下来,好好填填坑吧。1、递推最小二乘法最小二乘法最早由高斯在形体运动轨道报告研究工作中提出,此后称为参数辨识理论的基石,被广泛应用于系统辨识和参数估计之中,不得不感叹数学家们的伟大,工程威廉希尔官方网站
发表于 08-27 06:20
递归最小二乘法
一、递归最小二乘法递推最小二乘法:当矩阵维数增加时,矩阵求逆运算计算量过大,而且不适合在线辨识。为了减少计算量,并且可以实时地辨识出动态系统的特性,可以将最小二乘法转换成参数递推的估计。取前N组数据
发表于 08-27 07:03
最小二乘法的原理是什么
在嵌入式的测量中可能存在某些无法被直接测量的变量,但可能可以通过几个不同的数据指标运算处理得到,这里介绍最小而成发,最小二乘法适用于描述Y = AX + B的数据,即寻找到最合适的一条通过X描述Y
发表于 01-11 07:05
评论