Sie sind auf Seite 1von 29

Mtodos Numricos para Ecuaciones

en Derivadas Parciales
Clculo Numrico
Prctica 4

Mtodos numricos para


Ecuaciones en Derivadas Parciales

Resolucin de sistemas lineales tridiagonales


Factorizacin
Resolucin

de un sistema mediante LU

Ecuacin de Ondas
Mtodo

de una matriz tridiagonal

implcito

Ecuacin de Laplace
Mtodo

de sobrerrelajacin por filas

Sistemas lineales tridiagonales


A = LU
a1 b1
l1

c1 a 2 b 2
c1 l 2

c 2 a 3 b3
c 2 l3

c
a
c
l
3
4
3
4

1 u1

1 u2

1 u3

Algoritmo de Factorizacin
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

Resolucin de un sistema mediante


LU. Archivo croutlu.m

Eliminacin

y(1)=d(1)/l(1);
for i=2:n
y(i)=(d(i)-c(i-1)*y(i-1))/l(i);
end

Sustitucin regresiva

x(n)=y(n);
for i=n-1:-1:1
x(i)=y(i)-u(i)*x(i+1);
end

Introduccin

EDP de orden 2, lineales de coeficientes


constantes.
Auxx+Buxy+Cuyy+Dux+Euy+Fu=G
Ecuacin

de Ondas utt c2uxx = 0

Ecuacin

del Calor ut cuxx = 0, c>0

Ecuacin

de Laplace

uxx uyy = 0

Condiciones iniciales y de contorno

Ecuacin de Ondas
< x < L,

Ecuacin de
Ondas

utt = cuxx ,

t>0

Condiciones
iniciales

u(x, 0) = f(x)

ut(x, 0) = g(x)

Condiciones
de contorno

u(0,t) = l(t)

u(L,t) = r(t)

Ecuacin en diferencias finitas


ui , j1 2 ui , j ui , j1
u
2 u i , j u i 1, j
2 i 1, j
c
2
k
h2

Ejemplo

Ecuacin:
utt = cuxx , < 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

Discretizacin
nx=4, nt=8

Mtodo implcito

Paso 0: Condicin inicial 1


ui,0 = fi

Paso 1: Condicin inicial segunda


ui,1 = 2 (fi1+fi+1)/2 + (12)fi + kgi

Pasos siguientes: ecuacin 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 mtodo implcito

Truco ecuacin implcita

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

Sistema Aw = v,
v = (u1,j,u2,j,...,unx1,j)'
tridiagonal
ui,j+1 = wi ui,j1

Factorizacin LU
Uw = z

Lz = v

Algoritmo: parmetros de entrada


nx, h: n de intervalos y paso espacial
nt, k:
n de intervalos y paso temporal
c: coeficiente de la ecuacin
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: parmetros de entrada

nx = 4;

h=1;

x = 0:h:4;

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);

x = x(:);

Algoritmo: Preparacin

a2 = (c*k/h)^2; % Parmetro de Courant

U = zeros(nx+1,nt+1);

Condiciones de contorno

% Solucin

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

Condicin inicial sobre la funcin (paso 0)


U(:,1) = f;

Condicin inicial sobre la derivada (paso 1)


U(C,2) = a2*(f(L) + f(R))/2 + ...
(1-a2)*f(C) + k*g(C);

Algoritmo: construccin y
factorizacin
de
la
matriz
Diagonal principal
dp = (1+a2)/2*ones(1, nx-1);

Subdiagonal y superdiagonal
ds = -a2/4*ones(1, nx-2);

Factorizacin LU
[c,l,u]=clu(ds,dp,ds);

Algoritmo: paso general


for j = 2:nt

% Trminos 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
t=0
t = 0. 5
t=1
t = 1. 5
t=2
t = 2.5
t=3
t = 3.5
t=4

x=1
1.0000
1.0000
0.9184
0.6926
0.2912
-0.2449
-0.7996
-1.2231
-1.3966

x=2
2.0000
1.7500
1.1837
0.4824
-0.1699
-0.6647
-0.9953
-1.2214
-1.3981

x=3
1.0000
1.0000
0.9184
0.6926
0.2912
-0.2449
-0.7996
-1.2231
-1.3966

Ecuaciones elpticas

Ecuacin 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)

Discretizacin
u i 1, j 2 u i , j u i1, j
h

u i , j1 2 u i , j u i , j1
k

Ecuacin de Laplace

Ecuacin 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

Caso h = k :

ui-1,j + ui+1,j + ui,j-1 + ui,j+1 = 4ui,j

Algoritmos iterativos por bloques

Iteracin por bloques columna


Para j = 1, 2, , ny1, resolver el sistema

2 u i(k1), j 2 2 2 u i(,kj) 2 u i(k1), j u i(,kj)1 u i(,kj11)


i 1, 2, ..., n x 1

Iteracin por bloques fila


Mtodo implcito de direcciones alternadas

Ecuacin de Laplace. Ejemplo

Ecuacin
uxx+ uyy=0,

0 < x < 1,

0<y<1

Condiciones de contorno
u(x, 0) = 0,
u (x, 1) = 100x
u(0, y) = 0, u(1, y) = 100y
Discretizacin
h = 0.125, k = 0.25

Algoritmo: parmetros de entrada


alfa:
paso y / paso x
f0 , f 1 :
vectores columna (nx+1, 1) de las
condiciones de contorno en los nodos
con y = 0 e y = b, resp.
g0, g 1 :
vectores fila (1, ny+1) de las
condiciones de contorno en los nodos
con x = 0 y x = a, resp.
tol: condicin de convergencia
maxiter: tope de iteraciones.

Ejemplo: parmetros de entrada

h=.125;

x = 0:h:1; x = x(:);

k=.25;

alfa = k/h;

f0 = zeros(size(x));

f1 = 100*x;

g0 = zeros(size(y));

g1 = 100*y;

tol = 5e-2;

maxiter = 50;

y = 0:k:1;

Algoritmo: Preparacin

a2 = alfa^2;

m = length(f0); n = length(g0);

Estimacin inicial U = zeros(n, m);

Condiciones de contorno
U(:,1) = f0;
U(:,n) = f1;
U(1,:) = g0;
U(m,:) = g1;

b2 = 2*(1+a2);

g0

1
f0

f1

m
g1

Algoritmo: Construccin y
factorizacin
de la matriz
Diagonal principal
dp = b2*ones(1, m-2);

Subdiagonal y superdiagonal
ds = -a2*ones(1, m-3);

Factorizacin LU
[c,l,u]=clu(ds,dp,ds);

Algoritmo: relajacin por columnas


for j = 2:n-1

% Trminos 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

Actualizar U por columnas


Calcular incr
Incrementar iter
end

Ejemplo
x = 0.125
x = 0.25
x = 0.375
x = 0.5
x = 0.625
x = 0.75
x = 0.875

y = 0.25
3.1177
6.2366
9.3574
12.4810
15.6074
18.7365
21.8677

y = 0. 5
6.2444
12.4897
18.7365
24.9854
31.2365
37.4897
43.7444

y = 0.75
9.3729
18.7460
28.1198
37.4944
46.8698
56.2460
65.6229

FIN

Das könnte Ihnen auch gefallen