计算方法上机题_第1页
计算方法上机题_第2页
计算方法上机题_第3页
计算方法上机题_第4页
计算方法上机题_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、一,题目从函数表xf(x)出发,用下列方法计算f(0.15),f(0.31),f(0.47)的近似值:(1) 分段线性插值;(2)分段二次插值;(3)全区间上拉格朗日插值(要求一次性输入整张函数表,并利用计算机选择在插值计算中所需的结点)。二,基本方法(1) 先选取两个结点与使,然后在区间,上作线性插值,即得f(x)。(2) 选取距点x最近的三个结点,进行二次插值,即取f(x)。(3) n=5,三,计算结果(1)xf(x)(2)xf(x)(3)xf(x)四,结果分析编程基本按照课本套公式,方法从(1)至(3),计算结果越来越精确。五,源程序(1)#include<stdio.h>i

2、nt main(void)int i,j;double a6,b6,x,y;printf("Enter x:");for(i=0;i<6;i+)scanf("%lf",&ai); printf("Enter f(x):");for(i=0;i<6;i+) scanf("%lf",&bi);for(j=0;j<3;j+)printf("Enter x:");scanf("%lf",&x);for(i=0;x>ai;i+);y=bi

3、-1*(x-ai)/(ai-1-ai)+bi*(x-ai-1)/(ai-ai-1); printf("x=%lf , ",x); printf("y=%lfn",y);return 0;(2)#include<stdio.h>int main(void)int i,j;double a6,b6,x,y;printf("Enter x:");for(i=0;i<6;i+)scanf("%lf",&ai); printf("Enter f(x):");for(i=0;i&l

4、t;6;i+) scanf("%lf",&bi);for(j=0;j<3;j+)printf("Enter x:");scanf("%lf",&x);for(i=0;x>ai;i+);if(ai+1-x)<(x-ai-2)y=bi-1*(x-ai)/(ai-1-ai)*(x-ai+1)/(ai-1-ai+1);y=y+bi*(x-ai-1)/(ai-ai-1)*(x-ai+1)/(ai-ai+1); y=y+bi+1*(x-ai-1)/(ai+1-ai-1)*(x-ai)/(ai+1-ai); pri

5、ntf("x=%lf , ",x); printf("y=%lfn",y); else y=bi-2*(x-ai-1)/(ai-2-ai-1)*(x-ai)/(ai-2-ai);y=y+bi-1*(x-ai-2)/(ai-1-ai-2)*(x-ai)/(ai-1-ai); y=y+bi*(x-ai-2)/(ai-ai-2)*(x-ai-1)/(ai-ai-1); printf("x=%lf , ",x); printf("y=%lfn",y); return 0;(3)#include<stdio.h>

6、int main(void)int i,j,k;double a6,b6,x,y,p;printf("Enter x:");for(i=0;i<6;i+)scanf("%lf",&ai); printf("Enter f(x):");for(i=0;i<6;i+) scanf("%lf",&bi);for(j=0;j<3;j+)y=0;printf("Enter x:");scanf("%lf",&x); for(i=0;i<6

7、;i+)p=1;for(k=0;k<6;k+)if(k!=i)p=p*(x-ak)/(ai-ak); y=y+p*bi;printf("x=%lf , ",x); printf("y=%lfn",y);return 0;六,附图(1)(2)(3)第九题:一,题目已知直升机旋转机翼外形曲线轮廓线上的某些型值点及端点处的一阶导数值y(x0)=1.86548,y(x18)=-0.046115, 试计算该曲线上横坐标为2,4,6,12,16,30,60,110,180,280,400,515处点的纵坐标(要求该曲线具有二阶光滑度)。k0123456k131

8、415161718468494507520k7891011127835二,基本方法根据课本图4-9流程图及追赶法解方程。三,计算结果x246121630yx60110180280400515y四,结果分析利用追赶法求Mi,比高斯消去法步骤更简单,虽然结果有微小偏差,尤其在s515处与课本结果偏差较大。但在精度要求不高的情况下,追赶法可以减少工作量,提高工作效率。五,源程序#include<stdio.h>int main(void)int i,j;double a19,b19,h19,s18,t18,g19,x,y,p,q,f19,m20,n20;printf("输入左端

9、点一阶导:"); scanf("%lf",&p);printf("输入右端点一阶导:");scanf("%lf",&q);printf("Enter x:");for(i=0;i<19;i+)scanf("%lf",&ai); printf("Enter f(x):");for(i=0;i<19;i+) scanf("%lf",&bi); for(i=0;i<19;i+)hi=ai-ai-1;fo

