计算数值方法实验报告

您所在的位置:网站首页 用追赶法解三对角方程组ax=f 计算数值方法实验报告

计算数值方法实验报告

2023-04-05 18:17| 来源: 网络整理| 查看: 265

1、计算数值方法实验报告学院:软件学院专业:软件工程班级:软件1012班学号:2010004719姓名:乔婧峰太原理工大学学生实验报告学院名称软件学院专业班级软件1012班学号2010004719学生姓名乔婧峰实验日期20124成绩课程名称数值计算方法实验题目实验一 二分法一、课题名称方程求根:熟悉使用、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。选择上述方法中的两种方法求方程:二分法f(x)=x3+4x2-10=0在1,2内的一个实根,且要求满足精度|x*-xn|0.510-5迭代法:用迭代公式x=f(x)进行迭代计算,直到满足|x*-xn|0.510-5 为止 。割线法:x=x-f(

2、x)/g(x),其中f(x)为给定的函数,g(x)为给定函数的导数,直到满足|x*-xn|0.510-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,ab 如果f(a+b)/2=0,该点就是零点, 如果f(a+b)/2a,从开始继续使用 中点函数值判断。 如果f(a+b)/20,则在区间(

3、a,(a+b)/2)内有零点,(a+b)/2a; float t, 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);割线法: #include stdafx.h#includestdio.h#includemath.h#includeiostreamusing namespace std;float main() float c,a=1.0,b=2.0; /cinab; while(1) c=b-(b*b*b+4*b*b-10)*(b-a)/(b*

4、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分解法、追赶法求解下列方程组: (n=5,10,100)二、目的和意义(1)了解线性方程组常见的直接解法,

5、如Guass消元法、LU分解法、追赶法。(2)加深对线性方程组求解方法的认识,掌握算法。(3)会进行误差分析,并能对不同方法进行比较。三、计算公式 高斯分解法:将原方程组化为三角形方阵的方程组:lik=aik/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) LU分解法:将系数矩阵A转化为A=L*U, L为单位下三角矩阵,U为普通上三角矩阵,然后通过解方程组l*y=b,u*x=y

6、,来求解x.追赶法:用来求对角方程组;将系数矩阵A转化为A=L*U, L为普通下n-1对角矩阵,U为单位上n-1对角矩阵,然后通过解方程组l*y=b,u*x=y,来求解x.四、主要仪器设备Vc2008,hp五、结构程序设计 Gauss消元法:#include stdafx.h#includestdio.h#includeiostreamusing namespace std; float main() float a34=1,2,3,14,0,1,2,8,2,4,1,13; float x3; float sum=0; int k,i,j; for(k=0;k2;k+) for(i=k+1;i

7、3;i+) for(j=k+1;j4;j+)aij=aij-aik/akk*akj; for(i=0;i3;i+) for(j=0;j4;j+) printf(a%d%d=%f,i,j,aij); cout=0;k-) sum=0; for(j=k+1;j3;j+) sum+=akj*xj; xk=(ak3-sum)/akk; for(i=0;i3;i+)printf (x%d=%f,i+1,xi); LU分解法:#include stdafx.h#include #include #define L 30 double a L L , b L , l L L , u L L , x L ,

8、y L ; int main() int n, 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 =

9、 a k j ; for ( r = 1; r k; +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; r k; +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; j 0; -i ) x i = y i ; for ( j = i + 1; j = n; +j ) x i -= u i j * x j

10、; x i /= u i i ; for ( i = 1; i = n; +i ) printf( %0.2lfn, x i ); return 0;追赶法:#include stdafx.h#include stdio.hvoid main() FILE *f; double a15,b15,c15,d15; double t; int i,n; f=fopen(zgf.txt,r); fscanf(f,%d,&n); fscanf(f,%lf%lf%lf,&b1,&c1,&d1); for(i=2;i=n-1;i+) fscanf(f,%lf%lf%lf%lf,&ai,&bi,&ci,&d

