数值计算方法实验报告王春生讲解

上传人:我** 文档编号:114383860 上传时间:2019-11-11 格式:DOC 页数:23 大小:3.21MB
返回 下载 相关 举报
数值计算方法实验报告王春生讲解_第1页
第1页 / 共23页
数值计算方法实验报告王春生讲解_第2页
第2页 / 共23页
数值计算方法实验报告王春生讲解_第3页
第3页 / 共23页
数值计算方法实验报告王春生讲解_第4页
第4页 / 共23页
数值计算方法实验报告王春生讲解_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《数值计算方法实验报告王春生讲解》由会员分享,可在线阅读,更多相关《数值计算方法实验报告王春生讲解(23页珍藏版)》请在金锄头文库上搜索。

1、数值计算方法实验报告学院:计算机科学与技术学院专业:计算机科学与技术班级:0802班学号:2008001424姓名:王春生太原理工大学学生实验报告学院名称计算机科学与技术学院专业班级计算机0802学号2008001424学生姓名王春生实验日期成绩课程名称数值计算方法实验题目实验一 方程求根一、实验目的及意义:(1)了解非线性方程求根的常见方法,如二分法、牛顿法、割线法。(2)加深对方程求根方法的认识,掌握算法。(3)会进行误差分析,并能对不同方法进行比较。二、实验任务:选择上述方法中的两种方法求方程f(x)=x3+4x2-10=0在1,2内的一个实根,且要求满足精度|x*-xn|0.510-5

2、 。三、计算公式:(1)二分法公式f(x)在区间a,b上连续,且f(a)f(b)0,令x1=(a+b)/2,计算f(x1)。若f(x1)=0,则x=x1;若f(a) f(x1)0,则记(a,b)=(x1,b);重复此过程,直至满足精度要求,(b-a)/2。 (2)牛顿法迭代公式: 四、结构程序设计1)二分法源代码:/二分法.cpp#include #include using namespace std;double fx(double x)return (x*x*x)+(4*x*x)-10);void main()double A,B,mid,result,accuracy=0.000005

3、;double a0=1.0,b0=2.0;coutf(x)=x3+4x2-10=0 1,2 |x*-xn|0.5*10-5endl; cout*endl;doA=a0,B=b0;mid=(A+B)/2;if( fx(mid)=0)result=mid;a0=A,b0=B;else if (fx(A)*fx(mid)0)a0=A;b0=mid;coutA=setw(10)setprecision(10)a0 B=setw(10)setprecision(10)b0endl; else if(fx(mid)*fx(B)0) a0=mid;b0=B; coutA=setw(10)setprecis

4、ion(10)a0 B=setw(10)setprecision(10)b0=accuracy);cout*endl;coutthe result is X=setw(10)setprecision(10)resultendl;coutA=setw(10)setprecision(10)a0endl;coutB=setw(10)setprecision(10)b0endl;2)牛顿法源代码:/牛顿法.cpp/f(x)=x3+4x2-10=0 |x-xn|0.5*10(-5)#include #include using namespace std;double f(double x)retur

5、n (x*x*x+4*x*x-10);double fo(double x)return (3*x*x+8*x);int main()double x0=1,y;double temp,x1,xn;x1=x0;doxn=x1-f(x1)/fo(x1);temp=x1;x1=xn;y=xn-temp;if (y0)y=(-y);coutxn=setprecision(6)xn=0.000005);cout*endl;coutresult is xnendl;return 0;五、结果讨论和分析牛顿法结果: 分析:两种方法的结果是一样的。比较算法,可知牛顿法的收敛速度比二分法要快很多。二分法要求函

6、数连续,而牛顿法则要求函数的一阶导数存在。误差方面,二者都能达到所要求的精度。实验地点综合楼六层606室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科0802学号2008001424学生姓名王春生实验日期 成绩课程名称数值计算方法实验题目实验二 线性方程组的直接解法一、实验目的及意义:(1)了解线性方程组常见的直接解法,如Guass消元法、LU分解法、追赶法。(2)加深对线性方程组求解方法的认识,掌握算法。(3)会进行误差分析,并能对不同方法进行比较。二、实验任务:合理利用Gauss消元法: 三、计算公式:高斯分解法:将原方程组化为三角形方阵的方程组:lik=aik/

7、akk aij= aij- lik* akj k=1,2,n-1 i=k+1,k+2, ,n j=k+1,k+2, ,n+1由回代过程求得原方程组的解: xn= ann+1/ ann xk=( akn+1-akj xj)/ akk (k=n-1,n-2, ,2,1)四、结构程序设计1)Guass消元法源代码: /高斯.cpp#include stdio.hvoid main()FILE *f;double a1515;double b15,s;int i,j,k,n;f=fopen(Gaussdata.txt,r);fscanf(f,%d,&n);for(i=1;i=n;i+)for(j=1;

8、j=n;j+)fscanf(f,%lf,&aij);fscanf(f,%lf,&bi);fclose(f);k=1;dofor (j=k+1;j=n;j+) akj=akj/akk;bk=bk/akk;i=1;for(i=k+1;i=n;i+)for (j=k+1;j=1;i-) s=0;for(j=i+1;j=n;j+)s=s+aij*bj;bi=bi-s;for(i=1;i=n;i+)printf(b%2d=%lfn,i,bi);/ Gaussdata.txt31 2 3 140 1 2 82 4 1 13五、结果讨论和分析Guass消元法结果:分析:从消元过程可以看出,对于n阶线性方程组

9、,只要各步主元素不为零,即akk(k-1)0,经过n-1步消元,就可以得到一个等价的系数矩阵为上三角形阵的方程组,然后再利用回代过程可求得原方程组的解。实验地点计算机与软件学院606教室指导教师王峥太原理工大学学生实验报告学院名称计算机科学与技术专业班级计科0802学号2008001424学生姓名王春生实验日期成绩课程名称数值计算方法实验题目实验三 线性方程组的迭代解法一、实验目的及意义:(1)了解线性方程组常见的迭代解法,如雅克比迭代法、高斯塞德尔迭代法。(2)加深对线性方程组迭代求解方法的认识,掌握算法。(3)会进行误差分析,并能对不同方法进行比较。二、实验任务:使用雅可比迭代法或高斯-赛

10、德尔迭代法对下列方程组进行求解。 三、计算公式:雅克比迭代法:设线性方程组Ax=b的系数矩阵A可逆且主对角元素a11,a22,ann均不为零,令D=diag(a11,a22,ann)并将A分解成A=(A-D)+D从而线性方程组可写成Dx=(D-A)x+b则有迭代公式x(k+1)=B1x(k)+f1其中,B1=I-D-1A,f1=D-1b。四、结构程序设计雅克比迭代法源代码:/雅克比迭代.cpp#include #include #include using namespace std;double fx_1(double x2,double x3) return (0.1*x2+0.2*x3+0.72);double fx_2(double x1,double x3) return (0.1*x1+0.2*x3+0.83);double fx_3(double x1,double x2) return (0.2*x1+0.2*x2+0.84);double abs(double a) /abs取绝对值充值为double型 if (a=0) return(a); else return(-a);void main() double x1=0,x2=0,x3=

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号