社区
C语言
帖子详情
帮忙啊,急求最小二乘法算法程序
adashm
2005-04-20 09:15:25
我要对二元一次方程y=ax1+bx2进行a,b系数估计,谁能给出源程序,急等
...全文
258
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即可.
新手求教MATLAB中遗传
算法
的指导论文需要
急求
-单交叉口交通多目标控制方法.pdf
新手求教MATLAB中遗传
算法
的指导论文需要
急求
-单交叉口交通多目标控制方法.pdf 我的论文跟附件中的文章类似,但编程不大懂,希望各位大神
帮忙
看看指导一下
急求
一个VB密码输入的验证
程序
编写代码.txt
急求
一个VB密码输入的验证
程序
编写代码.txt
360断网
急求
箱
独立版360断网
急求
箱,不用安装360安全卫士,可独立运行 断网修复工具
急求
lorenz系统的追踪控制的matlab源
程序
-单向耦合网络连接的Lorenz系统的追踪控制.pdf
急求
lorenz系统的追踪控制的matlab源
程序
-单向耦合网络连接的Lorenz系统的追踪控制.pdf 单向耦合网络连接的Lorenz系统的追踪控制.pdf 论文
急求
医疗废物管理整改报告.doc
急求
医疗废物管理整改报告.doc
C语言
69,369
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章