Вы находитесь на странице: 1из 13

Mtodo Corrector

Andrea Escobar, William Cuji, Jonathan Tituaa, Rolando Cachipuendo,


Departamento de Ciencias Exactas, Universidad Fuerzas Armadas - ESPE
Sangolqu, Ecuador
anescobar@espe.edu.ec, wdcuji@espe.edu.ec, jetituana@espe.edu.ec,.....

.
Abstract
This
paper
presents one of the different
methods of solving ordinary
differential equations of the
first degree, as
is
the
corrector
method,
which
goes
together
with
the
predictive method, works in
a range from performing
several iterations system. It
contains
theoretical
information and performing
the mathematical software
Matlab.

I.

siguiente paso consiste en calcular


una primer aproximacin w4(0) en el
punto t4 de la malla usando como
predictor el mtodo de AdamsBashforth:

DESARROLLO DE CONTENIDOS

II.

A. Definicin.Mtodos multipasos
Un mtodo multipasos de p pasos para
resolver el problema de valor inicial

INTRODUCCIN

Los mtodos multipasos implcitos


no se emplean como se mostr aqu.
Se utilizan para mejorar las
aproximaciones
obtenidas
con
mtodos explcitos. La combinacin
de un mtodo explcito con uno
implcito recibe el nombre de mtodo
predictor-corrector:
El
mtodo
explcito predice una aproximacin, y
el mtodo implcito la corrige.
Consideremos el siguiente mtodo de
cuarto orden para resolver un
problema de valor inicial. El primer
paso consiste en calcular los valores
iniciales w0, w1,w2 y w3 para el
mtodo de Adams-Bashforth de
cuatro pasos. Para ello, se puede usar
el mtodo de Runge-Kutta. El

dy
=f ( t , y ) a<t< b
dt
y ( a )=

(1)

es aquel mtodo cuya ecuacin de


diferencias para obtener la aproximacin
wn+1 en el punto tn+1 de la malla definida
por {tn = a + h n, n = 1, ..., N}, con h =
(b-a)/N, puede representarse por medio
de la siguiente ecuacin, donde p es un
entero mayor que 1:

w n+1=ao wn +a 1 w n1+ +a p w n p +h [ b1 f ( t n+1 , wn 1 )

i=0

i=1

w n+1= ai wni +h bi f ( wni ,t ni ) (2)

para n = p-1, p, , N-1, donde h = (ba)/N, a0, a1, , ap, b-1, , bp son
constantes y se especifican los valores
p

a i=1
i=0

( 21)

especificado slo implcitamente. En la


implementacin de un mtodo implcito,
se debe resolver la ecuacin implcita
para wn+1. No es evidente que siempre se
pueda resolver esta ecuacin, ni que
siempre se obtenga una solucin nica
para wn+1. En caso que no se pueda
resolver la ecuacin, se deber recurrir a
algn mtodo de aproximacin de
ecuaciones no lineales (Newton, por
ejemplo).
Mtodos de Adams
La frmula general de los mtodos
multipasos est dada por:

( j1)b

i=0

i=1

w n+1= ai wni +h bi f ( wn1 , t(2n1 )


0)

i ai + j

i=1

i=0

iniciales w0 = 0, w1 = 1, w2 = 2, ,
wp-1 = p-1. Se toma generalmente de la
condicin inicial el valor w 0 = (el dato
de la condicin inicial) y los dems
valores necesarios para iniciar el mtodo
se obtienen con un mtodo de RungeKutta u otro mtodo de un paso.

Se puede demostrar que esta frmula da el


valor exacto para y(tn+1) cuando y(t) es un
polinomio de grado menor o igual a k si se
cumplen las siguientes restricciones de
exactitud:

Cuando b-1= 0, el mtodo es explcito o


abierto, ya que la ecuacin (2) da de
manera explcita el valor de w n+1 en
funcin de los valores previamente
determinados.

Las restricciones de exactitud dadas en (21)


suelen ser llamadas restricciones de
consistencia. Los mtodos numricos
multipasos dados por (20) que cumplen la
condicin (21) se dicen "consistentes".Para
un polinomio dado de grado k, estas
restricciones pueden ser satisfechas por una
amplia variedad de posibilidades. Muchas
familias de mtodos han sido desarrolladas
predefiniendo algunas de las relaciones entre
los coeficientes.

Cuando b-1 0, el mtodo es implcito o


cerrado, ya que en la ecuacin (2), wn+1
se encuentra en ambos lados, quedando

La familia de los mtodos de Adams, por


ejemplo, est definida mediante la
asignacin del valor 0 a los coeficientes

a1, a2, ..., ap de la frmula (20), quedando


slo el coeficiente a0, que deber tomar el
valor 1 para cumplir con la primera de las
restricciones de consistencia (21), y se
toma p = k -1,. As, la frmula de los
mtodos de Adams, queda reducida a:

x n+1=x n +h bi f ( x n1 , t n1 )
i=1

(2
2)

Los mtodos de Adams, dados por la


frmula (22), pueden ser clasificados en
dos grupos, explcitos o implcitos, segn
cmo se haga la eleccin del coeficiente
b-1.
La clase de los mtodos explcitos de
Adams, tambin llamados mtodos de
"Adams-Bashforth", se obtiene haciendo
b-1 = 0 y los restantes b i, se obtienen
aplicando la segunda restriccin de
consistencia de (21), tomando p = k-1):

