以下为《列主元高斯消去法 计算方法实验报告》的无排版文字预览,完整内容请下载
计算方法实验报告
实验名称: 列主元高斯消去法
引言
在自然科学和工程中有很多问题的解决归结为求解线性或非线性方程组的数学问题。由传统的高斯消去法改进得到的选主元高斯消去法是目前计算机上常用的解低阶稠密矩阵的有效方法。其中,完全主元消去法是解低阶稠密矩阵方程组的有效方法,但完全主元消去法在选主元时要花费一定的计算机时间。本实验所用的列主元高斯消去法和列主元三角分解法是目前计算机解方程组的常用方法[1]。
实验目的和要求
通过列主元素消去法求解线性方程组,实现PA=LU。要求计算解x,L,U,整形数组IP(i),(i=1,2,…,)(记录主行信息)。
算法原理与流程图
原理
将A分解为两个三角矩阵的乘积A=LU。
对方程组的增广矩阵经过k-1步分解后,可变成如下形式:
第k步分解,为了避免用绝对值很小的数作除数,引进量
,于某某=。如果,则将矩阵的第t行与第k行元素互换,将(i,j)位置的新元素仍记为或,然后再做第k步分解,这时
流程图
程序代码及注释
文件名为SANJIAOFENJIE.m
A = [3 1 6 ;2 1 3 ;1 1 1 ]; %在此修改系数矩阵的值
B = [2;7;4]; %在此修改方程右边的常数
C=[A B];
hang=size(A,1); %得到矩阵的行
lie=size(A,2); %得到矩阵的列
flag=0;
X=ones(hang,1); %创建方程解的存放矩阵
%X = [x1;x2;x3……]
P=eye(hang,lie);
for a=1:lie %循环A的列数减一次
[my_max,rows] = max(abs(C(a:end,a))); %获得列主元位置
rows = rows+a-1;
if my_max == 0
flag = 1;
break; %当一整列元素都为0时退出计算
else
C([rows a],:)=C([a rows],:); %将主元交换到第a行
P([rows a],:)=P([a rows],:); %将单位阵与C一起交换行列生成置换阵P
end
for c=a+1:hang
C(c,:)=C(c,:)-C(c,a)/C(a,a)*C(a,:); %将系数矩阵第k行前k-1个数字消去变为0
end
end
C = P*A; %将矩阵左乘置换阵P
L = zeros(hang,lie); %创建L阵
U = zeros(hang,lie); %创建U阵
for i = 1:hang
U(1,i)=C(1,i);
L(i,1)=C(i,1)/U(1,1); %计算U的第一行和L的第一列
end
for r = 2:hang
for i = r:hang
x=0;
for k = 1:r-1
x=x+L(r,k)*U(k,i); %求和Lrk*Uki
内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 B中编写函数需要规范调用格式,如[x,l,u,p,ip]=lzylu(A,b)一共输出五个量,在调用时必须全部写出,若不写则只能输出x结果,得不得其他结果。
本题目需要记录主行交换的信息,输出数列IP,因此直接调用lu函数不合适。
参考文献
[1] 易某某,沈某某,李某某. 计算方法(第2版),浙江大学出版社. pp.175-181.
[2] 廖某某. 数值计算与最优化原理——MATLAB实现,北京邮电大学出版社
参考文献
[1] 袁某某, 久保川淳司, 佐佐木某某等. 基于内点法的含暂态稳定约束的最优潮流计算 [J]. 电力系统自动化, 2002, 26 (13): 14-19.
[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]
以上为《列主元高斯消去法 计算方法实验报告》的无排版文字预览,完整内容请下载
列主元高斯消去法 计算方法实验报告由用户“TR_owen”分享发布,转载请注明出处