您的位置:首页 > 编程语言 > MATLAB

matlab实现高斯消去法、LU分解

2015-07-09 23:17 621 查看
朴素高斯消去法:

function x = GauElim(n, A, b)
if nargin < 2
for i = 1 : 1 : n
for j = 1 : 1 : n
A(i, j) = 1 / (i + j - 1);
end
b(i, 1) = 1;
end
end

for j = 1 : n - 1
if abs(A(j, j)) < eps;
error('zero pivot encountered');
end
for i = j + 1 : n
mult = A(i, j) / A(j, j);
for k = j + 1 : n
A(i, k) = A(i, k) - mult * A(j, k);
end
A(i, j) = 0;
b(i, 1) = b(i, 1) - mult * b(j);
end
end

for i = n : -1 : 1
for j = i + 1 : n
b(i, 1) = b(i, 1) - A(i, j) * x(j, 1);
end
x(i, 1) = b(i, 1) / A(i, i);
end
end

LU分解:

\[ A = LU\]

function [ L, U ] = LUfactory( n, A )
A
L = zeros(n);
for j = 1 : n
if abs(A(j, j)) < eps;
error('zero pivot encountered');
end
L(j, j) = 1;
for i = j + 1 : n
L(i, j) = A(i, j) / A(j, j);
mult = A(i, j) / A(j, j);
for k = j + 1 : n
A(i, k) = A(i, k) - mult * A(j, k);
end
A(i, j) = 0;
end
end
U = A;
L
U
end

input parameter:

n : the dimension of matrix A

A : the matrix A

output parameter

L : the matrix L

U : the matrix U

firstly, set the matrix L be all zero. When simplifying the matrix A to matrix U, set the lower triangular matrix elements.

The single line with only A, L and U is to print the matrix( in matlab ).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: