




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河北工业大学数值分析课程实验实 验 报 告专业: 计算机科学与技术 班级: 计1305班 姓名: 岳帅鹏 学号: 133007 完成日期: 2015.1.11 实验一一、 实验要求 用两种不同的顺序计算,分析其误差的变化。二、 实验目的1、通过上机编程,复习巩固以前所学程序设计语言;2、通过上机计算,了解舍入误差所引起的数值不稳定性。3、通过上机计算,了解运算次序对计算结果的影响,从而尽量避免大数吃小数的现象。三、 算法描述 1)首先用float精度正序相加得到10000项的和;2)接着用float精度逆序相加得到10000项的和;3)然后用double精度正序相加得到10000项的和;4)再用double精度逆序相加得到10000项的和;5)根据结果,进行比较分析问题。四、 源程序 #include#includevoid main()int i;float s1=0,s2=0,d1,d2;for(i=1;i=1;i-)s2=s2+1.0f/(i*i);d1=(float)(fabs(1.644834-s1); d2=(float)(fabs(1.644834-s2);printf(正向求和结果为%fn,误差为%fnn,s1,d1); printf(反向求和结果为%fn,误差为%fnn,s2,d2); if(d1d2)printf(正向求和误差小于负向求和误差n);else if(d1=d2)printf(正向求和误差等于负向求和误差n);elseprintf(正向求和误差大于负向求和误差n);五、 运行结果 六、 对算法的理解与感悟实验二一、 实验要求 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、熟悉拉格朗日插值多项式和牛顿插值多项式,注意其不同特点;三、 算法描述1、 拉格朗日插值(1) 输入x,y(i=0,1,2,n),令L(x)=0;(2)对=0,1,2,n计算 l(x)= L L+l(x)y2、 牛顿插值多项式(1) 输入n,x,y (i=0,1,2,n);(2) 对k=1,2,3,n, i=1,2, ,k计算各阶差商f(x,x ,x);(3) 计算函数值N(x)=f(x)+fx, x(x- x)+fx, x,x(x- x)(x- x)(x-x)四、 源程序1. 拉格朗日 #include#include#includeusing namespace std;float jisuanmokuai(int,float,float,float);void main()float a,x50,y50,l;int m,n;cout题目:按下列数据endl;coutx:-3.0 -1.0 1.0 2.0 3.0endl;couty:1.0 1.5 2.0 2.0 1.5endl;cout作二次插值,求x=-2,x=0,x=2.75时的函数近似值.endl;cout输入插值次数:n;cout插入计算次数:m;for(int i=0;i=m;i+)for(int j=0;j=n;j+)int h99=i+1,b99=j+1;cout输入第h99个数的第b99个节点及函数值:xjyj;2. 牛顿 #include#define M 6float w(float X,int n,float x);float quotient(int k,int i,float fM,float x,float y);float newton(float X,int n,float fM,float x,float y);void main()float xM,yM,fMM;x0=0.30f;y0=1.04403f;x1=0.42f;y1=1.08462f; x2=0.50f;y2=1.11803f;x3=0.58f;y3=1.15603f;x4=0.66f;y4=1.19817f; x5=0.72f;y5=1.23223f;printf(x:0.30 0.42 0.50 0.58 0.66 0.72n);printf(y:1.04403 1.08462 1.11803 1.15603 1.19817 1.23223n);printf(做五次插值,并求x=0.46,x=0.55,x=0.60时的函数近似值.nn); for(int i=0;iM;i+)f0i=yi;float N3;N0=newton(0.46f,5,f,x,y);N1=newton(0.55f,5,f,x,y);N2=newton(0.60f,5,f,x,y);printf(x=0.46时函数的近似值为 %fn,N0); printf(x=0.55时函数的近似值为 %fn,N1); printf(x=0.60时函数的近似值为 %fn,N2);float w(float X,int n,float x)float w=1.0;for (int i=0;in;i+)w=w*(X-xi);return w;float quotient(int k,int i,float fM,float x,float y)if(k=0)f0i=yi; else fki=(quotient(k-1,i,f,x,y)-quotient(k-1,i-1,f,x,y)/(xi-xi-k);return fki;float newton(float X,int n,float fM,float x,float y)float N; N=f00;for (int i=1;i=n;i+)N=N+w(X,i,x)*quotient(i,i,f,x,y);return N;五、 运行结果1. 拉格朗日:2. 牛顿:六、 对算法的理解与感悟实验三一、 实验要求 分别用复化梯形公式和复化辛卜生公式计算f(x)=sin(x)/x的积分,并与准确值比较判断精度。二、 实验目的 通过实际计算来真实体会复合梯形公式和复合辛普森公式两种数值求积方法的精确度。三、 算法描述 1、复合梯形公式步骤一:确定函数的区间为【a,b】,并确定其节点的个数,算出每个小区间的步长h;步骤二:根据确定的h,代入复合梯形公式,算出其对应的结果。2、复合辛普森公式步骤一:确定函数的区间为【a,b】,并确定其节点的个数,算出每个步长h;步骤二:根据确定的h,代入复化辛普生公式,算出对应的积分结果。四、 源程序 #include#includevoid main()int m,n,k,i;float Tn,Sn,d1,d2,a=0,b=0,c=0;float x1000,y1000,z1000,w1000; printf(将复化梯形区间划分:);scanf(%d,&n); for(i=1;in;i+)xi=float(1.0/n*i);yi=(float)(sin(xi)/xi);a=a+yi;Tn=(float)(1.0+sin(1.0)/1.0+2*a)/2.0/n);printf(复化梯形输出:%fn,Tn);printf(将复化辛卜生区间划分为:);scanf(%d,&m);for (k=1;kd2)printf(复化梯形求法精度低于复化辛卜生求法n);else if (d1=d2)printf(复化梯形求法精度等于复化辛卜生求法n);else (d1d2);printf(复化梯形求法精度高于复化辛卜生求法n); 五、 运行结果 六、 对算法的理解与感悟实验四一、 实验要求 用改进欧拉方法解初值问题y=x+y; y(0)=1。0x1,取步长h=0.1计算,并与准确值 y=-x-1-2ex相比较。二、 实验目的1) 熟悉求解常微分方程初值问题的有关方法和理论,主要是改进欧拉方法。2) 会编制上述方法的计算程序。3) 针对实习题编制程序,并上机计算其所需要的结果。4) 通过对各种求解方法的计算实习,体会各种解法的功能、优缺点及适用场合,会选取适当的求解方法三、 算法描述 解一阶常微分方程初值问题将区间a,b作n等分,取步长欧拉公式为四、 源程序 #include#include#define M_E 2.71828182845904523536double yp(double x,double y,double h);double yc(double x,double y,double h);double yx(double x);int main()double xn=0;double yn=1,yxn;double h=0.1;int i;printf(/* 实验四:n用改进欧拉方法解初值问题y=x+y; y(0)=1。0x1,取步长h=0.1计算,n 并与准确值 y=-x-1-2ex相比较nn);printf(ttxntt yn tt y(xn) n);for(i=0;i10;i+)yn=0.5*(yp(xn,yn,h)+yc(xn+h,yn,h);xn=xn+h;yxn=yx(xn);printf(%20f%20f%20fn,xn,yn,yxn);return 0;double yp(double x,double y,double h) return y+h*(x+y);double yc(double x,double y,double h) return y+h*(x+h+y);double yx(double x)return -x-1.0-2.0*exp(x);五、 运行结果 六、 对算法的理解与感悟实验五一、 实验要求分别用下列方法求f(x)=x3-3x-1=0在x0=2附近的根。根的准确值为x*=1.87938524,要求准确到四位有效数字,并对比各种算法的计算量。(1) 二分法;(2)简单迭代法;(3)牛顿迭代法二、 实验目的 1、通过对二分法和牛顿迭代法作编程练习和上机运算,进一步体会它们在方程求根中的不同特点;2、比较二者的计算速度和计算精度。三、 算法描述 1、二分法步骤一准备计算f(x)在有根区间a,b端点处的值f(a),f(b)。步骤二二分计算f(a)在区间中点(a+b)/2处的值f(a+b)/2。步骤三判断若f(a+b)/2=0,则(a+b)/2为根,计算结果结束,否则检验;若f(a+b)/2(为用户输入的精度),则以x1替换x0继续迭代;当|x1-x0|时终止计算,取x1作为所求的结果。3、牛顿迭代法给定初值,为根的容许误差,为的容许误差,N为迭代次数的容许值。(1) 如果=0或迭代次数大于N,则算法失败,结束;否则执行(2)。(2) 计算=-(3) 若或,则输出,程序结束;否则执行(4)。(4) 令=,转向(1)。 四、 源程序 1、二分法#include using namespace std;float jisuan (float x);int main ()cout*使用二分法求解*endl;coutab;coutw;float fl,fr,fz;fl=jisuan(a);fr=jisuan(b);for (int i=1;(b-a)=w;i+)fz=jisuan(a+b)/2);if (fz=0)cout二分法求解函数的近似根为:(a+b)/2endl;break;elsecout第i个分点为:;printf (%fn,(a+b)/2);c=(a+b)/2;if (fz*fl0)b=(a+b)/2;elsea=(a+b)/2;cout二分法求解函数的近似根为:;printf (%fn,c);cout迭代次数为:i-1endl;return 0;float jisuan (float x)float fx;fx=x*x*x-3*x-1;return fx;2、简单迭代法#include #include using namespace std;int main ()coutw;float x0,x1;coutx0;x1=x0;int k=0;dox0=x1;x1=pow(3*x0+1),1/3.0);k+;while(fabs(x1-x0)w);cout简单迭代法求解近似根为:x1endl迭代次数为:kendl;return 0; 3、牛顿迭代法#include #include using namespace std;int main ()coutx0;coutw;float x1,f0,f;f0=x0*x0*x0-3*x0-1;f=3*x0*x0-3;x1=x0-f0/f;int k;for (k=1;fabs(x1-x0)w;k+)x0=x1;f0=x0*x0*x0-3*x0-1;f=3*x0*x0-3;x1=x0-f0/f;cout牛顿迭代法求解近似根为:x1endl迭代次数为:kendl;return 0;五、 运行结果 六、对算法的理解与感悟实验六一、 实验要求 分别用高斯列主元消去法和直接三角分解法(LU分解)求方程组的解系数矩阵:10 7 8 7 常向量:10 7 5 6 5 8 8 6 10 9 6 7 5 9 10 7精确解为:(-60,102,-27,16)二、 实验目的1) 熟悉求解线性方程组的有关理论和方法;2) 会编制列主元消去法、LU分解法、雅可比及高斯-塞德尔迭代法的程序;3) 通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法。三、 算法描述 1、列主元高斯消去法算法将方程用增广矩阵Ab=(表示1) 消元过程对k=1,2,n-1选主元,找使得=如果,则矩阵A奇异,程序结束;否则执行。如果,则交换第k行与第行对应元素位置, j=k,n+1消元,对i=k+1, ,n计算对j=l+1, ,n+1计算2) 回代过程若,则矩阵A奇异,程序结束;否则执行。;对i=n-1, ,2,1,计算2、矩阵直接三角分解法将方程组中的A分解为,其中L为单位下三角矩阵,U为上三角矩阵,则方程组化解为2个方程组,具体算法如下四、 源程序 #includemain()double a44=10, 7 ,8 ,7, 7, 5 ,6 ,5,8 ,6 ,10 ,9 ,7 ,5 ,9, 10 ;double b5=10 ,8 ,6 , 7, x4=0, m, l44, u44, t=0, y4;int i, j , k ,choice;printf(矩阵为:n);for(i=0;i4;i+)for(j=0;j4;j+)printf(%.2lft,aij);printf(n)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 实验室安全检查汇报报告
- 供应链管理风险控制方案及案例分享
- 企业远程办公实施方案模板
- 胶质细胞瘤影像诊断与分析
- 双峰水库安全培训课件
- 企业内部审计工作方案及实施步骤
- 医药产品市场推广策划方案
- 银行电子支付风险监控体系
- 岗位职业健康安全管理手册
- 2.3氧气的制备-九年级化学沪教版上册
- 自主移动机器人教学课件第4章 导航规划 2 避障规划和轨迹规划
- GB 31628-2014食品安全国家标准食品添加剂高岭土
- GA/T 1312-2016法庭科学添改文件检验技术规程
- 大学物理实验长测量
- 卫生政策学之政策问题根源分析
- 步进电机及其工作原理-电机的工作原理及特性课件
- 基于CAN通讯的储能变流器并机方案及应用分析报告-培训课件
- 腹直肌分离康复(产后康复课件PPT)
- 聚合物成型的理论基础课件
- 药监系统官方培训06细菌内毒素方法介绍-蔡彤
- 慢性中耳炎的并发症课件
评论
0/150
提交评论