优质实用文档精选——数值分析实验报告.docx
《优质实用文档精选——数值分析实验报告.docx》由会员分享,可在线阅读,更多相关《优质实用文档精选——数值分析实验报告.docx(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 数值分析实验报告实验一一实验内容:用两种不同的顺序计算,分析其误差的变化。二实验目的:1. 通过上机编程,复习巩固以前所学程序设计语言;2. 通过上机计算,了解舍入误差所引起的数值不稳定性。3. 通过上机计算,了解运算次序对计算结果的影响,从而尽量避免大数吃小数的现象。三算法描述 取float类型数据从大到和从小到大的累加。然后输入结果四源程序:/* 实验一 */#include using namespace std;float shunxi()float sum=0;for(int i=1;i0;i-)sum=sum+1.0/float(i*i);return sum;int main(
2、)cout.precision(10);cout第一个顺序方法的值:shunxi()endl;cout第二个倒序方法的值:daoxu()endl;return 0;五、程序结果六实验体会 这个程序还是比较简单的,仅仅需要一个循环就可以完成,只要细心就不会有错。从这个实验里我也看到了计算机毕竟不是万能的,由于机器字长的问题对于一些特殊的计算会出错即大数吃小数这样的计算,这样会让人们在日常的生产生活中产生一些意想不到的问题。不过只要稍微对计算方法做一下改动就可以改正这种错误改变算术的顺序。至于从哪个方向计算更好,那就要具体问题具体分析了.对于程序上的解决了,cout输出的小数保留的位数。实验二一实
3、验内容:1、拉格朗日插值按下列数据x-3.0-1.01.02.03.0y1.01.52.02.01.0作二次插值,并求x=-2,x=0,x=2.75时的函数近似值2牛顿插值按下列数据x0.300.420.500.580.660.72y1.044031.084621.118031.156031.198171.23223作五次插值,并求x=0.46,x=0.55,x=0.60时的函数近似值.二实验目的: 1. 掌握牛顿插值法。2. 掌握拉格朗日插值法。三算法描述开始时判断输入的点是否在区间内,不在则退出在则继续根据值选择节点 带入公式计算四 源程序:朗格朗日二次插值#include using n
4、amespace std;double inser(double x)double sum1,sum2,sum3,sum;double xi5=-3.0,-1.0,1.0,2.0,3.0;double yi5=1.0,1.5,2.0,2.0,1.0;int i;int a,b,c;for (i=0;ixii&xxii+1|xxi4)a=i;b=(i+1)%5;c=(i+2)%5;break;sum1=yia*(x-xib)*(x-xic)/(xia-xib)*(xia-xic);sum2=yib*(x-xia)*(x-xic)/(xib-xia)*(xib-xic);sum3=yic*(x-x
5、ib)*(x-xia)/(xic-xib)*(xic-xia);sum=sum1+sum2+sum3;return sum;int main()cout朗格朗日二次插值-2.0的值:inser(-2.0)endl;cout朗格朗日二次插值0.0的值:inser(0.0)endl;cout朗格朗日二次插值2.75的值:inser(2.75)endl;return 0;牛顿插值#include using namespace std;#define N 6double fiN;int chazhi();double niudun(double x)double xiN=0.3,0.42,0.5,0
6、.58,0.66,0.72;double yiN=1.04403,1.08462,1.11803,1.5603,1.19817,1.23223;double sum=0,sumxN;chazhi();sumx0=1;for (int j=1;jN;j+)sumxj=(x-xij-1)*sumxj-1;for (int i=0;i0;j-)for (i=0;ij;i+)yii=double(yii+1-yii)/double(xiflag+i-xii);:fiflag=yi0;flag+;return 0;int main()cout牛顿插值插入0.46,可得值:niudun(0.46)endl
7、; cout牛顿插值插入0.55,可得值:niudun(0.55)endl;cout牛顿插值插入0.60,可得值:niudun(0.60)endl;return 0;五、程序结果拉格朗日插值牛顿插值五 实验体会这个实验的目的主要是掌握如何在计算机上运用拉格朗日插值法和牛顿插值法来解决问题。对于拉格朗日插值,已经给出了五个节点的函数值,可以在一定的范围内使用拉格朗日插值法,所以对于-5到1上的X我利用前三个节点,而对于1到5上X我利用后三个节点,这样算出来值的误差会比较小。在牛顿插值上,题中已经给出了六个节点的函数值,利用这六个节点可以算出五阶差商,然后很容易就能够得出结果。其中四阶差商为负数,
8、但是差别不大,五阶差商又变回了正数,所以可以用到五阶差商,这样结果也会更准确。实验三一实验内容分别用复化梯形公式和复化辛卜生公式计算f(x)=sin(x)/x的积分,并与准确值比较判断精度。二实验目的1掌握复化梯形公式。2掌握复化辛卜生公式。三算法描述1.复化梯形公式代数形式求解定积分,为每个区间内的梯形公式的累加,所以除端点外的点都累加两次2复化新普生公式与梯形公式形式上差别不大,但是由于使用的是三个点一个区间所以只可以求解Sn4所以流程类似。四源程序/*复化梯形公式*#include using namespace std;#include #define A 0#define B 1#d
9、efine N 8double Yi(double xk)double s;if(xk=0)return 0.0;elses=double(sin(xk)/double(xk);return s;double fx() double sumx=0;double ki;for (int k=0;kB)cout输入的A小于B,错误endl;return 1;double sumx=fx(),sumy,sum;sumy=sumx-Yi(A)+Yi(B);sum=(double(B-A)/double(N)*(sumx+sumy)*0.5;coutsinx/x在A到B区间的N段分值为:sumendl;
10、return 0; / */*#include using namespace std;#include #define A 0#define B 1#define N 100double Yi(double xk)double s;if(xk=0)return 0.0;elses=double(sin(xk)/double(xk);return s;double fx() double sumx=0;double ki;for (int k=0;kN;k+)ki=(double(B-A)/double(N)*k+A+(double(B-A)/double(2*N);sumx+=Yi(ki);
11、return sumx;double fy() double sumy=0;double ki;for (int k=0;kB)cout输入的A小于B,错误endl;return 1; double sumx=fx(),sumy=fy(),sum; double h=abs(A-B); sum=(Yi(A)+4*sumx+2*sumy+Yi(B)*h/double(6*N); coutsinx/x在A到B区间的N段分值为:sumendl; return 0;*/复化辛卜生公式六实验体会要求函数sin(x)/x的积分,程序是通过两种不同的复化求积,通过计算机计算,检验,更加理解了复化梯形公式和复
12、化辛卜生公式。如果要想求其它区间的积分可以直接输入。复化梯形和复化辛卜生公式都是将区间分解成为若干等份,然后依次求积,编程应注意算法的严密性。实验四一实验内容 用改进欧拉方法解初值问题y=x+y; y(0)=1。0x1,取步长h=0.1计算,并与准确值 y=-x-1-2ex相比较。(p141习题第二题2)二实验目的1 了解掌握欧拉方法。三算法描述按照欧拉格式进行带入迭代计算流程图如下四源程序/用改进欧拉方法解初值问题y=x+y; y(0)=1。0x1,取步长h=0.1计算,/并与准确值 y=-x-1-2ex相比较。(p141习题第二题2)#include #include #include u
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 优质 实用 文档 精选 数值 分析 实验 报告
限制150内