下载此文档

计算方法上机题.doc


文档分类:资格/认证考试 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
第八题:
一,题目
从函数表
x






f(x)






出发,用下列方法计算f(),f(),f()的近似值:
分段线性插值;(2)分段二次插值;(3)全区间上拉格朗日插值
(要求一次性输入整张函数表,并利用计算机选择在插值计算中所需的结点)。
二,基本方法
先选取两个结点与使[,],然后在区间[,]上作线性插值,即得f(x)≈。
选取距点x最近的三个结点,,进行二次插值,即取f(x)≈。
n=5,
三,计算结果
(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:");
for(i=0

计算方法上机题 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人czhenrgjiangh
  • 文件大小976 KB
  • 时间2021-05-28