Metodos de Medicion
Metodos de Medicion
Metodos de Medicion
en Derivadas Parciales
Cálculo Numérico
Práctica 4
Métodos numéricos para
Ecuaciones en Derivadas Parciales
Resolución de sistemas lineales tridiagonales
Factorización de una matriz tridiagonal
Resolución de un sistema mediante LU
Ecuación de Ondas
Método implícito
Ecuación de Laplace
Método de sobrerrelajación por filas
Sistemas lineales tridiagonales
A = L·U
a1 b1 l1 1 u1
c1 a 2 b 2 c1 l 2 1 u2
c 2 a 3 b3 c 2 l3 1 u3
c a c l 1
3 4 3 4
Algoritmo de Factorización
function [c,l,u]=clu(c,a,b)
n = length(a);
l(1) = a(1);
for i=2:n
u(i-1) = b(i-1)/l(i-1);
l(i) = a(i) - c(i-1)*u(i-1);
end
Resolución de un sistema mediante
LU. Archivo croutlu.m
Eliminación
y(1)=d(1)/l(1);
for i=2:n
y(i)=(d(i)-c(i-1)*y(i-1))/l(i);
end
Sustitución regresiva
x(n)=y(n);
for i=n-1:-1:1
x(i)=y(i)-u(i)*x(i+1);
end
Introducción
EDP de orden 2, lineales de coeficientes
constantes.
Auxx+Buxy+Cuyy+Dux+Euy+Fu=G
Ecuación de Ondas utt c2uxx = 0
Ecuación del Calor ut cuxx = 0, c>0
Ecuación de Laplace uxx uyy = 0
Condiciones iniciales y de contorno
Ecuación de Ondas
Ecuación de utt = c²uxx , < x < L, t>0
Ondas
Condiciones u(x, 0) = f(x) ut(x, 0) = g(x)
iniciales
Condiciones
de contorno u(0,t) = l(t) u(L,t) = r(t)
Ecuación en diferencias finitas
ui , j1 2 ui , j ui , j1 u
2 i 1, j
2 ui , j u i 1, j
2 c
k h2
Ejemplo
Ecuación:
utt = c²uxx , < x < L, t > 0, c = 1, L=T=4
Condiciones iniciales
u(x, 0) = 2|x2|, ut(x, 0) = 0
Condiciones de contorno
u(0,t) = 0, u(L,t) = 0
Discretización
nx=4, nt=8 0 L
Método implícito
Paso 0º: Condición inicial 1ª
ui,0 = fi
Paso 1º: Condición inicial segunda
ui,1 = 2 (fi1+fi+1)/2 + (12)fi + kgi
Sistema Aw = v, v = (u1,j,u2,j,...,unx1,j)'
tridiagonal ui,j+1 = wi ui,j1
Factorización LU Lz = v
Uw = z
Algoritmo: parámetros de entrada
nx, h: nº de intervalos y paso espacial
nt, k: nº de intervalos y paso temporal
c: coeficiente de la ecuación
f, g: vectores columna (nx+1,1) de las
condiciones iniciales en los nodos con
t=0
hl, hr: vectores fila (1, nt+1)de las
condiciones de contorno en los nodos
con x = 0 y x = L, resp.
Ejemplo: parámetros de entrada
nx = 4; h=1; x = 0:h:4; x = x(:);
nt = 8; k =.5;
c = 1;
f = 2 - abs(2-x);
g = zeros(size(x));
hl = zeros(1, nt+1);
hr = zeros(1, nt+1);
Algoritmo: Preparación
a2 = (c*k/h)^2; % Parámetro de Courant
U = zeros(nx+1,nt+1); % Solución
Condiciones de contorno
U(1,:) = hl;
U(nx+1,:) = hr;
Rangos auxiliares de índices
L = 1:nx-1; C = 2:nx; R = 3:nx+1;
Algoritmo: pasos iniciales
Condición inicial sobre la función (paso 0)
U(:,1) = f;
Condición inicial sobre la derivada (paso 1)
U(C,2) = a2*(f(L) + f(R))/2 + ...
(1-a2)*f(C) + k*g(C);
Algoritmo: construcción y
factorización de la matriz
Diagonal principal
dp = (1+a2)/2*ones(1, nx-1);
Subdiagonal y superdiagonal
ds = -a2/4*ones(1, nx-2);
Factorización LU
[c,l,u]=clu(ds,dp,ds);
Algoritmo: paso general
for j = 2:nt
% Términos independientes
b(1) = a2/4*(hl(j-1)+hl(j+1));
b(nx-1) = a2/4*(hr(j-1)+hr(j+1));
% Resolucion del sistema
U(C,j+1) = ...
croutlu(c,l,u,U(C,j)+b')'-U(C,j-1);
end
Ejemplo
x=1 x=2 x=3
t=0 1.0000 2.0000 1.0000
t = 0. 5 1.0000 1.7500 1.0000
t=1 0.9184 1.1837 0.9184
t = 1. 5 0.6926 0.4824 0.6926
t=2 0.2912 -0.1699 0.2912
t = 2.5 -0.2449 -0.6647 -0.2449
t=3 -0.7996 -0.9953 -0.7996
t = 3.5 -1.2231 -1.2214 -1.2231
t=4 -1.3966 -1.3981 -1.3966
Ecuaciones elípticas
Ecuación de Laplace
uxx + uyy = 0, 0 < x < a, 0 < y <b
Condiciones de contorno
u(x,0) = f0(x), u(x,b) = f1(x)
u(0,y) = g0(y), u(a,y) = g1(y)
Discretización
u i1, j 2 u i , j u i 1, j u i , j1 2 u i , j u i , j1
2 2 0
h k
Ecuación de Laplace
Ecuación en diferencias: =k/h
2(ui-1,j + ui+1,j) + ui,j-1 + ui,j+1 2(2+1)ui,j = 0
Matriz del
sistema:
grande ,
dispersa
Subdiagonal y superdiagonal
ds = -a2*ones(1, m-3);
Factorización LU
[c,l,u]=clu(ds,dp,ds);
Algoritmo: relajación por columnas
for j = 2:n-1
% Términos independientes
b = U(2:m-1, j-1) + U(2:m-1, j+1);
b(1) = b(1) + a2*g0(j);
b(m-2) = b(m-2) + a2* g1(j);
% Resolucion del sistema
U(2:m-1, j) = croutlu(c,l,u,b)';
end
Algoritmo: iteraciones
incr = tol + 1;
iter = 0;
while incr > tol & iter < maxiter
y = 0.25 y = 0. 5 y = 0.75
x = 0.125 3.1177 6.2444 9.3729
x = 0.25 6.2366 12.4897 18.7460
x = 0.375 9.3574 18.7365 28.1198
x = 0.5 12.4810 24.9854 37.4944
x = 0.625 15.6074 31.2365 46.8698
x = 0.75 18.7365 37.4897 56.2460
x = 0.875 21.8677 43.7444 65.6229
FIN