Está en la página 1de 58

UNJBG ESIC

CALCULO NUMERICO
MONOGRAFIA DE METODOS NUMERICOS
METODO DE LA BISECCION
En matemtica, el mtodo de biseccin es un algoritmo de bsqueda de races que
trabaja dividiendo el intervalo a la mitad y seleccionando el subintervalo que tiene la
raz.
Supngase que queremos resolver la ecuacin f(x) = 0 (donde f es continua. Dados
dos puntos a y b tal que f(a) y f(b) tengan signos distintos, sabemos por el Teorema de
Bolzano que f debe tener, al menos, una raz en el intervalo [a, b]. El mtodo de
biseccin divide el intervalo en dos, usando un tercer punto c = (a+b) / 2. En este
momento, existen dos posibilidades: f(a) y f(c), f(c) y f(b) tienen distinto signo. El
algoritmo de biseccin se aplica al subintervalo donde el cambio de signo ocurre.
El mtodo de biseccin es menos eficiente que el mtodo de Newton, pero es mucho
ms seguro asegurar la convergencia.
Si f es una funcin continua en el intervalo [a, b] y f(a)f(b) < 0, entonces este mtodo
converge a la raz de f. De hecho, una cota del error absoluto es:
En la n sima iteracin. La biseccin converge linealmente, por lo cual es un poco
lento. Sin embargo, se garantiza la convergencia si f(a) y f(b) tienen distinto signo.
Unas cuantas iteraciones del mtodo de biseccin aplicadas en un intervalo [a1;b1]. El
punto rojo es la raz de la funcin.
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 1 -
UNJBG ESIC
CALCULO NUMERICO
DIAGRAMA DE FLUJO:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 2 -
NCO
LEER
f(X),a,b,E
f(a)*f(b)<0
lb - al>E
x=(a+b)/2
f(x)=0
a=b
f(a)*f(x)<0
a=x
ESCRBR
No existe raiz
FN
b=x
ESCRBR
X
v
F
V F
UNJBG ESIC
CALCULO NUMERICO
PROGRAMACION DEL METODO:
GUIDE:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 3 -
UNJBG ESIC
CALCULO NUMERICO
CODIFICACION:
function pushbutton1_CaIIback(hObject, eventdata, handIes)
% $$$$$____CODFCACON DEL METODO DE BSECCON ____$$$$$$
f=inline(get(handles.edit1,'string'));
a=str2double(get(handles.edit2,'string'));
b=str2double(get(handles.edit3,'string'));
E=str2double(get(handles.edit4,'string'));
if f(a)*f(b)<0
while abs(b-a)>E
x=(a+b)/2;
if f(a)*f(x)==0
a=b;
else
if f(a)*f(x)<0
b=x;
else
a=x;
end
end
end
else
set(handles.edit5,'string','No existe Raiz')
end
set(handles.edit5,'string',x)

function pushbutton2_CaIIback(hObject, eventdata, handIes)
figure(1)
f=inline(get(handles.edit1,'string'));
ezplot(f);grid on
function pushbutton3_CaIIback(hObject, eventdata, handIes)
close(biseccion)
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 4 -
UNJBG ESIC
CALCULO NUMERICO
MTODO DEL PUNTO FIJO.

Este mtodo aunque no es el mas sencillo, ni el mas rpido, es til ya que es la base
de los dems mtodos. Bsicamente se da un valor y este se evala en una funcin
previamente calculada (llamada tambin funcin equivalente). Despus en base al
resultado obtenido se busca el error mediante
/xi - x1 + 1/<=E
Si esto se cumple se encontr la raz si no, se evala el nuevo valor en la funcin
equivalente as hasta llegar al error.
Este mtodo funciona de la siguiente manera:
Algoritmo

1.- Dada una funcin f(x) se localiza su equivalente.
2.- Despus se asigna un valor inicial que es x0.
3.- Se asigna un valor de error (estn pequeo como lo quiera el usuario).
4.- Se sustituye x0 en la funcin equivalente. Ese valor es x1 y se compara con el
error deseado. Si el error que se calculo es igual o menor al que dio el usuario se
encontr la raz.

El mtodo del punto fijo se basa en que una raz de la ecuacin
0 ) ( = ! "
ser un
punto fijo de la ecuacin
! ! # = ) (
siempre que
) ( ) ( ! " ! ! # ! =
o
) ( ) ( ! " ! ! # + =
.
Podemos construir una sucesin que tienda al punto fijo de la ecuacin
! ! # = ) (
, o lo
que es lo mismo a la solucin de la ecuacin
0 ) ( = ! "
. Para ello consideramos la
sucesin:

"
#
$
% =
!
1 ) (
1
0
$ %& ! " !
'(') !
$ $
Caractersticas

