Está en la página 1de 55

Universidad nacional jorge basadre grohmann

Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
MTODOS NUMRICOS
METODO DE LA BISECCION
En general, si f(x) es real y contina en el intervalo que va desde x
1
hasta x
u
y f(x
1
) y
f(x
u
) tienen signos opuestos, es decir, f(x
1
)f(x
u
)<0
Entonces hay al menos una raz real entre x
1
y x
u
.
Los mtodos de bsqueda incremental aprovechan esta caracterstica localizando un
intervalo en el que la funcin cambie de signo. Entonces, la localizacin del cambio de
signo (y, en consecuencia, de la raz) se logra con ms exactitud al dividir el intervalo
en varios subintervalos. Se investiga cada uno de estos subintervalos para encontrar el
cambio de signo. El proceso se repite y la aproximacin a la raz mejora cada vez ms
en la medida que los subintervalos se dividen en intervalos cada vez ms pequeos.
Paso 1:
Elija valores iniciales inferior, x
1
, y superior, x
u
, que encierren la raz, de forma tal que
la funcin cambie de signo en el intervalo. Esto se verifica comprobando que
f(x
1
)f(x
u
)<0.
Paso 2:
Una funcin aproximada de la raz x
1
se determina mediante:
2
1 u
r
x x
x
+

