Anuncio

Colapsar
No hay ningún anuncio todavía.

Calculo de la factorizacion pa=lu

Colapsar
X
 
  • Filtro
  • Hora
  • Mostrar
Borrar todo
nuevos mensajes

  • Matlab Calculo de la factorizacion pa=lu

    Escribe un programa que permita obtener las matrices correspondientes a la factorización LU, a partir de la
    matriz de coeficientes de un sistema de ecuaciones lineales.
    NOTA: Matlab suministra una función propia para el cálculo de la factorización LU, con pivoteo de filas. La
    sintaxis es, [L,U,P]=lu(A); donde L es una matriz triangular inferior, U una matriz triangular superior y P es
    la matriz de permutaciones que da cuenta del cambio de orden aplicado a las ecuaciones del sistema,
    P*A=LU.
    La función en Matlab debe admitir como entradas la matriz de coeficientes de un sistema y un vector columna
    con los términos independientes, y debe devolver, las matrices L,U y P y un vector columna con las
    soluciones del sistema.

    Tengo que crear este código y los que he hecho anteriormente me daban solucuiones diferentes a las que me
    da el comando de Matlab. Ayuda, por favor

  • #2
    Re: Calculo de la factorizacion pa=lu

    Si a alguien le interesa, ya conseguí resolverlo:

    function [P, L, U,x] = plu(A,b)
    [m, n] = size(A);
    if m ~= n
    error('La matriz debe ser cuadrada')
    end
    P = eye(n, n);
    L = eye(n, n);
    U = zeros(n, n);
    tol = sqrt(eps);
    sign = 1;

    for k = 1:n
    if abs(A(k, k)) < tol
    for r = k:n
    if abs(A(r, k)) >= tol
    break
    end
    if r == n
    if nargout == 4
    sign = 0;
    return
    else
    disp('A es singular con tolerancia')
    error(['No hay pivotaje en las columnas' int2str(k) '.'])
    end
    end
    end
    A([r k], 1:n) = A([k r], 1:n);
    if k > 1, L([r k], 1:k-1) = L([k r], 1:k-1);
    end
    P([r k], 1:n) = P([k r], 1:n);
    sign = -sign;
    end
    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) * (abs(A(k, j)) >= tol);
    end
    end

    Z=P*b;
    Y=inv(L)*Z;
    x=inv(U)*Y;
    L
    U
    P
    disp('La solución del sistema es:')
    disp(x)
    end

    Comentario

    Contenido relacionado

    Colapsar

    Trabajando...
    X