社区
C语言
帖子详情
帮忙啊,急求最小二乘法算法程序
adashm
2005-04-20 09:15:25
我要对二元一次方程y=ax1+bx2进行a,b系数估计,谁能给出源程序,急等
...全文
304
3
打赏
收藏
帮忙啊,急求最小二乘法算法程序
我要对二元一次方程y=ax1+bx2进行a,b系数估计,谁能给出源程序,急等
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fisher_kevin
2005-04-21
打赏
举报
回复
这是我编的最小二乘法多项式拟合的函数,我正在做,这个函数可能再用结构体当参数调用是有一些问题,修改一下做二次曲线拟合没有问题。不用解方程组,用正交法多项式法拟合。如果还解决不了你的问题的话,强烈建议你去查查《计算机常用算法》
struct stripe
{
double x_axis;
double y_axis;
};
struct stripe ori[],wave_2[],wave_3[];
void fit(struct stripe a[],double c[],int n,int m) /*输入数组(峰值),输出数组,拟合点数,阶数*/
{
double d[10];
double b[10];
double t[10];
double s[10];
double q[10];
double al[10];
double be[10];
double x,y,z;
int i,j,k,l,p;
/*第零级*/
b[0]=1;
d[0]=n;
y=0;
x=0;
for(i=0;i<n;i++)
{
x=x+a[i].x_axis;
y=y+a[i].y_axis;
}
q[0]=y/d[0];
al[0]=x/d[0];
c[0]=q[0]*b[0];
/*第一级*/
t[0]=-al[0];
t[1]=1;
d[1]=0;
x=y=0;
for(i=0;i<n;i++)
{
d[1]=d[1]+(t[1]*a[i].x_axis+t[0])*(t[1]*a[i].x_axis+t[0]);
y=y+a[i].y_axis*(t[1]*a[i].x_axis+t[0]);
x=x+a[i].x_axis*(t[1]*a[i].x_axis+t[0])*(t[1]*a[i].x_axis+t[0]);
}
q[1]=y/d[1];
al[1]=x/d[1];
be[1]=d[1]/d[0];
c[0]=c[0]+q[1]*t[0];
c[1]=q[1]*t[1];
/*二级以上*/
if(m>=2)
{
for(j=2;j<=m;j++)
{
s[0]=-al[j-1]*t[0]-be[j-1]*b[0];
for(k=j-2;k>=1;k--)
{
s[k]=-al[j-1]*t[k]-be[j-1]*b[k];
}
s[j-1]=-al[j-1]*t[j-1]+t[j-2];
s[j]=t[j-1];
/*计算d[j]*/
d[j]=0;
for(i=1;i<=n;i++)
{
/*计算Q(x)2*/
z=s[0];
for(l=1;l<=j;l++)
{
z=z+s[l]*pow(a[i].x_axis,l);
}
z=z*z;
d[j]=d[j]+z;
}
/*计算q[j]*/
q[j]=0;
for(i=1;i<=n;i++)
{
z=s[0];
for(l=1;l<=j;l++)
{
z=z+s[l]*pow(a[i].x_axis,l);
}
z=z*a[i].y_axis;
q[j]=q[j]+z;
}
q[j]=q[j]/d[j];
/*计算al[j]*/
p=0;
for(i=1;i<=n;i++)
{
z=s[0];
for(l=1;l<=j;l++)
{
z=z+s[l]*pow(a[i].x_axis,l);
}
z=z*z*a[i].x_axis;
p=p+z;
}
al[j]=p/d[j];
be[j]=d[j]/d[j-1];
c[j]=q[j]*s[j];
for(k=j-1;k>=0;k--)
{
c[k]=c[k]+q[j]*s[k];
}
for(k=j-1;k>=0;k--)
{
b[k]=t[k];
}
for(k=j;k>=0;k--)
{
t[k]=s[k];
}
}
}
}
xjp6688
2005-04-21
打赏
举报
回复
www.vcok.com
找找看
zhang_jiang
2005-04-20
打赏
举报
回复
设m个点(X_i, Y_i), i=0, 1, ..., m
要求S(x)=a_0*Z_0(x)+a_1*Z_1(x)+...+a_n*Z_n(x)
如:Z_0, Z_1,..., Z_n可取: 1, x, x^2, ..., x^(n-1)
定义[Z_j, Z_k]={w(X_i)*Z_j(X_i)*Z_k(x_i)对i从0到m求和}.
[f, Z_k]={w(X_i)*f(X_i)*Z_k(x_i)对i从0到m求和}.
其中, w(X_i)为X_i点的样本的权重.f(X_i)为X_i出样本的值(即Y_i).
==>
n
SUM [Z_k, Z_j]a_j = [f, Z_k]
j=0
解这个方程组得到a_i即可.
最小二乘法
,加权
最小二乘法
,迭代重加权
最小二乘法
(含代码)【最小二乘线性求解】
最小二乘法
(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用
最小二乘法
可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。
最小二乘法
是曲线拟合的常用方法,使用该方法对匹配函数的选取非常重要。。所谓匹配函数就是函数经过的路线在图中的点达到一个最佳匹配。不然就会出现过拟合和欠拟合的现象。1:工具:主要Qt +Eigen库+QCustomPlot类Eigen库是一个用于矩阵计算,代数计算库QCustomPlot类是一个用于绘图和数据可视化。
基于
最小二乘法
的直线拟合原理及C++实现
“在数据分析的时候,需要尽可能地排除噪声干扰,以便分析出数据的本质规律。排除噪声干扰的常用手段之一是数据拟合,以直线、抛物线、多次曲线等为数据模型,对数据进行拟合。”本文我们主要讲基于
最小二乘法
的直线拟合原理,并在此基础上,介绍结合
最小二乘法
和RANSAC
算法
的直线拟合
算法
。01—基于
最小二乘法
的直线拟合原理
最小二乘法
直线拟合的核心思想是:以所有样本值与其对应模型值的平方差和作为目标函数,当目标...
最小二乘法
定位(2)——定位
算法
+仿真
程序
#
最小二乘法
定位
算法
(由于作者能力有限,如有不对之处,望广大同行指出) 开学了好久,想着把
最小二乘法
定位
算法
结束掉,但是今天我之前花了好多时间排版写公式,后面发现没有保存,真的是欲哭无泪!好了不说怎么多了,我们来继续更新我们的博客~ 1
最小二乘法
原理 1.1
最小二乘法
举例
最小二乘法
(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用
最小二乘法
可以简......
递归
最小二乘法
、增广
最小二乘法
、带遗忘因子的递归增广
最小二乘法
一、递归
最小二乘法
递推
最小二乘法
:当矩阵维数增加时,矩阵求逆运算计算量过大,而且不适合在线辨识。为了减少计算量,并且可以实时地辨识出动态系统的特性,可以将
最小二乘法
转换成参数递推的估计。 取前N组数据,然后从N+1项后向后迭代,当前估计值=上一次估计值+修正值。 给定过程: 式中,理想的系数值a1=1.5,a2=0.7,b1=1.0和b2=0.5。V(k)服从N(0,1)的随机噪声。 clear all close all clc %产生N(0,1)正态分布的随机噪声 randn('seed',100);
拟合
算法
之
最小二乘法
拟合
算法
与插值问题不同,在拟合问题中不需要曲线一定经过给定的点。拟合问题的目标是追求一个函数(曲线),使得该曲线在某种准测下与所有的数据点最为接近,即曲线拟合最好(最小化损失函数)。
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章