( j1)b

k1

i=0

(2
3)

En forma matricial, el sistema dado en


(23) resulta:

1 11 1
012 (k 1)
( k1)


( k1)

0 1 4 ...

(
2
4
)

Seleccionando el valor de k deseado (y


consecuentemente, el orden p que es
igual a k-1) y resolviendo el sistema (24),
se obtienen los restantes coeficientes b i
de la frmula (23), para obtener la
frmula de el mtodo de AdamsBashforth de orden p.
La versin implcita de los mtodos de
Adams, llamados mtodos de "AdamsMoulton", se obtiene con b-1 0 y los
restantes bi, se obtienen aplicando la
segunda restriccin de consistencia de
(21) (p = k-2):

( j1)b

Se dan a continuacin los mtodos de


Adams-Bashforth de cuatro pasos, y el de
Adams-Moulton de tres pasos.
(2
5)

k2

i=0

Se calculan los valores iniciales w0 = a0,


w1 = a1, w2 = a2, w3 = a3 (con el mtodo
de Runge-Kutta), y se aplica la frmula:

En forma matricial, el sistema dado en


(25) resulta:

1 11 1 1
1 012(k2)
( k2)


( k2)

1 0 1 4 ...

Mtodo de Adams-Bashforth de cuatro


pasos

(
2
6
)

Seleccionando el valor de k deseado (y


consecuentemente, el orden p que es
igual a k-1) y resolviendo el sistema (26)
se obtienen los restantes coeficientes bi
de la frmula (25), para obtener la
frmula del mtodo de Adams-Moulton
de orden p.

w i+1=wi +

resolviendo el sistema de ecuaciones


dado en (26).

h
55 f ( t i , wi ) 59 f ( t i 1(2, wi1 ) +37 f ( t i2 , wi2 )9 f ( t i3 , w i3 ) ]
24 [
7)

Puede demostrarse que el error local de


truncamiento |wi y(ti)| en el mtodo de
Adams-Moulton de tres pasos est dado
por la expresin:

Se deja como ejercicio verificar,


resolviendo el sistema dado en (24) para
p = 4, los coeficientes de la ecuacin
(27).
Puede demostrarse que el error local de
truncamiento |wi y(ti)| en el mtodo de
Adams-Bashforth de cuatro pasos est
dado por la expresin:

u
4
( i) h
251 (4 )
i +1=
y
720

(2
8)

para algn i[ti-3, ti+1]. Es decir, este


mtodo es del orden de h4.

u
(i) h4
19 (4)
i +1=
y
720

(3
0)

para algn i[ti-2, ti+1]. Es decir, este


mtodo tambin es del orden de h4. Por
ello se comparan siempre los resultados
de aplicar el mtodo de Adams-Bashford
de n + 1 pasos, contra el mtodo de
Adams-Moulton de n pasos.
Este mtodo requiere menos puntos y
tiene la misma precisin que el anterior,
pero tiene la dificultad de tener que
resolver en cada paso una ecuacin, que
puede ser no lineal, en cuyo caso se
deber
aplicar
un
mtodo
de
aproximacin
de
soluciones
de
ecuaciones no lineales.