El mtodo presenta dos inconvenientes:
La sucesin debe estar bien construida, es decir, cada trmino debe pertenecer al
dominio de la funcin
) (! "
para poder calcular el trmino siguiente.
La sucesin no siempre es convergente aunque est bien construida

DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 5 -
UNJBG ESIC
CALCULO NUMERICO
Es interesante ver como para una misma funcin
) (! "
podemos tomar
distintas funciones
) (! #
y el mtodo puede ser convergente con una y no serlo con
otras.
DIAGRAMA DE FLUJO:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 6 -
LEER
f(x),g(x),X0,E
NCO
X1=g(X0)
lX1-X0l>E
X0=X1
X1=g(X)
ESCRBR
X1
FN
V
F
UNJBG ESIC
CALCULO NUMERICO
PROGRAMACION DEL METODO:
GUIDE:
CODIFICACION:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 7 -
UNJBG ESIC
CALCULO NUMERICO
function pushbutton1_Callback(hObject, eventdata, handles)
f=inline(get(handles.edit1,'string'));
g=inline(get(handles.edit2,'string'));
X0=str2double(get(handles.edit3,'string'));
E=str2double(get(handles.edit4,'string'));
X1=g(X0);
while abs(X1-X0)>E
X0=X1;
X1=g(X0);
end
set(handles.edit5,'string',X1);
function pushbutton2_CaIIback(hObject, eventdata, handIes)
% $$$$====GRAFCA DE LA FUNCON====$$$$
figure(1)
f=inline(get(handles.edit1,'string'));
ezplot(f);grid on
function pushbutton3_Callback(hObject, eventdata, handles)
close(puntofijo)
MTODO DE NEWTON-RAPHSON
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 8 -
UNJBG ESIC
CALCULO NUMERICO
Este mtodo parte de una aproximacin inicial x0 y obtiene una aproximacin mejor, x1,
dada por la frmula:
(1)

La expresin anterior puede derivarse a partir de un desarrollo en serie de Taylor.
Efectivamente, sea r un cero de f y sea x una aproximacin a r tal que r=x+h. Si f''
existe y es continua, por el teorema de Taylor tenemos:

0 = f(r) = f(x+h) = f(x) + hf'(x) + O(h
2
) (2)

en donde h=r-x. Si x est prximo a r (es decir hes pequea), es razonable ignorar el
trmino O(h
2
):
0 = f(x) + hf'(x) (3)

por lo que obtenemos la siguiente expresin para h:
(4)

A partir de la ecuacin (4) y teniendo en cuenta que r=x+h es fcil derivar la ecuacin
(1).


Figure: nterpretacin geomtrica del
mtodo de Newton.
[scale=0.9]eps/new-1

El mtodo de Newton tiene una interpretacin geomtrica sencilla, como se puede
apreciar del anlisis. De hecho, el mtodo de Newton consiste en una IineaIizacin de
la funcin, es decir, f se reemplaza por una recta tal que contiene al punto (x0,f(x0)) y
cuya pendiente coincide con la derivada de la funcin en el punto, f'(x0). La nueva
aproximacin a la raz, x1, se obtiene de la interseccin de la funcin linear con el eje
X de ordenadas.
Veamos cmo podemos obtener la ecuacin (1) a partir de lo dicho en el prrafo
anterior. La ecuacin de la recta que pasa por el punto (x0,f(x0)) y de pendiente f'(x0)
es:
y - f(x0) = f'(x0)(x-x0) (5)

DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 9 -
UNJBG ESIC
CALCULO NUMERICO
de donde, haciendo y=0 y despejando x obtenemos la ecuacin de Newton-Raphson
(1).


Figure: Dos situaciones en las que el
mtodo de Newton no funciona
adecuadamente: (a) el mtodo no alcanza
la convergencia y (b) el mtodo converge
hacia un punto que no es un cero de la
ecuacin.
[scale=0.9]eps/new-2

El mtodo de Newton es muy rpido y eficiente ya que la convergencia es de tipo
cuadrtico (el nmero de cifras significativas se duplica en cada iteracin). Sin
embargo, la convergencia depende en gran medida de la forma que adopta la funcin
en las proximidades del punto de iteracin. En la figura (arriba) se muestran dos
situaciones en las que este mtodo no es capaz de alcanzar la convergencia (figura
(a)) o bien converge hacia un punto que no es un cero de la ecuacin (figura (b)).
DIAGRAMA DE FLUJO:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 10 -
UNJBG ESIC
CALCULO NUMERICO
PROGRAMACION DEL METODO:
GUIDE:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 11 -
INICIO
LEER
f(X),f'(X),X,E
X1=X0 - f(X0)/f'(X0)
lx1-x0l >E
X0=X1
ESCRIBIR
X1
FIN
X1=X0 - f(X0)/f'(X0)
F
V
UNJBG ESIC
CALCULO NUMERICO
CODIFICACION:
function pushbutton1_CaIIback(hObject, eventdata, handIes)
f=inline(get(handles.edit1,'string'));
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 12 -
UNJBG ESIC
CALCULO NUMERICO
df=inline(get(handles.edit2,'string'));
X0=str2double(get(handles.edit3,'string'));
E=str2double(get(handles.edit4,'string'));
X1=X0-f(X0)/(df(X0));
while abs(X1-X0)>E
X0=X1;
X1=X0-f(X0)/(df(X0));
end
set(handles.edit5,'string',X1);
function pushbutton2_CaIIback(hObject, eventdata, handIes)
% $$$$====GRAFCA DE LA FUNCON====$$$$
figure(1)
f=inline(get(handles.edit1,'string'));
ezplot(f);grid on
function pushbutton3_Callback(hObject, eventdata, handles)
close(newtonrapshon1)
MTODO DE LA SECANTE
El principal inconveniente del mtodo de Newton estriba en que requiere conocer el
valor de la primera derivada de la funcin en el punto. Sin embargo, la forma funcional
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 13 -
UNJBG ESIC
CALCULO NUMERICO
de f(x) dificulta en ocasiones el clculo de la derivada. En estos casos es ms til
emplear el mtodo de la secante.
El mtodo de la secante parte de dos puntos (y no slo uno como el mtodo de
Newton) y estima la tangente (es decir, la pendiente de la recta) por una aproximacin
de acuerdo con la expresin:

