用C语言实现的线拟合的最小二乘法.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用C语言实现的线拟合的最小二乘法

实验名称:曲线拟合的最小二乘法 实验目的 了解曲线拟合的最小二乘法 实验类型 设计型 实验环境 Windows XP TC 实验内容 相关知识:已知C[a,b]中函数f(x)的一组实验数据(xi,yi)(i=0,1,…,m),其中yi=f(xi)。设是C[a,b]上线性无关函数族。在中找函数f(x) 曲线拟合的最小二乘解,其法方程(组)为: 其中, k=0,1,…,n 特别是,求函数f(x) 曲线拟合的线性最小二乘解的计算公式为: 数据结构:两个一维数组或一个二维数组 算法设计:(略) 实验用例: 已知函数y=f(x)的一张表: x 0 10 20 30 40 50 60 70 80 90 y 68 67.1 66.4 65.6 64.6 61.8 61.0 60.8 60.4 60 试验要求:利用曲线拟合的线性最小二乘法求被逼近函数f(x)在点x=55处的近似值,并画出实验数据和直线。 编写代码: #includestdio.h #includestdlib.h #includegraphics.h double qiuhe1(double a[10][2],int p) { int i; double y; y=0; for(i=0;i10;i++) y=y+a[i][p]; return y; } double qiuhe2(double a[10][2],int p) { int i; double y=0; for(i=0;i10;i++) y=y+a[i][0]*a[i][p]; return y; } double nihe(double a[10][2],double x) { double a1,b,y; a1=(10*qiuhe2(a,1)-qiuhe1(a,0)*qiuhe1(a,1))/(10*qiuhe2(a,0)-qiuhe1(a,0)*qiuhe1(a,0)); b=(qiuhe2(a,0)*qiuhe1(a,1)-qiuhe1(a,0)*qiuhe2(a,1))/(10*qiuhe2(a,0)-qiuhe1(a,0)*qiuhe1(a,0)); y=a1*x+b; return y; } int main() { double a[10][2]={0,68,10,67.1,20,66.4,30,65.6,40,64.6,50,61.8, 60,61.0,70,60.8,80,60.4,90,60}; double x,x1,q=1; char c[12]; int i; long n; int arw[6]={515,235,520,240,515,245}; int arw1[6]={315,45,320,40,325,45}; int gdriver=IBM8514; int gmode=IBM8514HI; initgraph(gdriver, gmode, c:\\TC20\\BGI); cleardevice(); printf(input x:\n); scanf(%lf,x); printf(%f\n,nihe(a,x)); n=nihe(a,x)*1000000+1; c[0]=y;c[1]==; c[4]=.; for(i=10;i1;i--) { if(i!=4) { c[i]=n%10+48; n=n/10; } } c[11]=\0; x1=x; setbkcolor(7); setcolor(14); setlinestyle(0,0,3); drawpoly(3,arw); drawpoly(3,arw1); line(120,240,520,240); line(320,40,320,440); x=0; setcolor(2); setlinestyle(0,0,1); line((0+320),(int)(240-nihe(a,0)*q),(90+320),(int)(240-nihe(a,90)*q)); setcolor(3); outtextxy(320,30,Y); outtextxy(310,245,O); outtextxy(525,240,X); outtextxy((x1+330),((240-nihe

文档评论(0)

xll805 + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档