实验报告(列主消元解方程)..docVIP

  • 10
  • 0
  • 约1.98千字
  • 约 6页
  • 2017-01-12 发布于重庆
  • 举报
实验报告(列主消元解方程).

实验报告 课程名称: _ 计算方法________________指导老师:______辛焕海______成绩:__________________ 实验名称:_______列主元消去法求解方程组____________实验类型: 上机实验________ 引言(背景等介绍) 问题描述(如目的等)(必填) 内容和原理(必填) 操作方法和实验步骤(流程图等)(必填) 实验数据记录和处理 实验结果与分析(必填) 讨论、心得 引言 利用克莱姆法则解方程组,计算量特别大。对于维数较高的矩阵,计算机也无能为力。因此在实际解方程组时,大多应用高斯消去法,乘法次数是维数n的三次方级别。而高斯消去法是“一锤子买卖”,对于不同的方程组解b向量,该方法又要重新进行消去,计算重复较慢。因此,将A矩阵实现L、U分解能很好地保留中间过程,对于不同的b只需作矩阵乘法即可得到解x.。当主对角元有0元素或绝对值较小元素时,高斯消去法会出现很大的数值误差,因此要对列元素进行比较,每次消去前作行交换,将绝对值最大的元最为除数,这就得到了列主元消去法。应用matlab编程,得到求解方程组的过程,计算十分方便。 问题表述 用列主元消去法求解方程组 计算解X 输出矩阵L U P 内容和原理 首先将A进行分解,使得PA=LU 对A矩阵第i列(i=1,2,3’’’n)依次进行判别,每次选择出绝对值最大的值作为分母,对A实行行变换,用P矩阵记录变化。再利用公式A(t,i)=A(t,i)/A(i,i) 在原矩阵上进行修改,再输出下三角矩阵L和上三角矩阵U,最后利用P、L、U对b进行计算,解出X向量。 流程图表述如下 实验步骤和实验结果 打开matlab程序 2. 编制程序源代码,如下图 3、运行结果如下 因此,该程序源代码记录如下 clear all A=input(输入需要分解的矩阵); b=input(输入方程的解); b=b; n=size(A); L=eye(n); U=zeros(n); P=eye(n); for(i=1:n-1) temp=abs(A(i,i)); x=i; for(t=i:n) %找出最大元,实现行交换,P记录行交换% if abs(A(t,i))temp temp=abs(A(t,i)); x=t ;end;end temp2=A(i,:); A(i,:)=A(x,:); A(x,:)=temp2; temp2=P(i,:); P(i,:)=P(x,:); P(x,:)=temp2; for(t=i+1:n) %在原矩阵上变换得到LU% A(t,i)=A(t,i)/A(i,i);end for(t=i+1:n) for(m=i+1:n) A(t,m)=A(t,m)-A(t,i)*A(i,m);end end end for(i=2:n) for(t=1:i-1) L(i,t)=A(i,t); end end for(i=1:n) for(t=i:n) U(i,t)=A(i,t); end end L U P x=U^(-1)*L^(-1)*P*b 最终输出得到方程组的解为x1=x2=x3=x4=x5=x6=x7=1,L、U、P矩阵输出如上图。 讨论与心得 对于满秩矩阵,LU三角分解法能很好、快速地实现分解,找出方程组的解。而对于A不满秩的情况,尽管能实现形式上的L、U分解,但得到的U矩阵不可逆,因此无法求出方程组的解,在使用前还需要判断det(A)是否等于0.对于det(A) 0的情况,运行结果如下。 尽管如此,matlab提供的数组运算功能十分强大, 为编程提供了许多便利,省去了C语言中利用循环遍历数组的麻烦。 专业:电气工程及其自动化 姓名:_朱超越____ _______ 学号:3100103453________ 日期:_2012/3/18_________

文档评论(0)

1亿VIP精品文档

相关文档