(34)

Sustituyendo esta expresin en la ecuacin (1) del mtodo de Newton, obtenemos la
expresin del mtodo de la secante que nos proporciona el siguiente punto de
iteracin:

(35)



Figure: Representacin geomtrica del
mtodo de la secante.
[scale=0.9]eps/secante

En la siguiente iteracin, emplearemos los puntos x1 y x2para estimar un nuevo punto
ms prximo a la raz de acuerdo con la ecuacin (35). En la figura (arriba) se
representa geomtricamente este mtodo.
En general, el mtodo de la secante presenta las mismas ventajas y limitaciones que
el mtodo de Newton-Raphson explicado anteriormente
DIAGRAMA DE FLUJO:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 14 -
UNJBG ESIC
CALCULO NUMERICO
PROGRAMACION DEL METODO:
GUIDE:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 15 -
INICIO
LEER
X0,X1,f(X),E
IX1-X0I > E
X2 = X1 - (X1-X0)*f(X1)/(f(X1)-f(X0))
X0 = X1
X1 = X2
ESCRIBIR
X1
FIN
UNJBG ESIC
CALCULO NUMERICO
CODIFICACION:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 16 -
UNJBG ESIC
CALCULO NUMERICO
function pushbutton1_CaIIback(hObject, eventdata, handIes)
f=inline(get(handles.edit1,'string'));
X0=str2double(get(handles.edit2,'string'));
X1=str2double(get(handles.edit3,'string'));
E=str2double(get(handles.edit4,'string'));
while abs(X1-X0)>E
X2=X1-((X1-X0)*f(X1))/(f(X1)-f(X0))
X0=X1
X1=X2
end
set(handles.edit5,'string',X2);
function pushbutton2_CaIIback(hObject, eventdata, handIes)
% $$$$====GRAFCA DE LA FUNCON====$$$$
figure(1)
f=inline(get(handles.edit1,'string'));
ezplot(f);grid on
function pushbutton3_Callback(hObject, eventdata, handles)
close(secante)
METODO DE GAUSS - JORDAN
Este mtodo utiliza las mismas tcnicas de eliminacin Gaussiana (incluyendo
el pivoteo), pero con el objetivo de finalizar con una matriz de la siguiente forma:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 17 -
UNJBG ESIC
CALCULO NUMERICO

Donde
$
*
es la matriz identidad de
$!$
.
Para lograr esto, se usa la tcnica del pivoteo con la nica diferencia que el
pivote se usa para hacer ceros hacia abajo y hacia arriba.
EjempIo 1: Usar el metodo de Gauss-Jordan para resolver el siguiente sistema:
Solucin. Comenzamos con la matriz aumentada
Procedemos a hacer el primer pivoteo, y para ello, intercambiamos los renglones 1 y
2:
y haciendo ceros debajo del pivote, obtenemos:
~
Ahora, para colocar adecuadamente el segundo pivote intercambiamos los renglones 2
y 3:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 18 -
UNJBG ESIC
CALCULO NUMERICO
Para hacer ceros arriba del pivote 1.25, multiplicamos el rengln 2 por
25 . 1
5 !
y se lo
sumamos al rengln 1; para hacer ceros debajo del mismo pivote, multiplicamos al
mismo rengln 2 por
25 . 1
5 . 0 !
y se lo sumamos al rengln 3 . Todo esto nos da:
Ahora procedemos a hacer ceros arriba del pivote 0.09 . Para ello, multiplicamos el
rengln 3 por
09 . 0
85 . 0
y se lo sumamos al rengln 2; igualmente multiplicamos el
rengln 3 por
09 . 0
9 . 1 !
y se lo sumamos al rengln 1. Todo esto nos da:
Finalmente para hacer los 1's ( unos ) en la diagonal principal, multiplicamos los
renglones 1 , 2, y 3 por
25 . 1
1
,
2
1 !
y
09 . 0
1
, respectivamente. Obtenemos entonces
la matriz final:
La cual nos da la solucion del sistema de ecuaciones:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 19 -
DIAGRAMA DE FLUJO:
UNJBG ESIC
CALCULO NUMERICO
INICIO
i = 0 , n , 1
j = i , n + 1, 1
k = 1 , n , 1
ESCRBR
ai,n+1
LEER
n , aij
divisor = aii
aij = aij /divisor
pivote=a(k,i)
j = i, n, 1
akj = akj - pivote* aij
i~=k
FIN
PROGRAMACION DEL METODO:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 20 -
UNJBG ESIC
CALCULO NUMERICO
GUIDE:
CODIFICACION:
function varargout = pushbutton1_CaIIback(h, eventdata, handIes, varargin)
a=str2num(get(handles.edit3,'string'));
[m,n]=size(a);
for i=1:m
divisor=a(i,i);
for j=i:n
a(i,j)=a(i,j)/divisor;
end
for k=1:m
if i~=k
pivote=a(k,i);
for j=i:n
a(k,j)=a(k,j)-pivote*a(i,j);
end
end
end
end
for i=1:m
x(i)=a(i,n);
end
x=x';
t=1:m;
t=t'
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 21 -
UNJBG ESIC
CALCULO NUMERICO
cadena='';
for t=1:m
cad=sprintf('x%d=%6.2f',t,x(t));
cadena=[cadena;cad];
end
set(handles.edit4,'string',cadena)
% --------------------------------------------------------------------
function varargout = pushbutton2_CaIIback(h, eventdata, handIes, varargin)
set(handles.edit3,'string','');
set(handles.edit4,'string','');
% --------------------------------------------------------------------
function varargout = pushbutton3_CaIIback(h, eventdata, handIes, varargin)
close(gausjordan)
METODO DE GAUSS-SEIDEL
El mtodo de Gauss-Seidel, es un mtodo iterativo y por lo mismo, resulta ser un
mtodo bastante eficiente. Comenzamos con nuestro sistema de ecuaciones:
De la ecuacin 1 despejemos
1
!
, de la ecuacin 2 despejemos
2
!
, ., de la
ecuacin n despejemos
$
!
. Esto nos da el siguiente conjunto de ecuaciones:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 22 -
UNJBG ESIC
CALCULO NUMERICO
Este ltimo conjunto de ecuaciones son las que forman nuestras frmulas iterativas.
Para comenzar el proceso iterativo, le damos el valor de cero a las variables
$
! ! , ,
2
!
; esto nos dar un primer valor para
1
!
. Ms precisamente, tenemos que:
Enseguida, sustitumos este valor de
1
!
en la ecuacin 2, y las variables
$
! ! , ,
3
!

