TP-probleme-inverse-3D/TP6/lax_friedrichs.m
2023-06-25 16:38:01 +02:00

15 lines
469 B
Matlab

function [z] = lax_friedrichs(z_k_moins_1, f, masque)
a = 0.5;
[n, m] = size(z_k_moins_1);
z_haut = [zeros(1, m) ; z_k_moins_1(1:end-1, :)];
z_bas = [z_k_moins_1(2:end, :) ; zeros(1, m)];
z_gauche = [zeros(n, 1) z_k_moins_1(:, 1:end-1)];
z_droite = [z_k_moins_1(:, 2:end) zeros(n, 1)];
z = (z_haut + z_bas + z_gauche + z_droite) / 4 + a * ( f - sqrt( ((z_gauche - z_droite)/2).^2 + ((z_haut - z_bas)/2).^2 ) );
z = z .* masque;
end