Paso 3:
Realice las siguientes evaluaciones para determinar en qu subintervalo esta la raz:
a) si f(x
1
)f(x
r
)<0, entonces la raz se encuentra dentro del subintervalo inferior o
izquierdo. Por lo tanto, haga x
u
=x
r
y vuelva al paso 2.
b) Si f(x
1
)f(x
u
)>0, entonces la raz se encuentra dentro del subintervalo superior o
derecho. Por lo tanto, haga x
1
=x
r
y vuelva al paso 2.
c) Si f(x
1
)f(x
u
)=0, la raz es igual a x
r
; termina el calculo.
El mtodo de la Biseccin, conocido tambin como de corte binario, de particin de
intervalos o de Bolzano, es un tipo de bsqueda incremental en el que el intervalo se
divide siempre a la mitad. Si la funcin cambia de signo sobre un intervalo, se evala el
valor de la funcin en el punto medio. La posicin de la raz se determina situndola en
punto medio del subintervalo, dentro del cual ocurre un cambio de signo.
Docente lic. Javier lozano
- 1 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 2 -
F
V
O
F
F V
V
F
V
LEER
f(x) , a , b , E
INICIO
FIN
x
1
= (a + b) /
2
b = x
1
f(a)*f(x
1
)<
0
a = x1
a = b
ESCRIBIR
La races: x
1
f(a)*f(b)<0
b - a <
E
f(x1)=
0
ESCRIBIR
No exixte
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codificacin para calcular el rea:
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'))
E=str2double(get(handles.edit4,'string'))
if f(a)*f(b)<0
while abs(b-a)>E
x1=(a+b)/2
if f(a)*f(x1)<0
b=x1
else
a=x1
if f(x1)==0
a=b
end
end
end
set(handles.edit6,'string',x1)
else
set(handles.edit6,'string','no existe raiz')
end
Codificacin para graficar:
function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
f=inline(get(handles.edit1,'string'))
ezplot(f),grid on
Codificacin para cerrar:
close(metodobiseccion)
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano
- 3 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
METODO PUNTO FIJO:
Si la ecuacin f(x)=0 se rearregla en la forma x=g(x), entonces se puede escribir un
mtodo iterativo como:
n k x g x
k k
......, ,......... 3 , 2 , 1 , 0 .. )......... (
1

+
A g(x) se le denomina funcin de iteracin
A este mtodo se le denomina mtodo de sustitucin sucesiva o iteracin de punto fijo y
tiene la siguiente rutina:
1. de la funcin f(x)=0 determinar la funcin de iteracin g(x), es decir, x=g(x).
2. empezar con un valor inicial
0
x
.
3. hallar los
k
x
; k=1,2,3,4,.,n ; mediante la funcin de iteracin g(x), es
decir,
) (
0 1
x g x
) (
1 2
x g x
) (
3 3
x g x

) (
1

n n
x g x
4. el punto
r
x
tal que g(
r
x
) =
r
x
es un punto fijo de g. los puntos fijos son
tambin races de la funcin f(x).
5. k k
x x
+1 representa el mximo error posible.
Observacin:
o La funcin de iteracin g(x) se puede hallar mediante las operaciones
algebraicas o simplemente agregando un x a cada miembro de la
ecuacin f(x)=0.
o La ventaja de este mtodo esta en la facilidad con que se puede obtener
g(x). la desventaja es que los puntos
n
x x x x ., ,......... , ,
3 2 1
no siempre
pueden converger con la funcin de iteracin elegida.
o Para garantizar la convergencia de la iteracin se debe verificar la
siguiente condicin:
1 ) ( ' < x g
, en necesidad de la raz
Teorema:
Si g es derivable en (a;b) y g(x) (a;b) ,
[ ] b a x ,
, entonces g tiene un punto
fijo en [a,b]. si adems g(x) existe un (a,b) y
) , ( 1 ) ( ' b a x k x g <
, entonces
g tiene un nico punto fijo en [a,b]
.
Docente lic. Javier lozano
- 4 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 5 -
F
V
INICIO
LEER
g , x
0
, E , N
k = 1
x
1
= g(x
0
)
x
1
x
0

E
x
0
= x
1
g(x
0
) = g(x
1
)
k k + 1
ESCRIBIR
x
1
, k
FIN
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)
f=inline(get(handles.edit1,'string'));
g=inline(get(handles.edit2,'string'));
Xo=str2double(get(handles.edit3,'string'));
E=str2double(get(handles.edit4,'string'));
X1=g(Xo)
while abs(X1-Xo)>E
Xo=X1
X1=g(Xo)
end
set(handles.edit5,'string',X1)
Codigo para graficar la funcin G(x):
g=inline(get(handles.edit2,'string'));
ezplot(g),grid on
Codigo para cerrar el interface:
close(metodopuntofijo)
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano
- 6 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
METODO NEWTON-RAPHSON
Tal vez, de las formulas para localizar races, la formula de Newton-Raphson sea la ms
ampliamente utilizada. Si el valor inicial para la raz es x
i
, entonces se puede trazar una
tangente desde el punto [x
i
,f(x
i
)] de la curva. Por lo comn, el punto donde esta tangente
cruza al eje x representa una aproximacin mejorada de la raz.
El mtodo de Newton Raphson se deduce a partir de esta interpretacin geomtrica (un
mtodo alternativo basado en la serie de Taylor. Se tiene que la primera derivada en x es
equivalente a la pendiente:
1
0 ) (
) ( '
+

i i
i
i
x x
x f
x f
Que se reordena para obtener:
) ( '
) (
1
i
i
i i
x f
x f
x x
+
La cual se conoce como la formula de Newton Raphson.
El mtodo de la secante:
Un problema potencial en la implementacin del mtodo de Newton Raphson es la
evaluacin de la derivada. Aunque esto no es un inconveniente para los polinomios ni
para muchas otras funciones, existen algunas funciones cuyas derivadas en ocasiones
resulta muy difcil de calcular. En dichos casos, la derivada se puede aproximar
mediante una diferencia finita dividida hacia atrs.
i i
i i
i
x x
x f x f
x f

1
1
) ( ) (
) ( '
) ( '
) (
1
i
i
i i
x f
x f
x x
+
(1)
Esta aproximacin se sustituye en la ecuacin (1) para obtener la siguiente ecuacin
iterativa:
) ( ) (
) )( (
1
1
1
i i
i i i
i i
x f x f
x x x f
x x

+
(*)
La ecuacin (*) es la formula para el mtodo de la secante. Obsrvese que el mtodo
requiere de dos valores iniciales de x. sin embargo, debido a que no se necesita que f(x)
cambie de signo entre los valores dados, este mtodo no se clasifica como un mtodo
cerrado.
Docente lic. Javier lozano
- 7 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 8 -
F
V
INICIO
LEER
f , fd , x
0
, E ,
k = 1
x
1
= x
0
-
x
1
x
0
> E
k N
x
0
= x
1
x
1
= x
0
-
k = k +1
ESCRIBIR
x
1
, k
FIN
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
f=inline(get(handles.edit1,'string'));
fd=inline(get(handles.edit2,'string'));
Xo=str2double(get(handles.edit3,'string'));
E=str2double(get(handles.edit4,'string'));
X1=Xo-f(Xo)/fd(Xo);
while abs(X1-Xo)>E
Xo=X1;
X1=Xo-f(Xo)/fd(Xo);
end
set(handles.edit5,'string',X1)
Codigo para graficar la funcin f(x):
f=inline(get(handles.edit1,'string'));
ezplot(f),grid on
Codigo para cerrar el interface:
close(metodonewtonraphson)
EJEMPLO DEL INTERFACE
Docente lic. Javier lozano
- 9 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
METODO DE LA SECANTE
La funcin f(x) es continua en [a,b].
Dados los dos valores iniciales
1 0
, x x
Se traza la recta secante que pasa por
) ( ), (
1 0
x f x f
, que corta al eje x en
2
x
. Este
punto es una aproximacin a la raz exacta.
Para obtener
2
x
, se utiliza la semejanza de tringulos:
2 1
1
1 0
1 0
) ( ) ( ) (
x x
x f
x x
x f x f

) ( ) (
) ( * ) (
0 1
1 0 1
1 2
x f x f
x f x x
x x


En general:
) ( ) (
) ( * ) (
1
1
1


i i
i i i
i i
x f x f
x f x x
x x
Ahora los valores iniciales son
2 1
.. ... x y x
.
Este proceso se repetir hasta que un
1 + i
x
satisfaga que
E x x
i i
<
+1 , donde E es
una tolerancia prefijada.
Docente lic. Javier lozano
- 10 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 11 -
INICIO
LEER:
X
0
,X
1
,E
ESCRIBIR:
X
2
FIN
X
0
=X
1
|x
2
-x
1
|>E
X
1
=X
2
X
2
= X
1
((X
1
-X
0
)*f(X
0
)) / (f(X
1
)- f(X
0
))
X
2
= X
1
((X
1
-X
0
)*f(X
0
)) / (f(X
1
)- f(X
0
))
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)
f=inline(get(handles.edit1,'string'));
Xo=str2double(get(handles.edit2,'string'));
X1=str2double(get(handles.edit3,'string'));
E=str2double(get(handles.edit4,'string'));
while abs(X1-Xo)>E
X2=X1-((X1-Xo)*f(X1))/(f(X1)-f(Xo))
Xo=X1
X1=X2
end
set(handles.edit5,'string',X2)
Codigo para graficar la funcin f(x):
f=inline(get(handles.edit1,'string'));
ezplot(f),grid on
Codigo para cerrar el interface:
close(metodosecante)
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano
- 12 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
METODO DE MULLER
Recuerde que el mtodo de la secante obtiene una aproximacin de la raiz dirigiendo
una lnea recta hasta el eje x con dios valores de la funcin. Este mtodo de muller es
similar; pero se construye una parbola con tres puntos.
El mtodo consiste en obtener los coeficientes de la parbola que pasa por los tres
puntos. Dichos coeficientes se sustituyen en la formula cuadrtica para obtener el valor
donde la parbola intersecta al eje x; es decir, la raz estimada. La aproximacin se
facilita al escribir la ecuacin de la parbola en una forma conveniente,
c x x b x x a x f + + ) ( ) ( ) (
2
2
2 2
(1)
Queremos que esta parbola pase por tres puntos [x
0
,f(x
0
)], [x
1
,f(x
1
)] y [x
2
,f(x
2
)]. Los
coeficientes de la ecuacin (1) se evalan sustituyendo cada uno de esos tres puntos
para dar
c x x b x x a x f + + ) ( ) ( ) (
2 0
2
2 0 0
(2)
c x x b x x a x f + + ) ( ) ( ) (
2 1
2
2 1 1
(3)
c x x b x x a x f + + ) ( ) ( ) (
2 2
2
2 2 2
(4)
Observe que se ha limitado el subndice 2 de la funcin por brevedad. Debido a que
se tienen tres ecuaciones, es posible encontrar los tres coeficientes desconocidos a, b y
c. Debido a que los trminos de la ecuacin (4) son cero, se encuentra inmediatamente
que c=f(x
2
). As, el coeficiente c es igual al valor de la funcin evaluada en el tercer
valor inicial, x
2
. Este resultado se sustituye en las ecuaciones (2) y (3) para tener dos
ecuaciones con dos incgnitas:
) ( ) ( ) ( ) (
2 0
2
2 0 2 0
x x b x x a x f x f +
(5)
) ( ) ( ) ( ) (
2 1
2
2 1 2 1
x x b x x a x f x f + (6)
Una manipulacin algebraica permite encontrar los coeficientes restantes a y b. la
manera de hacer esto consiste en definir las diferencias:
0 1 0
x x h
1 2 1
x x h
0 1
0 1
0
) ( ) (
x x
x f x f


1 2
1 2
1
) ( ) (
x x
x f x f


(7)
Estas sustituyen en las ecuaciones (5) y (6) para dar
Docente lic. Javier lozano
- 13 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
1 1 0 0 1 0 1 0
) ( ) ( h h a h h b h h + +
1 1
2
1 1
h a h b h
De donde se despejan a y b. el resultado se resume como
0 1
0 1
h h
a


1 1
+ ah b
) (
2
x f c
Para encontrar la raz se aplica la formula cuadrtica a la ecuacin (1). Sin embargo,
debido al error de redondeo potencial, en lugar de usar la formula convencional, se
usar la formula alternativa, es decir:
ac b b
c
x x
4
2
2
2 3
t


(&)
O despejando la incgnita x
3
ac b b
c
x x
4
2
2
2 3
t

+
Obsrvese que al usar la formula cuadrtica, es posible localizar tanto las races reales
como las complejas. Esta es la mayor ventaja del mtodo.
Adems, la ecuacin (&) proporciona una forma directa para determinar el error de
aproximacin. Debido a que el lado izquierdo representa la diferencia entre la raz
estimada actual (x
3
) y la raz estimada anterior (x
2
), el error se calcula como
% 100
3
2 3
x
x x
E

DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 14 -
F
F V
V
O
INICIO
LEER
x
0
, x
1
, x
2
, f(x) , E
dx
1
= 1
x
1
= 0
dx
1
> E *
x
1
h
0
= x
1
x
0
h
1
= x
2
x
1
d
0
= (f(x
1
) f(x
0
) / h
0
d
1
= (f(x
2
) f(x
1
) / h
1
a = (d
1
d
0
) / (h
1
+ h
0
)
b = ah
1
+ d
1
c = f(x
1
)
rad =
b+rad>b-
rad
dm = b + rad dm = b - rad
dx
r
= -2c / dm
x
r
= x
2
+ dx
r
x
0
= x
1
x
1
= x
2
x
2
= x
r
ESCRIBIR
x
r
FIN
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
Docente lic. Javier lozano
- 15 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
X0=str2double(get(handles.edit1,'string'));
X1=str2double(get(handles.edit2,'string'));
X2=str2double(get(handles.edit3,'string'));
f=inline(get(handles.edit4,'string'));
E=str2double(get(handles.edit5,'string'));
dxr=1;
xr=0;
while abs(dxr)>E*xr
h0=X1-X0;
h1=X2-X1;
d0=(f(X1)-f(X0))/h0;
d1=(f(X2)-f(X1))/h1;
a=(d1-d0)/(h1+h0);
b=a*h1+d1;
c=f(X2);
rad=(b^2-(4*a*c))^(-0.5);
if abs(b+rad)>abs(b-rad)
den=b+rad;
else
den=b-rad;
end
dxr=-2*c/den;
xr=X2+dxr;
X0=X1;
X1=X2;
X2=xr;
end
set(handles.edit6,'string',xr);
Codigo para graficar la funcin G(x):
f=inline(get(handles.edit4,'string'));
ezplot(f),grid on
Codigo para cerrar el interface:
close(metodomuller)
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano
- 16 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
METODO DEL POLINOMIO DE LAGRANGE INTERPOLACION
POLINOMIAL
El polinomio de interpolacin de Lagrange es simplemente una reformulacin del
polinomio de Newton que evita el clculo de las diferencias divididas, y se representa
de manera concisa como:

n
i
i i n
x f x L x f
0
) ( ) ( ) (

n
i j
j j i
j
i
x x
x x
x L
0
) (
Donde designa el producto de .por ejemplo, la versin lineal (n=1) es
) ( ) ( ) (
1
0 1
0
0
1 0
1
1
x f
x x
x x
x f
x x
x x
x f

y la versin de segundo grado es:


) (
) )( (
) )( (
) (
) )( (
) )( (
) (
) )( (
) )( (
) (
2
1 2 0 2
1 0
1
2 1 0 1
2 0
0
2 0 1 0
2 1
2
x f
x x x x
x x x x
x f
x x x x
x x x x
x f
x x x x
x x x x
x f


+


+

DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 17 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
Docente lic. Javier lozano
- 18 -
Num = Num*(v- x
i
)
Den = Den*(x
k
-x
i
)
S=S+L*f(x
k
)
L=Num/Dem
ESCRIBIR
S
n, x
i
,v, f(x)
INICIO
S=0
k=1, n,1
Num = 1
Den = 1
i=1, n,1
i
k
FIN
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)
Y=str2num(get(handles.edit1,'string'))
n=str2double(get(handles.edit2,'string'))
X=str2num(get(handles.edit3,'string'))
v=str2double(get(handles.edit4,'string'))
s=0
for k=1:n
num=1
den=1
for i=1:n
if i~=k
num=num*(v-X(i))
den=den*(X(k)-X(i))
end
l=num/den
end
s=s+l*(Y(k))
end
set(handles.edit5,'string',s)
Codigo para cerrar el interface:
close(metodolagrange)
EJEMPLO DEL INTERFACE:
METODO DE MINIMOS CUADRADOS REGRESION LINEAL
Docente lic. Javier lozano
- 19 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
La grafica permite suponer que la relacin real es lineal y que ninguna recta se ajusta a
los datos exactamente. Sin embargo un mejor enfoque para un problema de este tipo
seria encontrar la mejor recta que se pudiera usar como funcin aproximante aun
cuando pudiera no coincidir precisamente en los datos en cada punto.
El enfoque de minimos cuadrados es la de determinar la mejor recta aproximante con
una desviacin minima.
La funcion lineal es g(x)=ax+b donde a y b son constantes por determinar
Donde a y b se hallan con la solucin de la siguiente matriz:
Docente lic. Javier lozano
- 20 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
1
1
1
1
]
1

1
]
1