Mtodo de Adams-Moulton de tres


pasos
Se calculan los valores iniciales w0 = a0,
w1 = a1, w2 = a2 (con el mtodo de RungeKutta), y se aplica la frmula:

w i+1=wi +

Mtodos Implcitos:
Los mtodos implcitos son similares a los
mtodos explcitos, salvo que el
polinomio interpolador pasa por el punto

h
y n+1( t).
9 f ( t i +1 , w i+1 )19 f ( t(2i , wi ) 5 f ( t i1 ,(x
w n+1
wi2 ) ]
i1),f
i2 , Tenemos
24 [
9)
x n+1

Se deja como ejercicio verificar los


coeficientes de la frmula (29),

y (x n+1 )= y (x n)+ p m+1 ( x )dx


xn

donde utilizando la frmula de diferencias


hacia atrs tenemos
j
(1) j( s
j ) f n+1

mtodos

para

los

m :

diferentes valores de

y n+1= y n+ h f n1

m+1

pm+1 (x)=
j =0

Para
con

m=0

obtenemos

h
y n+1= y n+ (f n+1 + f n)
2

xx n+1
s=
h

Para

resulta
x n+ 1

m+ 1

pm +1( x)dx=h c j f n +1
j

m=1

y n+1= y n+

h
(5 f n +1+ 8 f n f n1 )
12

j=0

xn

finalmente, para

donde
0

c j =(1 )

implcitos

(sj ) ds

y n+1= y n+

Tenemos por lo tanto el algoritmo

h
( 9 f n +1+19 f n5 f n1+ f n2 )
24

Los
algoritmos
necesitan
una

es utilizarlos en la forma conocida


como predictor corrector, donde
un mtodo explcito se emplea
para
calcular
una
primera

c 0=1, c 1=1/2,c 2=1/ 12 , c3 =1 /24, c 4 =19 /720.

aproximacin

Expresando las diferencias en


trmino de los valores de las
funciones la expresin anterior
toma la forma

y n+1= y n+ h [ 0 f n+1 + 1 f n + + m +1 f nm ]

implcitos
primera

y n+1 . Lo usual

y n+1= y n+ h [ c 0 f n+1 + c1 f n+1 + + cm +1 m +1 f nm aproximacin


]
a
denominado mtodo de AdamsMoulton. Los primeros valores de
c
j
son:

m=2

llamamos

de

y n+1 ,

que

y(0)
n+1 , y el corrector

se emplea para mejorar este


valor. Tendremos por lo tanto,:
Predictor:
k
y(0)
n+1= y n+ h [ b0 f n+ b1 f n+ , ,,+ bk f nk ] .

donde los

dependen de

m . Obtenemos los siguientes

