计算数值方法实验报告--太原理工大学

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

计算数值方法实验报告学院:软件学院专业:软件工程班级:软件1012班....学号:2010004719姓名:乔婧峰太原理工大学学生实验报告学院名称软件学院专业班级软件1012班学号2010004719学生姓名乔婧峰实验日期2012.4成绩课程名称数值计算方法实验题目实验一二分法一、课题名称方程求根:熟悉使用、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。选择上述方法中的两种方法求方程:二分法f(x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度|x*-xn|0.5×10-5迭代法:用迭代公式x=f(x)进行迭代计算,直到满足|x*-xn|0.5×10-5为止。割线法:x=x-f(x)/g(x),其中f(x)为给定的函数,g(x)为给定函数的导数,直到满足|x*-xn|0.5×10-5为止。二、目的和意义(1)了解非线性方程求根的常见方法,如二分法、牛顿法、割线法。(2)加深对方程求根方法的认识,掌握算法。(3)会进行误差分析,并能对不同方法进行比较。三、计算公式f(x)在区间(x,y)上连续先找到a、b属于区间(x,y),使f(a),f(b)异号,说明在区间(a,b)内一定有....零点,然后求f[(a+b)/2],现在假设f(a)0,f(b)0,ab①如果f[(a+b)/2]=0,该点就是零点,如果f[(a+b)/2]0,则在区间((a+b)/2,b)内有零点,(a+b)/2=a,从①开始继续使用中点函数值判断。如果f[(a+b)/2]0,则在区间(a,(a+b)/2)内有零点,(a+b)/2=b,从①开始继续使用中点函数值判断。这样就可以不断接近零点。通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值四、主要仪器设备Vc2008,hp五、结构程序设计迭代法:#includestdafx.h#includestdio.h#includemath.h#includeiostreamusingnamespacestd;floatmain()....{floata;cina;floatt,x;x=a;do{x=sqrt((10-x*x*x)/4);t=a;a=x;}while(fabs(a-t)0.5*1e-5);printf(x=%f,a);system(pause);}割线法:#includestdafx.h#includestdio.h#includemath.h#includeiostreamusingnamespacestd;floatmain(){floatc,a=1.0,b=2.0;//cinab;while(1){c=b-(b*b*b+4*b*b-10)*(b-a)/(b*b*b+4*b*b-(a*a*a+4*a*a));if(fabs(b-c)0.5*0.000001)break;b=c;}coutc;}六、结果讨论和分析....割线法:迭代法:分析:使用不同的方法,可以不同程度的求得方程的解,不同的方法速度不同。实验地点ZSA401指导教师李志学院名称软件学院专业班级软件1012班学号2010004719学生姓名乔婧峰实验日期2012.4成绩....课程名称数值计算方法实验题目实验二线性方程组的直接解法一、课题名称线性方程组的直接解法合理利用Gauss消元法、LU分解法、追赶法求解下列方程组:①13814142210321321xxx②2178.4617.5911212592.1121130.6291.51314.593.04321xxxx③3772201161263841027851244321xxxx④55572112112112121nnxxxx(n=5,10,100………)二、目的和意义(1)了解线性方程组常见的直接解法,如Guass消元法、LU分解法、追赶法。(2)加深对线性方程组求解方法的认识,掌握算法。(3)会进行误差分析,并能对不同方法进行比较。三、计算公式高斯分解法:⑴将原方程组化为三角形方阵的方程组:lik=aik/akk....aij=aij-lik*akjk=1,2,…,n-1i=k+1,k+2,…,nj=k+1,k+2,…,n+1⑵由回代过程求得原方程组的解:xn=ann+1/annxk=(akn+1-∑akjxj)/akk(k=n-1,n-2,…,2,1)LU分解法:将系数矩阵A转化为A=L*U,L为单位下三角矩阵,U为普通上三角矩阵,然后通过解方程组l*y=b,u*x=y,来求解x.追赶法:用来求对角方程组;将系数矩阵A转化为A=L*U,L为普通下n-1对角矩阵,U为单位上n-1对角矩阵,然后通过解方程组l*y=b,u*x=y,来求解x.四、主要仪器设备Vc2008,hp五、结构程序设计Gauss消元法:#includestdafx.h#includestdio.h#includeiostreamusingnamespacestd;floatmain(){floata[3][4]={{1,2,3,14},{0,1,2,8},{2,4,1,13}};floatx[3];....floatsum=0;intk,i,j;for(k=0;k2;k++)for(i=k+1;i3;i++)for(j=k+1;j4;j++)a[i][j]=a[i][j]-a[i][k]/a[k][k]*a[k][j];for(i=0;i3;i++)for(j=0;j4;j++)printf(a[%d][%d]=%f,,i,j,a[i][j]);coutendl;x[2]=a[2][3]/a[2][2];for(k=1;k=0;k--){sum=0;for(j=k+1;j3;j++){sum+=a[k][j]*x[j];}x[k]=(a[k][3]-sum)/a[k][k];}for(i=0;i3;i++)printf(x[%d]=%f,,i+1,x[i]);}LU分解法:#includestdafx.h#includestdio.h#includemath.h#defineL30doublea[L][L],b[L],l[L][L],u[L][L],x[L],y[L];intmain(){intn,i,j,k,r;scanf(%d,&n);for(i=1;i=n;++i){for(j=1;j=n;++j){scanf(%lf,&a[i][j]);}}for(i=1;i=n;++i){scanf(%lf,&b[i]);}for(i=1;i=n;++i){for(j=1;j=n;++j)....{l[i][j]=0;u[i][j]=0.0;}}for(k=1;k=n;++k){for(j=k;j=n;++j){u[k][j]=a[k][j];for(r=1;rk;++r){u[k][j]-=l[k][r]*u[r][j];}}for(i=k+1;i=n;++i){l[i][k]=a[i][k];for(r=1;rk;++r){l[i][k]-=l[i][r]*u[r][k];}l[i][k]/=u[k][k];}l[k][k]=1.0;}for(i=1;i=n;++i){y[i]=b[i];for(j=1;ji;++j){y[i]-=l[i][j]*y[j];}}for(i=n;i0;--i){x[i]=y[i];for(j=i+1;j=n;++j){x[i]-=u[i][j]*x[j];}x[i]/=u[i][i];}for(i=1;i=n;++i){printf(%0.2lf\n,x[i]);}return0;}追赶法:#includestdafx.h#includestdio.hvoidmain(){....FILE*f;doublea[15],b[15],c[15],d[15];doublet;inti,n;f=fopen(zgf.txt,r);fscanf(f,%d,&n);fscanf(f,%lf%lf%lf,&b[1],&c[1],&d[1]);for(i=2;i=n-1;i++){fscanf(f,%lf%lf%lf%lf,&a[i],&b[i],&c[i],&d[i]);}fscanf(f,%lf%lf%lf,&a[n],&b[n],&d[n]);fclose(f);c[1]=c[1]/b[1];d[1]=d[1]/b[1];For(i=2;i=n-1;i++){t=b[i]-c[i-1]*a[i];c[i]=c[i]/t;d[i]=(d[i]-d[i-1]*a[i])/t;}d[n]=(d[n]-d[n-1]*a[n])/(b[n]-c[n-1]*a[n]);for(i=n-1;i=1;i--)d[i]=d[i]-c[i]*d[i+1];printf(\n********************************\n);for(i=1;i=n;i++)printf(d[%2d]=%lf\n,i,d[i]);Zgf.txt文件中的内容是:521-7121-5121-5121-512-5....六、结果讨论和分析Gauss消元法:LU分解法:追赶法:分析....从消元过程可以看出,对于n阶线性方程组,只要各步主元素不为零,经过n-1步消元,就可以得到一个等价的系数矩阵为上三角形阵的方程组,然后再利用回代过程可求得原方程组的解.消元过程相当于分解A为单位下三角阵L与上三角阵U的乘积,解方程组Ly=b回代过程就是解方程组Ux=y。其中的L为n阶单位下三角阵、U为上三角阵.在A的LU分解中,L取下三角阵,U取单位上三角阵,这样求解方程组Ax=d的方法称为追赶法.实验地点ZSA401指导教师李志学院名称软件学院专业班级软件1012学号2010004719学生姓名乔婧峰实验日期2011.4成绩课程名称数值计算方法实验题目实验三线性方程组的迭代解法....一、课题名称线性方程组的迭代解法使用雅可比迭代法或高斯-赛德尔迭代法对下列方程组进行求解。二、目的和意

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功