1
1
1
1
]
1


n
i
i
i
n
i
i
n
i
i
n
i
n
i
i i
y
y x
b
a
n x
x x
1
1
1
1 1
2
*
Docente lic. Javier lozano
- 21 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico

n
i
i
n
i
n
i
i i
n
i
i
n
i
i i
n
i
i
n x
x x
n y
x y x
a
1
1 1
2
1
1 1

n
i
i
n
i
n
i
i i
n
i
i
n
i
i
i
n
i
i
n
i
i
n x
x x
y x
y x x
b
1
1 1
2
1 1
1 1
2
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 22 -
INICIO
LEER
m , x
i
, y
i
A
11
= 0
A
12
= 0
A
22
= m
B
1
= 0
B
2
= 0
i=1 , 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
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
global A B x y
m=str2num(get(handles.edit1,'string'));
x=str2num(get(handles.edit2,'string'));
y=str2num(get(handles.edit3,'string'));
a11=0;
a12=0;
a22=m;
b1=0;
b2=0;
for i=1:m
a11=a11+(x(i))^2;
a12=a12+x(i);
a21=a12;
b1=b1+x(i)*y(i);
b2=b2+y(i);
end
A=(b1*a22-b2*a12)/(a11*a22-a12*a21);
B=(b2*a11-b1*a21)/(a11*a22-a12*a21);
davo=sprintf('y=%6.4fx+ %6.4f',A,B);
set(handles.edit4,'string',davo);
Docente lic. Javier lozano
- 23 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para graficar la funcin G(x):
global A B x y
xx=min(x)-1:0.1:max(x)+1
yy=A*xx+B;
plot(x,y,'og',xx,yy),grid on;
Codigo para cerrar el interface:
Close(metodoregresionlineal)
EJEMPLO DEL INTERFACE:
METODO DE GAUSS-JORDAN
El metodo Gauss-jordan es una variacin de la eliminacin de Gauss. La principal
diferencia consiste en que cuando una incognita se elimina en el metodo de Gauss-
Jordan, esta es eliminada de todas las otras ecuaciones, no slo de las subsecuentes.
Ademas, todos los renglones se normalizan al dividirlos entre su elemento pivote. De
esta forma, el paso de eliminacin genera una matriz identidad en vez de una triangular.
En consecuencia, no es necesario usar la sustitucin hacia atrs para obtener la solucin
Dado el sistema de ecuaciones lineales:
n n nn n n n
n n
n n
n n
b x a x a x a x a
b x a x a x a x a
b x a x a x a x a
b x a x a x a x a
+ + + +
+ + + +
+ + + +
+ + + +
... .......... ..........
.... .......... .......... .......... ..........
... .......... ..........
... .......... ..........
... .......... ..........
3 3 2 2 1 1
3 3 3 33 2 32 1 31
2 2 3 23 2 22 1 21
1 1 3 13 2 12 1 11
Que en forma matricial se puede escribir como:
Docente lic. Javier lozano
- 24 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
1
1
1
1
1
1
]
1