Corrector:
)
(i)
(i)
m+1 (i)
y(i+1
f nm ] .
n+1 = y n +h [ c 0 f n+1 +c 1 f n +, , ,+bm +1

donde

son

los

rdenes del predictor y corrector,


respectivamente.
Es
recomendable que

k =m

frecuentemente se emplean
y

k =0

m=0 .

)
y(i+1
n+1 = y n +h f n

h (i)
(i+1 )
y n+1 = y n + f n+1 +f n .
2
conocido como mtodo de Euler
modificado. Cuando

)
(i )
y(i+1
n+1 y n+ 1=

pero

distintos. El mtodo ms

sencillo es

el error cometido. Por ejemplo, en


el mtodo de Adams

m=k =2 ,

En general, son suficientes dos o


tres iteraciones del corrector. En
caso de que sean necesarias ms
iteraciones,
es
preferible
disminuir el paso de integracin.
Tambin
se
pueden
derivar
correctores con varios pasos de
integracin. El mtodo de Milne
de predictor-corrector emplea el
mtodo explcito de Milne como
predictor y utiliza el corrector de
segundo orden de dos pasos de
integracin
conocido
como
mtodo implcito de Simpson:

tenemos el mtodo de AdamsMoulton de tercer orden:

y(0)
n+1= y n+

mientras

m=2

)
y(i+1
n+1 = y n3 +

h
[23 f n16 f n1 +5 f n2 ]+O(h 3)
12

)
y(i+1
n+1 = y n +

h
[9 f (ni)+119 f n 5 f n1 ]+O(h 4 )
24
que

con

k =3

(i+1 )

y n+1 = y n1 +

h
[55 f n59 f +37 f n29 f n3 ]+O(h 4 )
24
h
[9 f (ni)+1+ 19 f n5 f n1+ f n2 ]+O(h4 )
24

Los
mtodos
de
predictorcorrector tienen como principal
ventaja
sobre
los
mtodos
explcitos el que permiten estimar

h (i )
( f 4 f n + f n1 )
3 n+ 1

El programa fue implementado en el entorno


guide de Matlab , existen 3 opciones de aplicacin
del mtodo:

mtodo
de
Adams,
frecuentemente empleado:

)
y(i+1
n+1 = y n +

9h
( 2 f k2f k1+2 f k )
24

B. MANUAL DE USUARIO

se obtiene el denominado

y(0)
n+1= y n+

9 h (i)
f n+1 f (i1)
(
n +1 )
24

Figa3. Opcin Tabla


3.

Fig a1.Opciones de aplicacin

En la primer se calcula mediante un intervalo


definido, en la segunda opcin se calcula
mediante una tabla de datos muestrados, y en la
tercera opcin el usuario puede ingresar los datos
mediante el mouse.

La ecuacn diferencial, la condicin


inicial de la EDO, en esta opcin se
encuentra el boton iniciar, luego de
ingresar los datos de entrada,
presionamos el botn inicial y podemos
elegir en el panel de la derecha los
puntos con los que deseamos aplicar el
mtodo.

Los datos de entrada en cada uno de las opciones


es :
1.

La ecuacin diferencial , el primer valor


del intervalo a, y el valor final del
intervalo b, la condicion inicial de la
EDO y el nmero de intervalos deseados.
Figa4. Opcin mouse

Fig a2. Opcin intervalo


2.

La ecuacin diferencial, la matriz de


abscisas T y la matriz de ordenadas Y, la
condicin inicial.

Por tabla

function varargout =
Metodo_CorrectorTabla(varargin)
% METODO_CORRECTORTABLA MATLAB
code for
Metodo_CorrectorTabla.fig
%
METODO_CORRECTORTABLA, by
itself, creates a new
METODO_CORRECTORTABLA or raises
the existing
%
singleton*.
%
%
H = METODO_CORRECTORTABLA
returns the handle to a new
METODO_CORRECTORTABLA or the
handle to
%
the existing singleton*.

%
%
METODO_CORRECTORTABLA('CALLBACK',
hObject,eventData,handles,...)
calls the local
%
function named CALLBACK in
METODO_CORRECTORTABLA.M with the
given input arguments.
%
%
METODO_CORRECTORTABLA('Property',
'Value',...) creates a new
METODO_CORRECTORTABLA or raises
the
%
existing singleton*.
Starting from the left, property
value pairs are
%
applied to the GUI before
Metodo_CorrectorTabla_OpeningFcn
gets called. An
%
unrecognized property name
or invalid value makes property
application
%
stop. All inputs are
passed to
Metodo_CorrectorTabla_OpeningFcn
via varargin.
%
%
*See GUI Options on
GUIDE's Tools menu. Choose "GUI
allows only one
%
instance to run
(singleton)".
%
% See also: GUIDE, GUIDATA,
GUIHANDLES
% Edit the above text to modify
the response to help
Metodo_CorrectorTabla
% Last Modified by GUIDE v2.5 26Jul-2015 11:47:04
% Begin initialization code - DO
NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton',
...

gui_Singleton,

'gui_OpeningFcn',
@Metodo_CorrectorTabla_OpeningFcn
, ...

'gui_OutputFcn',
@Metodo_CorrectorTabla_OutputFcn,
...
'gui_LayoutFcn',

[] , ...

'gui_Callback',
[]);
if nargin && ischar(varargin{1})
gui_State.gui_Callback =
str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] =
gui_mainfcn(gui_State,
varargin{:});
else
gui_mainfcn(gui_State,
varargin{:});
end
% End initialization code - DO
NOT EDIT
function
Corrector_OpeningFcn(hObject,
eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
% --- Executes just before
Metodo_CorrectorTabla is made
visible.
function
Metodo_CorrectorTabla_OpeningFcn(
hObject, eventdata, handles,
varargin)
% This function has no output
args, see OutputFcn.
% hObject
handle to figure
% eventdata reserved - to be
defined in a future version of
MATLAB
% handles
structure with
handles and user data (see
GUIDATA)
% varargin
command line
arguments to
Metodo_CorrectorTabla (see
VARARGIN)
% Choose default command line
output for Metodo_CorrectorTabla
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);