siguen teniendo el valor de cero. Esto nos da el siguiente valor para
2
!
:
Estos ltimos valores de
1
!
y
2
!
, los sustitumos en la ecuacin 3, mientras que
$
! ! , ,
4
!
siguen teniendo el valor de cero; y as sucesivamente hasta llegar a la ltima
ecuacin. Todo este paso, nos arrojar una lista de primeros valores para nuestras
incgnitas, la cual conforma nuestro primer paso en el proceso iterativo. Digamos que
tenemos:
Volvemos a repetir el proceso, pero ahora sustituyendo estos ltimos datos en vez
de ceros como al inicio, obtendremos una segunda lista de valores para cada una de
las incgnitas. Digamos que ahora tenemos:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 23 -
UNJBG ESIC
CALCULO NUMERICO
En este momento, podemos calcular los errores aproximados relativos, respecto a
cada una de las incgnitas. As, tenemos la lista de errores como sigue:
El proceso se vuelve a repetir hasta que:
donde
%
&
es una cota suficiente prefijada
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 24 -
UNJBG ESIC
CALCULO NUMERICO
INICIO
LEER
N, m , aij, bi, vi
Xi = Vi
Xi = vi
i = 1, n, 1
j ~= 1
FIN
K = 1, m, 1
i = 1, n, 1
i = 1, n, 1
s=0
j=1, n, 1
s = s + aij*xj
vi = (bi-s)/aii
ESCRBR
vi
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 25 -
DIAGRAMA DE FLUJO:
UNJBG ESIC
CALCULO NUMERICO
PROGRAMACION DEL METODO:
GUIDE:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 26 -
UNJBG ESIC
CALCULO NUMERICO
CODIFICACION:
function varargout = pushbutton1_CaIIback(h, eventdata, handIes, varargin)
m=str2double(get(handles.edit1,'string'));
v=str2num(get(handles.edit2,'string'));
a=str2num(get(handles.edit3,'string'));
b=str2num(get(handles.edit4,'string'));
[n,n]=size(a);
cad1='';
for k=1:m
for i=1:n
x(i)=v(i);
end
for i=1:n
s=0;
for j=1:n
if j~=i
s=s+a(i,j)*x(j);
end
end
v(i)=(b(i)-s)/a(i,i);
x(i)=v(i);
end
for t=1:n
cad2=sprintf(' x%d=%10.8f ',t,x(t));
cad1=[cad1,cad2];
end
cad2=sprintf('\n');
cad1=[cad1,cad2];
end
set(handles.edit5,'string',cad1)

% --------------------------------------------------------------------
function varargout = pushbutton2_CaIIback(h, eventdata, handIes, varargin)
set(handles.edit1,'string','');
set(handles.edit2,'string','');
set(handles.edit3,'string','');
set(handles.edit4,'string','');
set(handles.edit5,'string','');
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 27 -
UNJBG ESIC
CALCULO NUMERICO
POLINOMIO DE INTERPOLACIN DE LAGRANGE

Nuevamente tenemos los datos :


El polinomio de interpolacin de Lagrange se plantea como sigue:

) ( ) ( ) ( ) (
1 1 0 0
! + , ! + , ! + , ! -
$ $
+ + + = !

Donde los polinomios
) (! +
.
se llaman los polinomios de Lagrange, correspondientes
a la tabla de datos.
Como se debe satisfacer que
0 0
) ( , ! - =
, esto se cumple si
1 ) (
0 0
= ! +
y
0 ) (
0
= ! +
.

para toda
0 ' .
.
Como se debe satisfacer que
1 1
) ( , ! - =
, esto se cumple si
1 ) (
1 1
= ! +
y
0 ) (
1
= ! +
.

para toda
1 ' .
.
Y as sucesivamente, veremos finalmente que la condicin
( )
$ $ $
, ! - =
se cumple si
( ) 1 =
$ $
! +
y
( ) 0 =
$ .
! +
para toda
$ . '
.
Esto nos sugiere como plantear los polinomios de Lagrange. Para ser ms claros,
analicemos detenidamente el polinomio
) (
0
! +
. De acuerdo al anlisis anterior vemos
que deben cumplirse las siguientes condiciones para
) (
0
! +
:

1 ) (
0 0
= ! +
y
0 ) (
0
=
/
! +
, para toda
0 ' /
Por lo tanto, planteamos
) (
0
! +
como sigue:

( ) ( ) ( ) ( )
$ )
! ! ! ! ! ! 0 ! + ! ! ! = !
2 1