1
1
1
1
1
1
]
1

1
1
1
1
1
1
]
1

n n nn n n n
n
n
n
b
b
b
b
x
x
x
x
a a a a
a a a a
a a a a
a a a a
.... ....
.. .......... ..........
.... .......... .......... .......... ..........
... .......... ..........
... .......... ..........
... .......... ..........
3
2
1
3
2
1
3 2 1
3 33 32 31
2 23 22 21
1 13 12 11
O tambin Ax+B, donde A es la matriz de coeficientes, x es el vector de la incgnita y
B es el vector de los termino independientes.
Procedimiento
1. Crear la matriz formada por la matriz de coeficientes y el vector de terminos
independientes.
2. mediante tranformadas elementales la matriz de coeficientes debe convertirse en
la matriz identidad, y los valores que esten en la posicin del vector de terminos
independientes ser el vector solucion.
3. entonces las raices del sistema son:
Docente lic. Javier lozano
- 25 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
n n
r x r x r x ....... ..........
2 2 1 1
Este proceso requiere de
2 2
2
3
n
n
n
+ multiplicaciones y
2 2
3
n n
sumas.
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 26 -
F V
INICIO
LEER
n , a
ij
i = 1 , n , 1
FIN
divisor a
ii
j = i , n+1 , 1
a
ij
= a
ij
/ divisor
k = 1 , n , 1
i j
pivote = a
ki
j = i , n+1 ,
1
a
kj
= a
kj
pivote * a
ij
O
ESCRIBIR
a
i
, n
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)
n=str2double(get(handles.edit1,'string'))
a=str2num(get(handles.edit2,'string'))
for i=1:n
divisor=a(i,i)
for j=i:n+1
a(i,j)=a(i,j)/divisor
end
for k=1:n
if i~=k
pivote=a(k,i)
for j=i:n+1
a(k,j)=a(k,j)-pivote*a(i,j)
end
end
end
end
for i=1:n
for j=1:n+1
end
c(i)=a(i,n+1)
end
set(handles.edit3,'string',c)
Codigo para cerrar el interface:
close(metodogaussjordan)
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano
- 27 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
METODO DE GAUSS-SEIDEL
Los mtodos iterativos constituyen una alternativa a los mtodos de eliminacin
descritos ahora, para aproximar la solucin. Tales mtodos son similares a las tcnicas
que se desarrollaron para obtener las races de una sola ecuacin. Aunque mtodos
consistan en suponer un valor y luego usar un mtodo sistemtico para obtener una
aproximacin mejorada de la raz. El mtodo de gauss seidel es el mtodo iterativo ms
comnmente usado. Supongo que se da un sistema de n ecuaciones:
[ ]{ } { } B X
Suponga que se limita a un conjunto de ecuaciones de 3x3. Si los elementos de la
diagonal no son todos cero, la primera ecuacin se puede resolver para x
1
, la segunda
para x
2
, y la tercera para x
3
, para obtener
11
3 13 2 12 1
1
a
x a x a b
x

