métodos numéricos para ecuaciones en derivadas parciales cálculo numérico práctica 4

Post on 24-Jan-2016

253 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

top related