10、r(i=1;i<18;i+)si=hi/(hi+hi+1);for(i=1;i<18;i+)ti=1-si;for(i=1;i<18;i+)gi=6/(hi+hi+1)*(bi+1-bi)/hi+1-(bi-bi-1)/hi);g0=6/h1*(b1-b0)/h1-p);g18=6/h18*(q-(b18-b17)/h18);f1=0.5;for(i=2;i<19;i+)fi=ti-1/(2-si-1*fi-1);n1=g0/2;for(i=2;i<20;i+)ni=(gi-1-si-1*ni-1)/(2-si-1*fi-1);m19=n19;for(i=18;i

11、>0;i-)mi=ni-fi*mi+1;printf("输出M:n");for(i=1;i<20;i+)printf("%lf ",mi);for(j=0;j<12;j+)printf("n");printf("Enter x:");scanf("%lf",&x);for(i=0;x>ai;i+);y=mi*(ai-x)*(ai-x)*(ai-x)/hi/6;y=y+mi+1*(x-ai-1)*(x-ai-1)*(x-ai-1)/hi/6;y=y+(bi-1-mi

12、*hi*hi/6)*(ai-x)/hi;y=y+(bi-mi+1*hi*hi/6)*(x-ai-1)/hi;printf("f(x):%lf",y);return 0;六,附图第十二题一,题目某类疾病发生率和年龄段x(每五年为一段,例如0-5岁为第一段,6-10岁为第二段)之间有形如的关系。试根据观测得到的如下数据表,用最小二乘法确定式中的参数a和b,并计算相应的均方误差与最大偏差。x123456789yx10111213141516171819y二,基本方法(1)将非线性方程化为线性方程,对等号两边取对数得到。(2)按照最小二乘法的原始定义,不对方程进行变换,而均方误差的

13、方程式,通过求解非线性方程组来解决问题,此时要用到牛顿迭代法。三,计算结果第二次:a=0.239368,b=0.310747,e=5.430872,m=3.467987.四,结果分析由以上结果对比,第二种方法结果更加精确,但是采用迭代法计算时,又必须多次选择初值才有可能取得较好的结果。五,源程序(1)#include<stdio.h>#include<math.h>int main(void) int i; double a,b,e,m,a0,a1,b0,b1,y1,y2,x19,y19; for(i=0;i<19;i+) xi=i+1; printf("

14、;x: "); for(i=0;i<19;i+) printf("%lf ",xi); printf("n y: "); for(i=0;i<19;i+) scanf("%lf",&yi); for(i=0;i<19;i+) yi=log(yi); a0=a1=b0=b1=y1=y2=0; for(i=0;i<19;i+) a1=a1+xi; y1=y1+yi; b0=b0+xi; b1=b1+pow(xi,2); y2=y2+xi*yi; a0=19; b=(y2-y1*(b0/a0)/(b

15、1-a1*(b0/a0); a=(y1-b*a1)/a0; a=exp(a); for(i=0;i<19;i+) yi=exp(yi); e=m=0; for(i=0;i<19;i+) e=e+pow(a*exp(i+1)*b)-yi),2); for(i=0;i<18;i+) if(pow(a*exp(i+1)*b)-yi),2)>m) m=pow(a*exp(i+1)*b)-yi),2); else; printf("a=%lf b=%lf e=%lf m=%lfn",a,b,e/19,sqrt(m); return 0;(2)#include&

16、lt;stdio.h>#include<math.h>int main(void) int i,j; double a,b,e,m,f,f1,f2,g,g1,g2,c,d,x19,y19; for(i=0;i<19;i+) xi=i+1; printf("x: "); for(i=0;i<19;i+) printf("%lf ",xi); printf("n y: "); for(i=0;i<19;i+) scanf("%lf",&yi); printf("En

17、ter a0:"); scanf("%lf",&a); printf("Enter b0:"); scanf("%lf",&b); f=f1=f2=g=g1=g2=0; for(j=0;j<20;j+) for(i=0;i<19;i+) f=f+2*(a*exp(i+1)*b)-yi)*exp(i+1)*b); f1=f1+2*exp(2*(i+1)*b); f2=f2+4*(i+1)*a*exp(2*(i+1)*b)-2*(i+1)*yi*exp(i+1)*b); g=g+2*(a*exp(i+1)*b)-yi)*(i+1)*a*exp(i+1)*b); g1=g1+4*(i+1)*a*exp(2*(i+1)*b)-2*(i+1)*yi*exp(i+1)*b); g2=g2+4*pow(i+1)*a,2)*exp(2*(i+1)*b)-2*pow(i+1),2)*a*yi*exp(i+1)*b); c=f1*a+f2*b-f; d=g1*a+g2

温馨提示

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

评论

0/150

提交评论