Professional Documents
Culture Documents
Primera Parte
echo on; clc;
clc; clear all; format short;
%-------------------------------------------------------------------------% Este Script calcula la solucin aproximada de la Ecuacin de Laplace
% para un ejemplo especifico, por el Mtodo de Diferencias Finitas,con una
% interpretacin grfica.
%
ECUACIN DE LAPLACE
%
u (x,y) +
u (x,y) = 0
%
xx
yy
% Con condiciones de contorno:
% u(x,0) = f1(x), u(x,b) = f2(x)
para 0 <= x <= a,
% u(0,y) = f3(y), u(a,y) = f4(y)
para 0 <= y <= b,
% La solucin es aproximada sobre el rectangulo
%
0 <= x <= a ,
0 <= y <= b.
%-------------------------------------------------------------------------pause % presione una tecla para continuar
clc;
%-------------------------------------------------------------------------% Funciones de Contorno del Ejemplo
% f1(x),f2(x),f3(y),f4(y) en f1.m f2.m f3.m f4.m
% funcin z = f1(x)
% z = 0;
% funcin z = f2(x)
% z = 100;
% funcin z = f3(y)
% z = 75;
% funcin z = f4(y)
% z = 50;
pause
clc;
%-------------------------------------------------------------------------% Creando las funciones de Contorno con el comando diary, preferible crear
% las funciones m-files para otros ejemplos.
%-------------------------------------------------------------------------delete output
delete f1.m
diary f1.m; disp('function z = f1(x)');...
disp('z = 0;');...
diary off;
delete f2.m
diary f2.m; disp('function z = f2(x)');...
disp('z = 100;');...
diary off;
delete f3.m
diary f3.m; disp('function z = f3(y)');...
disp('z = 75;');...
diary off;
delete f4.m
diary f4.m; disp('function z = f4(y)');...
disp('z = 50;');...
diary off;
f1(0); f2(0); f3(0); f4(0);
pause
clc;
%-------------------------------------------------------------------------% Ejemplo de la Ecuacin de Laplace con las condiciones de Dirichlet
Segunda Parte
Lo guardas con el nombre DIRICH
function U = dirich(f1,f2,f3,f4,a,b,h,tol,max1)
%
%
% Este programa calcula la solucion aproximada de la ecuacion de DIRICHLET.
% pro el metodo de diferencias finitas
%
%
ECUACION DE DIRICHLET
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
(x,y)
xx
(x,y)
yy
0 <= y <= b.
n = fix(a/h)+1;
m = fix(b/h)+1;
ave = (a*(feval(f1,0)+feval(f2,0)) ...
+ b*(feval(f3,0)+feval(f4,0)))/(2*a+2*b);
U = ave*ones(n,m);
for j=1:m,
U(1,j) = feval(f3,h*(j-1));
U(n,j) = feval(f4,h*(j-1));
end
for i=1:n,
U(i,1) = feval(f1,h*(i-1));
U(i,m) = feval(f2,h*(i-1));
end
U(1,1) = (U(1,2) + U(2,1))/2;
U(1,m) = (U(1,m-1) + U(2,m))/2;
U(n,1) = (U(n-1,1) + U(n,2))/2;
U(n,m) = (U(n-1,m) + U(n,m-1))/2;
w = 4/(2+sqrt(4-(cos(pi/(n-1))+cos(pi/(m-1)))^2));
err = 1;
cnt = 0;
while ((err>tol)&(cnt<=max1))
err = 0;
for j=2:(m-1),
for i=2:(n-1),
relx = w*(U(i,j+1)+U(i,j-1)+U(i+1,j)+ U(i-1,j)-4*U(i,j))/4;
U(i,j) = U(i,j) + relx;
if (err<=abs(relx)), err=abs(relx); end
end
end
cnt = cnt+1;
end
En Command Window
Se obtienen los siguientes resultados
Solucin de la Ecuacin de Laplace.
Columns 1 through 8
87.5000
100.0000
75.0000
73.6940
75.0000
62.3801
75.0000
55.9975
75.0000
51.1205
75.0000
46.0779
75.0000
39.2181
75.0000
27.1765
37.5000
88.1861
78.1064
78.8808
73.2219
71.0521
68.7303 63.3994
63.3009 54.5344
54.9414 42.6670
88.5403 87.7966
78.1785
48.7720
74.0498
66.3162
56.2483
45.3533
35.9191
60.4893
54.0422
52.4062
43.7900
43.9730
31.7919
17.3486
69.8288
63.7244
32.6031
76.5853
68.7070
59.2815
86.0606 82.3959
33.6176
17.1569
19.4876
Column 9
75.0000
50.0000
50.0000
50.0000
50.0000
50.0000
50.0000
50.0000
25.0000
S o lu c i n d e la E c u a c i n d e L a p la c e .
1 0 0
8 0
6 0
Grafica
4 0
2 0
0
0
4
0 .5
3 .5
1
3
1 .5
2 .5
2
2
2 .5
1 .5
3
1
3 .5
0 .5
4
0
y