Con esto se cumple la segunda condicin sobre
) (
0
! +
. La constante c se
determinar para hacer que se cumpla la primera condicin:

( ) ( ) ( ) ( )
$
! ! ! ! ! ! 0 ! + ! ! ! = ( =
0 2 0 1 0 0 0
1 1 !

( )( ) ( )
$
! ! ! ! ! !
0
! ! !
= (
0 2 0 1 0
1
!

Por lo tanto el polinomio
) (
0
! +
queda definido como:

( )
( ) ( ) ( )
( )( ) ( )
$
$
! ! ! ! ! !
! ! ! ! ! !
! +
! ! !
! ! !
=
0 2 0 1 0
2 1
0
!
!

Anlogamente se puede deducir que:


( )
)
)
'
'
!
!
=
/ .
. /
/ .
.
/
! !
! !
! +
) (
) (
, para
$ / , , 1 " =
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 28 -
UNJBG ESIC
CALCULO NUMERICO
MTODO DE LAGRANGE
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 29 -
INICIO
Leer n,
x
Xi
S 0
K 0, n, 1
Num 1
Den 1
i 0, n, 1
i
k
Num Num*(X-X
i
)
DenDen*(X
k
-X
i
)
LkNum/Den
1 3 1 4 5
6
7 "896:
Escribir
S
Fin
UNJBG ESIC
CALCULO NUMERICO
PROGRAMACION DEL METODO :
GUIDE:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 30 -
UNJBG ESIC
CALCULO NUMERICO
CODIFICACION:
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)
x=str2num(get(handles.edit2,'string'));
n=length(x);
f=inline(get(handles.edit1,'string'));
P=str2double(get(handles.edit3,'string'));
S=0;
for k=1:n
Num=1;
Dem=1;
for i=1:n
if k~=i
Num=Num*(P-x(i));
Dem=Dem*(x(k)-x(i));
end
L=Num/Dem;
end
S=S+L*f(x(k));
end
set(handles.edit4,'string',S)
% --------------------------------------------------------------------
function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
x=str2num(get(handles.edit2,'string'));
f=inline(get(handles.edit1,'string'));
ezplot(f),grid on
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 31 -
UNJBG ESIC
CALCULO NUMERICO
METODO DE LOS MINIMOS CUADRADOS
Supongamos que hemos medido un conjunto de pares de datos (xi, yi) en una
experiencia, por ejemplo, la posicin de un mvil en ciertos instantes de tiempo.
Queremos obtener una funcin y=f(x) que se ajuste lo mejor posible a los valores
experimentales. Se pueden ensayar muchas funciones, rectas, polinomios, funciones
potenciales o logartmicas.
Una vez establecido la funcin a ajustar se determinan sus parmetros, en el caso de
un polinomio, sern los coeficientes del polinomio de modo que los datos
experimentales se desven lo menos posible de la frmula emprica.
La funcin ms sencilla es la funcin lineal y=ax+b que hemos tratado en la pgina
anterior. El procedimiento de ajustar los datos experimentales a una lnea recta se
denomina regresin lineal
POLINOMIO APROXIMADOR
Queremos aproximar un polinomio de grado n, a un conjunto de m pares de datos (xi,
yi) de modo que n m ! .
Sea el polinomio
P(x)=a0+a1x+a2x
2
+...anx
n
Se calcula la cantidad
Para obtener los valores de los coeficientes del polinomio aproximador se tienen que
determinar los valores de los coeficientes a0, a1, a2, ...an de forma que la cantidad S
tome un valor mnimo.
Hagamos las derivadas parciales de S respecto de a0, a1, a2, ...an iguales a cero
(1)
Obtenemos un sistema de n+1 ecuaciones con n+1 incgnitas, a0, a1, a2, ...an
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 32 -
UNJBG ESIC
CALCULO NUMERICO
EjempIo:
Supongamos que tenemos 4 pares de datos y que queremos ajustarlos al polinomio
de segundo grado y=a0+a1x+a2x
2
x x0 x1 x2 x3
y y0 y1 y2 y3
Las ecuaciones (1) se escribirn
agrupando trminos
Volvamos al sistema de n+1 ecuaciones con n+1 incgnitas. ntroduzcamos las
expresiones
(2)
Se obtiene el siguiente sistema de n+1 ecuaciones con n+1 incgnitas
(3)
Si todos los puntos son distintos, el sistema de ecuaciones tiene una solucin nica.
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 33 -
UNJBG ESIC
CALCULO NUMERICO
PROGRAMACION DEL METODO:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 34 -
INICIO
LEER
m , x
i
, y
i
A
11
0
A
12
0
A
22
m
B
1
0
B
2
0
i1 , m , 1
A
11
A
11
x
i
2
A
12
A
12
x
i
A
21
A
12
B
1
B
1
x
i
y
i
B
2
B
2
y
i
a
a
ESCRIBIR
a , b
FIN
UNJBG ESIC
CALCULO NUMERICO
PROGRAMACION DEL METODO:
GUIDE:
CODIFICACION:
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)
n=str2double(get (handles.edit1,'string'));
x=str2num(get(handles.edit2,'string'));
y=str2num(get(handles.edit3,'string'));
A11=0;
A12=0;
A22=n
B1=0;
B2=0;
for i=1:n;1
for j=0,1,1
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 35 -
UNJBG ESIC
CALCULO NUMERICO
A11=A11+(x(i)*x(i))
A12=A12+(x(i))
A21=A12
A22=n
B1=B1+(x(i))*(y(i))
B2=B2+(y(i))
end
end
a=(B1*A22-B2*A12)/(A11*A22-A12*A21)
b=(A11*B2-A21*B1)/(A11*A22-A12*A21)
set(handles.edit4,'string',a);
set(handles.edit5,'string',b);
% --------------------------------------------------------------------
function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
close(MinimosCuadrados);
% --------------------------------------------------------------------
function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)
n=str2double(get (handles.edit1,'string'));
x=str2num(get(handles.edit2,'string'));
y=str2num(get(handles.edit3,'string'));
[nu,m2]=size(x)
[nv,m2]=size(y)
A11=0;
A12=0;
A22=n
B1=0;
B2=0;
for i=1:n;
for j=0,1,1
A11=A11+(x(i)*x(i))
A12=A12+(x(i))
A21=A12
A22=n
B1=B1+(x(i))*(y(i))
B2=B2+(y(i))
end
end
a=(B1*A22-B2*A12)/(A11*A22-A12*A21)
b=(A11*B2-A21*B1)/(A11*A22-A12*A21)
set(handles.edit4,'string',a);
set(handles.edit5,'string',b);
Y=a*x+b
plot(Y),grid
% --------------------------------------------------------------------
function varargout = pushbutton4_Callback(h, eventdata, handles, varargin)
set(handles.edit1,'string','');
set(handles.edit2,'string','');
set(handles.edit3,'string','');
set(handles.edit4,'string','');
set(handles.edit5,'string','');
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 36 -
UNJBG ESIC
CALCULO NUMERICO
REGLA DEL TRAPECIO
Corresponde al caso donde , es decir :
donde es un polinomio de interpolacin (obviamente de grado 1) para los
datos:
Del captulo anterior, sabemos que este polinomio de interpolacin es:

