三角分解法的应用
1. 问题背景
在很多工程问题的时候,可能有很多的变量,建立了线性方程组。对于线性方程组的求解,人工计算很废时间,也很废精力。但是我们可以采用三角分解法来完成这种运算。
2. 数学模型
设N个未知数的线性方程组为:
a11x1a12x2a1nxnb1axaxaxb2112222nn2an1x1an2x2annxnbn
3. 算法及流程
三角分解法的流程:
AXb,ALUAXbLUXb(1)LYb,UXYX
将矩阵分解为A=LU,L为下三角矩阵,U为上三角矩阵。L和U是唯一的。如下式:
1m21Lm31mn1(1)a11U1m32mn2(1)a12(2)a2211a1(1)n(2)a2n(n)ann
对于三角矩阵的求解是非常简单,进行简单的回代即可以求解。
matlab程序
clc;
clear;
A=input('请输入线性方程组的系数矩阵A=');
b=input('请输入线性方程组右边的值b=');
n=length(A);
A=[A b];
L=eye(n);
U=zeros(n);
for i=1:n-1
for j=i:n-1
L(j+1,i)=A(j+1,i)/A(i,i);
A(j+1,:)=A(j+1,:)-L(j+1,i)*A(i,:);
end
end
U=A(:,1:n);
a1=[L b]
n=length(a1)-1;
y=zeros(n,1);
s=0;
for i=1:1:n
if i==1
y(1)=a1(1,n+1)/a1(1,1);
else
for j=1:1:i-1
s=s+a1(i,j)*y(j);
end
y(i)=(a1(i,n+1)-s)/a1(i,i);
s=0;
end
end
a2=[U y]
n=length(a2)-1;
for i=n:-1:1
s=0;
if i==n
x(i)=(a2(n,n+1)-s)/a2(n,n);
else
for j=n:-1:i
s=s+a2(i,j)*x(j);
end
x(i)=(a2(i,n+1)-s)/a2(i,i);
end
end
x
4. 计算结果及分析
请输入线性方程组的系数矩阵A=[2 2 3;4 7 7;-2 4 5]
请输入线性方程组右边的值b=[3;1;-7]
[L b]=
1 0 0 3
2 1 0 1
-1 2 1 -7
[U y ]=
2 2 3 3
0 3 1 -5
0 0 6 6
x =
2 -2 1
通过输入线性方程组的系数矩阵和右边的数值一列。通过程序的运算,将矩阵分解为L和U,一个下三角矩阵和一个上三角矩阵,然后通过三角矩阵的计算方法,通过回代最终得计算结果。编写的程序是合理的。采用此种方法可以计算线性方程组,但是变量非常多线性方程组,输入数据难,而且计算次数过多,效率不是很高。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuoyibo.cn 版权所有 湘ICP备2023022426号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务