Guia Prático de Métodos Numéricos no MATLAB

Classificado em Matemática

Escrito em em português com um tamanho de 3,36 KB

Métodos Numéricos no MATLAB

Operações Básicas com Matrizes

Crie uma matriz 3x3:

>> A = [1 5 6; 7 4 2; -3 6 7]

A transposta de [A]:

>> A'

Criaremos uma outra matriz 3x3 com base em linhas individuais. Primeiro são criados 3 vetores linha:

>> x = [8 6 9];
>> y = [-5 8 1];
>> z = [4 8 2];

Depois, podemos combiná-los para formar a matriz:

>> B = [x; y; z]

Podemos somar ou subtrair A e B:

>> C = A + B

Duas formas de multiplicação (com dimensões internas compatíveis):

>> A * B
>> A .* B

Inversão e Identidade

A inversa da matriz pode ser calculada com a função inv:

>> AI = inv(A)

Para verificar se o resultado está correto, a inversa multiplicada pela matriz original fornece a matriz identidade:

>> A * AI

A função eye pode ser usada para gerar uma matriz identidade:

>> I = eye(3)

Permutação e Manipulação

Podemos definir uma matriz de permutação para trocar linhas e colunas:

>> P = [0 0 1; 0 1 0; 1 0 0]
>> PA = P * A  % Troca de linhas
>> AP = A * P  % Troca de colunas

Matrizes podem ser aumentadas:

>> Aum = [A I]

As dimensões de uma matriz podem ser determinadas utilizando a função size:

>> [n, m] = size(Aum)

Sistemas de Equações Lineares

O MATLAB fornece dois meios diretos para resolver sistemas lineares:

  • Operador barra invertida (divisão à esquerda): x = A \ b
  • Inversão da matriz: x = inv(A) * b

Determinantes e Regra de Cramer

O determinante pode ser calculado com a função det:

>> D = det(A)

Implementação de Algoritmos

Eliminação de Gauss Ingênua

function x = GaussIngenua(A, b)
    [m, n] = size(A);
    if m ~= n, error('A matriz A deve ser quadrada'); end
    nb = n + 1; Aum = [A b];
    for k = 1:n-1
        for i = k+1:n
            fator = Aum(i, k) / Aum(k, k);
            Aum(i, k:nb) = Aum(i, k:nb) - fator * Aum(k, k:nb);
        end
    end
    x = zeros(n, 1);
    x(n) = Aum(n, nb) / Aum(n, n);
    for i = n-1:-1:1
        x(i) = (Aum(i, nb) - Aum(i, i+1:n) * x(i+1:n)) / Aum(i, i);
    end
end

Eliminação de Gauss com Pivotamento

function x = GaussPivot(A, b)
    [m, n] = size(A);
    if m ~= n, error('A matriz A deve ser quadrada'); end
    nb = n + 1; Aum = [A b];
    for k = 1:n-1
        [maior, i] = max(abs(Aum(k:n, k)));
        ipr = i + k - 1;
        if ipr ~= k, Aum([k, ipr], :) = Aum([ipr, k], :); end
        for i = k+1:n
            fator = Aum(i, k) / Aum(k, k);
            Aum(i, k:nb) = Aum(i, k:nb) - fator * Aum(k, k:nb);
        end
    end
    x = zeros(n, 1);
    x(n) = Aum(n, nb) / Aum(n, n);
    for i = n-1:-1:1
        x(i) = (Aum(i, nb) - Aum(i, i+1:n) * x(i+1:n)) / Aum(i, i);
    end
end

Decomposição LU

Utilize o MATLAB para calcular a decomposição LU:

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

Entradas relacionadas: