Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.
-
Upload
jorge-macias -
Category
Documents
-
view
244 -
download
1
Transcript of Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.
![Page 1: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/1.jpg)
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
![Page 2: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/2.jpg)
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
![Page 3: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/3.jpg)
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
![Page 4: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/4.jpg)
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
![Page 5: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/5.jpg)
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
![Page 6: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/6.jpg)
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
![Page 7: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/7.jpg)
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
![Page 8: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/8.jpg)
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
![Page 9: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/9.jpg)
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
![Page 10: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/10.jpg)
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
![Page 11: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/11.jpg)
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.
![Page 12: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/12.jpg)
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);
![Page 13: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/13.jpg)
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;
![Page 14: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/14.jpg)
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);
![Page 15: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/15.jpg)
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);
![Page 16: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/16.jpg)
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
![Page 17: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/17.jpg)
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
![Page 18: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/18.jpg)
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
, , , , , ,
![Page 19: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/19.jpg)
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
![Page 20: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/20.jpg)
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
![Page 21: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/21.jpg)
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
![Page 22: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/22.jpg)
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.
![Page 23: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/23.jpg)
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;
![Page 24: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/24.jpg)
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
![Page 25: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/25.jpg)
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);
![Page 26: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/26.jpg)
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
![Page 27: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/27.jpg)
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
![Page 28: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/28.jpg)
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
![Page 29: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4.](https://reader033.fdocument.pub/reader033/viewer/2022061612/5665b49d1a28abb57c92adb1/html5/thumbnails/29.jpg)
F I NF I N