Está en la página 1de 3

Código:

function [L,U]=slu(A)

[n,n] = size(A);

for k = 1:n

if abs(A(k, k)) < sqrt(eps)

disp(['Pivote muy pequeño encontrado en columna' int2str(k) '.'])

end

L(k,k) = 1;

for i = k+1:n

L(i,k) = A(i,k) / A(k,k);

for j = k+1:n

A(i,j) = A(i,j) - L(i,k)*A(k,j);

end

end

for j = k:n

U(k,j) = A(k,j);

end

end

Antes de comenzar la función, la matriz comienzo con 0, por lo que al


intentar operar para convertir en 0 arriba y abajo en L y U, no se podría
hacerlo bien

Ventana de Comandos:
>> slu

error: 'A' undefined near line 2, column 2

error: called from


slu at line 2 column 7

>> [L,U]=slu(A)

Pivote muy pequeño encontrado en columna1.

L=

1 0 0 0

Inf 1 0 0

-Inf NaN 1 0

Inf NaN NaN 1

U=

0 6 1 12

0 -Inf -Inf -Inf

0 0 NaN NaN

0 0 0 NaN

>>

Así que intercambié fila 2 con fila 2 y me sale el siguiente resultado

Ventana de Comandos:
>> A=[7 5 -2 5;0 6 1 12;-4 5 7 8;3 9 12 24]

A=

7 5 -2 5

0 6 1 12

-4 5 7 8

3 9 12 24
>> slu

error: 'A' undefined near line 2, column 2

error: called from

slu at line 2 column 7

>> [L,U]=slu(A)

L=

1.0000 0 0 0

0 1.0000 0 0

-0.5714 1.3095 1.0000 0

0.4286 1.1429 2.5759 1.0000

U=

7.0000 5.0000 -2.0000 5.0000

0 6.0000 1.0000 12.0000

0 0 4.5476 -4.8571

0 0 0 20.6545

También podría gustarte