Metodos de Medicion

Descargar como ppt, pdf o txt
Descargar como ppt, pdf o txt
Está en la página 1de 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
 Resolución de sistemas lineales tridiagonales
 Factorización de una matriz tridiagonal
 Resolución de un sistema mediante LU
 Ecuación de Ondas
 Método implícito
 Ecuación de Laplace
 Método de sobrerrelajación por filas
Sistemas lineales tridiagonales

A = L·U

 a1 b1   l1   1 u1 
     
 c1 a 2 b 2   c1 l 2   1 u2 
    
c 2 a 3 b3 c 2 l3 1 u3 
     
 c a   c l   1 
 3 4  3 4  
Algoritmo 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.m
 Eliminación
y(1)=d(1)/l(1);
for i=2:n
y(i)=(d(i)-c(i-1)*y(i-1))/l(i);
end
 Sustitución regresiva
x(n)=y(n);
for i=n-1:-1:1
x(i)=y(i)-u(i)*x(i+1);
end
Introducción
 EDP de orden 2, lineales de coeficientes
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 contorno
Ecuación de Ondas
 Ecuación de utt = c²uxx , < x < L, t>0
Ondas
 Condiciones u(x, 0) = f(x) ut(x, 0) = g(x)
iniciales
 Condiciones
de contorno u(0,t) = l(t) u(L,t) = r(t)
 Ecuación en diferencias finitas
ui , j1  2 ui , j  ui , j1 u
2 i  1, j
 2 ui , j  u i 1, j
2 c
k h2
Ejemplo
 Ecuación:
utt = c²uxx , < x < L, t > 0, c = 1, L=T=4
 Condiciones iniciales
u(x, 0) = 2|x2|, ut(x, 0) = 0
 Condiciones de contorno
u(0,t) = 0, u(L,t) = 0
 Discretización
nx=4, nt=8 0 L
Método implícito
 Paso 0º: Condición inicial 1ª
ui,0 = fi
 Paso 1º: Condición inicial segunda
ui,1 = 2 (fi1+fi+1)/2 + (12)fi + kgi

 Pasos siguientes: ecuación en diferencias


(1+2)ui,j+1  2(ui+1,j+1 + ui1,j+1)/2 =
2ui,j + 2(ui+1,j1 + ui1,j1)/2  (1+2)ui,j1
Paso del método implícito
 Truco ecuación implícita
 2( ui1,j1  ui1,j+1)/4
+ (1 + 2)(ui,j1  ui,j+1)/2
 2(ui+1,j1 + ui+1,j+1)/4 = ui,j .

 Sistema Aw = v, v = (u1,j,u2,j,...,unx1,j)'
tridiagonal ui,j+1 = wi  ui,j1

 Factorización LU Lz = v
Uw = z
Algoritmo: parámetros de entrada
 nx, h: nº de intervalos y paso espacial
 nt, k: nº de intervalos y paso temporal
 c: coeficiente de la ecuación
 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: 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ón
 a2 = (c*k/h)^2; % Parámetro de Courant
 U = zeros(nx+1,nt+1); % Solución
 Condiciones de contorno
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
 Condición inicial sobre la función (paso 0)
U(:,1) = f;
 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 matriz
 Diagonal principal
dp = (1+a2)/2*ones(1, nx-1);

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

 Factorización LU
[c,l,u]=clu(ds,dp,ds);
Algoritmo: paso general
for j = 2:nt
% 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
U(C,j+1) = ...
croutlu(c,l,u,U(C,j)+b')'-U(C,j-1);

end
Ejemplo
x=1 x=2 x=3
t=0 1.0000 2.0000 1.0000
t = 0. 5 1.0000 1.7500 1.0000
t=1 0.9184 1.1837 0.9184
t = 1. 5 0.6926 0.4824 0.6926
t=2 0.2912 -0.1699 0.2912
t = 2.5 -0.2449 -0.6647 -0.2449
t=3 -0.7996 -0.9953 -0.7996
t = 3.5 -1.2231 -1.2214 -1.2231
t=4 -1.3966 -1.3981 -1.3966
Ecuaciones elípticas
 Ecuación 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)
 Discretización
u i1, j  2 u i , j  u i 1, j u i , j1  2 u i , j  u i , j1
2  2 0
h k
Ecuación de Laplace
 Ecuación 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
 Iteración por bloques columna
Para j = 1, 2, … , ny1, 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(,kj11) 


i  1, 2, ..., n x  1 

 Iteración por bloques fila


 Método implícito de direcciones alternadas
Ecuación de Laplace. Ejemplo
 Ecuación
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
 Discretización
h = 0.125, k = 0.25
Algoritmo: parámetros de entrada
 alfa: paso y / paso x
 f0, f1: vectores columna (nx+1, 1) de las
condiciones de contorno en los nodos
con y = 0 e y = b, resp.
 g0, g1: vectores fila (1, ny+1) de las
condiciones de contorno en los nodos
con x = 0 y x = a, resp.
 tol: condición de convergencia
 maxiter: tope de iteraciones.
Ejemplo: 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ón
 a2 = alfa^2; b2 = 2*(1+a2);
 m = length(f0); n = length(g0);
 Estimación inicial U = zeros(n, m);
 Condiciones de contorno
U(:,1) = f0; 1 g0 n
1
U(:,n) = f1;
U(1,:) = g0; f0 f1
U(m,:) = g1;
m
g1
Algoritmo: Construcción y
factorización de la matriz
 Diagonal principal
dp = b2*ones(1, m-2);

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

 Factorización LU
[c,l,u]=clu(ds,dp,ds);
Algoritmo: relajación por columnas
for j = 2:n-1
% 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
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

y = 0.25 y = 0. 5 y = 0.75
x = 0.125 3.1177 6.2444 9.3729
x = 0.25 6.2366 12.4897 18.7460
x = 0.375 9.3574 18.7365 28.1198
x = 0.5 12.4810 24.9854 37.4944
x = 0.625 15.6074 31.2365 46.8698
x = 0.75 18.7365 37.4897 56.2460
x = 0.875 21.8677 43.7444 65.6229
FIN

También podría gustarte