1 / 12
文档名称:

计算方法上机题doc.doc

格式:doc   大小:1,023KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算方法上机题doc.doc

上传人:63229029 2017/4/28 文件大小:1023 KB

下载得到文件列表

计算方法上机题doc.doc

文档介绍

文档介绍:第八题: 一,题目从函数表 f(x) 出发,用下列方法计算 f(),f(),f() 的近似值: (1)分段线性插值;(2)分段二次插值;(3) 全区间上拉格朗日插值(要求一次性输入整张函数表,并利用计算机选择在插值计算中所需的结点)。二,基本方法(1) 先选取两个结点 x i1?与x i使?x [x i1?,x i], 然后在区间[x i1?,x i] 上作线性插值,即得 f(x) ≈xx xxyxx xxyL ii iiii iix 1 11 1 1)( ??????????。(2) 选取距点 x 最近的三个结点 x i1?,x i,x i1?进行二次插值,即取 f(x) ≈)]([)( 11 1,1 2???????????? iik ikjijjk jkxx xxyL x 。(3) n=5,) )...( )( )...( ) )...( )( )...( ()()( 110 11000(xxxxxxx x xxxxxxxxyl yL nkkkkkk nkk nk k k nk k nxx??????????????????三,计算结果(1) x f(x) (2)x f(x) (3)x f(x) 四,结果分析编程基本按照课本套公式,方法从( 1)至( 3),计算结果越来越精确。五,源程序(1) #include<> int main(void) {int i,j; double a[6],b[6],x,y; printf("Enter x:"); for(i=0;i<6;i++) scanf("%lf",&a[i]); printf("Enter f(x):"); for(i=0;i<6;i++) scanf("%lf",&b[i]); for(j=0;j<3;j++){ printf("Enter x:"); scanf("%lf",&x); for(i=0;x>a[i];i++); y=b[i-1]*(x-a[i])/(a[i-1]-a[i])+b[i]*(x-a[i-1])/(a[i]-a[i-1]); printf("x=%lf ,",x); printf("y=%lf\n",y); }return 0; }(2) #include<> int main(void) {int i,j; double a[6],b[6],x,y; printf("Enter x:"); for(i=0;i<6;i++) scanf("%lf",&a[i]); printf("Enter f(x):"); for(i=0;i<6;i++) scanf("%lf",&b[i]); for(j=0;j<3;j++){ printf("Enter x:"); scanf("%lf",&x); for(i=0;x>a[i];i++); if((a[i+1]-x)<(x-a[i-2])) {y=b[i-1]*(x-a[i])/(a[i-1]-a[i])*(x-a[i+1])/(a[i-1]-a[i+1]); y=y+b[i]*(x-a[i-1])/(a[i]-a[i-1])*(x-a[i+1])/(a[i]-a[i+1]); y=y+b[i+1]*(x-a[i-1])/(a[i+1]-a[i-1])*(x-a[i])/(a[i+1]-a[i]); printf("x=%lf ,",x); printf("y=%lf\n",y); }else{ y=b[i-2]*(x-a[i-1])/(a[i-2]-a[i-1])*(x-a[i])/(a[i-2]-a[i]); y=y+b[i-1]*(x-a[i-2])/(a[i-1]-a[i-2])*(x-a[i])/(a[i-1]-a[i]); y=y+b[i]*(x-a[i-2])/(a[i]-a[i-2])*(x-a[i-1])/(a[i]-a[i-1]); printf("x=%lf ,",x); printf("y=%lf\n",y); }}return 0; }(3) #include<> int main(void) {int i,j,k; double a[6],b[6],x,y,p; printf("Enter x:"); f