29
Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4

Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4

Embed Size (px)

Citation preview

Page 1: Métodos Numéricos para Ecuaciones en Derivadas Parciales Cálculo Numérico Práctica 4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

F I NF I N