第一范文网 - 专业文章范例文档资料分享平台

数值分析实验报告

来源:用户分享 时间:2025/8/5 6:50:06 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

《数值分析》实验报告 实验室一 插值法

1、实验内容:

已知函数在下列各点处的值为 xi Y(xi) 0.2 0.98 0.4 0.92 0.6 0.81 0.8 0.64 1.0 0.38 试用4次牛顿多项式P4(x)对数据进行插值。给出{(xi,yi)|xi=0.2+0.08i}

2、分析与实现

按牛顿插值法,要得到牛顿插值多项式关键在于求各阶差商,求出后带入牛顿插值公式即可。 要求某点的插值带入插值多项式即可。 通过分析程序实现如下:

#include

//函数功能:求差商,本函数返回一个整型标识:0-失败,不适用此方法; //1-成功, i阶差商保存在数组y[i]中,也就隐形得出牛顿插值多项式。 //参数说明:

//x 双精度实型一维数组,长度为n ,存放给定n 个结点的值(从小到大)

//y 双精度实型一维数组,长度为n ,存放给定n 个结点上的函数值,函数返回时存放i阶差商(i为数组元素下表)

//n 整型变量,给定结点的个数

int newton(double x[], double y[], int n) { if (n <=1) /*结点个数不对,此方法不适用,返回*/ return(0); else { for (int i=1;i=i;j--) { y[j]=(y[j]-y[j-1])/(x[j]-x[j-i]); } } return 1; } }

void main()

{ }

double z,s,t=0.2;//t为插值结点

static double x[5] = {0.2,0.4,0.6,0.8,1.0 };

static double y[5] = {0.98,0.92,0.81,0.64,0.38}; int i,flag=1,n=5;

printf(\请输入插值点:\

scanf(\获取待插值结点

flag=newton(x, y, n);//调用求差商的函数,求得牛顿插值多项式中的各阶差商 if (flag==0) { printf(\牛顿插值法不适用于此题!\\n\} else

{//求t点处的牛顿插值 z=y[0]; s=1; for (i=1;i

printf(\输出结果

3、实验结果:

实验二 数值积分

1、实验内容

计算积分,用自适应辛普森积分,使其精度达到0.000001。

2、分析与实现

分析辛普森算法,其实现如下,其中simp()实现辛普森算法,fexpression()为被积函数表达式,main()为主函数程序,为了测试。 #include #include \

//函数功能:自适应辛普生积分,函数返回一个双精度实型积分值。 //参数说明:

//a 双精度实型变量,积分下限。

//b 双精度实型变量,积分上限,要求b>a。 //eps 双精度实型变量,积分精度要求。

//f 双精度函数指针变量,指向计算被积函数值的函数。 double simp(double a,double b, double eps,double (*f)(double)) { int n, k; double h, t1, t2, s1, s2, ep, p , x; n=1; h=b-a; t1=h*((*f)(a)+(*f)(b))/2.0; s1=t1; /*用T1代替S0*/ ep=eps+ 1.0; while (ep>=eps) { p=0.0; for(k=0; k<=n-1; k++) { x=a+(k+0.5)*h; p=p+(*f) (x); } t2=(t1+h*p)/2.0; /*计算T1=(b-a)*(f(a)+f(b))/2*/

s2=(4.0*t2-t1)/3.0; /*计算Sn=(4T2n-Tn)/3*/ ep=fabs(s2-s1); /*计算精度*/ t1=t2; s1=s2; n=n+n; h=h/2.0; } return(s2); }

double fexpression(double x)//被积函数表达式y=f(x) { double y; y=log(1.0+x)/(1.0+x*x); return(y); }

void main()//主函数程序 { double a, b, eps , t, fexpression(double); a = 0.0; b = 1.0; eps = 0.000001; t=simp(a,b, eps,fexpression); printf(\ printf(\ printf(\}

3、实验结果:

搜索更多关于: 数值分析实验报告 的文档
数值分析实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6oai28e7sv9mzf00wd30_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top