Integrando este polinomio, tenemos que:
Por lo tanto, tenemos que:

Que es la conocida Regla del Trapecio. Este nombre se debe a la interpretacin
geomtrica que le podemos dar a la frmula. El polinomio de interpolacin para una
tabla que contiene dos datos, es una lnea recta. La integral, corresponde al rea bajo
la lnea recta en el intervalo , que es precisamente el rea del trapecio que se
forma.
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 37 -
UNJBG ESIC
CALCULO NUMERICO
EjempIo 1:
Utilizar la regla del trapecio para aproximar la integral:

Solucin.
Usamos la frmula directamente con los siguientes datos:
Por lo tanto tenemos que:

EjempIo 2.
Usar la regla del trapecio para aproximar la integral:

Solucin.
gual que en el ejemplo anterior, sustitumos los datos de manera directa en la frmula
del trapecio. En este caso, tenemos los datos:
Por lo tanto, tenemos que:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 38 -
UNJBG ESIC
CALCULO NUMERICO
La regla del trapecio se puede ampliar si subdividimos el intervalo en
subintervalos, todos de la misma longitud .


Sea la particin que se forma al hacer dicha subdivisin. Usando
propiedades de la integral tenemos que:

Aplicando la regla del trapecio en cada una de las integrales, obtenemos:

Ahora bien, ya que todos los subintervalos tienen la misma longitud h, tenemos que:

Sustituyendo el valor de h y usando la notacin sigma, tenemos finalmente:

Esta es la regla del trapecio para n subintervalos. Obviamente, esperamos que entre
ms subintervalos usemos, mejor sea la aproximacin a la integral.
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 39 -
UNJBG ESIC
CALCULO NUMERICO
DIAGRAMA DE FLUJO:
REGLA DEL TRAPECIO
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 40 -
INICIO
Leer
a, b, n
h(b-a)
n
s I(a) I(b)
i 1, n-1, 1
Xi a i*h
s s 2*I(xi)
AREA S*h/2
Escrbir
AREA
FIN
UNJBG ESIC
CALCULO NUMERICO
PROGRAMACION DEL METODO :
GUIDE:
CODIFICACION:
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)
f=inline(get(handles.edit1,'string'));
a=str2double(get(handles.edit2,'string'));
b=str2double(get(handles.edit3,'string'));
n=str2double(get(handles.edit4,'string'));
h=(b-a)/n;
s=f(a)+f(b);
for i=2:n
x(i)=a+((i-1)*h);
s=s+2*(f(x(i)));
end
AREA=s*(h/2);
set(handles.edit5,'string',AREA);
% --------------------------------------------------------------------
function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
% $$$$====GRAFCA DE LA FUNCON====$$$$
f=inline(get(handles.edit1,'string'));
ezplot(f);grid on
% --------------------------------------------------------------------
function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)
close(trapecio)
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 41 -
UNJBG ESIC
CALCULO NUMERICO
REGLA DE SIMPSON DE UN TERCIO
Suponemos que tenemos los datos:
donde

es el punto medio entre y .
En este caso se tiene que:

donde es el polinomio de interpolacin para los datos en la tabla anterior.
Usaremos el polinomio de Lagrange.
As, tenemos que:

Si denotamos , entonces:

Simplificando trminos:

Vemos que cada uno de los trminos anteriores, es esencialmente de la misma forma,
es decir, una constante por
As, calculamos la siguiente integral por partes:
Sea:
por lo tanto,
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 42 -
UNJBG ESIC
CALCULO NUMERICO