(&)
22
3 23 1 21 2
2
a
x a x a b
x

(&&)
33
2 32 1 31 3
3
a
x a x a b
x

(&&&)
Ahora si empezamos el proceso de solucin al escoger valores iniciales para las x. Una
forma simple para obtener los valores iniciales es suponer que todos son cero. Estos
Docente lic. Javier lozano
- 28 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
ceros se sustituyen en la ecuacin (&) la cual se utiliza para calcular un nuevo valor x
1
=
b
1
/a
11
. Despus, se sustituye este nuevo valor de x
1
junto con el valor previo cero de x
3
en la ecuacin (&&) y se calcula el nuevo valor de x
2
. Este proceso se repite con la
ecuacin (&&&) para calcular un nuevo valor de x
3
. Despus se regresa a la primera
ecuacin y se repite todo el procedimiento hasta que la solucin converja
suficientemente cerca de los valores verdaderos. La convergencia SE VERIFICA
USANDO EL CRITERIO.
s
j
i
j
i
j
i
ai
E
x
x x
E <

% 100
1
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 29 -
F V
LEER
n , max ite , a
ij
, b
i
, V
i
INICIO
FIN
k = 1 , max ite ,
1
i = 1 , n , 1
x
i
= v
i
i = 1 , n , 1
S = 0
j = 1 , n , 1
i j
S = S + a
ij
* x
j
V
i
= (b
i
S) / 1000
x
i
= V
i
ESCRIBIR
V
i
, i = 1, 2, 3
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)
ITER=str2double(get(handles.edit3,'string'));
n=str2double(get(handles.edit1,'string'));
v=str2num(get(handles.edit2,'string'));
a=str2num(get(handles.edit4,'string'));
b=str2num(get(handles.edit5,'string'));
cad1='';
for k=1:ITER
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 k=1:n
cad2=sprintf('x%d=%10.8f',k,x(k));
cad1=[cad1,cad2];
end
cad2=sprintf('\n');
cad1=[cad1,cad2];
end
set(handles.edit6,'string',cad1)
Codigo para cerrar el interface:
Docente lic. Javier lozano
- 30 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
close(metodogaussseidel)
EJEMPLO DEL INTERFACE:
INTEGRACION NUMERICA
REGLA DEL TRAPECIO
la regla del trapecio es la primera de las formulas cerradas de integracin de Newton
cotes. Corresponde al caso donde el polinomio de la ecuacin es de primer grado:


b
a
n
b
a
dx x f dx x f I ) ( ) (


b
a
b
a
dx x f dx x f I ) ( ) (
1
) (
) ( ) (
) ( ) (
1
a x
a b
a f b f
a f x f

+
(*)
El rea bajo esta lnea recta res una aproximacin de la integral de f(x) entre los lmites
a y b.
( )
1
]
1

+
b
a
dx a x
a b
a f b f
a f I
) ( ) (
) (
El resultado de la integracin es:
2
) ( ) (
) (
b f a f
a b I
+

Que se denomina regla del trapecio.
Obtencin de la regla del trapecio:
Antes de la integracin, la ecuacin (*) se puede expresar como:
Docente lic. Javier lozano
- 31 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
a b
a af b af
a f x
a b
a f b f
x f

) ( ) (
) (
) ( ) (
) (
1
Agrupando los ltimos dos trminos:
a b
a af b af a af a bf
x
a b
a f b f
x f

+
+

) ( ) ( ) ( ) ( ) ( ) (
) (
1
O
a b
b af a bf
x
a b
a f b f
x f

) ( ) ( ) ( ) (
) (
1
la cual se puede integrarse entre x = a y x = b para obtener:
b
a
x
a b
b af a bf x
a b
a f b f
I |
) ( ) (
2
) ( ) (
2

Este resultado se evala para dar:


( )
( ) a b
a b
b af a bf a b
a b
a f b f
I

) ( ) (
2
) ( ) (
2 2
Ahora, como ( )( ),
2 2
a b a b a b +
[ ] ) ( ) (
2
) ( ) ( b af a bf
a b
a f b f I +
+

Multiplicando y agrupando trminos se tiene:
2
) ( ) (
) (
b f a f
a b I
+

que es la formula del trapecio.
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 32 -
INICIO
LEER
a , b , f(x), n
h=(b-a)/n
i=1, n-1,1
S=f(a)+f(b)
i=1, n-1,1
S=S+2*f(x
i
)
A=S*h/2
ESCRIBIR
A
x
I
=a+i*h
FIN
x
i
=a+i*h
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
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
I=s*(h/2);
set(handles.edit5,'string',I);
Codigo para graficar:
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'));
n=str2double(get(handles.edit4,'string'));
h=(b-a)/n;
for i=1:n+1
x(i)=a+(i-1)*h;
y(i)=f(x(i));
end
x=[x,b,a,a];
y=[y,0,0,f(a)];
fill(x,y,[0.8 0.8 0.9])
for i=1:n+1
x(i)=a+(i-1)*h;
y(i)=f(x(i));
line([x(i) x(i)],[0,f(x(i))]);
Docente lic. Javier lozano
- 33 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
end
hold on
ezplot(f,[min(x):0.2:max(x)])
plot(x,y,'og')
plot(x,y,'g')
Codigo para cerrar el interface:
close(metododeltrapecio)
EJEMPLO DEL INTERFACE:
REGLA DE SIMPSON
Adems de aplicar la regla del trapecio con una segmentacin mas fina, otra forma de
obtener una estimacin ms exacta de una integral consiste en usar polinomios de grado
superior para unir los puntos.
REGLA DE SIMPSON 1/3:
La regla de simpson 1/3 resulta cuando un polinomio de interpolacin de segundo grado
se sustituye en la ecuacin


b
a
n
b
a
dx x f dx x f I ) ( ) (
Docente lic. Javier lozano
- 34 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico


b
a
b
a
dx x f dx x f I ) ( ) (
2
si se designa a y b como x
0
y x
2
, y f
2
(x) se representa por un polinomio de Lagrange de
segundo grado, la integral se transforma en
dx x f
x x x x
x x x x
x f
x x x x
x x x x
x f
x x x x
x x x x
I
x
x

1
]
1



