数值计算LU分解实验报告
- 格式:docx
- 大小:8.00 KB
- 文档页数:3
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==lu分解步骤篇一:选主元LU分解过程中的步骤1PA=LUP=PN-1PN-2?P1-1-1-1-1PN-1PN-2?P1A=LUA=(P1P2?PN-2PN-1)LU=(PN-1PN-2?P1)LU-1而方阵置换矩阵Pm=P,则有A=(P1P2?PN-2PN-1)LU-1m2A-1=U-1L(P1P2?PN-1)-1-1=U-1LPN-1?P2P1-1-1-1-1=U-1LPN-1?P2P1-1 篇二:LU分解法程序及其运行结果实验报告线性方程组的求解一.上机题目已知方程组为:x1-2*x2+2*x3=-2;2*x1-3*x2-3*x3=4;4*x1+x2+6*x3=3;分别用矩阵的三角分解法和高斯列主元消去法求方程组的解二.目的要求掌握用矩阵的三角分解法和高斯列主元消去法设计程序,从而实现对线性方程组的求解。
三.方法原理1.高斯消去法是通过逐步消元的方法把原方程组化为等价的上三角形方程组,然后回代的求解过程。
高斯列主元消去法是在高斯消去法第k步时,不取a[k][k]作为主元,而是取满足|a[r][k]|=max|a[i][k]|(k<=i<=n)的a[r][k]作为主元,若有多个r满足则取最小的,然后再去交换第r行与第k行;最后利用高斯消元法求解。
2. 矩阵的三角分解法是方程组的系数矩阵A可以分解为一个下三角阵L和一个上三角阵U的乘积,即A=LU,则AX=b为LUX=b,根据Ly=b和UX=y求出方程组的解。
其中求L,U的过程为:先计算U的第一行和L的第一列U[1][j]=a[1][j](1<=j<=n),L[i][1]=a[i][1]/U[1][1];然后根据U[k][j]=a[k][j]-∑L[k][r]*U[r][j](1<=r<=k-1;j=k,k+1,…n)和L[i][k]=(a[i][k]-∑L[i][r]*U[r][k])/U[k][k](1<=r<k-1;i=k+1,…n)计算出U的第k行和L的第k列,从而求出L和U矩阵四.算法步骤(N-S流程图)1.矩阵的三角分解法算法步骤如下:Step1:计算U的第一行和L的第一列U的第一行:i=1时a[1][j]=L[1][1]*U[1][j]则U[1][j]=a[1][j]L[1][1]=1 (j=1,2,…n );L的第一列:j=1时 a[i][1]=L[i][1]*U[1][1]则L[i][1]=a[i][1]/a[1][j] (i=2,3,…n);Step2:计算U的第二行和L的第二列U的第二行:i=2时a[2][j]=L[2][1]*U[1][j]+L[2][2]*U[2][j]L[2][2]=1则U[2][j]=a[2][j] –L[2][1]*U[1][j](j=2,3,…n);L的第二列:j=2时 a[i][2]=L[i][1]*U[1][2]]+L[i][2]*U[2][2]则L[i][2]=(a[i][2]-L[i][1]*U[1][2])/U[2][2] (i=3,4,…n);Step3:假设已经进行了(k-1)步,得到了U的前k-1行和L的前k-1列,则计算U的第k行和L的第k列U的第k行:i=k时 U[k][j]=a[k][j]-∑L[k][r]*U[r][j](1<=r<=k-1;j=k,k+1,…n)L的第k列:j=k时 L[i][k]=(a[i][k]-∑L[i][r]*U[r][k])/U[k][k] (1<=r<k-1;i=k+1,…n)Step4:利用L,U求解方程组的解根据A=L*U,A*X=y,从而得到 Ly=b和UX=y,然后根据高斯消元法的回代部分即可分别求出y和x2. 高斯列主元消去法算法步骤如下:Step1:选出列主元a[r][k]=max|a[i][k]| (k<=i<=n);Step2:判断方程组是否适合使用该方法求解若a[r][k]<e,则方程组不适合使用该方法求解,程序结束,否则进行下一步Step3:若r不等于k,交换r,k行Step4:高斯消元求解过程消元过程:当k=0,i=1时,令a[1][0]=a[1][0]/a[0][0]; b[1]=b[1]-a[1][0]*b[1]; j=1时a[1][1]=a[1][1]-a[1][0]*a[0][1]当消元进行到第k次时,令a[k][k-1]=a[k][k-1]/a[k-1][k-1]; b[k]=b[k]-a[k][k-1]*b[k]; j=k时a[k][k]=a[k][k]-a[k][k-1]*a[k][k-1]回代求解过程:b[n-1]=b[n-1]/a[n-1][n-1];当k=n-1时,b[k]=(b[k]-∑a[k][j]*b[j])/a[k][k](k+1<=j<=n;k=n-1,n-2,...1);返回值b[k]即为所求解。
数值计算方法实验报告一、实验介绍本次实验是关于数值计算方法的实验,旨在通过计算机模拟的方法,实现对于数值计算方法的掌握。
本次实验主要涉及到的内容包括数值微积分、线性方程组的求解、插值与拟合、常微分方程的数值解等。
二、实验内容1. 数值微积分数值微积分是通过计算机模拟的方法,实现对于微积分中的积分运算的近似求解。
本次实验中,我们将会使用梯形公式和辛普森公式对于一定区间上的函数进行积分求解,并比较不同公式的计算误差。
2. 线性方程组的求解线性方程组求解是数值计算领域中的重要内容。
本次实验中,我们将会使用高斯消元法、LU分解法等方法对于给定的线性方程组进行求解,并通过比较不同方法的计算效率和精度,进一步了解不同方法的优缺点。
3. 插值与拟合插值与拟合是数值计算中的另一个重要内容。
本次实验中,我们将会使用拉格朗日插值法和牛顿插值法对于给定的数据进行插值求解,并使用最小二乘法对于给定的函数进行拟合求解。
4. 常微分方程的数值解常微分方程的数值解是数值计算中的难点之一。
本次实验中,我们将会使用欧拉法和龙格-库塔法等方法对于给定的常微分方程进行数值解的求解,并比较不同方法的计算精度和效率。
三、实验结果通过本次实验,我们进一步加深了对于数值计算方法的理解和掌握。
在数值微积分方面,我们发现梯形公式和辛普森公式都能够有效地求解积分,但是辛普森公式的计算精度更高。
在线性方程组求解方面,我们发现LU分解法相对于高斯消元法具有更高的计算效率和更好的数值精度。
在插值与拟合方面,我们发现拉格朗日插值法和牛顿插值法都能够有效地进行插值求解,而最小二乘法则可以更好地进行函数拟合求解。
在常微分方程的数值解方面,我们发现欧拉法和龙格-库塔法都能够有效地进行数值解的求解,但是龙格-库塔法的数值精度更高。
四、实验总结本次实验通过对于数值计算方法的模拟实现,进一步加深了我们对于数值计算方法的理解和掌握。
在实验过程中,我们了解了数值微积分、线性方程组的求解、插值与拟合、常微分方程的数值解等多个方面的内容,在实践中进一步明确了不同方法的特点和优缺点,并可以通过比较不同方法的计算效率和数值精度来选择合适的数值计算方法。
实验报告线性方程组的求解一.上机题目已知方程组为:x1-2*x2+2*x3=-2;2*x1-3*x2-3*x3=4;4*x1+x2+6*x3=3;分别用矩阵的三角分解法和高斯列主元消去法求方程组的解二.目的要求掌握用矩阵的三角分解法和高斯列主元消去法设计程序,从而实现对线性方程组的求解。
三.方法原理1.高斯消去法是通过逐步消元的方法把原方程组化为等价的上三角形方程组,然后回代的求解过程。
高斯列主元消去法是在高斯消去法第k步时,不取a[k][k]作为主元,而是取满足|a[r][k]|=max|a[i][k]|(k<=i<=n)的a[r][k]作为主元,若有多个r满足则取最小的,然后再去交换第r行与第k行;最后利用高斯消元法求解。
2. 矩阵的三角分解法是方程组的系数矩阵A可以分解为一个下三角阵L和一个上三角阵U的乘积,即A=LU,则AX=b为LUX=b,根据Ly=b和UX=y求出方程组的解。
其中求L,U的过程为:先计算U的第一行和L的第一列U[1][j]=a[1][j](1<=j<=n),L[i][1]=a[i][1]/U[1][1];然后根据U[k][j]=a[k][j]-∑L[k][r]*U[r][j](1<=r<=k-1;j=k,k+1,…n)和L[i][k]=(a[i][k]-∑L[i][r]*U[r][k])/U[k][k](1<=r<k-1;i=k+1,…n)计算出U的第k行和L的第k 列,从而求出L和U矩阵四.算法步骤(N-S流程图)1.矩阵的三角分解法算法步骤如下:Step1:计算U的第一行和L的第一列U的第一行:i=1时a[1][j]=L[1][1]*U[1][j]则U[1][j]=a[1][j] L[1][1]=1 (j=1,2,…n );L的第一列:j=1时a[i][1]=L[i][1]*U[1][1]则L[i][1]=a[i][1]/a[1][j] (i=2,3,…n);Step2:计算U的第二行和L的第二列U的第二行:i=2时a[2][j]=L[2][1]*U[1][j]+L[2][2]*U[2][j] L[2][2]=1则U[2][j]=a[2][j] –L[2][1]*U[1][j] (j=2,3,…n);L的第二列:j=2时 a[i][2]=L[i][1]*U[1][2]]+L[i][2]*U[2][2]则L[i][2]=(a[i][2]-L[i][1]*U[1][2])/U[2][2] (i=3,4,…n);Step3:假设已经进行了(k-1)步,得到了U的前k-1行和L的前k-1列,则计算U的第k行和L的第k列U的第k行:i=k时U[k][j]=a[k][j]-∑L[k][r]*U[r][j] (1<=r<=k-1;j=k,k+1,…n)L的第k列:j=k时L[i][k]=(a[i][k]-∑L[i][r]*U[r][k])/U[k][k] (1<=r<k-1;i=k+1,…n)Step4:利用L,U求解方程组的解根据A=L*U,A*X=y,从而得到 Ly=b和UX=y,然后根据高斯消元法的回代部分即可分别求出y和x2. 高斯列主元消去法算法步骤如下:Step1:选出列主元a[r][k]=max|a[i][k]| (k<=i<=n);Step2:判断方程组是否适合使用该方法求解若a[r][k]<e,则方程组不适合使用该方法求解,程序结束,否则进行下一步Step3:若r不等于k,交换r,k行Step4:高斯消元求解过程消元过程:当k=0,i=1时,令a[1][0]=a[1][0]/a[0][0];b[1]=b[1]-a[1][0]*b[1]; j=1时a[1][1]=a[1][1]-a[1][0]*a[0][1]当消元进行到第k次时,令a[k][k-1]=a[k][k-1]/a[k-1][k-1]; b[k]=b[k]-a[k][k-1]*b[k]; j=k时a[k][k]=a[k][k]-a[k][k-1]*a[k][k-1]回代求解过程:b[n-1]=b[n-1]/a[n-1][n-1];当k=n-1时,b[k]=(b[k]-∑a[k][j]*b[j])/a[k][k](k+1<=j<=n;k=n-1,n-2,...1);返回值b[k]即为所求解。
实验二:插值法专业班级:信息与计算科学112班 姓名:马晶 学号:2011014856(1)实验目的:a.熟悉MA TLAB 编程,学会用MATLAB 实现用插值法求多项式;掌握用画图命令显示所得的多项式的图形,根据所得图形分析问题b. 学习插值方法及程序设计算法,体会多项式插值法和三次样条插值法的不同,比较两种插值哪个更精确?(2)实验题目:1. 已知函数在下列各点的值为x i 0.2 0.4 0.6 0.8 1.0F(x i ) 0.98 0.92 0.81 0.64 0.38试用4次牛顿插值多项式P 4(x)及三次样条函数S(x)(自然边界条件)对数据进行插值.用图给出{( x i,y i ), x i =0.2+0.08i,i=0,1,11,10}, P 4(x)及S(x).2.在区间[-1,1]上分别取n=10﹑20用两组等距节点对龙格函数21()125f x x=+作多项式插值及三次样条插值,分别画出插值函数及()f x 的图形.3.下列数据点的插值x 0 14 9 16 25 36 49 64 y 0 1 2 345678可以得到平方根函数的近似,在区间[0,64]上作图. (1)用这9个点作8次多项式插值()0010012010101()()[,]()[,,]()()[,,,]()n n n P x f x f x x x x f x x x x x x x f x x x x x x x -=+-+--+--LL L(2)用三次样条(第一边界条件)程序求().S x从得到结果看在[0,64]上,哪个插值更精确;在区间[0,1]上,两种插值哪个更精确?(3)试验理论与理论基础: 1.多项式插值:设在区间[a,b]上给定n+1个点01n a x x x b ≤<<<≤L上的函数值()(0,1,,),i i y f x i n ==L 求次数不超过n 的多项式,使(),0,1,,.i i y P x i n ==L 然后得到关于系数01,,,n a a a L 的n+1元线性方程组010*********,,nn nn n n n n na a x a x y a a x a x y a a x a x y ⎧+++=⎪+++=⎪⎨⎪⎪+++=⎩L L ML该方程的系数矩阵为范德蒙德矩阵,通过带入数据可以直接得到唯一解,,,a a a L ,故可求得插值多项式P(x).2.牛顿插值多项式:()0010012010101()()[,]()[,,]()()[,,,]()n nn P x f x f x x x x f xx x x x x x f x x x x xx x -=+-+--+--LL L其中3.三次样条插值: 1. 样条函数在[a,b]上取n+1个插值结点a=x 0<x 1 <…<x n =b,已知函数f(x)在这n+1个点的函数值为y k =f(x k ), 则在[a,b]上函数y=f(x) 的m 次样条插值函数S(x)满足: (1) S(x) 在(a,b)上直到m-1阶导数连续; (2) S(x k )=y k ,(k=0,1,…,n) ;(3) 在区间[x k ,x k+1 ](k=0,1,…,n -1)上,S(x)是m 次多项式。
数值分析实验报告(1)学院:信息学院班级:计算机0903班姓名:***学号:********课题一A.问题提出给定下列几个不同类型的线性方程组,请用适当的方法求解线性方程组1、设线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------------------1368243810041202913726422123417911101610352431205362177586832337616244911315120130123122400105635680000121324⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-2119381346323125 x *= ( 1, -1, 0, 1, 2, 0, 3, 1, -1, 2 )T2、设对称正定阵系数阵线方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----------------------19243360021411035204111443343104221812334161206538114140231212200420424⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡87654321x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---4515229232060 x * = ( 1, -1, 0, 2, 1, -1, 0, 2 )T3、三对角形线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡------------------4100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----5541412621357 x *= ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 )TB.(1)对上述三个方程组分别用Gauss 顺序消去法与Gauss 列主元消去法;平方根 与改进平方根法;追赶法求解(选择其一) (2)编写算法通用程序(3)在应用Gauss 消去时,尽可能利用相应程序输出系数矩阵的三角分解式C.(1)通过该课题的程序编制,掌握模块化结构程序设计方法 (2)掌握求解各类线性方程组的直接方法,了解各种方法的特点 (3)体会高斯消去法选主元的必要性 实验步骤:(高斯消去法,列主元,LU )1顺序高斯消去法2.LU 分解法3.列主元高斯消去法(如下图)(1)高斯消去法运行结果如下(2)对方程的系数矩阵进行LU分解并求出方程组的解(3)列主元高斯消去法实验体会总结:利用gauss消去法解线性方程组的时候,如果没有经过选主元,可能会出现数值不稳定的现象,使得方程组的解偏离精确解。
计算机上机实验报告课程名称:MA TLAB数值计算教师姓名:谭小球日期:2016年9月12日学号:150607116 学生姓名:李妙锋班级:Z15计算机院系:数理与信息学院实验题目:UL分解实验报告1、实验名称实现LU算法,并利用该算法求解线性方程组2、实验目的了解如何用LU三角分解法解线性方程组,利用LU三角分解法解线性方程组3、实验原理设无行交换变换的高斯消去法可求解一般线性方程组AX=B,则矩阵A可分解为一个下三角矩阵L和一个上三角矩阵U乘积:A=LU而且L的对角线元素为1,U的对角线元素非零。
得到L和U后,可通过如下步骤得到X:1.利用向前替换法对方程组L Y=B求解Y。
2.利用回带法对方程组UX=Y求解X。
4、实验步骤1.输入矩阵A2.LU分解A,得到L矩阵与U矩阵的值[L U]=LU_1(A)3.输入矩阵B,利用向前回带法求出Y值Y=upsub(L,B)4.利用回带发求出X值[X]=backsub(U,Y)5、实验程序1.LU分解代码:function [L U]=LU_1(A)n=length(A(1,:));L=eye(n);U=zeros(n);for j=1:nU(1,j)=A(1,j);endfor i=2:nL(i,1)=A(i,1)/U(1,1);endfor k=2:nfor j=k:nU(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j);endfor i=k+1:nL(i,k)=(A(i,k)-L(i,1:k-1)*U(1:k-1,k))/U(k,k);endend结果:2.向前回带法代码:%向前代入法function Y=upsub(A,B)n=length(B);Y=zeros(n,1);Y(1)=B(1)/A(1,1);for k=2:nY(k)=(B(k)-A(k,1:k-1)*Y(1:k-1))/A(k,k);end结果:3.回带法代码:%回代法function [X]=backsub(A,B)n=length(B);X=zeros(n,1);X(n)=B(n)/A(n,n);for k=n-1:(-1):1X(k)=(B(k)-A(k,k+1:n)*X(k+1:n))/A(k,k);end结果:6、实验分析LU分解法比较简便迅速,当解多个系数矩阵为A的线性方程做时,LU分解法就显得特别优越,只要对系数矩阵做一次LU分解,以后只要解三角形方程即可。
数值分析上机报告①高斯消去法利用高斯消去法的matlab程序源代码:A=[10,-7,0,1;-3,2.099999,6,2;5,-1,5,-1;2,1,0,2];b=[8;5.900001;5;1];x=A\bc=det(A)上述程序中A表示计算实习题1中线性方程组的系数矩阵,b表示线性方程组右边的矩阵,x表示线性方程组的解。
C所输出的是系数矩阵A的行列式的值。
程序运行结果:②列主元的高斯消去法利用列主元的高斯消去法matlab程序源代码:首先建立一个gaussMethod.m的文件,用来实现列主元的消去方法。
function x=gaussMethod(A,b)%高斯列主元消去法,要求系数矩阵非奇异的,%n = size(A,1);if abs(det(A))<= 1e-8error('系数矩阵是奇异的');return;end%for k=1:nak = max(abs(A(k:n,k)));index = find(A(:,k)==ak);if length(index) == 0index = find(A(:,k)==-ak);end%交换列主元temp = A(index,:);A(index,:) = A(k,:);A(k,:) = temp;temp = b(index);b(index) = b(k); b(k) = temp;%消元过程for i=k+1:nm=A(i,k)/A(k,k);%消除列元素A(i,k+1:n)=A(i,k+1:n)-m*A(k,k+1:n);b(i)=b(i)-m*b(k);endend%回代过程x(n)=b(n)/A(n,n);for k=n-1:-1:1;x(k)=(b(k)-A(k,k+1:n)*x(k+1:n)')/A(k,k);endx=x';end然后调用gaussMethod函数,来实现列主元的高斯消去法。