11、i); fscanf(f,%lf%lf%lf,&an,&bn,&dn); fclose(f); c1=c1/b1; d1=d1/b1; For(i=2;i=1;i-) di=di-ci*di+1; printf(n*n); for(i=1;i=n;i+) printf(d%2d=%lfn,i,di);Zgf.txt文件中的内容是:52 1 -71 2 1 -5 1 2 1 -5 1 2 1 -5 1 2 -5六、结果讨论和分析Gauss消元法:LU分解法:追赶法:分析从消元过程可以看出,对于n阶线性方程组,只要各步主元素不为零,经过n-1步消元,就可以得到一个等价的系数矩阵为上三角形阵的方程组

12、,然后再利用回代过程可求得原方程组的解.消元过程相当于分解 A为单位下三角阵L与上三角阵U的乘积,解方程组Ly=b回代过程就是解方程组Ux=y。其中的L为n阶单位下三角阵、U为上三角阵. 在 A 的LU 分解中, L取下三角阵, U 取单位上三角阵,这样求解方程组Ax=d 的方法称为追赶法.实验地点ZSA401指导教师李志学院名称软件学院专业班级软件1012学号2010004719学生姓名乔婧峰实验日期20114成绩课程名称数值计算方法实验题目实验三 线性方程组的迭代解法一、课题名称线性方程组的迭代解法使用雅可比迭代法或高斯-赛德尔迭代法对下列方程组进行求解。 二、目的和意义学习使用雅可比迭代

13、法或高斯-赛德尔迭代法三、计算公式雅克比迭代法:设线性方程组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。四、主要仪器设备Vc2008,hp五、结构程序设计高斯-赛德尔迭代法:#include stdafx.h#include #include void main() float a33=10,-1,-2,-1,10,-2,-1,-1,5,b3=7.2,8.3,4.2;floa

14、t x3=0,0,0,sum1,sum2;int i,j,k,n=3;for (k=0;k10;k+) for(i=0;in;i+) sum1=0; sum2=0;for(j=0;ji;j+) sum1=sum1+aij*xj; for(j=i+1;j3;j+) sum2=sum2+aij*xj; xi=(bi-sum1-sum2)/aii; for(i=0;in;i+) printf(x%d=%f,i+1,xi); printf(n); 雅克比迭代:#include stdafx.h#include #include void main() float a33=10,-1,-2,-1,10,

15、-2,-1,-1,5,b3=7.2,8.3,4.2;float x3=0,0,0,sum1;int i,j,k,n=3;for (k=0;k10;k+) for(i=0;i3;i+) sum1=0; for(j=0;jn;j+) if(i=j) continue; sum1=sum1+aij*xj; xi=(bi-sum1)/aii; for(i=0;in;i+) printf(x%d=%f,i+1,xi);printf(n); 六、实验结果与分析:高斯-赛德尔迭代法:雅克比迭代:分析:使用高斯-赛德尔和雅克比迭代都可以求出方程组的解,但是利用高斯-赛德尔迭代法所需的迭代次数比雅克比迭代少,能

16、够更早的达到精度要求。实验地点ZSA401指导教师李志学院名称软件学院专业班级软件1012班学号2010004719学生姓名乔婧峰实验日期20114成绩课程名称数值计算方法实验题目实验四 最小二乘法拟合多项式一、课题名称(1)了解矩阵特征值与特征向量问题解法,掌握幂法。(2)加深对矩阵特征值与特征向量问题求解方法的认识,掌握算法。(3)会进行误差分析。二、目的和意义 学习使用最小二乘法拟合多项式三、计算公式幂法:由已知的非零向量x0和矩阵A的乘幂构造向量序列xn以计算矩阵A的按模最大特征值及其特征向量的方法,称为幂法。迭代公式:结果可取 四、主要仪器设备Vc2008,hp五、结构程序设计 五、结果讨论和分析分析: 幂法是一种求任意矩阵A的按模最大特征值及其对应特征向量的迭代算法。该方法的最大优点是计算简单,容易在计算机上实现,对稀疏矩阵较为适合,但有时收敛速度很慢。实验地点综合楼六层606室指导教师王峥学院名称计算机科学与技术专业班级计算机学号1111111111学生姓名某某实验日期2011-6-20成绩课程名称数值计算方法实验题目实验五 代数插值一、 课题名称使用拉格朗日插值法或牛顿插值法求解:已知f(x)在6个点的函数值如下表所示,运用插值方法,求f(0.596)的



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3