+


+

2
0
) (
) )( (
) )( (
) (
) )( (
) )( (
) (
) )( (
) )( (
2
1 2 0 2
1 0
1
2 1 0 1
2 0
0
2 0 1 0
2 1
despus de la integracin y de las manipulaciones algebraicas, se obtiene la siguiente
formulas:
[ ] ) ( ) ( 4 ) (
3
2 1 0
x f x f x f
h
I + +
(3)
donde, en este caso, h=(b-a)/2. Esta ecuacin se conoce como la regla de Simpson 1/3, y
es la segunda formula de integracin cerradas de Newton Cotes. La especificacin
1/3 se origina del hecho de que h esta dividida entre 3 en la ecuacin (3).
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 35 -
INICIO
LEER
f(x) ,a,b,n
i=0, n,1
h=(b-a)/n
x
i
=a+i*b
Si n par
i=2,n, 2
S=S+f(x
1-2
)+ 4f(x
i-1
)+f(x
i
)
I=h*S/3
ESCRIBIR
I
FIN
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
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 i=3:2:n+1
s=s+f(x(i-2))+4*f(x(i-1))+f(x(i))
end
I=(h/3)*s
set(handles.edit5,'string',I);
end
Codigo para graficar:
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'));
n=str2double(get(handles.edit4,'string'));
h=(b-a)/n;
s=f(a)+f(b);
for i=1:n+1
x(i)=a+((i-1)*h);
y(i)=f(x(i));
end
x=[x,b,a,a];
y=[y,0,0,f(a)];
fill(x,y,[0.8 0.4 0.9])
for i=1:n+1
Docente lic. Javier lozano
- 36 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
x(i)=a+((i-1)*h);
y(i)=f(x(i));
line([x(i),x(i)],[0,f(x(i))]);
end
hold on
ezplot(f,[min(x):0.2:max(x)])
Codigo para cerrar el interface:
close(metodosimpsontres)
EJEMPLO DEL INTERFACE:
REGLA DE SIMPSON 3/8
De manera similar a la obtencin de la regla del trapecio y simpson 1/3, es posible
ajustar un polinomio de lagrange de tercer grado a cuatro puntos e integrarlo:


b
a
b
a
dx x f dx x f I ) ( ) (
3
para obtener
[ ] ) ( ) ( 3 ) ( 3 ) (
8
3
3 2 1 0
x f x f x f x f
h
I + + +
Donde h = (b-a)/3. Esta ecuacin se llama regla de Simpson 3/8 debido a que h se
multiplica por 3/8. Esta es la tercera formula de integracin cerrada de Newton-Cotes.
Docente lic. Javier lozano
- 37 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 38 -
INICIO
Leer
f(x),a,b,n
h=(b-a)/n
i=0, n, 1
x
i
=a+i*h
Si n
multipl
o de 3
S=0
i=3,n,3
S=S+f(x
i-3
)+f(x
i-2
)+3f(x
i-1
)+f(x
i
)
I=3h*S/8
ESCCRIBIR
I
FIN
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
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,3)==0
s=0
for i=3:n+1:3
s=s+f(x(i-2))+3*f(x(i-1))+3*f(x(i))+f(x(i-1))
end
I=((3*h)/8)*s
set(handles.edit5,'string',I)
end
Codigo para graficar:
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=1:n+1
x(i)=a+((i-1)*h)
y(i)=f(x(i))
end
x=[x,b,a,a]
y=[y,0,0,f(a)]
fill(x,y,[0.6 0.8 0.4])
Docente lic. Javier lozano
- 39 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
for i=1:n+1
x(i)=a+((i-1)*h)
y(i)=f(x(i))
line([x(i),x(i)],[0,f(x(i))])
end
hold on
ezplot(f,[min(x):0.2:max(x)])
Codigo para cerrar el interface:
close(metodosimpson8)
EJEMPLO DEL INTERFACE:
INTEGRALES MULTIPLES
Las tcnicas de integracin para la regla de trapecio y la regla de simpson se pueden
modificar de manera directa para utilizarse en la aproximacin de integrales multiples.

R
dA y x f ) , (
;donde R es una regin
Docente lic. Javier lozano
- 40 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
R={(x,y)/ b x a ,
d y c
}es rectangular
R={(x,y)/ b x a ,
) ( ) (
2 1
x g y x g
}no es rectangular.
Para describir la tcnica involucrada en la integral
dydx y x f
b
a
x g
x g

) (
) (
2
1
) , (
se utiliza la
regla de simpson 1/3.
2
1
a b
h

2
) ( ) (
) (
1 2
2
x g x g
x h

[ ]
[ ]
[ ]

+ + + +
+ + + + +
+

'

+ + +

)) ( , ( )) ( ) ( , ( 4 )) ( , (
3
) (
)) ( , ( )) ( ) ( , ( 4 ) ( , (
3
) (
4
)) ( , ( )) ( ) ( ( 4 )) ( , (
3
) (
3
) , (
2 2 2 2 2 2 1 2 2 1 2
2 2
1 2 1 1 2 1 1 1 1 1
1 2
) (
) (
0 2 0 2 0 1 , 0 0 1 0
0 2 1
2
1
x g x f x h x g x f x g x f
x h
x g x f x h x g x f x g x f
x h
x g x f x h x g x f x g x f
x h h
dydx y x f
b
a
x g
x g
Docente lic. Javier lozano
- 41 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 42 -
INICIO
Leer
f(x,y), a, b, m, n, g
1
(x), g
2
(x)
h
1
=(b-a)/n
i=0, n, 1
x
i
=a+i*h
1
h
1
=(g
2
(x
i
)-g
1
(x
i
))/m
j=o, m, 1
y
i
=g
1
(x
i
)+j*h
2
S1=0
j=2, m, 2
S1=S1+f(x
i
, y
j-2
)+4f(x
i,
y
j-1
)+f(x
i
,y
i
)
M
i
=S1*h
2
/3
S2=0
i=2, n, 2
S2=S2+M
i-2
+4M
i-1
+M
i
Area=h
1*
S2/3
ESCRIBI
R
Area
FIN
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
Codigo para graficar:
Codigo para cerrar el interface:
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano
- 43 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
ECUACIONES DIFERENCIALES ORDINARIAS
METODO DE EULER
La primera derivada ofrece una estimacin directa de la pendiente en
i
x
(figura 1)
Figura 1
Donde
) , (
i i
y x f
es la ecuacin diferencial evaluada en
i
y
y
i
x
. la estimacin se
sustituye en la ecuacin
h yi y
i
+
+1 1)
Y se obtiene:
h y x f yi y
i i i
* ) , (
1
+
+
Est formula se conoce como mtodo de Euler (o de Euler-Cauchy o punto de
pendiente). Se predice un nuevo valor de y usando la pendiente (igual a la primera
derivada en el valor original de x) para poder extrapolar linealmente sobre el tamao de
paso h(figura 1).
Anlisis para el error del mtodo de Euler
La solucin numerica de la EDO implica dos tipos de error :
Docente lic. Javier lozano
- 44 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
1. errores de truncamiento, o de discretizacin, originados por la naturaleza de las
tcnicas empleadas para aproximar los valores de y.
2. errores de redondeo, causados por el numero limitado de cifras significativas
que una computadora puede retener.
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 45 -
INICIO
LEER
f(x,y) , a , b , n , y
0
x
0
= a
h = (b 1) / n
i = 1 , n , 1
y
1
= y
0
+ h * f(x
0
,y
0
)
y
0
= y
1
x
1
= x
0
+ h
x
0
= x
1
ESCRIBIR
y
0
FIN
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
function varargout = pushbutton1_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'));
n=str2double(get(handles.edit4,'string'));
y0=str2double(get(handles.edit5,'string'));
h=(b-a)/n;
x0=a;
for i=1:n
y1=y0+h*f(x0,y0);
y0=y1;
x1=x0+h;
x0=x1;
end
set(handles.edit6,'string',y1);
Codigo para graficar:
function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
f1=get(handles.edit1,'string');
f=inline(f1,'x','y');
ezmesh(f);grid on
Codigo para cerrar el interface:
close(metodoeuler)
EJEMPLO DEL INTERFACE:
Docente lic. Javier lozano
- 46 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
METODO DE RUNGE-KUTTA
Dada la ecuacin diferencial ordinaria ) , (
'
y x f y con la condicin inicial
0 0
) ( y x y
supongamos que se conocen los valores aproximados de
n
y y y y .., ,......... , ,
3 2 1
es decir para
n n n
y x y x
y x y x
y x y x
y x y x

) ( ,
.. .......... ..........
) ( ,
) ( ,
) ( ,
3 3 3
2 2 2
1 1 1
Se quiere calcular:
Docente lic. Javier lozano
- 47 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
)] ( )
2
( 4 ) ( [
6
] ( )
2
( 4 ) ( [
6
) ( ) (
: ) 1 (
] , [ int ) 1 (
2
:
)] ( ) ( 4 ) ( [
3
) (
. , 3 / 1
) 1 .......... .......... .......... ) ( ) (
) , (
) (
1
' ' '
1
) 1
' ' '
1
1
1 2
2 1 0
1
'
'
1 1
2
0
1
+ +
+ +
+
+
+ +
+ + + +
+ + +

+ +

+
n n n n n
n n n n n
n n
x
x
x
x
n n
n n
x y
h
x y x y
h
y y
x y
h
x y x y
h
x y x y
como escribir puede se ecuacin la
x x ervalo el tomamos ecuacin la para
x x
h
donde
x f x f x f
h
dx x f
espaciadas igualmente puntos los para simposon de regla la por
x y x y dx y
tiene se calculo del l fundamenta teorema el por y x f y si
x y y
n
n
Al el termino
)
2
( 4
'
h
x y
n
+
se divide en los trminos
)
2
( 2 )
2
( 2
' '
h
x y
h
x y
n n
+ + +
para
aproximar la pendiente de
)
2
(
'
h
x y
n
+
en el punto medio
2
h
x
n
+
de 2 maneras
distintas.
) , ( ) , ( ) ( ), ( *
: 2
) 2 .. .......... .......... )]........ ( )
2
( 2
2
( 2 ) ( [
6
1
' '
1
1
' ' ' '
1
n n n n n n
n n n n n n
y x f K y x f x y donde x y K
pendientes las sustituyen se ecuacin la en
x y
h
x y
h
x y x y
h
y y

+ + + + + +
+ +
) *
2
,
2
( )
2
( ) ( ),
2
( *
1 2
' '
2
K
h
y
h
x f K
h
x f x y donde
h
x y K
n n n n n
+ + + +
) *
2
,
2
( )
2
( ) ( ),
2
( *
2 2
' '
3
K
h
y
h
x f K
h
x f x y donde
h
x y K
n n n n n
+ + + +
) * , ( ) ( ) ( ), ( *
3 1 4 1
'
1
'
4
K h y x f K x f x y donde x y K
n n n n n
+
+ + +
) 2 2 (
6
4 3 2 1 1
K K K K
h
y y
n n
+ + + +
+
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 48 -
O
INICIO
LEER
F(x,y), a, b, n, y
0
h =
x
0
= a
i = 1 , n , 1
k
1
= f(x
0
,y
0
)
k
2
= f(x
0
+, y
0
+ ()(k
1
))
k
3
= f(x
0
+, y
0
+ ()(k
2
)
k
4
= f(x
0
+h), y
0
+ hk
3
)
y
1
= y
0
+ (k
1
+2k
2
+2k
3
+k
4
)
x
1
= x
0
+ h
x
0
= x
1
y
0
= y
1
ESCRIBIR
y
1
FIN
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
function varargout = pushbutton1_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'));
n=str2double(get(handles.edit4,'string'));
y0=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;

Docente lic. Javier lozano
- 49 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
end
set(handles.edit6,'string',y1);
Codigo para graficar:
f1=get(handles.edit1,'string');
f=inline(f1,'x','y');
ezmesh(f);grid on
Cdigo para cerrar el interface:
close(metodorungekutta4)
EJEMPLO DEL INTERFACE:
SISTEMA DE ECUACIONES DIFERENCIALES
Muchos problemas prcticos en la ingeniera y en la ciencia requieren la solucin de un
sistema de ecuaciones diferenciales ordinarias simultaneas mas que de una sola
ecuacin.
Un sistema de ecuaciones diferenciales ordinarias se puede representar generalmente
como:
) 3 2 1 1
1
'
........., .......... ,......... , , , (
n
y y y y x f y
Docente lic. Javier lozano
- 50 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
) 3 2 1 2
2
'
........., .......... ,......... , , , (
n
y y y y x f y
) 3 2 1 3
3
'
........., .......... ,......... , , , (
n
y y y y x f y

n n
n y y y y x f y ........., .......... ,......... , , , (
3 2 1
'

La solucin de este sistema requiere que las n condiciones iniciales se conozcan en un


valor inicial x
Por ejemplo:
) , , (
2 1 1
1
'
y y x f y
) , , (
2 1 2
2
'
y y x f y
Sujeto a las condiciones iniciales:
2 2 1 1
) ( ) ( x y x y
Se puede utilizar el mtodo de Runge-Kutta de 4to orden para hallar la ,solucin es
decir;
) , , ( *
2 1 1 1
y y x f K
) , , ( *
2 1 2 1
y y x f R
) *
2
, *
2
,
2
( *
1 2 1 1 1 2
R
h
y K
h
y
h
x f K + + +
) *
2
, *
2
,
2
( *
1 2 1 1 2 2
R
h
y K
h
y
h
x f R + + +
) *
2
, *
2
,
2
( *
2 2 2 1 1 3
R
h
y K
h
y
h
x f K + + +
) *
2
, *
2
,
2
( *
2 2 2 1 2 3
R
h
y K
h
y
h
x f R + + +
) * , * , ( *
3 2 3 1 1 4
R h y K h y h x f K + + +
) * , * , ( *
3 2 3 1 2 4
R h y K h y h x f R + + +
Por tanto:
] 2 2 [
6
) ( ) (
4 3 2 1 1 1
K K K K
h
x y h x y + + + + +
] 2 2 [
6
) ( ) (
4 3 2 1 2 2
R R R R
h
x y h x y + + + + +
DIAGRAMA DE FLUJO
Docente lic. Javier lozano
- 51 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Codigo para Calculo de raices aproximadas
f1=get(handles.edit1,'string');
f2=get(handles.edit2,'string');
f=inline(f1,'x','y1','y2');
g=inline(f2,'x','y1','y2');
a=str2double(get(handles.edit3,'string'));
b=str2double(get(handles.edit4,'string'));
y1=str2double(get(handles.edit5,'string'));
y2=str2double(get(handles.edit6,'string'));
Docente lic. Javier lozano
- 52 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
n=str2double(get(handles.edit7,'string'));
h=(b-a)/n;
x0=a;
for i=1:n
k1=f(x0,y1,y2);
R1=g(x0,y1,y2);
k2=f(x0+h/2,y1+(h/2)*k1,y2+(h/2)*R1);
R2=g(x0+h/2,y1+(h/2)*k1,y2+(h/2)*R1);
k3=f(x0+h/2,y1+(h/2)*k2,y2+(h/2)*R2);
R3=g(x0+h/2,y1+(h/2)*k2,y2+(h/2)*R2);
k4=f(x0+h,y1+h*k3,y2+h*k3);
R4=g(x0+h,y1+h*k3,y2+h*k3);
y1=y1+(h/6)*(k1+2*k2+2*k3+k4);
y2=y2+(h/6)*(R1+2*R2+2*R3+R4);
x1=x0+h;
x0=x1;
y1=y1;
y2=y2;
end
set(handles.text10,'string',y1,y2);
Codigo para graficar:
Codigo para cerrar el interface:
EJEMPLO DEL INTERFACE:
ECUACIONES DIFERENCIALES DE ORDEN SUPERIOR
Dado un problema de valor inicial general:
) 1 ( ' ' '
........., .......... ,......... , , , (

n n
y y y y x f y
? ) (
) ( ., .......... ,......... ) ( , ) (
1 0
) 1 (
1 0
'
0 0

f
n
n
x y
x y x y x y
La estrategia es convertir la ecuacin diferencial ordinaria
Docente lic. Javier lozano
- 53 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
) 1 ( ' ' '
........., .......... ,......... , , , (

n n
y y y y x f y en un sistema de ecuaciones
mediante el cambio de variable es decir:
) 1 (
' '
3
'
2
1
... ..........

n
n
y u
y u
y u
y u
Entonces:
) .., ,......... , , , (
......... .......... ..........
3 2 1
'
3
' ' '
2
2
' '
1
n
n
n
u u u u x f y u
u y u
u y u



Es decir se tiene el siguiente sistema de ecuaciones.
) .., ,......... , , , (
......... .......... ..........
3 2 1
'
3
'
2
2
'
1
n n
u u u u x f u
u u
u u

Con las condiciones iniciales


1 0 1 0 2 0 0 1
) ( ., .......... ,......... ) ( , ) (


n n
x y x u x u
Para hallar la solucin de este sistema se puede utilizar el mtodo de Runge-Kutta de
cuarto orden.
Docente lic. Javier lozano
- 54 -
Universidad nacional jorge basadre grohmann
Facultad de ingeniera
Escuela de ingeniera civil clculo numrico
Docente lic. Javier lozano
- 55 -

También podría gustarte