Usamos esta frmula para calcular la integral de cada uno de los tres trminos de
.

Debido al factor se le conoce como la regla de Simpson de un tercio.
En la prctica, sustitumos el valor de para obtener nuestra frmula final:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 43 -
UNJBG ESIC
CALCULO NUMERICO
DIAGRAMA DE FLUJO:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 44 -
NCO
LEER
F(x),a,b,n
i=0,n,1
S=S+F(xi-2)+4F(xi-1)+F(xi)
=S*h/3
ESCRBR

FN
n par
h=b-a
n
xi=a+h
S=0
i=2,n,1
UNJBG ESIC
CALCULO NUMERICO
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 45 -
NCO
LEER
F(x),a,b,n
i=0,n,1
S=S+F(xi-2)+4F(xi-1)+F(xi)
=S*h/3
ESCRBR

FN
n par
h=b-a
n
xi=a+h
S=0
i=2,n,1
UNJBG ESIC
CALCULO NUMERICO
PROGRAMACION DEL METODO:
GUIDE:
CODIFICACION:
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)
f=inline(get(handles.edit1,'string'));
a=str2double(get(handles.edit2,'string'));
b=str2double(get(handles.edit3,'string'));
n=str2double(get(handles.edit4,'string'));
h=(b-a)/n;
for i=1:n+1
x(i)=a+(i-1)*h;
end
if rem(n,2)==0
s=0;
for j=2:n
s=s+f(x(i-2))+4*f(x(i-1))+f(x(i));
end
=s*h/3 ;
set(handles.edit5,'string',)
else
end
% --------------------------------------------------------------------
function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
f=inline(get(handles.edit1,'string'));
a=str2double(get(handles.edit2,'string'));
b=str2double(get(handles.edit3,'string'));
ezplot(f,a,b), grid on
%-----------------------------------------------------------------------
function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)cc c
close(sinpson13)
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 46 -
UNJBG ESIC
CALCULO NUMERICO
REGLA DE SIMPSON DE TRES OCTAVOS
Este caso corresponde a , es decir,
donde es un polinomio de interpolacin para los siguientes datos:
Y donde , y , son los puntos que dividen en tres partes iguales
al intervalo .
gual que en el caso anterior, se usa el polinomio de interpolacin de Lagrange, y
usando el mtodo de integracin por partes se llega a la siguiente frmula:
donde . Debido al factor es que se le di el nombre de Regla de
Simpson de 3/8. En la prctica, se sustituye el valor de h para obtener:
EjempIo 1.
Aproximar la siguiente integral, usando la regla de Simpson de :
Solucin.
En este caso, tenemos los siguientes datos:
Los cuales sustitumos en la frmula, para obtener:
Al igual que en los dos casos anteriores, la regla de Simpson de 3/8, se puede
extender si subdividimos el intervalo en intervalos de la misma longitud
.
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 47 -
UNJBG ESIC
CALCULO NUMERICO
Sea la particin determinada de esta forma. Cada subintervalo
lo dividimos en tres partes iguales, y sean y los puntos determinados as:
Aplicando la regla de en cada uno de los intervalos tenemos:

Esta ltima, es la regla de Simpson de 3/8 para n subintervalos todos de la misma
longitud.
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 48 -
UNJBG ESIC
CALCULO NUMERICO
DIAGRAMA DE FLUJO:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 49 -
NCO
LEER
F(x),a,b,n
S=S+3/8*h*[ F(xi-3)+3F(xi-2)+3F(xi-1)+F(xi)]
ESCRBR
S
FN
n=3
h=b-a
n
S=0
i=3,n,3
ESCRB
R
"n debe
ser
impar
UNJBG ESIC
CALCULO NUMERICO
PROGRAMACION DEL METODO:
GUIDE:
CODIFICACION:
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)
f=inline(get(handles.edit1,'string'));
a=str2double(get(handles.edit2,'string'));
b=str2double(get(handles.edit3,'string'));
ezplot(f,a,b), grid on
% --------------------------------------------------------------------
function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)
f=inline(get(handles.edit1,'string'));
a=str2double(get(handles.edit2,'string'));
b=str2double(get(handles.edit3,'string'));
n=str2double(get(handles.edit4,'string'));
if rem(n,3)==0
h=(b-a)/n
for i=1:1:n+1
x(i)=a+(i-1)*h
end
s=0
for j=1:3:n-1
s=s+f(x(j))+3*f(x(j+1))+3*f(x(j+2))+f(x(j+3))
end
A=3*s*h/8
set(handles.edit5,'string',A)
else
set(handles.edit5,'string','n debe ser multiplo de 3')
end
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 50 -
UNJBG ESIC
CALCULO NUMERICO
MTODO DE EULER
La idea del mtodo de Euler es muy sencilla y est basada en el significado
geomtrico de la derivada de una funcin en un punto dado.
Supongamos que tuviramos la curva solucin de la ecuacin diferencial y trazamos la
recta tangente a la curva en el punto dado por la condicin inicial.
Debido a que la recta tangente aproxima a la curva en valores cercanos al punto de
tangencia, podemos tomar el valor de la recta tangente en el punto como una
aproximacin al valor deseado .
As, calculemos la ecuacin de la recta tangente a la curva solucin de la ecuacin
diferencial dada en el punto . De los cursos de Geometra Analtica,
sabemos que la ecuacin de la recta es:

donde m es la pendiente. En este caso, sabemos que la pendiente de la recta
tangente se calcula con la derivada:

Por lo tanto, la ecuacin de la recta tangente es :

DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 51 -
UNJBG ESIC
CALCULO NUMERICO
Ahora bien, suponemos que es un punto cercano a , y por lo tanto estar dado
como . De esta forma, tenemos la siguiente aproximacin:
De aqu, tenemos nuestra frmula de aproximacin:

Esta aproximacin puede ser suficientemente buena, si el valor de h es realmente
pequeo, digamos de una dcima menos. Pero si el valor de h es ms grande,
entonces podemos cometer mucho error al aplicar dicha frmula. Una forma de reducir
el error y obtener de hecho un mtodo iterativo, es dividir la distancia en
n partes iguales (procurando que estas partes sean de longitud suficientemente
pequea) y obtener entonces la aproximacin en n pasos, aplicando la frmula
anterior n veces de un paso a otro, con la nueva h igual a .
En una grfica, tenemos lo siguiente:
Ahora bien, sabemos que:

Para obtener nicamente hay que pensar que ahora el papel de lo toma
el punto , y por lo tanto, si sustitumos los datos adecuadamente, obtendremos
que:

De aqu se ve claramente que la frmula recursiva general, est dada por:

Esta es la conocida frmula de Euler que se usa para aproximar el valor de
aplicndola sucesivamente desde hasta en pasos de longitud h.
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 52 -
UNJBG ESIC
CALCULO NUMERICO
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 53 -
NCO
LEER
F(x),a,b,n,y0
x0=a
h=b-a
n
i=1,n,1
y1=y0+h0*f(x)
Y0=y1
x1=x0+h
x0=x1
ESCRBR
y0
FN
DIAGRAMA DE FLUJO:
UNJBG ESIC
CALCULO NUMERICO
Programacin deI metodo :
GUIDE:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 54 -
UNJBG ESIC
CALCULO NUMERICO
CODIFICACION:
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)
funcion=get(handles.edit1,'string');
f=inline(funcion,'x','y');
x0=str2double(get(handles.edit2,'string'));
x1=str2double(get(handles.edit3,'string'));
n=str2double(get(handles.edit4,'string'));
y0=str2double(get(handles.edit5,'string'));
h=(x1-x0)/n;
X(1,1)=x0
Y(1,1)=y0
for i=1:n
y1=y0+h*f(x0,y0);
y0=y1;
x1=x0+h;
x0=x1;
X(i+1,1)=x0;
Y(i+1,1)=y0;
end
set(handles.edit6,'string',y1);
set(handles.edit7,'string',X);
set(handles.edit8,'string',Y);
% --------------------------------------------------------------------
function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
X=str2num(get(handles.edit7,'string'));
Y=str2num(get(handles.edit8,'string'));
plot(X,Y,'.',X,Y,'r-'),grid on, axis equal
% --------------------------------------------------------------------
function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)
close(euler)
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 55 -
UNJBG ESIC
CALCULO NUMERICO
METODO DE RUNGE-KUTTA DE 4TO ORDEN
Los metodos desarrollados por Runge (1885), Kutta (1901), Heun (1900) y otros para
la solucion de problemas con valor en la frontera. Este consiste en obtener un
resultado que se obtendria al utilizar un numero finito de terminos de una serie de
Taylor de la forma:
Este metodo es superior al metodo de punto medio (Runge-Kutta de segundo orden)
ya que contiene los primeros cinco terminos de la serie de Taylor, lo cual significa gran
exactitud sin el calculo de las derivadas, pero se tiene que evaluar la funcion f(x)
cuatro veces para cada subintervalo.
Reacomodando para los valores de f(x) y haciendo f(x)' = y + hf(x), se tiene:
Las reglas o formulas de Runge-Kutta de orden cuatro para la ecuacion diferencial:
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 56 -
UNJBG ESIC
CALCULO NUMERICO
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 57 -
NCO
LEER
F(x), X0,Y0,b, n
h=b-X0
n
i=1,n,1
K1=F( X0, Y0)
K2=F(X0+h/2, Y0+h/2*K1)
K3=F(X0+h/2, Y0+h/2*K2)
K4=F(X0+h, Y0+h*K3)
Y1=Y0-h/6*(K1+2*K2+2*K3+K4)
X1=X0+h
X0=X1
Y0=Y1
ESCRBR
Y0
FN
DIAGRAMA DE FLUJO:
UNJBG ESIC
CALCULO NUMERICO
PROGRAMACION DEL METODO:
GUIDE:
CODIFICACION:
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)
f=inline(get(handles.edit1,'string'));
a=str2double(get(handles.edit2,'string'));
b=str2double(get(handles.edit3,'string'));
ezplot(f,a,b), grid on
% --------------------------------------------------------------------
function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)
f1=get(handles.edit1,'string');
f=inline(f1,'x','y');
a=str2double(get(handles.edit2,'string'));
b=str2double(get(handles.edit3,'string'));
y0=str2double(get(handles.edit4,'string'));
n=str2double(get(handles.edit5,'string'));
h=(b-a)/n;
x0=a;
for i=1:n
k1=f(x0,y0);
k2=f(x0+h/2,y0+(h/2)*k1);
k3=f(x0+h/2,y0+(h/2)*k2);
k4=f(x0+h,y0+h*k3);
y1=y0+(h/6)*(k1+2*k2+2*k3+k4);
x1=x0+h;
x0=x1;
y0=y1;

end
set(handles.edit6,'string',y1);
DOC. LIC. JAVIER LOZANO METODOS NUMERICOS
- 58 -