教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 小学教育 >

通过最小二乘法实现曲线拟合(C语言版) - 布谷鸟的日志 - 网易博

来源:网络收集 时间:2026-04-13
导读: 最小二乘法c语言算法 通过最小二乘法实现曲线拟合(C语言版) - 布谷鸟的日志 - 网易博客网易 新闻 微博 邮箱 闪电邮 相册 有道 手机邮 印像派 梦幻人生 更多 博客首页 风格 圈子 活动 话题 找朋友 博客复制 手机博客 短信写博 热点专题 意见反馈 更多 相册

最小二乘法c语言算法

通过最小二乘法实现曲线拟合(C语言版) - 布谷鸟的日志 - 网易博客网易 新闻
微博
邮箱
闪电邮
相册
有道
手机邮
印像派
梦幻人生

更多 博客首页 风格
圈子
活动
话题
找朋友
博客复制
手机博客
短信写博
热点专题

意见反馈

更多>> 相册 摄影展区
每日专题 搜索 搜博文 搜博客 随便看看>>注册 登录 MyCode沉醉在代码的世界导航
首页 日志 相册 音乐 收藏 博友 关于我   日志 布谷鸟
加博友 关注他
最新日志
追赶法解线性方程组(C语言版雅可比迭代法解方程组(C语牛顿法求方程根(C语言版)列主元高斯消去法解线性方程用改进的Euler格式解常微分通过复化求积法实现数值积分博主推荐
相关日志
随机阅读
希望能让地球多延续一分钟无法告别梁山对于一中心大夫玩游戏曝光事件的最后陈述交警等领导擦汗与新公路砸掉重建王力宏之性别叶永烈:世界最牛的迪拜冷气公共汽车站(组…首页推荐
知名showgirl诱惑组合电影首映式拍到曾轶可阿狸搞笑漫画:拯救大魔王美国大米面粉涨价了'我是白骨精'真人漫画合集果味vc上mtv台很傲娇更多>>
拉格朗日插值的C语言实现 通过复化求积法实现数值积分(C语言版)
通过最小二乘法实现曲线拟合(C语言版)C语言 2010-05-26 10:43:18 阅读67 评论0 字号:大中小 #include<stdio.h>
#include<math.h>
#define N 2 /*N为所求拟合曲线的最高次*/
#define M 5 /*M为拟合的节点数*/
double fill_in_the_blank(double *X,int *W,double *Y,int j,int choose);
void maxij(double (*table)[N+2],int
m);/*将表格table中(m,m)到(n,n)为对角线的矩阵中绝对值最大元素置于(m,m)的位置并交换行列*/
void zeros(double (*table)[N+2],int m);/*将第m列第m个元素以下的元素变为0*/
double solution(double (*table)[N+2],double *A,int n);/*求的最终所需结果*/
main()
{
double table[N+2][N+2],A[N+1];/*X,Y分别用来求拟合点的坐标值,A用来存放最终所求值的下标*/
int i,j,m,n;/*W用来存放各拟合点的权,power中的值只有0和1,用来表示在所求的拟合表达式中是否存在相应的次幂*/
double X[M]={19,25,31,38,44};
double Y[M]={19,32.3,49,73.3,97.8};
int W[M]={1,1,1,1,1};
/*拟合曲线中存在的次幂,在此暂预先给定*/
int power[N+1]={1,0,1};
/*给table中的各元素赋值*/
for(i=0;i<(N+1);i++)
{
for(j=0;j<(N+1);j++)
{
if((power[i]!=0)&&(power[j]!=0))
table[i][j]=fill_in_the_blank(X,W,Y,i+j,0);
else
table[i][j]=0;
}
}
for(i=0;i<(N+1);i++)
{
if(power[i]!=0)
table[i
][N+1]=fill_in_the_blank(X,W,Y,i,1);
else
table[i][N+1]=0;
}
for(i=0;i<(N+1);i++)
table[N+1][i]=i;
/*将矩阵化成上三角阵*/
for(m=0;m<=N;m++)

最小二乘法c语言算法

{
maxij(table,m);
zeros(table,m);
}
/*求出最终所需结果*/
for(n=N;n>=0;n--)
{
if(table[n][n]!=0)
A[n]=solution(table,A,n);
else
A[n]=0;
}
/*按所求变量的下标顺序输出最终结果*/
for(j=0;j<=N;j++)
for(i=0;i<=N;i++)
if(table[N+1][i]==j)
{
printf("系数a%d=%g\n",j,A[i]);
break;
}
}
double solution(double (*table)[N+2],double *A,int n)
{
double sum=0,result;
int p;
for(p=N;p>n;p--)
sum+=table[n][p]*A[p];
result=(table[n][N+1]-sum)/table[n][n];
return result;
}
void zeros(double (*table)[N+2],int m)
{
double zeroing;
int i,j;
for(i=m+1;i<=N;i++)
if(table[i][m]!=0)
{
zeroing=-1*table[i][m]/table[m][m];
table[i][m]=0;
for(j=m+1;j<=(N+1);j++)
table[i][j]+=table[m][j]*zeroing;
}
}
void maxij(double (*table)[N+2],int m)
{
double exchange;
int i,j,location[2]={m,m};
/*找出最大元素的坐标*/
for(i=m;i<=N;i++)
for(j=m;j<=N;j++)
if(abs(table[location[0]][location[1]])<fabs(table[i][j]))
{
location[0]=i;
location[1]=j;
}
/*实现两元素所在行的交换*/
for(i=m;i<=(N+1);i++)
{
exchange=table[m][i];
table[m][i]=table[location[0]][i];
table[location[0]][i]=exchange;
}
/*实现列的交换*/
for(i=0;i<=(N+1);i++)
{
exchange=table[i][m];
table[i][m]=table[i][location[1]];
table[i][location[1]]=exchange;
}
}
double fill_in_the_blank(double *X,int *W,double *Y,int j,int choose)
/*choose为0填充系数矩阵(faii,faij),为1填充(f,faik)*/
{
double result=0,mid;
int k,th_power;/*th_power=j表示xi的次方数*/
if(choose==0)
for(k=0;k<M;k++)
{
mid=W[k];
if(j!=0)
for(th_power=1;th_power<=j;th_power++)
mid*=X[k];
result+=mid;
}
if(choose==1)
for(k=0;k<M;k++)
{
mid=W[k]*Y[k];
if(j!=0)
for(th_power=1;th_power<=j;th_power++)
mid*=X[k];
result+=mid;
}
return result;
} 0人 | 分享到: 阅读(67)| 评论(0)| 引用(0) |举报
拉格朗日插值的C语言实现 通过复化求积法实现数值积分(C语言版)
历史上的今天

相关文章
Matlab 最小二乘 曲线拟合
最近读者
登录后,您可以在此留下足迹。 wangshul 在路上
评论
点击登录|昵称:
取消 验证码:换一张
上一页 1... -1-1-1-1-1-1-1... -1下一页 页脚
公司简介 - 联系方法 - 招聘信息 - 客户服务 - 相关法律 -
网易公司版权所有 &copy;1997-2010×登录
欢迎通过百度搜索来到布谷鸟的博客!
注册登录后,你也可以拥有自己的个人博客,还可以和博友更好的交流。
网易博客欢迎你的加入
请输入登录信息
用户名: 密 码:








…… 此处隐藏:1716字,全部文档内容请下载后查看。喜欢就下载吧 ……
通过最小二乘法实现曲线拟合(C语言版) - 布谷鸟的日志 - 网易博.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/40605.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)