% UIWAIT makes
Metodo_CorrectorTabla wait for
user response (see UIRESUME)
% uiwait(handles.figure1);

% --- Outputs from this function


are returned to the command line.
function varargout =
Metodo_CorrectorTabla_OutputFcn(h
Object, eventdata, handles)
varargout{1} = handles.output;

% --- Executes on button press in


Resolver.
function
Resolver_Callback(hObject,
eventdata, handles)
f=get(handles.edo,'string');
Y=str2num(get(handles.Ytext,'stri
ng'));
T=str2num(get(handles.Ttext,'stri
ng'));
n=length(T);
ya=str2num(get(handles.yatext,'st
ring'));
A=abm1(f,T,Y,ya)
r=num2str(A(n+1,2));
set(handles.rtext,'string',r);
y1=findstr(f,'.')
if y1==[]
else
f(1,y1)=' ';
end
y='y(0)=';
YA=num2str(ya);
y0=strcat(y,YA);
dy='Dy=';
edo=strcat(dy,f);
Y=dsolve(edo,y0,'t')
x=-A(n+1,1):0.01:A(n+1,1)+2;
grid on
Y1=inline(Y,'t');
r1=Y1(A(n+1,1));
err=abs((r1-A(n+1,2)));
set(handles.error,'string',err);
hold on
ezplot(Y);
plot(A(n+1,1),A(n+1,2),'Or');
plot(A(:,1),A(:,2),'g');
xlim([-A(n+1,1) A(n+1,1)+2]);
ylim([-Y1(A(n+1,1)) Y1(A(n+1,2))
+2]);
grid on

function edo_Callback(hObject,
eventdata, handles)
function edo_CreateFcn(hObject,
eventdata, handles)
if ispc &&
isequal(get(hObject,'BackgroundCo
lor'),
get(0,'defaultUicontrolBackground
Color'))
set(hObject,'BackgroundColor','wh
ite');
end

function Ttext_Callback(hObject,
eventdata, handles)
% --- Executes during object
creation, after setting all
properties.
function Ttext_CreateFcn(hObject,
eventdata, handles)
if ispc &&
isequal(get(hObject,'BackgroundCo
lor'),
get(0,'defaultUicontrolBackground
Color'))
set(hObject,'BackgroundColor','wh
ite');
end

function Ytext_Callback(hObject,
eventdata, handles)
% hObject
handle to Ytext (see
GCBO)
% eventdata reserved - to be
defined in a future version of
MATLAB
% handles
structure with
handles and user data (see
GUIDATA)
% Hints: get(hObject,'String')
returns contents of Ytext as text
%
str2double(get(hObject,'String'))

returns contents of Ytext as a


double

% --- Executes during object


creation, after setting all
properties.
function Ytext_CreateFcn(hObject,
eventdata, handles)
% hObject
handle to Ytext (see
GCBO)
% eventdata reserved - to be
defined in a future version of
MATLAB
% handles
empty - handles not
created until after all
CreateFcns called
% Hint: edit controls usually
have a white background on
Windows.
%
See ISPC and COMPUTER.
if ispc &&
isequal(get(hObject,'BackgroundCo
lor'),
get(0,'defaultUicontrolBackground
Color'))
set(hObject,'BackgroundColor','wh
ite');
end

function yatext_Callback(hObject,
eventdata, handles)

% --- Executes during object


creation, after setting all
properties.
function
yatext_CreateFcn(hObject,
eventdata, handles)
if ispc &&
isequal(get(hObject,'BackgroundCo
lor'),
get(0,'defaultUicontrolBackground
Color'))
set(hObject,'BackgroundColor','wh
ite');
end

function rtext_Callback(hObject,
eventdata, handles)
% --- Executes during object
creation, after setting all
properties.
function rtext_CreateFcn(hObject,
eventdata, handles)
if ispc &&
isequal(get(hObject,'BackgroundCo
lor'),
get(0,'defaultUicontrolBackground
Color'))
set(hObject,'BackgroundColor','wh
ite');
end

function error_Callback(hObject,
eventdata, handles)
% --- Executes during object
creation, after setting all
properties.
function error_CreateFcn(hObject,
eventdata, handles)
if ispc &&
isequal(get(hObject,'BackgroundCo
lor'),
get(0,'defaultUicontrolBackground
Color'))
set(hObject,'BackgroundColor','wh
ite');
end

% --- Executes on button press in


Salir.
function Salir_Callback(hObject,
eventdata, handles)
close
Corrector

% --- Executes on button press in


Nuevo.
function Nuevo_Callback(hObject,
eventdata, handles)
close
Metodo_CorrectorTabla

Obteniendo la siguiente tabla de resultados


Tabla 1. Resultados y errores (anexo tablas)
C. DIAGRAMA DE FLUJO
D. EJERCICIOS DE APLICACIN

Mediante la aplicacin de un mtodo corrector


resuelva la siguiente ecuacin diferencial.

y'=

t2
2

En el intervalo [0 3] con y(0)=1 y aproximar el


valor de y(3).
Primero aplicamos el mtodo de Rounge-Kutta
de cuarto orden para obtener los valores iniciales
de la solucin.

Figa. Respuesta
En la Tabla 1 se presentan los resultados
obtenidos al aplicar el mtodo corrector de
Adams-Moulton
como se observa el error
producido en el mtodo se va reduciendo a
medida que se realizan ms iteraciones, y el
tamao de paso h se reduce tambin, estos
resultados fueron obtenidos para la aproximacin
de la funcin y(t) en t=3 con 24 iteraciones.

f 1=

01
=0.5
2

f 2=

0.125(1+ 0.25 ( 0.5 )(0.5 ) )


=0.40625
2

f 3=

0.125(1+ 0.25 ( 0.5 )(0.40625 ) )


=0.4121094
2

f 4=

0.25(1+0.25 (0.4121094 ) )
=0.3234863
2

Aplicamos el mtodo predictivo , para


posteriormente corregirlo.
Aplicamos el mtodo predictor para
posteriormente corregirlo.

Pk+1 = y k +

h
(9 f k3 +37 f k259 f k 1 +55 f k )
24

Mediante una interpolacin aplicamos el mtodo


de Adams-Moulton como corrector:

y k+1 = y k +

h
(f 5 f k1 +19 f k + 9 f k +1)
24 k 2

Figb. Comparacin de errores


En la figura b se realiza una comparacin entre los
errores producidos al aplicar el mtodo, el
algoritmo implementado y el error entre el valor
calculado y el computacional, como se puede
observar el error ms pequeo es el
computacional, puesto que al realizar 24

iteraciones se presenta el error de redondeo en los


clculos obtenidos.

3. Nakamura Shoichiro. Mtodos Numricos


Aplicados con Software. Ed. Prentice Hall
Hispanoamericana, Mxico.
4. Mathews, J; Fink, K. Mtodos Numricos con
MATLAB. Prentice Hall, 3a. ed., 2000.

III.
CONCLUSIONES
La eficiencia de los mtodos AdamsMilne se considera al doble de los
metodos Runge.Kutta, debido a que solo
se requieren dos evaluaciones de la
funcin por paso.
El mtodo de Milne obtienen la primera
aproximacin de yi+1 extrapolando
valores para la derivada. Este mtodo
difiere de las frmulas de Adams en que
la integracin se hace en ms de un
intervalo.

BIBLIOGRAFIA
1. Burden, R.; Faires, D. Anlisis Numrico. ED.
Thomson, 6a. ed., 1998.

2. Chapra Steven y Canale R. Mtodos


Numricos para Ingenieros. Cuarta edicin
Ed. Mc Graw Hill. Mxico.

Вам также может понравиться