Codigo de Descomposicion LU con pivoteo parcial
Publicado por Jose (2 intervenciones) el 30/11/2017 02:02:16
Podrían ayudarme a entender este codigo que voy a adjuntar por favor. Es para un deber y tengo que saber que hace cada línea. De antemano gracias. Adjunto el codigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
clear all
clc
A=input('ingrese la matriz A: ')
B=input('ingrese la matriz B: ')
[n,n]=size(A);
X=zeros(n,1);
D=zeros(n,1);
C=zeros(1,n);
Cp=zeros(1,n);
L=eye(n);
P=eye(n);
U=zeros(n,n);
U=A;
for q=1:n-1
[y,j]=max(abs(U(q:n,q)))
C=U(q,:)
U(q,:)=U(j+q-1,:)
U(j+q-1,:)=C
Cp=P(q,:);
P(q,:)=P(j+q-1,:);
P(j+q-1,:)=Cp;
if A(q,q)==0
'A es singular'
break
end
%Calculo del multiplicador,
for k=q+1:n
m=U(k,q)/U(q,q)
L(k,q) = m
U(k,q:n)=U(k,q:n)-m*U(q,q:n)
end
end
h=L(2,1);
L(2,1)=L(3,1);
L(3,1)=h;
L
%comprobacion
PA=P*A
LU=L*U
PB=P*B
D(1)=PB(1)/L(1,1);
for k=2:n
D(k)=(PB(k)-L(k,1:k-1)*D(1:k-1))/L(k,k);
end
X(n)=D(n)/U(n,n);
for k=n-1:-1:1
X(k)=(D(k)-U(k,k+1:n)*X(k+1:n))/U(k,k)
end
Valora esta pregunta
-3