用线性回归进行一元非线性模型的参数估计_第1页
用线性回归进行一元非线性模型的参数估计_第2页
用线性回归进行一元非线性模型的参数估计_第3页
用线性回归进行一元非线性模型的参数估计_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一 用线性回归进行一元非线性模型的参数估计【实验目的】通过编写具有一定通用型的可转化为现行的医院非线性模型程序,学习线性回归这种参数估计方法,体会作为经验模型主要形式之一的拟合模型的建立方法。【实验内容】试用线性回归分析建立某无烟煤的粒度模型。其粒度试验结果见下表:某无烟煤的粒度特性筛孔/mm502513630.5正累积产率/R%9.9118.8232.3247.3863.0291.44【实验要求】绘制详细流程图,编写程序并上机验证,最后撰写实验报告。【实验流程】g=g-n*e*e; l=l-n*e*f; m=m-n*f*f; e=e/n;f=f/n;h=sqrt(g*m);h=l/h;c

2、=l/g;d=f-c*e;开始将结果带回所选模型,求出a,b和理论值pii=0i<n输入样本容量n、实验粒度数据xiyi、选择模型按照所选模型将xiyi,转化为uivii=0i<ne=e+uj; f=f+vj; g=g+ui*ui;l=l+ui*vi;m=m+vi*vi;Ni=i+1Yi=0将结果带回所选模型,求出a,b和理论值piNi<ni=i+1Yq=q+(yi-pi)*(yi-pi);N计算剩余变量sm=sqrt(q/(n-2);Yi=i+1输出计算结果结束【实验程序】#inclede<stdio.h>#include<math.h>void m

3、ain()Int n, j,k;float x,y,z,u,v,p,e=0,f=0,g=0,l=0,m=0,a,b,c,d,q=0,sm;printf(“请输入样本容量n=”);scanf(“%f”,&n);printf(“请输入粒度试验结果n”);for(j=0;j<n;j+)scanf(“%f%f”,&xj,&yj);printf(“请选择模型:n1.y=a+bxn2.y=100e(-axb)n3.y=axbn4.y=ae(bx)n5.y=ae(b/x)n6.y=a+lgxn7.y=1/(a+be(-x)n8.y=abxn”);scanf(“%d”,&

4、k);switch(k) /*选择模型*/case 1:for(i=0;i<n;i+)ui=xi;vi=yi;break;case 2:for(i=0;i<n;i+)ui=xi;vi=log(log(100/yi); break;case 3:for(i=0;i<n;i+)ui=log10(xi);vi=log10(yi); break;case 4:for(i=0;i<n;i+)ui=xi;vi=log(yi); break;case 5:for(i=0;i<n;i+)ui=1/xi;vi=log(yi); break;case 6:for(i=0;i<n

5、;i+)ui=log10(xi);vi=1/yi; break;case 7:for(i=0;i<n;i+)ui=exp(-xi);vi=1/yi; break;case 8:for(i=0;i<n;i+)ui=xi;vi=log(yi);break;default:printf(“不合法的模型号!n”);break;for(j=0;j<n;j+) /*线性回归计算*/e=e+uj; /*x*/f=f+vj; /*y*/g=g+ui*ui;l=l+ui*vi;m=m+vi*vi;g=g-n*e*e; /*x2*/l=l-n*e*f; /*xy*/m=m-n*f*f; /*y2

6、*/e=e/n;f=f/n;h=sqrt(g*m);h=l/h;c=l/g;d=f-c*e;switch(k)case 1:case 6:case 7:a=d; b=c;break;case 2:case 3:case 4:case 5:a=exp(d); b=c;break;case 8:a=exp(d);b=exp©break;default:printf(“非法模型号!n”);break;for(i=0;i<n;i+) /*计算理论值,并输出公式*/switch(k)case 1:pi=a+b*xi;printf(“拟合结果为:y=%f+%fxn”,&a,&

7、;b);break;case 2:pi=100*exp(-a*pow(xi,b); printf(“拟合结果为:y=100e(-%fx%f)n”,a,b);break;case 3:pi=a*pow(xi,b); printf(“拟合结果为:y=%fx%fn”,a,b);break;case 4:pi=a*exp(b*xi); printf(“拟合结果为:y=%fe(%f x)n”,a,b);break;case 5:pi=a*exp(b/xi); printf(“拟合结果为:.y=%f e(%f/x)n”,a,b);break;case 6:pi=a+b*log10(xi); printf(“拟合结果为:y=%f+%flgx n”,a,b);break;case 7:pi=1/(a+b*exp(-xi); printf(“拟合结果为:y=1/(%f+%fe(-x)n”,a,b);breakcase 8:pi=a*pow(b,xi); printf(“拟合结果为:y=%f%fx n”,a,b);break;default:printf(“非法模型号!n”);break;for(i=0;i<n;i+) /*计算剩余标准差*/q=q+(yi-pi)*(yi-pi);sm=sqrt(q/(n-2);printf“a=%f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论