métodos numéricos para ecuaciones en derivadas parciales cálculo numérico práctica 4
TRANSCRIPT
Métodos Numéricos para Ecuaciones
en Derivadas Parciales
Métodos Numéricos para Ecuaciones
en Derivadas Parciales
Cálculo Numérico
Práctica 4
Métodos numéricos para Ecuaciones en Derivadas ParcialesMétodos numéricos para Ecuaciones en Derivadas Parciales Resolución de sistemas lineales tridiagonalesResolución de sistemas lineales tridiagonales
Factorización de una matriz tridiagonal
Resolución de un sistema mediante LU
Ecuación de OndasEcuación de Ondas
Método implícito
Ecuación de LaplaceEcuación de Laplace
Método de sobrerrelajación por filas
Sistemas lineales tridiagonalesSistemas lineales tridiagonales
1
u1
u1
u1
lc
lc
lc
l
ac
bac
bac
ba
3
2
1
43
32
21
1
43
332
221
11
A = L·U
Algoritmo de FactorizaciónAlgoritmo 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.mResolución de un sistema mediante LU. Archivo croutlu.m EliminaciónEliminacióny(1)=d(1)/l(1);for i=2:ny(i)=(d(i)-c(i-1)*y(i-1))/l(i);
end Sustitución regresivaSustitución regresivax(n)=y(n);for i=n-1:-1:1x(i)=y(i)-u(i)*x(i+1);
end
IntroducciónIntroducción
EDP de orden 2, lineales de coeficientes EDP de orden 2, lineales de coeficientes constantes.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 contornoCondiciones iniciales y de contorno
Ecuación de OndasEcuación de Ondas Ecuación de Ecuación de
OndasOndas Condiciones Condiciones
inicialesiniciales CondicionesCondiciones
de contornode contorno Ecuación en diferencias finitasEcuación en diferencias finitas
utt = c²uxx , < x < L, t > 0
u(x, 0) = f(x) ut(x, 0) = g(x)
u(0,t) = l(t) u(L,t) = r(t)
u u u
kc
u u u
hi j i j i j i j i j i j, , , , , ,
1 1
22 1 1
2
2 2
EjemploEjemplo Ecuación:Ecuación:
utt = c²uxx , < x < L, t > 0, c = 1, L=T=4
Condiciones inicialesCondiciones iniciales
u(x, 0) = 2|x2|, ut(x, 0) = 0
Condiciones de contornoCondiciones de contorno
u(0,t) = 0, u(L,t) = 0
DiscretizaciónDiscretización
nx=4, nt=8 0 L
Método implícitoMétodo implícito Paso 0º: Condición inicial 1ªPaso 0º: Condición inicial 1ª
ui,0 = fi
Paso 1º: Condición inicial segundaPaso 1º: Condición inicial segunda
ui,1 = 2 (fi1+fi+1)/2 + (12)fi + kgi
Pasos siguientes: ecuación en diferenciasPasos siguientes: ecuación en diferencias
(1+2)ui,j+1 2(ui+1,j+1 + ui1,j+1)/2 =
2ui,j + 2(ui+1,j1 + ui1,j1)/2 (1+2)ui,j1
Paso del método implícitoPaso del método implícito Truco ecuación implícitaTruco ecuación implícita
2( ui1,j1 ui1,j+1)/4
+ (1 + 2)(ui,j1 ui,j+1)/2
2(ui+1,j1 + ui+1,j+1)/4 = ui,j .
SistemaSistema Aw = v, v = (u1,j,u2,j,...,unx1,j)'
tridiagonal tridiagonal ui,j+1 = wi ui,j1
Factorización LUFactorización LU Lz = vUw = z
Algoritmo: parámetros de entradaAlgoritmo: parámetros de entrada nx, h: nx, h: nº de intervalos y paso espacialnº de intervalos y paso espacial nt, k: nt, k: nº de intervalos y paso temporalnº de intervalos y paso temporal c: c: coeficiente de la ecuacióncoeficiente de la ecuación f, g: f, g: vectores columna (nx+1,1) de lasvectores columna (nx+1,1) de las
condiciones iniciales en los nodos concondiciones iniciales en los nodos cont = 0t = 0
hl, hr:hl, hr: vectores fila (1, nt+1)de las vectores fila (1, nt+1)de las condiciones de contorno en los nodoscondiciones de contorno en los nodoscon x = 0 y x = L, resp.con x = 0 y x = L, resp.
Ejemplo: parámetros de entradaEjemplo: 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ónAlgoritmo: Preparación
a2 = (c*k/h)^2; % Parámetro de Courant% Parámetro de Courant
U = zeros(nx+1,nt+1); % Solución% Solución
Condiciones de contornoCondiciones de contorno
U(1,:) = hl;
U(nx+1,:) = hr;
Rangos auxiliares de índicesRangos auxiliares de índices
L = 1:nx-1; C = 2:nx; R = 3:nx+1;
Algoritmo: pasos inicialesAlgoritmo: pasos iniciales
Condición inicial sobre la función (paso 0)Condición inicial sobre la función (paso 0)
U(:,1) = f;
Condición inicial sobre la derivada (paso 1)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 matrizAlgoritmo: construcción y factorización de la matriz
Diagonal principalDiagonal principal
dp = (1+a2)/2*ones(1, nx-1);
Subdiagonal y superdiagonalSubdiagonal y superdiagonal
ds = -a2/4*ones(1, nx-2);
Factorización LUFactorización LU
[c,l,u]=clu(ds,dp,ds);
Algoritmo: paso generalAlgoritmo: paso general
for j = 2:nt
% Términos independientes% 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% Resolucion del sistemaU(C,j+1) = ...croutlu(c,l,u,U(C,j)+b')'-U(C,j-1);
end
EjemploEjemplox = 1 x = 2 x = 3
t = 0 1.0000 2.0000 1.0000t = 0. 5 1.0000 1.7500 1.0000t = 1 0.9184 1.1837 0.9184t = 1. 5 0.6926 0.4824 0.6926t = 2 0.2912 -0.1699 0.2912t = 2.5 -0.2449 -0.6647 -0.2449t = 3 -0.7996 -0.9953 -0.7996t = 3.5 -1.2231 -1.2214 -1.2231t = 4 -1.3966 -1.3981 -1.3966
Ecuaciones elípticasEcuaciones elípticas Ecuación de LaplaceEcuación de Laplace
uxx + uyy = 0, 0 < x < a, 0 < y <b
Condiciones de contornoCondiciones de contorno
u(x,0) = f0(x), u(x,b) = f1(x)
u(0,y) = g0(y), u(a,y) = g1(y)
DiscretizaciónDiscretizaciónu u u
h
u u u
ki j i j i j i j i j i j
1 1
2
1 1
2
2 20
, , , , , ,
Ecuación de LaplaceEcuación de Laplace Ecuación en diferencias: Ecuación en diferencias: =k/h=k/h
2(ui-1,j + ui+1,j) + ui,j-1 + ui,j+1 2(2+1)ui,j = 0
Matriz del Matriz del sistema:sistema: grande , grande , dispersa dispersa
Caso h = k : Caso h = k : ui-1,j + ui+1,j + ui,j-1 + ui,j+1 = 4ui,j
Algoritmos iterativos por bloquesAlgoritmos iterativos por bloques Iteración por bloques columnaIteración por bloques columna
Para j = 1, 2, … , ny1, resolver el sistema
Iteración por bloques filaIteración por bloques fila Método implícito de direcciones alternadasMétodo implícito de direcciones alternadas
1n,...,2,1i
uuuu22u
x
)1k(1j,i
)k(1j,i
)k(j,1i
2)k(j,i
2)k(j,1i
2
Ecuación de Laplace. EjemploEcuación de Laplace. Ejemplo EcuaciónEcuación
uxx+ uyy=0, 0 < x < 1, 0 < y < 1
Condiciones de contornoCondiciones de contorno
u(x, 0) = 0, u (x, 1) = 100x
u(0, y) = 0, u(1, y) = 100y DiscretizaciónDiscretización
h = 0.125, k = 0.25
Algoritmo: parámetros de entradaAlgoritmo: parámetros de entrada alfa: alfa: paso y / paso x ff00, f, f11: : vectores columna vectores columna (nx+1, 1) de las de las
condiciones de contorno en los nodoscondiciones de contorno en los nodoscon con y = 0 e e y = b, resp., resp.
gg00, g, g11: : vectores fila vectores fila (1, ny+1) de las de las
condiciones de contorno en los nodos condiciones de contorno en los nodos con con x = 0 y y x = a, resp., resp.
tol:tol: condición de convergencia condición de convergencia maxiter:maxiter: tope de iteraciones.tope de iteraciones.
Ejemplo: parámetros de entradaEjemplo: parámetros de entrada h=.125; x = 0:h:1; x = x(:); k=.25; y = 0:k:1; alfa = k/h; f0 = zeros(size(x)); f1 = 100*x; g0 = zeros(size(y)); g1 = 100*y; tol = 5e-2; maxiter = 50;
Algoritmo: PreparaciónAlgoritmo: Preparación
a2 = alfa^2; b2 = 2*(1+a2);
m = length(f0); n = length(g0);
Estimación inicialEstimación inicial U = zeros(n, m);
Condiciones de contornoCondiciones de contorno
U(:,1) = f0;
U(:,n) = f1;
U(1,:) = g0;
U(m,:) = g1;
1 g0 n
g1
1
f0
m
f1
Algoritmo: Construcción y factorización de la matrizAlgoritmo: Construcción y factorización de la matriz
Diagonal principalDiagonal principal
dp = b2*ones(1, m-2);
Subdiagonal y superdiagonalSubdiagonal y superdiagonal
ds = -a2*ones(1, m-3);
Factorización LUFactorización LU
[c,l,u]=clu(ds,dp,ds);
Algoritmo: relajación por columnasAlgoritmo: relajación por columnas
for j = 2:n-1
% Términos independientes% 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% Resolucion del sistema
U(2:m-1, j) = croutlu(c,l,u,b)';
end
Algoritmo: iteracionesAlgoritmo: iteraciones
incr = tol + 1;
iter = 0;
while incr > tol & iter < maxiter
Actualizar Actualizar U por columnas por columnas
Calcular Calcular incr
Incrementar Incrementar iterend
EjemploEjemplo
y = 0.25 y = 0. 5 y = 0.75x = 0.125 3.1177 6.2444 9.3729x = 0.25 6.2366 12.4897 18.7460x = 0.375 9.3574 18.7365 28.1198x = 0.5 12.4810 24.9854 37.4944x = 0.625 15.6074 31.2365 46.8698x = 0.75 18.7365 37.4897 56.2460x = 0.875 21.8677 43.7444 65.6229
F I NF I N