Sunteți pe pagina 1din 259

Mtodos Numricos

Ing.: Willam Caiza

Copyright 2015 por Ing. William Caiza. Todos los derechos reservados.

Mtodos Numricos

Ing.: Willam Caiza

Dedicatoria
ESTA PGINA ES OPCIONAL.

Mtodos Numricos

Ing.: Willam Caiza

Contenido
CAPITULO I:INTRODUCCIN .................................................................................................................. 5
1.1 NMEROS DECIMALES ........................................................................................................................ 5
1.1.2. NOTACIN DECIMAL ..................................................................................................................... 6
1.1.3. NOTACIN BINARIA ...................................................................................................................... 7
1.2 ANLISIS DE ERRORES ........................................................................................................................... 14
1.1.1
ERROR DE TRUNCAMIENTO ..................................................................................................... 14
1.3 SERIE DE TAYLOR ................................................................................................................................... 14
1.3.1. TEOREMA DE TAYLOR .................................................................................................................. 15
1.3.2. POLINOMIO DE TAYLOR PARA FUNCIONES DE DOS VARIABLES ................................................. 20
1.3.3. TEOREMA DEL POLINOMIO DE TAYLOR: ...................................................................................... 24
CAPITULO II: RESOLUCIN DE ECUACIONES NO LINEALES ...................................................... 26
2.1. INTRODUCCIN .................................................................................................................................... 26
2.2 MTODO DE LA BISECCIN ................................................................................................................... 26
2.3. ERROR EN EL MTODO DE LA BISECCIN ........................................................................................... 27
2.4 MTODO DE LA FALSA POSICIN........................................................................................................... 31
2.5 MTODO DEL PUNTO FIJO .................................................................................................................... 37
2.6 MTODO DE NEWTON-RAPHSON ......................................................................................................... 43
2.7 RACES MLTIPLES ................................................................................................................................ 49
EJERCICIOS RESUELTOS Y PROPUESTOS ...................................................................................................... 54
CAPITULO III: SISTEMA DE ECUACIONES LINEALES ...................................................................... 58
3.1 INTRODUCCIN ..................................................................................................................................... 58
3.1.1 MATRIZ ESCALONADA ................................................................................................................... 58
3.1.2 MATRIZ ESCALONADA REDUCIDA ................................................................................................. 59
3.1.3 RANGO DE A .................................................................................................................................. 60
3.2 CARACTERIZACIN DE LOS SISTEMAS POR SU SOLUCIN ..................................................................... 61
3.2.2 SISTEMAS CON SOLUCIN ............................................................................................................ 61
3.2.3 SISTEMAS CON SOLUCIN NICA ................................................................................................. 61
3.2.4 SISTEMAS CON INFINITO NMERO DE SOLUCIONES .................................................................... 62
3.3 METODO DE GAUSS .............................................................................................................................. 67
3.3.1 ELIMINACIN GAUSSIANA Y PIVOTEO ......................................................................................... 68
3.3.2 PIVOTEO Y MULTIPLICADORES ...................................................................................................... 68
3.4 ELIMINACIN DE GAUSS JORDAN ......................................................................................................... 74
CAPITULO IV: AJUSTE DE CURVAS ........................................................................................................ 87
4.1 INTRODUCCIN. .................................................................................................................................... 87
4.2 MTODO DE LOS MNIMOS CUADRADOS ............................................................................................. 87
4.3 SUPUESTOS O HIPTESIS DEL MODELO DE REGRESIN LINEAL............................................................ 88
4.4 GENERALIZACIN DE MODELOS LINEALES ......................................................................................... 100
4.4.1 MODELO POTENCIAL ................................................................................................................... 100
4.5 REGRESIN MLTIPLE ........................................................................................................................ 102
4.5.1 MTODO DE MNIMOS CUADRADOS PARA LA REGRESIN MULTILINEAL ................................. 102
4.6 MTODO DE MNIMOS CUADRADOS PARA LA REGRESIN MATRICIAL .............................................. 107
4.6.1 DERIVACIN MATRICIAL ............................................................................................................. 107
EJERCICIOS PROPUESTOS .......................................................................................................................... 116
CAPITULO V: INTERPOLACIN .............................................................................................................. 121
5.1 INTERPOLACIN .................................................................................................................................. 121
5.2 INTERPOLACIN INVERSA. ................................................................................................................. 121
5.3 INTERPOLACIN DE NEWTON ............................................................................................................. 124
5.4 INTERPOLACIN DE LAGRANGE .......................................................................................................... 129
5.5 INTERPOLACIN POR SPLINES. ........................................................................................................... 135
5.5.1 SPLINE LINEAL. ............................................................................................................................ 135
5.5.2 SPLINE CUADRTICO ................................................................................................................... 137
5.5.3 SPLINE CUBICO ............................................................................................................................ 141
CAPITULO VI: DERIVACIN NUMRICA ...................................................................................... 145

Mtodos Numricos

Ing.: Willam Caiza

6.1 DIFERENCIACIN NUMRICA .............................................................................................................. 146


6.2 ERRORES POR TRUNCAMIENTO Y REDONDEO AL APROXIMAR LA DERIVADA ..................................... 148
6.3 INTEGRACIN NUMRICA ................................................................................................................... 149
6.4 REGLA DEL TRAPECIO .......................................................................................................................... 150
6.5 REGLA DE SIMPSON 1/3 ...................................................................................................................... 158
6.6 REGLA SIMPSON 3/8 ........................................................................................................................... 161
6.7 REGLA DE BOOLE ................................................................................................................................. 163
6.8 INTEGRACION DE ROMBERG .............................................................................................................. 165
6.9 CUADRATURA DE GAUSS ..................................................................................................................... 167
6.10 DESARROLLO DE LA FRMULA DE GAUSS-LEGENDRE DE DOS PUNTOS ........................................... 168
6.11 TRASLACIN DE LA CUADRATURA DE GAUSS LEGENDRE ............................................................... 170
EJERCICIOS PROPUESTOS .......................................................................................................................... 174
CAPITULO VII: ECUACIONES DIFERENCIALES ORDINARIAS DE PRIMER ORDEN ................... 177
7.1 ECUACIONES DIFERENCIALES ORDINARIAS DE PRIMER ORDEN .......................................................... 177
7.2 MTODOS DE RUNGE-KUTTA .............................................................................................................. 177
7.2.1 MTODO DE EULER ..................................................................................................................... 177
7.3 ANLISIS DEL ERROR PARA EL MTODO DE EULER .............................................................................. 184
7.3.1 ERRORES DE TRUNCAMIENTO .................................................................................................... 184
7.4 MEJORAS DEL MTODO DE EULER ...................................................................................................... 184
7.4.2 MTODO DE HEUN ...................................................................................................................... 186
7.5 MTODO DE RUNGE-KUTTA DE SEGUNDO ORDEN ............................................................................. 187
7.6 MTODOS DE RUNGE-KUTTA DE TERCER ORDEN ................................................................................ 191
7.7 MTODOS DE RUNGE-KUTTA DE CUARTO ORDEN .............................................................................. 192
7.8 MTODOS DE RUNGE-KUTTA DE ORDEN SUPERIOR ............................................................................ 194
EJERCICIOS PROPUESTOS .......................................................................................................................... 195
ANEXOS ..................................................................................................................................................... 199
EJERCICIOS DE LAPLACE CON ECUACIONES DIFERENCIASLES POR LAPLACE ............................................. 200
ANEXO I: MULTIPLICADORES DE LAGRANGE ........................................................................... 204
1 MULTIPLICADORES DE LAGRANGE ......................................................................................................... 204
1.1 CONCEPTOS FUNDAMENTALES ...................................................................................................... 204
1.2 PROCEDIMIENTO ............................................................................................................................ 205
1.3 DETERMINACIN DE LA ECUACIN DE LAGRANGE ....................................................................... 205
1.4 ECUACION GENERAL DE LOS MULTIPLICADORES DE LAGRANGE................................................... 206
ANEXO II: SISTEMA DE ECUACIONES NO LINEALES METODO DE NEWTON ..................... 213
1. SISTEMA DE ECUACIONES NO LINEALES METODO DE NEWTON ........................................................ 213
2. APLICACIONES DEL MTODO DE NEWTON-RAPHSON .......................................................................... 220
3. CONCLUSIN ......................................................................................................................................... 221
ANEXO III: INTRODUCCIN A LA PROGRAMCIN DE MATLAB .......................................... 222
1. INTRODUCCIN ..................................................................................................................................... 222
1.1 CARACTERISTICAS BASICAS.............................................................................................................. 223
1.1.1 COMANDOS BASICOS ................................................................................................................ 223
1.2 CARACTERES ESPECIALES Y COMANDOS............................................................................................. 223
2.
VECTORES Y FUNCIONES.................................................................................................................. 223
2.1 VECTORES ................................................................................................................................... 223
2.2 FUNCIONES .................................................................................................................................... 224
3.
MATRICES ........................................................................................................................................ 228
4 OPERADORES RELACIONALES................................................................................................................. 229
5 INTRODUCCIN A LA INTERFACE GRFICA DE USUARIO (GUI) ............................................................... 232
6 EJEMPLOS BASICOS A LA INTRODUCCION A MATLAB ............................................................................. 233

Mtodos Numricos

Ing.: Willam Caiza

CAPTULO I: INTRODUCCIN

1.1 NMEROS DECIMALES


Comnmente los seres humanos, realizamos los clculos aritmticos usando el sistema
numrico decimal (base 10); las computadoras hacen los clculos aritmticos usando el
sistema numrico binario (base 2).
Al traducir los tipos numricos existentes a notacin binaria queda claro que las
operaciones realizadas no necesariamente son exactas por lo tanto van acumulando
diferentes errores en cada una de las operaciones.
A continuacin se describe los tipos de datos que existen y por ende error que existe en
las operaciones al pasar de notacin decimal a binario.

COMPLEJOS

REALES

RACIONAL

IRRACIONAL

ENTEROS

ENTEROS
POSITIVOS

CERO

IMAGINARIOS

FRACCIONARIOS

ENTEROS
NEGATIVOS

DECIMAL
FINITO

DECIMAL
INFINITO

SEMI
PERIDICAS
Imagen 1. Notacin Decimal

En el nivel superior se encuentra los nmeros complejos.


Ejemplo:
Podra ser 3 + 4 , donde la parte real es 3 y la parte imaginaria es 4.

PERIDICAS

Mtodos Numricos

Ing.: Willam Caiza

Todo nmero real se puede clasificar en un nmero racional e irracional, un nmero


racional es de la forma
escribir de la forma

, , y un nmero es irracional cuando no se puede

, ejemplo = . .

Todo nmero racional se puede clasificar en entero y fraccionario, los nmeros enteros se
clasifican en enteros positivos o naturales, cero y enteros negativos.
Los nmeros fraccionarios se clasifican en decimal finito e infinito, es decimal finito si el
residuo es cero.
Las fracciones de decimal infinito se clasifican en peridicas y semi-peridicas.
Las fracciones peridicas como 3,3333 = 3, 3 , se puede obtener su fraccin
que es igual al cociente cuyo numerador es igual al nmero menos la parte
peridica (33-3), y el denominador es tantos nueves como cifras (una) tenga la
parte peridica (9).
Ejemplo 1:
3 =

33 3 30
=
9
9

Las fracciones semi-peridicas como 3,2455555 = 3,245, se puede obtener


su forma fraccionaria, cuyo numerador es igual al nmero menos sin la parte
peridica (3245-324), el denominador es tantos nueves como cifras tenga la
parte peridica y tantos ceros como cifras tenga la parte no peridica (dos).

Ejemplo 2:

3,245 =

3245 324 2921


=
900
900

1.1.2. NOTACIN DECIMAL


Nuestra costumbre es escribir toda expresin numrica en base 10, descrita a continuacin.
= + + + + = {, , , , , }
=
Ejemplo 3:
La expresin 1563 en base 10 se puede escribir

Mtodos Numricos

Ing.: Willam Caiza


= 1 103 + 5 102 + 6 101 + 3 100 .

1563 = 1563
10

1.1.3. NOTACIN BINARIA


Toda mquina realiza operaciones con 0 y 1 por lo tanto es fundamental al menos
conocer los detalles de las transformaciones de binario a base 10 y viceversa.
Todo nmero binario se puede representar de la siguiente forma:

= + + + + = {, }
Ejemplo 4:
Transformar el nmero de base 2 a un nmero en base 10
1 0 0 12 = 1 23 + 0 22 + 0 21 + 1 20 8 + 0 + 0 + 1 = 9

Ejemplo 5:
Transformar el nmero de base 10 a un nmero en base 2
10010 = 1 1 0 0 1 0 02

100 2
0 50 2
0 25 2
1 12 2
0 6 2
0 3
1

2
1

Comprobacin:
1 1 0 0 1 0 02 = 1 26 + 1 25 + 0 24 + 0 23 + 1 22 + 0 21 + 0 20
= 64 + 32 + 0 + 0 + 4 + 0 + 0 100
Regla de transformacin de un nmero en notacin base 10 con decimales a binario.
1. Se transforma la parte entera binaria.

Mtodos Numricos

Ing.: Willam Caiza

2. Se sigue con la parte fraccionaria multiplicando por el nmero 2; si el resultado es


mayor o igual a 1 se anota un 1; si es menor que 1 se anota un 0. (El producto se
realiza con la parte original decimal y con la parte fraccionaria de las sucesivas
multiplicaciones, hasta que la parte fraccionaria sea cero).
3. Despus de realizar cada multiplicacin, se coloca los nmeros obtenidos en el
orden de su obtencin.
4. Algunos nmeros se transforman en dgitos peridicos.
Ejemplo 6:
Transformar , a binario.
Parte Entera
610 =
6 2
0 3
1

2
1

Parte Fraccionaria
0,3125 2 = 0,625
0,625 2 = 1,25
0,25 2 = 0,5
0,5 2 = 1
02= 0
02= 0
0,3125 =

Verificacin:
Parte Entera
= 1 22 + 1 21 + 0 21
= 4+2+0
=
Parte Fraccionaria
= 0 21 + 1 22 + 0 23 + 1
24 + 0 25 + 0 26
1
1
= 0 + 4 + 0 + 16 + 0 + 0
4+1
5
=
=
= ,
16
16

Mtodos Numricos con MatLab

Ing. William Caiza

, = ,
Ejemplo 7:
Transformarlo a fraccin.
Dado el siguiente nmero peridico 3.
3. 5 =

35 3 32
=
9
9

Verificamos
Parte Entera
32 9
50 3,55
50
Ejemplo 8:
)
Dado el siguiente (3.2
3.25 =
Verificamos
Parte Entera
293 90
230 3,255
500
500

325 32 293
=
90
90

=3.25

Ejemplo 9:

Conversin de . +

13 5 39 + 50 89
+ =
=
10 3
30
30

Ejemplo 10:
Conversin de .
6.3125
63125 12625 2525 505 101
10000 =
=
=
=
=
10000
10000
2000
400
80
16

Mtodos Numricos con MatLab

Ing. William Caiza

Ejemplo 11:
Conversin de . a binario
Parte Entera
6 2
0 3 2
: 110
1 1

Parte Fraccionaria
0.3125*(2)= 0.625 =
0.625*(2)= 1.25 =
0.25*(2)= 0.5
=
0.5*(2)= 1
=

0
1
0
1

6.312510 = 110.01012
Ejemplo 12:

a binario
Conversin de 5.3
5341 53 5288 2644
=
=
990
990
495
Parte Entera
5 2
1 2 2
0 1

: 101.
1012 = 1(2)2 + 0(2)1 + 1(2)0
4
+ 0
+1
=5

Parte Fraccionaria

0.341
0.341*(2)= 0.682 = 0
0.682*(2)= 1.364 = 1
0.364*(2)= 0.728 = 0
0.728*(2)= 1.456 = 1
0.456*(2)= 0.912 = 0
0.912*(2)= 1.824 = 1
0.824*(2)= 1.648 = 1
0.648*(2)= 1.296 = 1
0.296*(2)= 0.592 = 0
0.592*(2)= 1.184 = 1
0.184*(2)= 0.368 = 0
0.368*(2)= 0.736 = 0
0.736*(2)= 1.472 = 1
0.472*(2)= 0.944 = 0
0.944*(2)= 1.888 = 1
0.888*(2)= 1.776 = 1

Sin importar q sea peridica

10

Mtodos Numricos con MatLab

Ing. William Caiza

Verificacin
= 01010111
0.341
= 1(2)2 + 1(2)4 + 1(2)6 + 1(2)7 + 1(2)8
=

1 1
1
1
1
+
+
+
+
+
4 16 64 128 250

64 + 16 + 4 + 2 + 1
87
=
256
256

Implementacin en Matlab
PROGRAMA TRANFORMACIONES DE DECIMAL A BINARIO

Imagen 2: Transformaciones Decimal a Binario

11

Mtodos Numricos con MatLab

Ing. William Caiza

TRANSFORMAR DE BINARIO A DECIMAL


function pushbutton1_Callback(hObject, eventdata, handles)
num=str2num(get(handles.edit1,'string'));

[1]
[2]

numero=num2str(num);
ent=num2str(floor(num));
decimal=num2str(num-floor(num));

[3]
[4]
[5]

bin=dec2bin(num);
dec=num-floor(num);
entbin=num2str(bin);

[6]
[7]
[8]

set(handles.text4,'string',ent);
set(handles.text5,'string',decimal);
set(handles.text6,'string',numero);
set(handles.text1,'string',entbin);

[9]
[10]
[11]
[12]

if dec~=0
for i=1:10
a=dec*2;
binario(1,i)=floor(a);
b=a-floor(a);
dec=b;
end

[13]
[14]
[15]
[16]
[17]
[18]
[19]

set(handles.text2,'string',num2str(binario));
final=[ num2str(bin) ',' num2str(binario)];
EXPLICACIN
set(handles.text3,'string',final);
else
set(handles.text3,'string',bin);
end

[20]
[21]
[22]
[23]
[24]
[25]

[1]. Definicin del botn a usar.


[2]. Obtiene los datos ingresados como cadena de caracteres y lo transforma en un numero base 10
[3]. Transforma el nmero ingresado en cadena de caracteres
[4]. Obtiene la parte entera del numero ingresado mediante el comando floor y lo transformo en cadena
de caracteres
[5]. Obtiene la parte decimal del nmero ingresado y transformo en cadena de caracteres
[6]. Obtiene el numero binario de la cantidad entera mediante el comando dec2bin
[7]. Obtengo la parte decimal del nmero ingresado
[8]. Transforma el nmero binario de la parte entera a cadena de caracteres
[9]. Muestra la parte entera base 10
[10]. Muestra la parte decimal base 10
[11]. Muestra el nmero ingresado base 10
[12]. Muestra el nmero binario de la parte entera
[13]. Si la parte decimal base 10 es diferente de cero realiza el siguiente proceso
[14]. Define la cantidad de elementos binarios
[15]. Multiplica por 2 el decimal base 10
[16]. Guarda la parte entera del resultado de la multiplicacin en un vector
[17]. Obtiene la nueva parte decimal
[18]. Define la variable con la nueva parte decimal base 10
[20]. Muestra el vector
[21]. Junta la numero binario de la parte entera con el vector
[22]. Muestra el numero ingresado en binario si hubiera decimales

12

Mtodos Numricos con MatLab

Ing. William Caiza

[24]. Muestra el numero ingresado en binario si no hubiera decimales

TRANSOFORMAR: (BINARIO A DECIMAL)


function pushbutton2_Callback(hObject, eventdata, handles)
num=str2num(get(handles.edit2,'string'));
set(handles.text12,'string',num2str(num));

[1]
[2]
[3]

entbin=round(num);
set(handles.text10,'string',num2str(entbin));

[4]
[5]

binent=bin2dec(num2str(entbin));
set(handles.text7,'string',binent);

[6]
[7]

dec=num-entbin;
set(handles.text11,'string',num2str(dec));

[8]
[9]

if dec~=0 || dec==0
d=str2num(get(handles.text11,'string'));
n=length(num2str(d))-2;
c=0;
for i=1:n
a=dec*10;
b=round(a)*2^(-i);
c=c+b;
dec=a-round(a);
end
set(handles.text8,'string',num2str(c));
end
final=binent+c;
set(handles.text9,'string',num2str(final));

[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
[21]
[22]
[23]

[1]. Define el botn a usar


[2]. Transforma la cadena de caracteres ingresada en numero
[3]. Muestra el nmero binario ingresado
[4]. Obtiene la parte entera del nmero binario ingresado
[5]. Muestra la parte entera del nmero binario
[6]. Transforma la parte entera base 2 a nmero base 10 mediante el comando bin2dec
[7]. Muestra la parte entera en nmero base 10
[8]. Obtiene la parte decimal del nmero ingresado
[9]. Muestro la parte decimal del nmero binario ingresado
[10]. Si la parte decimal es igual o diferente de cero realiza el siguiente proceso
[11]. Obtiene la parte decimal en base 2 como cadena de caracteres y lo transformo en nmero base 2
[12]. Determina la cantidad de nmeros existen al lado derecho de la coma ,
[16]. Obtiene la cantidad decimal base 10 que representa el digito decimal base 2
[17]. Usa un acumulador para todas las cantidades base 10 de cada uno de los dgitos base 2
[18]. Define el nuevo nmero decimal base 2
[20]. Muestra la cantidad del acumulador
[22]. Suma la parte entera base 10 con la parte decimal base10
[23]. Muestra el resultado total del nmero en base 10

13

Mtodos Numricos con MatLab

Ing. William Caiza

1.2 ANLISIS DE ERRORES


En la prctica del clculo numrico es importante tener en cuenta que las soluciones
calculadas por el computador no son soluciones matemticas exactas. La precisin de una
solucin numrica puede verse disminuida por diversos factores y la comprensin de
estas dificultades puede guiarnos a menudo a desarrollar o construir algoritmos
numricos adecuados.
Supongamos que p (estimador) una aproximacin de p, entonces se define el error
absoluto como:
|
= |
= | |
= | |
Y adems tenemos el error relativo, el mismo que es un porcentaje de la diferencia entre
su valor real y su aproximacin:
=

|
|

||

| |

| |

1.1.1 ERROR DE TRUNCAMIENTO


La nocin de error de truncamiento se refiere normalmente a los errores que se producen
cuando una expresin matemtica complicada se reemplaza por una frmula ms simple,
2

por ejemplo la siguiente funcin se puede remplazar por una expresin ms sencilla
como la siguiente 1 + 2 +

4
2!

6
3!

8
4!

+ , mediante su serie de Mc-Claurin.

1.3 SERIE DE TAYLOR


La serie de Taylor se basa en ir haciendo operaciones segn una ecuacin general y
mientras ms operaciones tengan la serie ms exacto ser el resultado que se est
buscando.

14

Mtodos Numricos con MatLab

Ing. William Caiza

Toda funcin puede ser expresada como un polinomio de orden (), la serie de Taylor
proporciona un medio para predecir el valor de una funcin en un punto.
1.3.1. TEOREMA DE TAYLOR
Dada la funcin f y sus + 1 derivadas son continuas, se dice que la expresin siguiente
es el polinomio de Taylor de orden n y alrededor de a.
()( ) ()( )
+
!
!
()( )
() ()( )
+
+. . . +
+
!
!

() = () = () +

Donde es el error de la serie de Taylor


Si = 0, tenemos la serie de McLaurin:
()()

() = () +

()
() ()
+
+. . . +
+. ..
!
!

Ejemplo 13:

Encontrar la serie de McLaurin

() = ()

(0) = (0) = 0
() = cos(0) (0) = 1
() = () () = 0
() = cos() () = 1

() =


+ +
! ! !

Ejemplo 14:
Encontrar la serie de McLaurin
() = ()

15

Mtodos Numricos con MatLab

Ing. William Caiza

(0) = cos(0) = 1
() = (0) (0) = 0
() = cos(0) (0) = 1
() = (0) (0) = 0
(4) () = cos(0) (4) (0) = 1
() =


+ +
! ! !

Implementacin en Matlab
Programa Mclaurin

Imagen 3: Serie de McLaurin

INICIAR:
function pushbutton1_Callback(hObject, eventdata, handles)
clc;
f=char(inputdlg('ingrese funcion'));
n=str2double(inputdlg('ingrese numero de expresiones para la serie'));
ev=taylor(sym(f),'order',n);
fun=char(ev);
set(handles.text4,'string',fun);
set(handles.text3,'string',f);

[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]

[1]. Definicin del botn a usar


[2]. Limpiar la ventana de datos existentes
[3]. Crea una cuadro de texto para ingresar la funcin

16

Mtodos Numricos con MatLab

Ing. William Caiza

[4]. Crea una cuadro de texto para el ingreso de la cantidad de expresiones


[5]. Usa el comando Taylor bajo la condicin de a=0 para crear el polinomio bajo los
parmetros anteriormente ingresados.
[6]. Convierte en un elemento de tipo Char al polinomio obtenido
[7]. Muestra el polinomio obtenido
[8]. Muestra la funcin ingresada

GRAFICAR:
function pushbutton2_Callback(hObject, eventdata, handles)
x=-5:0.05:5;
fun=get(handles.text3,'string');
f=inline(fun);
plot(x,f(x),'r');
hold on;
pol=get(handles.text4,'string');
polinomio=inline(pol);
l=length(x);
for i=1:l
y(i)=polinomio(x(i));
end
plot(x,y,'b');

[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]

[1]. Definicin del botn a usar


[2]. Establece la escala en el eje X del Axes
[3]. Obtiene la cadena de caracteres de la Funcin
[4]. Convierte la cadena de caracteres en una funcin
[5]. Grafica la funcin en el Axes
[6]. Mantiene el grafico de la funcin
[7]. Obtiene la cadena de caracteres del polinomio
[8]. Convierte la cadena de caracteres en una funcin
[11]. Evala el polinomio en todos los puntos que contiene la escala del eje X
[13]. Grafica el polinomio en el Axes
EVALUAR:
function pushbutton3_Callback(hObject, eventdata, handles)
valor=str2double(inputdlg('Ingrese el valor de x'));
pol=get(handles.text4,'String');
polinomio=inline(pol);
resul=polinomio(valor);
resultado=num2str(resul);
set(handles.text5,'String',resultado);

[1]
[2]
[3]
[4]
[5]
[6]
[7]

[1]. Definicin del botn a usar


[2]. Crea una cuadro de texto para ingresar el valor donde desea evaluar el polinomio
[3]. Obtiene la cadena de caracteres del polinomio
[4]. Convierte la cadena de caracteres en una funcin
[5]. Evala el polinomio en el numero ingresado

17

Mtodos Numricos con MatLab

Ing. William Caiza

[6]. Convierte el valor obtenido en una cadena de caracteres


[7]. Muestra el resultado

Ejemplo 15:
Encuentre (, ), utilizando la serie de Taylor con 3 trminos
() = () = () +

()( ) ()( )2 ()( )


+
+
+
1!
2!
!

() = (3,5)
(3,5) = 3,5

(3,5)3 (3,5)5
+
3!
5!

(3,5) = 0.73098

(3,5) = 0.35078
E = |0.35078 0.730981 |
= .
E =

|0.35078 0.730981 |
100
|0.35078|

= .
Ejemplo 16:

() = ()
()( ) ()( ) ()( )
() = () +
+
+
+
!
!
!
1)
Encuentre la serie de Taylor del ()
2)
Encuentre el valor de la serie en = ,
3)
Encuentre el valor de la serie en = , = ,
4)
Encuentre el error
5)
Conclusin

Sen(x) = Sen(a) + Cos(a)(x a)

1)

Sen(a)(xa)2
2!

Cos(a)(xa)3
3!

Sen(a)(xa)4
4!

Cos(a)(xa)5
5!

2)

x3

x5

x7

Sen(x) = x 3! + 5! 7! +

x9
9!

18

Mtodos Numricos con MatLab

Ing. William Caiza

(3.45)3 (3.45)5 (3.45)7 (3.45)9


Sen(3.45) = 3.45
+

+
= 0.284384
3!
5!
7!
9!
Sen(3.45) = Sen(3) + Cos(3)(3.45 3)

3)

(3)(3.453)2
2!

(3)(3.453)3
3!

Sen(3)(3.453)4
4!

= 0,303788
4)

El valor exacto de (3,45) = 0,303541, calculadora en radianes.

El error para = 0.

| 100

0.303541 + 0.284381
= |
| 100
0.30541
= |

= . %
El error para = 3 de (3,45)
= |

0.303541 + 0.303388
| 100
0.30541

= . %
5)

Conclusin:

Cuando el valor de a es cercano a x el valor disminuye notablemente.


Ejemplo 17:

() = ()
1.- Encontrar la serie de Taylor del ()
2.- Encontrar el valor de la serie en = , ; = , con 5 trminos
() = = () +

()( ) ()( )2 ()( )


+
+
+
1!
2!
!

1.
() =

() + () ( )
2

() ()
+(
)
4

( )2

2!
2.

19

Mtodos Numricos con MatLab

(3.45) =

Ing. William Caiza

(3.4) + (3.4) (3.45 3.4)


23.4

3.4 (3.4) (3.4)


(3.45 3.4)2
+(
)
2!
4(3.4)3.4
(3.45) = 0,958967
= |

0.959204 0,958967
| 100
0.959204

= . %

Ejemplo 18:

Demostrar
() = = () + ()

(0) = = (0) = 0 = 1
() = = (0) =
() = 2 = (0) = 2
() = 3 = (0) = 3
(4) () = 4 = (4) (0) = 4
(5) () = 5 = (5) (0) = 5

= 1 + +

22 33 44
+
+
+. ..
2!
3!
4!

2 4 6
3 5
= (1
+

+ ) + (
+
+)
2! 4! 6!
3! 5!
= () + ()

1.3.2. POLINOMIO DE TAYLOR PARA FUNCIONES DE DOS VARIABLES


Funcin escalar de variable vectorial
Definicin sea : 2 {
Funcin real de variable vectorial

20

Mtodos Numricos con MatLab

Ing. William Caiza

El polinomio de Taylor de orden n asociado a (, ):


(, ) = (, )

= (, ) + (
(, )( ) +
(, )( ))
!

+ ( (, )( ) + (, )( ) +
(, )( )( ))
!

( (, )( ) + (, )( ) +
(, )( ) ( )
!

+
(, )( )( ) ) +. . ..

Ejemplo 19:
Dada la funcin
(, ) = ( + ()),

(, ) + ,

Vamos a ilustrar la utilidad de los polinomios de Taylor de grados 2 y 3 en el punto


(0, 1), a los que denotaremos con (, ) (, ), respectivamente.
Haciendo uso del Teorema de dichos polinomios vienen dados por las siguientes
expresiones:

2 (, ) = (0,1) +

(0,1) + ( 1)

1
2
2
2
+ [ 2 2 (0,1) + ( 1)2 2 (0,1) + 2( 1)
(0,1)]
2

3 (, ) = (0,1) +

(0,1) + ( 1)

1
2
2
2
+ [ 2 2 (0,1) + ( 1)2 2 (0,1) + 2( 1)
(0,1)]
2

1
3
3
3
(0,1)
+ [ 3 3 (0,1) + 3 3 ( 1) 2 (0,1) + 3( 1)2
6


2
+ ( 1)3

3
]
3

Ntese que

21

Mtodos Numricos con MatLab

Ing. William Caiza

3
3
3 (
(0,1)
(0,1)
+
3

1)
1
3
2
3 (, ) = 2 (, ) +
6
3
3
3
(0,1)
(
+3( 1)2
+

1)
2
3 ]
[
3

PROGRAMA:
Dada la funcin de:
:
(, ) = ()()
Encontrar el polinomio de Taylor de grado 3 asociado y evaluado (, ; , ):
Implementacin en Matlab
PROGRAMA DE LA SERIE DE TAYLOR

Imagen 4: Serie de Taylor

CALCULAR
function pushbutton1_Callback(hObject, eventdata, handles)
clc;
fun=char(get(handles.edit1,'String'));
orden=str2double(get(handles.edit2,'String'));
a=str2double(get(handles.edit3,'String'));
pol=taylor(sym(fun),'ExpansionPoint',a,'order',orden);
final=char(pol);
set(handles.text1,'String',final);

[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]

22

Mtodos Numricos con MatLab

Ing. William Caiza

[1]. Definicin del botn a usar


[2]. Limpia la ventada de datos existentes
[3]. Obtiene la cadena de caracteres de la funcin ingresada y la convierte en un elemento tipo Char.
[4]. Obtiene orden o grado de la expresin que se desea obtener
[5]. Obtiene el valor de a, necesario para la Serie de Taylor
[6]. Usa el comando Taylor para crear el polinomio bajo los parmetros anteriormente ingresados.
[7]. Transforma en un elemento tipo Char el polinomio obtenido.
[8]. Muestra el polinomio resultante de la Funcin

GRAFICAR:
function pushbutton2_Callback(hObject, eventdata, handles)
x=-100:0.05:100;
fun=get(handles.edit1,'string');
f=inline(fun);
plot(x,f(x),'r');
hold on;
funcion=get(handles.text1,'string');
polinomio=inline(funcion);
g=length(x);
for i=1:g
h(i)=polinomio(x(i));
end
plot(x,h,'b');

[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]

[1]. Definicin del botn a usar


[2]. Establece la escala en el eje X del Axes
[3]. Obtiene la cadena de caracteres de la Funcin
[4]. Convierte la cadena de caracteres en una funcin
[5]. Grafica la funcin en el Axes
[6]. Mantiene el grafico de la funcin
[7]. Obtiene la cadena de caracteres del polinomio
[8]. Convierte la cadena de caracteres en una funcin
[11]. Evala el polinomio en todos los puntos que contiene la escala del eje X
[13]. Grafica el polinomio en el Axes

EVALUAR:
function pushbutton3_Callback(hObject, eventdata, handles)
eval=str2double(inputdlg('Ingrese el valor de x'));
pol=get(handles.text1,'String');
polinomio=inline(pol);
resul=polinomio(eval);
resultado=num2str(resul);
set(handles.text2,'String',resultado);

[1]
[2]
[3]
[4]
[5]
[6]
[7]

23

Mtodos Numricos con MatLab

Ing. William Caiza

[1]. Definicin del botn a usar


[2]. Crea una cuadro de texto para ingresar el valor donde desea evaluar el polinomio
[3]. Obtiene la cadena de caracteres del polinomio
[4]. Convierte la cadena de caracteres en una funcin
[5]. Evala el polinomio en el nmero ingresado
[6]. Convierte el valor obtenido en una cadena de caracteres
[7]. Muestra el resultado
1.3.3. TEOREMA DEL POLINOMIO DE TAYLOR:

Sea [, ], (+) existe en [, ] y c [, ]. Entonces para todo x


[, ], () = () + (), donde () es el polinomio de Taylor

() =

(+) (())
( )+
( + )!

Es el residuo, con () entre c y x, el teorema no permite evaluar exactamente el


residuo, pero si permite acotarlo.

| ()|

||+
(+)!

|(+) ()| (, )

Ejemplo 20:

Obtener el polinomio de Taylor de orden 2 de () alrededor de , acotar el error


para = y calcular el error.

() = ( ) ( )( )

( )
( )

() = + ( )

||

| |
|()|; [, ].

|| . ()

24

Mtodos Numricos con MatLab

Ing. William Caiza

|| . (. ) = .

Observacin:
Para calcular el valor de una funcin para x el valor de a, deber estar alrededor de x.
EJERCICIOS PROPUESTOS
Ejercicios de notacin decimal
Escribir en notacin decimal las siguientes cantidades:
1. 374=
2. 17350=
3. 1,0243=
4. 745,36=
5. 1357, 924=
Transformar de notacin binaria a notacin decimal:
1. 100110112 =
2. 100110012 =
3. 11001002 =
4. 100110012 =
5. 01012 =
Series de Taylor
1. Calcular el polinomio de Taylor de la funcin () =
2. Calclese la serie de Taylor de () = ()
3. Encuentre una serie de Taylor para () = cos(2))
4.

Encuentre la serie de Taylor para() = 5

5. Encontrar la serie de Taylor para la funcin () = log(cos())


Series de Mc- Claurin
1. Hallar el polinomio de Mc- Claurin para () = , para n=0, n=1, n=2, n=3, y el
polinomio general.
2. Encuentre una serie de Mc- Claurin para () = 2
3. Encontrar la serie de Mc- Claurin para f(x) =
4. Encontrar la serie de Mc- Claurin para f(x) =
5. Encontrar la serie de Mc- Claurin para f(x) =

ex + ex
2
ex ex
2
1
1+x2

25

Mtodos Numricos con MatLab

Ing. William Caiza

CAPTULO II: RESOLUCIN DE


ECUACIONES NO LINEALES
2.1. INTRODUCCIN
Una ecuacin no lineal es aquella que esta la representada genricamente en la forma
() = 0.Esto no quiere decir que sea una funcin exactamente nula, simplemente es
una representacin de las ecuaciones a utilizar. Tras esta forma genrica, se esconde el
problema a analizar en el captulo, que es: Dada una funcin () determnese, si es
posible, algn valor 0 para el que se verifique que (0 ) = 0.
A estos valores 0 que cumplen () = 0 se los llama races o ceros de la funcin ().
2.2 MTODO DE LA BISECCIN
Descripcin del mtodo

Dado un intervalo [a, b], la primera aproximacin a la raz es el punto medio del intervalo
y se calcula como la suma de los dos puntos dividido para 2, de esta manera se encuentra
un nuevo punto c1 considerado un valor raz aproximado de la funcin. Luego se verifica
si f(a) f(c1 ) < 0, esto implicara que la nueva raz se encuentra en el intervalo [a, c1 ]
por lo tanto la nueva aproximacin seria el punto medio de dicho intervalo. Y seguiramos
verificando si el f(ak ) f(ck ) < 0 o f(ck ) f(bk ) < 0 , en el intervalo que cumpla las
definiciones anteriores se proceder otra vez a encontrar el punto medio que es la
siguiente mejor aproximacin a la raz, as sucesivamente hasta obtener una
aproximacin que satisface la tolerancia deseada.

26

Mtodos Numricos con MatLab

Ing. William Caiza

Imagen 2.1: Descripcin grafica del mtodo de la biseccin.

Las aproximaciones deseadas forman una sucesin que convergen a la raz.


{xn } = {c, c1 , c2 , . . , cn }
{xn } = converge a la raz
Algoritmo de la biseccin
Se elige un intervalo [a, b] de forma que la funcin cambie de signo al evaluarse en esos
puntos, inicialmente el punto a y el punto b se pueden escoger realizando el grfico de la
funcin.
La primera aproximacin a la raz es Ci y se obtiene:
Ci =

a i + bi
2

Condiciones para determinar el siguiente subintervalo donde se encuentra la raz.


a) Si f(ai )f(ci ) < 0 , entonces la raz se encuentra dentro del subintervalo [ai , ci ], por lo
tanto bi = ci , ai = ai ;
b) Si f(ai )f(Ci ) > 0 , entonces la raz se encuentra dentro del subintervalo [ci , bi ], por lo
tanto ai = Ci , bi = bi ;
c) Si f(ai )f(Ci ) = 0 , la raz es igual a Ci , termina el clculo.
2.3. ERROR EN EL MTODO DE LA BISECCIN
El error utilizado para el mtodo de la biseccin ser un error relativo porcentual:

27

Mtodos Numricos con MatLab

Ing. William Caiza


%

z = |

Ejemplo 1:

Encontrar los ceros de la funcin = ()()

y= -exp(x)tan(x)
200
150
100
50
0
-50 0

0,5

1,5

2,5

3,5

-100

Imagen 2.2: Grafico del mtodo de la Biseccin

Cuadro de datos:
Iteracin i
1

ai
2,5

ci
3

bi
3,5

f(ai)
9,100594625

f(ci)
2,863123854

f(bi)
-12,40457277

error

3,25

3,5

2,863123854

-2,806866513

-12,40457277

0,076923077

3,125

3,25

2,863123854

0,377681716

-2,806866513

-0,04

3,125

3,1875

3,25

0,377681716

-1,113015188

-2,806866513

0,019607843

3,125

3,15625

3,1875

0,377681716

-0,344213907

-1,113015188

3,125

3,140625

3,15625

0,377681716

0,022370524

-0,344213907

-0,00990099
0,004975124

3,140625

3,1484375

3,15625

0,022370524

-0,159484883

-0,344213907

3,140625

3,14453125

3,1484375

0,022370524

-0,068201474

-0,159484883

3,140625 3,142578125 3,14453125

0,022370524

-0,022826983

-0,068201474

0,00248139
0,001242236
0,000621504

Tolerancia
0,001
siga
procesando
siga
procesando
siga
procesando
siga
procesando
siga
procesando
siga
procesando
siga
procesando
siga
procesando

Imagen 2.3: Tabla de datos.

28

Mtodos Numricos con MatLab

f(ai )f(Ci ) > 0; ai = Ci , bi = bi

Ing. William Caiza


f(ai)

f(ci)

f(bi)

9,100594625

2,863123854

-12,40457277

2,863123854 -2,806866513 -12,40457277

f(ai )f(Ci ) < 0; bi = Ci , ai = ai

2,863123854

0,377681716

-2,806866513

Implementacin en Matlab
CODIGO DEL MTODO DE LA BISECCIN
function grafica_Callback(hObject, eventdata, handles)
clc;
funcion=get(handles.funcion,'string');
f=inline(funcion);
x=-5:0.2:5;
n=length(x);
for i=1:n
y(i)=f(x(i));
end
plot(x,y), hold on;
plot([-5 5],[0 0],'r'); grid on;
plot([0 0],[-20 20],'r');

[1]
[2]
[3]
[4]

[5]
[6]

function calcular_Callback(hObject, eventdata, handles)


funcion=get(handles.funcion,'string');
f=inline(funcion);
a=str2double(get(handles.a,'string'));
b=str2double(get(handles.b,'string'));
tol=str2double(get(handles.tolerancia,'string'));
cont=0;
if f(a)*f(b)<0
error=1;
e=0;
while abs(error)>=tol
cont=cont+1;
c=(a+b)/2;
error=(c-e)/c;
e=c;
if f(a)*f(c)<0
b=c;
end
if f(b)*f(c)<0
a=c;
end
if (f(a)*f(c)==0)~=(f(b)*f(c)==0)
error=0.0000001;
end
end
set(handles.raiz,'string',c);
set(handles.iteraciones,'string',cont);
else
set(handles.raiz,'string','el intervalo no contiene raiz');
end

[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]

[20]

[21]

[22]
[23]
[24]

29

Mtodos Numricos con MatLab

Ing. William Caiza

Descripcin del programa


Accin del botn graficar
[1]. Se obtiene la funcin escrita en el cuadro de texto.
[2]. Se convierte en inline la funcin para que sea evaluada en cada punto.
[3]. Se dan valores al eje x de -5 a 5 con separacin de 0.2, adems se obtiene n con la longitud
de estos valores.
[4]. Se evala automticamente la funcin en cada valor de x, as se obtiene los valores de y.
[5]. Se grafican los valores de (x, y) como pares coordenados.
[6]. Se resalta los ejes con un color rojo.

Accin de Botn Calcular


[7]. Se obtiene la funcin escrita en el cuadro de texto.
[8]. Se convierte en inline la funcin para que sea evaluada en cada punto.
[9]. Obtener el valor del punto a del intervalo.
[10]. Obtener el valor del punto b del intervalo.
[11]. Obtiene el valor de tolerancia escrita en el cuadro de texto.
[12]. Declarar un contador para saber el nmero de iteraciones realizadas por el mtodo
(Opcional).
[13]. Verificar que el intervalo [a, b] este bien tomado, para continuar con el mtodo.
[14]. Dar un valor inicial a la variable error (Error Relativo Porcentual).
[15]. Inicializar una variable e, que ayudar en el clculo del error relativo.
[16]. Comparar el error con la tolerancia, para continuar las iteraciones.
[17]. Clculo del punto medio del intervalo.
[18]. Clculo del error relativo.
[19] y [20]. Encontrar el nuevo intervalo para la siguiente iteracin.
[21]. En el caso de coincidir el punto medio con el valor raz, se detiene el mtodo dando un valor
muy pequeo al error.
[22]. Mostrar en un cuadro de texto el valor raz.
[23]. Mostrar el nmero de iteraciones realizadas en el mtodo en un cuadro de texto.
[24]. Mostrar en el cuadro de texto correspondiente a la raz, un mensaje que indica que el
intervalo no contiene raz.

Imagen 2.4: Mtodo de la Biseccin

30

Mtodos Numricos con MatLab

Ing. William Caiza

Imagen 2.5: Mtodo de la Biseccin

2.4 MTODO DE LA FALSA POSICIN


Descripcin del mtodo:
Como en el mtodo de la biseccin, consideramos que f(a) y f (b) tienen distinto signo. En el
mtodo de la biseccin se usa el punto medio del intervalo [a, b] para llevar a cabo las
iteraciones hasta obtener la raz. Con el mtodo de la falsa posicin, suele conseguirse una
aproximacin mejor encontrando el punto (c, 0), en el que la recta secante L pasa por los
puntos (a, f(a)), (b, f (b)) y el eje x.

Imagen 2.6: Grfica del mtodo de la falsa posicin.

31

Mtodos Numricos con MatLab

Ing. William Caiza

Algoritmo de la falsa posicin


Para hallar la abscisa c, igualamos las dos frmulas de la recta entre los puntos a, c y los
puntos c, b para la pendiente m de la recta secante L.
Encontremos la expresin para el mtodo de la falsa posicin.
Sea los puntos (a, f(a)) y (b, f(b))
mLsecante =

f(b) f(a)
ba

(1)

Sean los puntos (c, 0) y (b, f(b))


mLsecante =

0 f(b)
cb

(2)

Igualando las dos expresiones obtenemos


f(b) f(a) f(b)
=
(c b)(f(b) f(a)) = f(b)(b a)
ba
cb
c=

f(b)(b a)
f(b)(b a)
+b c = b
f(b) f(a)
f(b) f(a)

Por lo tanto generalizando la expresin anterior tenemos:


Ck = bk

f(bk )(bk ak )
f(bk ) f(ak )

k = 1,2,3,

Donde Ck forma una sucesin que converge a la raz de la funcin.


Las 3 posibilidades son las mismas que en el caso anterior:
a) Si f(a) y f(c) tienen distintos signos, entonces hay un cero (raz) en [a, c].
b) Si f(c) y f (b) tienen distinto signo, entonces hay un cero (raz) en [c, b].
c) Si f(c)=0, entonces c es una raz.
Error en el mtodo de la Falsa Posicin
El error utilizado para el mtodo de la falsa posicin ser un error absoluto:
= | |
Convergencia del Mtodo de Falsa Posicin
De la deduccin anterior, tenemos que la aproximacin Ck , es una sucesin de la forma
{Ck }
k=0 la cual puede converger.

32

Mtodos Numricos con MatLab

Ing. William Caiza

Sin embargo, aunque la longitud del intervalo bk ak se hace ms pequeo, es posible que
no tiende a 0. El criterio de parada usada en el mtodo de la biseccin no es til por lo tanto
se utilizar aproximaciones sucesivas de |Ck Ck1 |.
Ejemplo 2:
Encontrar los ceros de la funcin = () ()
tan(x)*cos(x)
1,5
1
0,5
0
-2 -0,5 0

-4

-1
-1,5
Figura 2.7: grafica ejercicio tan() cos().

Si f(c) y f (b) tienen distinto signo, entonces hay un 0 en [c, b]; por lo tanto c=a y b=b.

iteracin

f(a)

f(c)

3,0915281

0,9092974

3,1550996 3,0915281

0,9092974

3,1381931 3,1550996

0,9092974

3,1381931 3,1415927 3,1550996

0,0033995

f(b)
error
0,0500436 0,7568025
0,0135065 0,0500436 0,0635715 siga calculando
0,0033995 0,0135065 0,0169065 siga calculando
-7,74E-08 0,0135065 0,0033996 raz

3,1381931 3,1415927 3,1415927

0,0033995

1,489E-13

-4,64E-08

7,74E-08

tolerancia
0,01

raz

Imagen 2.8: Cuadro de datos en Excel

Ejemplo 3:
Encontrar los ceros de la funcin () = (^ + ) ()

33

Mtodos Numricos con MatLab

Ing. William Caiza

Imagen 2.9: Grafica de la funcin

Si f(c) y f (b) tienen distinto signo, entonces hay un 0 en [c, b]; por lo tanto c=a y b=b.

f(a)

f(c)

f(b)

error

3,01825205

-5,03124022

-0,41954488

4,85087143

3,01825205

3,09640286

-0,41954488

-0,15627869

4,85087143

0,07815081

NO RAIZ

3,09640286

3,12460513

-0,15627869

-0,05914648

4,85087143

0,02820226

NO RAIZ

3,12460513

3,13515021

-0,05914648

-0,02249033

4,85087143

0,01054508

NO RAIZ

3,13515021

3,13914145

-0,02249033

-0,00856574

4,85087143

0,00399124

NO RAIZ

Figura 2.10: Cuadro de Datos en Excel

34

Mtodos Numricos con MatLab

Ing. William Caiza

Implementacin en Matlab

CODIGO DEL MTODO DE LA FALSA POSICIN


function grafica_Callback(hObject, eventdata, handles)
clc;
funcion=get(handles.funcion,'string');
f=inline(funcion);
x=-5:0.2:5;
n=length(x);
for i=1:n
y(i)=f(x(i));
end
plot(x,y), hold on;
plot([-5 5],[0 0],'r'); grid on;
plot([0 0],[-20 20],'r');

[1]
[2]
[3]
[4]

[5]
[6]

function calcula_Callback(hObject, eventdata, handles)


funcion=get(handles.funcion,'string');
f=inline(funcion);
a=str2double(get(handles.a,'string'));
b=str2double(get(handles.b,'string'));
tol=str2double(get(handles.tolerancia,'string'));
cont=0;
if f(a)*f(b)<0
error=1;
e=0;
while abs(error)>=tol
cont=cont+1;
c=b-(f(b)*(b-a))/(f(b)-f(a));
error=e-c;
e=c;
if f(a)*f(c)<0
b=c;
end
if f(b)*f(c)<0
a=c;
end
if (f(a)*f(c)==0)~=(f(b)*f(c)==0)
error=0.0000001;
end
end
set(handles.raiz,'string',c);
set(handles.iteraciones,'string',cont);
else
set(handles.raiz,'string','el intervalo no contiene raiz');
end

[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]

[20]

[21]

[22]
[23]
[24]

Descripcin del programa


Accin del botn graficar
[1]. Se obtiene la funcin escrita en el cuadro de texto.

35

Mtodos Numricos con MatLab

Ing. William Caiza

[2]. Se convierte en inline la funcin para que sea evaluada en cada punto.
[3]. Se dan valores al eje x de -5 a 5 con separacin de 0.2, adems se obtiene n con la longitud
de estos valores.
[4]. Se evala automticamente la funcin en cada valor de x, as se obtiene los valores de y.
[5]. Se grafican los valores de (x, y) como pares coordenados.
[6]. Se resalta los ejes con un color rojo.

Accin de Botn Calcular


[7]. Se obtiene la funcin escrita en el cuadro de texto.
[8]. Se convierte en inline la funcin para que sea evaluada en cada punto.
[9]. Obtener el valor del punto a del intervalo.
[10]. Obtener el valor del punto b del intervalo.
[11]. Obtiene el valor de tolerancia escrita en el cuadro de texto.
[12]. Declarar un contador para saber el nmero de iteraciones realizadas por el mtodo
(Opcional).
[13]. Verificar que el intervalo [a, b] este bien tomado, para continuar con el mtodo.
[14]. Dar un valor inicial a la variable error (Error Absoluto).
[15]. Inicializar una variable e, que ayudar en el clculo del error absoluto.
[16]. Comparar el error con la tolerancia, para continuar las iteraciones.
[17]. Clculo del valor de C (raz), aplicando la frmula del mtodo.
[18]. Clculo del error absoluto.
[19] y [20]. Encontrar el nuevo intervalo para la siguiente iteracin.
[21]. En el caso de coincidir el punto medio con el valor raz, se detiene el mtodo dando un valor
muy pequeo al error.
[22]. Mostrar en un cuadro de texto el valor raz.
[23]. Mostrar el nmero de iteraciones realizadas en el mtodo en un cuadro de texto.
[24]. Mostrar en el cuadro de texto correspondiente a la raz, un mensaje que indica que el
intervalo no contiene raz.

Imagen 2.11: Mtodo Falsa Posicin

36

Mtodos Numricos con MatLab

Ing. William Caiza

Imagen 2.12: Mtodo falsa posicin 2

2.5 MTODO DEL PUNTO FIJO


Descripcin del mtodo
Un punto fijo de una funcin g es un nmero p para el cual se cumple: () =
A manera explicativa: Sea g(x) = x 2 2x + 2 , demuestre que x=1 es un punto fijo de la
funcin, evaluando se expresa g(1) = 12 2(1) + 2 = 1 2 + 2 = 1, obteniendo g(1) = 1,
entonces, si consideramos p = x = 1 obtenemos que x=1 es un punto fijo de la funcin g(x).
Dado un problema de buscar una raz f (p)=0, podemos definir una funcin g(x) despejando
un x de la funcin f, con un punto fijo p de diversas formas, por lo tanto sea g(x) = x f(x) si
la funcin g tiene un punto fijo en p entonces, p es una raz de f(x), al despejar de la expresin
anterior tenemos f(x) = x g(x), y f(x) es cero en p=x, entonces
f(p) = p g(p) = p p = 0, como p es punto fijo de g, se demuestra que p es raz de f.

37

Mtodos Numricos con MatLab

Ing. William Caiza

Algoritmo grafico del mtodo del punto fijo

Imagen 2.13: Mtodo del punto fijo

Elegimos un punto aleatorio 0 y lo evaluamos en una funcin () que resulta de despejar


una x de la funcin () dada. El valor (0 ) se refleja en la funcin = , y regresar el eje x
dando as el punto 1 que ser la primera aproximacin de la raz.
Condicin de convergencia de la funcin ()
Luego de obtener la funcin (), se determina su primera derivada, luego se evala en un
punto 0 que cumpla la siguiente condicin: |(0 ) | < 1, determinndose as que la funcin
converge.
Algoritmo del punto fijo
+1 = ( )
Error en el mtodo del Punto Fijo
El error utilizado para el mtodo del punto fijo ser un error absoluto:
= | |

Ejemplo 4:
Dada la ecuacin x 3 + 4x 2 10 = 0, encuentre una expresin x=g(x)

38

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Desarrollo:

Despeje 1

4 2 = 10 3
2 =

10 3
10 3
|| =
4
4

10 3
=
4

(1)

= ()

Despeje 2

( 2 + 4) = 10
=

10
2 + 4

(2)

= g(x)

Despeje 3

3 = 10 4 2
3

3 = 10 4 2
3

= 10 4 2 (3)
= g(x)
Verificando el despeje 1 en la ecuacin: () = ()
10 3
() =
4
() =

() =

10 3
2

2 10 3
2

() = 0

39

Mtodos Numricos con MatLab

Ing.: Willam Caiza

2 10 3
=0
2
2 10 3 = 0
2

(2)2 = (10 3 )
4 2 = 10 3
3 + 4 2 10 = 0

Ejemplo 5:
Dada la funcin (x) = x 3 x 2 + 4x 7 encontrar las races por el mtodo del punto fijo.
Desarrollo
Despejando x se obtienen 3 ecuaciones:
x = x 2 + 4x 7

(1)

x = x 2 4x + 7
x=

(2)

7 x3 + x2
4

(3)

DEMOSTRACIN DEL TEOREMA DE CONVERGENCIA EN LA ECUACIN (2)


3

g(x) = x 2 4x + 7
Derivando la funcin
1

() = 3 ( 2 4 + 7)3 (2 4)
Graficando la funcin ()

()=1/3 (^24+7)^(2/3) (24)


0,5

0,4
0,3
0,2
0,1
0
-6

-4

-2

-0,1 0

-0,2
-0,3
-0,4
-0,5

40

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Imagen 2.14: Grafica de la funcin ()

En la grfica de la funcin () se puede observar que el valor en el eje Y se mantiene en el


intervalo de [-1; 1], por lo tanto la funcin converge.
Graficando la funcin ()
g(x)= =(&^+)
15
10
5
0
-4

-3

-2

-1

-5

-10
-15
-20
-25

Imagen 2.15: Grafica del mtodo del punto fijo

k
0
1
2
3
4
5
6
7
8
9

pk
2
0,75
1,7851563
1,1244694
1,7106543
1,2300964
1,6629582
1,2916589
1,6283503
1,3334784

pk+1=g(pk)
0,75
1,7851563
1,1244694
1,7106543
1,2300964
1,6629582
1,2916589
1,6283503
1,3334784
1,6017551

Pk
2
1,4422496
1,4904708
1,4827081
1,4839157
1,4837268
1,4837563
1,4837517
1,4837524
1,4837523

pk+1=g(pK)
1,4422496
1,4904708
1,4827081
1,4839157
1,4837268
1,4837563
1,4837517
1,4837524
1,4837523
1,4837523

Imagen 2.16: Cuadro de datos en Excel

Implementacin en Matlab

41

Mtodos Numricos con MatLab

Ing.: Willam Caiza

CODIGO DEL MTODO DE PUNTO FIJO


clc;
syms x;
n=0;
error=100;
p=0;
f=inline(get(handles.funcion1,'string'));
g=inline(get(handles.funcion2,'string'));
x=str2double(get(handles.ingresovi,'String'));
tolerancia = str2double(get(handles.tolerancia,'String'));
i=1;
while (error >tolerancia)
n=n+1;
x=g(x);
p(i)=x;
error=abs(f(x));
i=i+1;
end
set(handles.uitable1,'data',p');
x=-5:0.1:5;
n=length(x);

[1]

[2]
[3]
[4]

[5]
[6]
[7]
[8]

[9]
[10]

for i=1 :n
y1(i)=f(x(i));
y2(i)=g(x(i));
end

[11]

plot(handles.axes1,x,y1);
hold(handles.axes1,'on');
plot(handles.axes1,[-7 7],[0 0],'r');
plot(handles.axes1,[0 0],[-15 15],'r');
plot(handles.axes2,x,y2);
hold(handles.axes2,'on');
grid on;

[12]

Accin de Botn Punto Fijo


[1]. Inicializacin de variables y simbolizacin de x.
[2]. El error debe ser del 100% para inicial el bucle.
[3]. Inicializacin de los valores de la tabla.
[4]. Ingreso de funciones y valor inicial.
[5]. Bucle funciona mientras el error sea mayor a la tolerancia.
[6]. Obtencin del valor de x de la funcin G.
[7]. Valores de la variable de la tabla.
[8]. Calculo del nuevo valor del error absoluto.
[9]. Asignacin de los valores en la tabla.
[10]. Valores en x para las grficas.
[11]. Obtencin de los valores en y para las grfica.
[12]. Asignacin de puntos para las grficas.

42

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Imagen 2.17: Mtodo de Punto Fijo

2.6 MTODO DE NEWTON-RAPHSON


Descripcin del mtodo
Si f(x), f (x), f(x) son continuas cercas de una raz p, esta informacin sobre la naturaleza de
f(x) puede usarse para desarrollar algoritmos que produzcan sucesiones {pk } que converjan a p
ms rpidamente.

Imagen 2.18: Grafica del mtodo de newton Raphson

Algoritmo del mtodo Newton-Raphson

43

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Sea y = f(x) los puntos (x1 ,0) y (x2 , f(x2 )) entonces la pendiente es igual:
m=

0 f(px )
(1) ;
p1 p0

m = f (p0 ) (2)

Igualando tenemos que:


f (p0 ) =

0 f(px )
p1 p0

(p1 p0 )f (p0 ) = f(p0 )


p1 f (p0 ) p0 f (po ) = f(p0 )
f(p0 ) + p0 f (p0 )
p1 =
f (p0 )
p1 = p0

f(p0 )
f (p0 )

Este proceso puede repetirse para obtener la sucesin {pk } que converge a p.
TEOREMA: Supongamos que la funcin f C2 [a, b] , es decir la funcin f debe ser continua e
integrable en el intervalo [a, b] y debe existir un nmero p [a, b] tal que f (p)=0
pk = g(pk1 ) = pk1

f(pk1 )
; k = 1,2,
f (pk1 )

Error Del Mtodo del Newton-Raphson


El error utilizado para el mtodo del Newton-Raphson ser un error absoluto:
= | |

Ejemplo 6:
Aplicar el mtodo de Newton-Raphson para resolver la siguiente ecuacin
ln x 2 = 0.7
Desarrollo:
ln x 2 0.7 = 0
f(x) = ln x 2 0.7

44

Mtodos Numricos con MatLab

Ing.: Willam Caiza

()=ln^2 0.7
4
2
0
-3

-2

-1

-2
-4
-6
Imagen 2.19: Grafica Del Mtodo De Newton Raphson

f (x) =
pk+1 = pk

pk+1 = 2

f(pk )
f (pk )

ln(22 ) 0.7
pk+1 = 1.3137
2
2
pk+1 = pk

pk+1

2
x

f(pk )
f (pk )

ln(1.31372 ) 0.7
= 1.3137
pk+1 = 1.415
2
1.3137
ERROR = |xnuevo xanterior |

ERROR = |1.415 1.3137| 0.101

pk+1 = pk

f(pk )
f (pk )

45

Mtodos Numricos con MatLab

pk+1

Ing.: Willam Caiza

ln(1.4152 ) 0.7
= 1.415
pk+1 = 1.419
2
1.415
ERROR = |xnuevo xanterior |

ERROR = |1.419 1.415| 0.004

pk+1 = pk
pk+1

f(pk )
f (pk )

ln(1.4192 ) 0.7
= 1.419
pk+1 = 1.419
2
1.419
ERROR = |xnuevo xanterior |

ERROR = |1.419 1.419| 0


Resumen del ejercicio en Excel
k
0
1
2
3

p(k)
2
1,31370564
1,41505556
1,41906187

p(k+1)
1,31370564
1,41505556
1,41906187
1,4190676

ERROR
0,10134993
0,00400631
0

Imagen 2.20: Cuadro de datos en Excel

Ejemplo 7:
Aplicar el mtodo grfico de Newton-Raphson para resolver la siguiente ecuacin
() = () + cos()
Para la
= ( )
= () = cos() ()
1 = ()
DESARROLLO:
Evaluando en 0 = 1.5(punto inicial)

46

Mtodos Numricos con MatLab

Ing.: Willam Caiza

(1.5) = cos(1.5) (1.5) = 0.926


0 = (1.5) = (1.5) + cos(1.5) = 1.0682
1.0682 = 0.926( 1.5)

Obteniendo

= 0.926 + 2.4571
Para obtener la raz y=0
0 = 0.926 + 2.4571
1 = 2.65
Evaluando en 1 = 2.65

(2.65) = cos(2.65) (2.65) = 1.3536

1 = (2.65) = (2.65) + cos(2.65) = 0.4095

Obteniendo

+ 0.4095 = 1.3536( 2.65)


= 1.3536 + 3.17754

Para obtener la raz y=0


0 = 1.3536 + 3.17754
2 = 2.34

Graficando las funciones obtenidas

47

Mtodos Numricos con MatLab

Ing.: Willam Caiza


7
6

5
4
3
2
1
0
-3

-2

-1

-1

-2
-3
f(x)

Ltg1

Ltg2

Imagen 2.21: Grafica de las funciones

Implementacin en Matlab

CODIGO DEL MTODO DE NEWTON-RAPHSON


function boton1_Callback(hObject, eventdata, handles)
i=1;
cont=0;
valorfinal=0;
funcion=char(get(handles.ingresa1,'String'));
tolerancia=str2double(get(handles.edit4,'String'));
po=str2double(get(handles.edit4,'String'));
f=inline(funcion);
df=diff(sym(funcion));
dff=inline(df);
p(1)=po;
ea(1)=100;
while abs(ea(i))>= tolerancia
p(i+1)=p(i)-(f(p(i))/(dff(p(i))));
ea(i+1)=abs((p(i+1)-p(i))/p(i+1)*100);
i=i+1;
cont=i;
valorfinal=double(p(i));
end
set(handles.resultado,'string',valorfinal');
x=[0:0.25:8];
ezplot(f,x);
grid on;
set(handles.uitable1,'data',p');
i=0;

[1]

[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]

Descripcin del programa

48

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Accin de Botn Calcular


[1]. Inicializacin de variables i y cont.
[2]. Se obtiene la funcin escrita en el cuadro de texto y se transforma de cadena de caracteres
(String) a carcter (char).
[3]. Obtener el valor de la tolerancia que se va a utilizar en los clculos.
[4]. Punto inicial a usar en el mtodo.
[5]. Se convierte en inline la funcin para que sea evaluada en cada punto.
[6]. Se obtiene la derivada de la funcin usando la funcin diff y convirtiendo la funcin en un objeto
simblico para poder usar diff().
[7]. Se coloca al punto p(1) como el valor de po.
[8]. Se da un valor inicial para el error de ea(1)=100.
[9]. Se inicia el bucle de repeticin para los clculos del mtodo en la tolerancia antes colocada.
[10]. Uso de la frmula del mtodo de Newton Raphson, se usa las derivadas de la funcin evaluadas
en el punto y almacenadas en un vector.
[11]. Obtencin del error relativo para cada iteracin.
[12]. Clculo del error relativo.
[13]. Valores obtenidos.
[14]. Salida del resultado.
[15]. Grfica de la funcin.
[17]. Ingreso de valores a la tabla.

Imagen 2.22: Mtodo de Newton_Raphson

2.7 RACES MLTIPLES


Una raz mltiple corresponde a un grfico que es tangencial al eje x.

49

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Multiplicidad par

Multiplicidad impar

30

150

25

100

20

50

15

10

-6

-4

-2

5
-4

-2

-100

0
-6

-50

-150

Imagen 2.23: Multiplicador par y impar

En general, el grafico de la multiplicidad impar cruza el eje x, mientras que la multiplicidad par
no la cruza.
Dificultad del mtodo de races mltiples
El hecho de que la funcin no cambie de signo en races mltiples pares impide que converge en
mtodos cerrados. Tanto () como su derivada se aproxima a cero en la raz, esto afecta a los
mtodos de newton Rapshon y secante los cuales contienen derivada en el numerador.
El mtodo de Newton Rapshon y la secante convergen el punto lineal, en vez de formar
cuadrtica cuando hay races mltiples.
Ejemplo 7:
Multiplicidad par.
Sea f(x)= (x 2)2 , como se puede apreciar en el grfico el cero es un punto que topa
tangencialmente al eje de las x, por lo tanto esta funcin es de multiplicidad 2.

f(x)=(x-2)^2
30
25
20
15
10
5
0

-4

-2

Imagen 2.24: Multiplicidad Par

50

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Ejemplo 8:
Multiplicidad impar.
Sea f(x)=(x-2) ^3, se puede apreciar en el grfico que el cero topa y corta tangencialmente al eje
de las x.

f(x)=(x-2)^3
20
10

0
-2

-1

-10

-20
-30
-40
Imagen 2.25: Multiplicidad Impar

Algoritmo del mtodo Newton-Raphson modificado


El mtodo de Newton Raphson, tiene que ser modificado para ser utilizado en races mltiples.

Sea u =

f(x)
f(x)

(1)

Y, xi+1 = xi
u(xi ) =

u(xi )
u(xi )

(2)

f (xi ) f (xi )f(x)f (xi )


(f (xi ))2

Remplazando (1) en (2)

xi+1

f(x)
f(xi )
= xi
(f (xi ))2 f(xi )f (xi ))
(f(xi ))2

xi+1 = xi

f(xi )(f(xi ))2


f(xi )[(f (xi ))2 f(xi )f (xi ))]

xi+1 = xi

f(xi )f(xi )
(f (xi ))2 f(xi )f (xi ))

Ejemplo 10:

51

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Encontrar los ceros de la siguiente funcin

f(x)=(x-3)(x-1)^2
40
20
0
-3

-2

-1

-20
-40
-60

Imagen 2.26: Multiplicidad Impar

k
1
2
3
4
5
6

p(k)
0
1,10526316
1,00308166
1,00000238
1
1

p(k+1)
1,10526316
1,00308166
1,00000238
1
1
1

ERROR
0,10218149
0,00307928
2,3815E-06
3,7313E-11
0

Imagen 2.27: Cuadro del mtodo de races mltiples

Implementacin de Matlab

52

Mtodos Numricos con MatLab

Ing.: Willam Caiza

CODIGO DEL MTODO DE NEWTON-RAPSON MODIFICADO


function grafica_Callback(hObject, eventdata, handles)
clc;
funcion=get(handles.funcion,'string');
f=inline(funcion);
x=-5:0.2:5;
n=length(x);
for i=1:n
y(i)=f(x(i));
end
plot(x,y), hold on;
plot([-5 5],[0 0],'r'); grid on;
plot([0 0],[-20 20],'r');
function calcula_Callback(hObject, eventdata, handles)
funcion=get(handles.funcion,'string');
f=inline(funcion);
x1=str2double(get(handles.x1,'string'));
tol=str2double(get(handles.tolerancia,'string'));
cont=0;
syms x;
pd=diff(funcion,x);
g=inline(pd);
sd=diff(pd,x);
h=inline(pd);
error=1;
while abs(error)>=tol
cont=cont+1;
x2=x1-(f(x1)*g(x1))/((g(x1))^2-f(x1)*h(x1));
if f(x2)==0
error=0.0000000001;
else
error=x2-x1;
x1=x2;
end
set(handles.raiz,'string',x2);
set(handles.iteraciones,'string',cont);
end

[1]
[2]
[3]
[4]

[5]
[6]

[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]

[21]
[22]
[23]
[24]

Descripcin del programa


Accin del botn graficar
[1]. Se obtiene la funcin escrita en el cuadro de texto.
[2]. Se convierte en inline la funcin para que sea evaluada en cada punto.
[3]. Se dan valores al eje x de -5 a 5 con separacin de 0.2, adems se obtiene n con la longitud de
estos valores.
[4]. Se evala automticamente la funcin en cada valor de x, as se obtiene los valores de y.
[5]. Se grafican los valores de (x, y) como pares coordenados.
[6]. Se resalta los ejes con un color rojo.

Accin de Botn Calcular


[7]. Se obtiene la funcin escrita en el cuadro de texto.

53

Mtodos Numricos con MatLab

Ing.: Willam Caiza

[8], [14] y [16]. Se convierte en inline la funcin para que sea evaluada en cada punto.
[9]. Obtener el valor de un punto escogido en un intervalo abierto.
[10]. Obtiene el valor de tolerancia escrita en el cuadro de texto.
[11]. Declarar un contador para saber el nmero de iteraciones realizadas por el mtodo (Opcional).
[12]. Declarar la variable x como simblica, esto nos ayudar para derivar respecto a x.
[13]. Obtener la primera derivada de la funcin escrita en el cuadro de texto.
[15]. Obtener la segunda derivada de la funcin, derivando la primera derivada de f.
[17]. Dar un valor inicial al error del mtodo (error absoluto).
[18]. Comparar el error con la tolerancia, para continuar las iteraciones.
[19]. Encontrar el valor de x2 (raz) utilizando el algoritmo del mtodo.
[20]. Evaluar si x2 es un valor raz, caso contario dar las condiciones para la siguiente iteracin.
[21]. Calculo del error absoluto.
[22]. Dar el valor de x2 a la variable x1 para la siguiente iteracin.
[23].mostrar el valor raz en el cuadro de texto correspondient.
[24]. Mostrar el nmero de iteraciones realizadas en el mtodo en un cuadro de texto.

Imagen 2.28: Newton Raphson Modificado

EJERCICIOS RESUELTOS Y PROPUESTOS


Mtodo de la biseccin
1.- Use el mtodo de la biseccin para resolver la siguiente funcin (x) = x cos(x) con una
olerancia de 0,001.

X
-1,3

f(x)
-1,5675

54

Mtodos Numricos con MatLab


-1
-0,7
-0,4
-0,1
0,2
0,5
0,8
1,1
1,4
1,7
2
2,3

-1,5403
-1,46484
-1,32106
-1,095
-0,78007
-0,37758
0,103293
0,646404
1,230033
1,828844
2,416147
2,966276

Ing.: Willam Caiza

METODO DE LA BISECCION
5
4
3
2
1
0
-3

-2

-1

-1

-2
xa

xr

xu

f(xa)

f(xr)

f(xu)

error

tolerancia

0,5

0,65

0,8

-0,377583

-0,1460838

0,103293

0,65

0,725

0,8

-0,146084

-0,0234994

0,103293

0,1034483

NO HAY RAIZ

0,725

0,7625

0,8

-0,023499

0,039389

0,103293

0,0491803

NO HAY RAIZ

0,725

0,74375

0,7625

-0,023499

0,007815

0,039389

-0,0252101 NO HAY RAIZ

0,725

0,734375

0,74375

-0,023499

-0,0078747

0,007815

-0,012766

NO HAY RAIZ

0,734375

0,739063

0,74375

-0,007875 -3,704E-05 0,007815 0,0063432


Imagen 2.29: Mtodo de la Biseccin

EXISTE RAIZ

0,01

Ejercicios propuestos

Determine las races reales de () = + +

Grficamente.
Usando el mtodo de la biseccin para localizar la raz ms pequea. Empleando los valores
iniciales de xl = 0 y xu = 1 hasta que el error estumado a se encuentre debajo de s =10%
Solucin: Xr=0,34375

Determine las races reales de la siguiente funcin:

f(x) = 26 + 82,3x 88x 2 + 45,4x 3 9x 4 + 0,65x 5


Grficamente.
Usando el mtodo de la biseccin para localizar la raz ms grande con s = 10%, empleando los
valores iniciales de xl = 0,5 y xu = 1
Solucin: Xr=0,59375
Mtodo de la Falsa Posicin

55

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Ejercicios resueltos:

Planteamiento del problema. Con el mtodo de la falsa posicin determine la raz:


f(c) =

9.8(68.1)
c

(1 e(68.1)10 ) 40

Solucin: Se empieza el clculo con los valores iniciales xl = 12 y xu = 16.


Primera iteracin:
xl = 12
xu = 16
xr = 16

f(xl) = 6.0699
f(xu) = 2.2688

2.2688(12 16)
= 14.9113
6.0669 (2.2688)

Que tiene un error relativo verdadero de 0.89 por ciento.


Segunda iteracin:
f(xl) f(xr) = 1.5426
Por lo tanto, la raz se encuentra en el primer subintervalo y xr se vuelve ahora el lmite superior
para la siguiente iteracin, xu = 14.9113
xl = 12 f(xl) = 6.0699
xu = 14.9113 f(xu) = 0.2543
xr = 14.9113

0.2543(12 14.9113)
= 14.7942
6.0669 (0.2543)

El cual tiene errores relativos verdaderos y aproximados de 0.09 y 0.79 por ciento. Es posible
realizar iteraciones adicionales para hacer una mejor aproximacin de las races.

Mediante el mtodo de la falsa posicin encontrar la raz de () = +


con una toleracia de 0,001

56

Mtodos Numricos con MatLab


X
-1
-0,5
0
0,5
1
1,5
2
2,5
3
3,5
4
4,5

f(x)
-0,4459714
1,0296615
1
-0,8881871
-1,5340136
0,439492
1,8731155
0,2142836
-1,8991619
-0,9037196
1,5889671
1,4458242
a
0
0,2648043
0,2648043
0,2648043

Ing.: Willam Caiza

2,5
2
1,5
1
0,5
0
-2

-1

-0,5 0

-1
-1,5
-2
-2,5

c
b
f(a)
f(c)
0,2648043
0,5
1
1,174459
0,3987234
0,5
1,17445865 -0,382472
0,3658251 0,3987234 1,17445865 -0,038133
0,3626483 0,3658251 1,17445865 -0,001805

f(b)
error
-0,888187
-0,888187 0,1339191
-0,382472 0,0328983
-0,038133 0,0031769

Ejercicios propuestos

Determine la raz real de:


() =

(. . )

Empleando tres iteraciones en el mtodo de la falsa posicin, con valores iniciales de xa = 1 a


xu = 3. Calcule el error aproximado y el error verdadero en cada iteracin.
Solucin: Xr = 2,378601 , = 4,3 , = 5,7

Calcule la raz cuadrada positiva de () = usando el mtodo de la falsa


posicin con = . %. Emplee como valores inciales = y = .

Solucin: Xr = 3,872979

57

Mtodos Numricos con MatLab

Ing.: Willam Caiza

CAPITULO III: SISTEMA DE


ECUACIONES LINEALES
3.1 INTRODUCCIN
3.1.1 MATRIZ ESCALONADA
Definicin.- Sea A una matriz nm, A es escalonada si satisface las dos condiciones
siguientes:

Las filas nulas estan por debajo de las filas no nulas. Una fila es nula si todas sus
entradas son ceros; una fila es no nula si por lo menos una de sus componentes es
distinta de cero.

El primer elemento distinto de cero de cada fila no nula est a la derecha del primer
elemento diferente de cero de las filas precedentes.

Ejemplo 1:
0
0
= 0
0
[ 0

2
3
0 3
0
0
0
0
0
0

4 6
0
3
0
0
0
0
0
0

4
5
0
0
0 ]

Se puede observar que la primera fila es no nula; la segunda fila tambin es no nula pero el
primer elemento no nulo es el -3 y est a la derecha del elemento no nulo -2 de la primera
fila; las dems filas son nulas y estn debajo de las filas no nulas.

Ejemplo 2:
3 2 7 5 1
= [ 0 0 4 7 9 ]
0 0
0 1 6
0 0
0 0 0

58

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Se puede observar que la primera fila es no nula; la segunda fila tambin es no nula pero el
primer elemento no nulo es el -4 est a la derecha del elemento no nulo 3 de la primera fila;
adems en la tercera fila el primer elemento no nulo es 1 y est a la derecha del primer
elemento no nulo de la segunda fila -4; la ltima fila es nula y est debajo de las filas no
nulas.
Ejemplo 3:
2 3 5 1
0 0 0 0
= [0 5 4 7 ]
0 0 0 0
Se puede observar que la primera fila es no nula; la segunda fila es nula por lo tanto no es
matriz escalonada ya que debera estar debajo de las matrices no nulas.
Ejemplo 4:

3
= [0
0

2 5
1 3
5 2

4
4]
3

Se puede observar que la tercera fila es no nula pero el primer elemento no nulo -5 no est
a la derecha del primer elemento no nulo de la segunda fila 1 no nula.
3.1.2 MATRIZ ESCALONADA REDUCIDA
Definicin.- Una matriz A de dimensin n m, es escalonada reducida si es escalonada y
adems todo elemento en una columna, arriba y abajo del primer elemento no nulo que
debe ser 1, es cero.
Ejemplo 5:

0
A= [0
0
0

1
0
0
0

0
0
0
0

0
1
0
0

0 5
0 4]
1 5
0 0

59

Mtodos Numricos con MatLab

Ing.: Willam Caiza

La primera fila es no nula y el primer elemento es 1 y dentro de esa columna son ceros; la
segunda fila es no nula y el primer elemento no nulo es un 1 y los dems elementos de esa
columna son ceros y adems el 1 est a la derecha del valor no nulo 1 de la primera fila; la
tercera fila es no nula y el elemento no nulo es un 1 y los dems elementos de esa columna
son ceros y adems el elemento no nulo 1 est a la derecha del elemento no nulo 1 de la
segunda fila; la cuarta fila es nula y est al final de todas las filas no nulas.
Ejemplo 6:

=[

1 0 5 6
]
0 1 3 4

La matriz B es una matriz escalonada reducida por filas.


3.1.3 RANGO DE A
Definicin.- Sea A una matriz nm, se llama rango de A y se denota Rng (A) al nmero de
filas no nulas de la matriz en la forma escalonada reducida equivalente a A.

Ejemplo 7:
Encuentre el rango de la matriz A.


= [

[
]
( )

[
]
( )

] ()

Se puede observar que la primera, segunda y tercera filas de la matriz A son no nulas por lo
que esta matriz no se encuentra en su forma escalonada reducida procediendo a realizar las
operaciones para obtener dicha forma.
Entonces, se tiene que hacer 0 al primer elemento no nulo de la segunda fila, para lo cual
restamos 2 veces la fila 1 de la fila 2; luego para hacer 0 al primer elemento y tercer

60

Mtodos Numricos con MatLab

Ing.: Willam Caiza

elemento no nulo de la tercera fila sumamos la fila 1 a la fila 3; despus para hacer 0 al
segundo elemento no nulo de la tercera fila sumamos 2 veces la fila 1 ms 3 veces la fila 3.
Finalmente se obtendr una matriz escalonada reducida, en la cual se observa que se tiene
2 filas no nulas, concluyendo que el rango de la matriz A es 2.
3.2 CARACTERIZACIN DE LOS SISTEMAS POR SU SOLUCIN
3.2.1 SISTEMAS QUE NO TIENEN SOLUCIN
El problema de decidir si un sistema de ecuaciones lineales tiene solucin o no, es el
problema de reconocer si tiene ecuaciones inconsistentes o no. Y esto se reconoce
fcilmente cuando el sistema tiene la forma escalonada y se observa al menos una ecuacin
de la forma:
0x1 + 0x2 + + 0xn = b, b0.
Se puede observar en la ecuacin anterior que cero est igualado a una constante lo cual es
una falsedad ya que el cero no puede ser igual a una constante diferente de cero.
Tambin resulta fcil de reconocer que hay ecuaciones inconsistentes, en un sistema en su
forma inicial, cuando dos de ellas tienen iguales coeficientes asociados a las mismas
variables y la constante a la derecha es distinta, como se puede observar:

3x + 2x2 + 3x3 = 5
{ 1
3x1 + 2x2 + 3x3 = 3
En general, un sistema de ecuaciones no tiene solucin si: Rng (A) < Rng (A, b) AX = b, el
sistema es incompatible.
3.2.2 SISTEMAS CON SOLUCIN
Un sistema AX = b se dice que es consistente si: Rng (A) = Rng (A, b), la ausencia de
ecuaciones inconsistentes se refleja en la forma escalonada de la matriz del sistema A y la
forma escalonada de la matriz aumentada (A, b) tienen el mismo nmero de filas no nulas.
3.2.3 SISTEMAS CON SOLUCIN NICA
Un sistema n m, AX = b, tiene solucin nica si: Rng (A) = Rng (A, b) = m = nmero de
variables.

61

Mtodos Numricos con MatLab

Ing.: Willam Caiza

3.2.4 SISTEMAS CON INFINITO NMERO DE SOLUCIONES


Finalmente, un sistema nm, AX = b, tiene un nmero infinito de soluciones si adems de
tener solucin, el nmero de filas no nulas de la forma escalonada de la matriz del sistema
es menor que m, el nmero de variables (o columnas de la matriz del sistema). Lo que es
equivalente a establecer que:
Rng (A) = Rng (A|b) < m.

Operaciones Elementales de Fila


1) Fi kFi ; k es constante.
2) Fi Fi Fj
3) Fi k1 Fi k 2 Fj

Clculo de la matriz inversa


Algoritmo
[ ] [ ] [ + + ] [

Ejemplo 8:
Calcular la matriz inversa, mediante operaciones elementales de fila.


=[
]


1
(1
1

9
5
3 1) 2 2 3
1
1 3 3 1


[
| ]




[
|

[
|

[
|

||
()

[
]

|

]
[


+ Verificacin:

= [
]

]
[

62

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Imagen 3.1: Eliminacin de filas

Ejemplo 9:
Dado el siguiente sistema de ecuaciones lineales calcular el rango de la matriz de
coeficientes de A y de la matriz ampliada.
+ =
{ + =
+ =

a) Calcular el rango del sistema de ecuaciones lineales.


1 9
5
1 9
5
1
(0
4
2 ) 2 2 2 (0
2 1)
0
8 4 3 1 3
0 2
1 3 3 + 2
4
1 9
5
(0
2 1) () = 2
0
0
0
b) Rango de la matriz aumentada.
1 9
5 33
1
(1
|
)

3 1 9 2
1
2
1
1 1
1 5
1
1 9
5 33
1
(0
(0
2 1 |7)
1
1 1
1 5 3 3 + 2

9
5 33
12 6 |42) 2 16 2
1
1 5
9
5 33
2 1 |7)
1
0 2 3 3 1

1 9
5 33
1 9 5 33
(0
(0
2 1 | 7 )
2 1 |7)
0 10 5 35 3 15 3
0
2 1 7 3 3 2
1 9
5 33
(0
2 1 |7)
0
0
0 0
( ) = 2 < m, donde m es el numero de filas.
infinitas soluciones

63

Mtodos Numricos con MatLab

Ing.: Willam Caiza

2 = 7
Despejando y
2 = 7 +
+
=

9 + 5 = 33
Despejando x
= 33 + 9 5

Reemplazando y en x
7 +
= 33 + 9 (
) 5
2
63 9
= 33
5
2 2
63 19
= 33

2
2

=

Sea z = t

19

=2 2
{ = 7+
2

=
Ejemplo 10:

Todo sistema de ecuaciones se puede escribir de la forma = , por ejemplo:

3 2
1
1
= [ 1 1 1 ] ; b = [ 2 ]
1 3
1
1
=
+ +

[ ] [ ] = [ ] [ + ] = [ ]
+ +

+ + =
{ + =
+ + =
DEFINICIN:
Se dice que una matriz = [ ] triangular superior cuando sus elementos verifican =

, para > .
Se dice que una matriz = [ ] , es triangular inferior cuando sus elementos verifican

= , para < .

64

Mtodos Numricos con MatLab

Ing.: Willam Caiza

= [

; <

>

; =

Figura 3.2: Matriz Triangular

Ejemplo 11:
Matriz triangular superior:

= [

[ ] = 0 >

Ejemplo 12:
Matriz triangular inferior:
[ ] = 0 <

= [

Si A es una matriz triangular superior entonces se dice que el sistema = es un sistema


triangular superior de ecuaciones lineales:

+ + +
+ +

(1)

. . .
. . .

+ =
+ =

, + , + , =
, + , =
65

Mtodos Numricos con MatLab

Ing.: Willam Caiza

=
Figura 3.3: Ecuaciones Lineales

Teorema de Sustitucin Regresiva


Supongamos que tenemos el sistema AX=b y un sistema triangular superior como en (1). Si
0 ; = 1,2, , ; entonces existe una solucin nica de (1).
Demostracin de forma constructiva
La solucin es fcil, la ltima ecuacin solo contiene la incgnita , es decir:
=

; 0

Conocido , podemos utilizarla para encontrar 1


1 =

1 1,
1,1

As:
2 2,1 1 2,
2,2
3 2,2 2 3,1 1 3,
=
3,3
2 =

Generalizando tenemos:
=

=+1

Ejemplo 13:
Aplicando el mtodo de sustitucin hacia atrs a la matriz 4x4:

+ + + =

+ + + =

+
+ + =

+
+ + =

4 = 4 (Constante y conocido)
44

3 =
2 =

3 34 4
33

2 23 3 24 4 2 (23 3 + 24 4 )
=
22
22

66

Mtodos Numricos con MatLab

1 =

Ing.: Willam Caiza

1 12 2 13 3 14 4 1 (12 2 + 13 3 + 14 4 )
=
11
22

Programa 3.1: Mtodo de sustitucin regresiva de una matriz de 4x4.


a=get(handles.matriz_a,'String');
b=get(handles.matriz_b,'String');
a=str2num(a);
b=str2num(b);
n=4;
for k=n:-1:1
si=0;
for j=k+1:n
si=si+a(k,j)*x(j);
end
x(k)=(b(k)-si)/a(k,k);
end

Guardamos en la variable a y b
los datos ingresados en el edit text
matriz_a y matriz_b.
Str2num nos sirve para cambiar el
formato de los valores, en este caso
de un string a number.
n=4 numero de filas a calcular, lo
utilizamos tambien como contador.

For: contador, donde k y j llegara


set(handles.resultado,'String',num2str(x)); hasta 4 como indicamos en n.
si condicionamiento, damos un valor
de inicio 0.

x(k)=(b(k)-si)/a(k,k)es la formula
aprendida en clases remplazando las
variables utilizadas
Por ultimo, set muestra los resultados
en un static text de lo realizado.

Imagen 3.4: Sustitucin Regresiva

3.3 METODO DE GAUSS

67

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Definicin:
Es una generalizacin del mtodo de reduccin, que utilizamos para eliminar una incgnita
en los sistemas de dos ecuaciones con dos incgnitas. Consiste en la aplicacin sucesiva del
mtodo de reduccin, para transformar la matriz ampliada con el mtodo de eliminacin
gaussiana y pivoteo en una matriz triangular, luego mediante el mtodo de sustitucin
regresiva se procede despejar las variables obteniendo as la solucin
3.3.1 ELIMINACIN GAUSSIANA Y PIVOTEO
Necesitamos resolver el sistema AX=B, sistema con n ecuaciones y n incgnitas. El objetivo
es construir un sistema triangular equivalente UX=Y que podamos resolver usando el mtodo
de sustitucin regresiva.
Observacin: Se dice que 2 sistemas de ecuaciones de orden n son equivalentes cuando
tienen el mismo conjunto de soluciones, es decir, se realizaron operaciones de fila o columna
en la matriz original.
Para la aplicacin de la eliminacin gaussiana y pivoteo, se hace uso de la matriz ampliada,
como se indica a continuacin:
11
[|] = [ 21
1

12 1 1
22 2 |2 ]
2

3.3.2 PIVOTEO Y MULTIPLICADORES


La definicin de multiplicador de una matriz es:

=
, = , , ,

Y la operacin elemental con el pivote es de la forma:


,
Ejemplo 14:
Resolver el siguiente sistema de ecuaciones mediante pivoteo y multiplicadores:
+ + + =
+ + + =
+ + + =
+ + + =
Siendo su matriz ampliada:

68

Mtodos Numricos con MatLab

Ing.: Willam Caiza


1
[2
4
3

2
0
2
1

1
4
2
3

4 13
3| 28 ]
1 20
2 6

El multiplicador y el pivote para columna 1 son:


= 2 21 =

21
2
= = 2 ; 2 2 21 1
11
1

En el primer paso, se procedi a restar a la segunda fila la multiplicacin de 2 por la primera


fila:
1
2
1 4 13
0
4
2
5| 2 ]
[
4
2
2 1 20
3 1
3 2 6
31
4
= = 4 ; 3 3 31 1
11
1
Se procedi a restar a la tercera fila la multiplicacin de 4 por la primera fila:
= 3 31 =

1
2
1
0
4
2
[
0 6 2
3 1
3

13
4
5 | 2 ]
15 32
6
2

41
3
=
= 3 ; 4 4 41 1
11
1
Se procedi a restar a la cuarta fila la multiplicacin de la primera fila por -3.
= 4 41 =

1 2
13
1 4
0
4
2 5 | 2 ]
[
0 6 2 15 32
45
0 7
6 14
Los nmeros 2, 4, -3 son los multiplicadores del primer paso del proceso de eliminacin. El
nmero 1 es el elemento pivote de este primer paso y la primera fila, que no sufre
modificacin alguna, se denomina fila pivote.
El multiplicador y el pivote para columna 2 son:
=

, = , ,

69

Mtodos Numricos con MatLab

= 3 32 =

Ing.: Willam Caiza

32
6 3
=
= ; 3 3 32 2
22
4 2
3

Se procedi a restar a la tercera fila la multiplicacin de 2 por la segunda fila:


1 2
1 4
13
0 4
2 5 | 2 ]
[
0 0 5 152 35
45
0 7
6 14
= 4 42 =

42
7
7
=
= ; 4 4 42 2
22
4
4
7

Se procedi a restar a la cuarta fila la multiplicacin de 4 por la segunda fila:


1 2
1 4
13
0 4
2 5
2
[
|
]
0 0 5 152 35
0 0 192 214 972
En el siguiente paso del proceso, la segunda fila se emplea como fila pivote y -4 como
elemento pivote.

El multiplicador y el pivote para columna 3 son:


=

= 4 43

, = ,

19
43
19
=
= 2 =
; 4 43 3
33
5
10 4

En el siguiente paso del proceso, la tercera fila se emplea como fila pivote, y se procede a
19
restar a la cuarta fila la multiplicacin de 10 por la tercera fila.
1 2
1 4
13
0 4
2
5
[
| 2 ]
0 0 5 152 35
18
0 0
0 9

70

Mtodos Numricos con MatLab

Ing.: Willam Caiza

El sistema resultante es triangular superior y equivalente al sistema original, este sistema es


fcilmente resoluble aplicando el algoritmo de sustitucin regresiva, de esta forma se
obtiene:

94 = 18 =
15
15
(2) = 35 =
53 4 = 35 53
2
2
42 + 23 54 = 2 42 + 2(4) 5(2) = 2 =
1 + 22 + 3 + 44 = 13 1 + 2(1) + 4 + 4(2) = 13 =
Ejemplo 15:
+ =
+ + + =
+ + =

+ + =

Siendo su matriz ampliada:


3 2
1 1
2
[1

3 1
1
1 1
3
1 2 ||
1 3
2
5 ]
2

1
1

Transformando a matriz triangular superior


El multiplicador y el pivote para columna 1 son:
1

1 = 1 ;
3

2 = 2 + 1;
3 = 3 21;
4 = 4 + 1

1 2/3
0 1/3
[
0 7/3
0 1/3
3 = 2

1 1/3 1/3
0 4/3 8/3
|
]
1 4/3 7/3
1 1/6 16/3

17

F3 ;

73

4= 2 4;

71

Mtodos Numricos con MatLab


1
0
0
0

Ing.: Willam Caiza

2/3
1 1/3 1/3
0 4/3 8/3
1/3
|
1/7 8/7 3
0
1 3/2
8
0

4= 3 4;
7

1 1/3
1/3
0 4/3
8/3
|
1/7 8/7 3
0 13/14 13/7

1 2/3
0 1/3
0
0
0
0

=
=
=
=

Ejemplo 16:

Resolver el siguiente sistema de ecuaciones mediante pivoteo y multiplicadores:


+ =
+ =
+ + =
Calculando su rango:

[

El multiplicador y el pivote para columna 1 son:


1 =

= 2 21 =

1
, = 2,3
11

,1 1

21
1 1
= = ; 2 2 21 1
11
3 3
1

En el primer paso, se procedi a restar a la segunda fila la multiplicacin de 3 por la primera


fila:
3

2
1
5
4
[0
]
3
3
1 2
3

72

Mtodos Numricos con MatLab

Ing.: Willam Caiza

31
1
1
=
= ; 3 3 31 1
11
3
3
1
Se procedi a restar a la tercera fila la multiplicacin de 3 por la primera fila:
= 3 31 =

3
0
[0

Los nmeros

1
3

2
1
5
4

3
3
4
10
3
3 ]

, 3 son los multiplicadores del primer paso del proceso de eliminacin. El

nmero 3 es el elemento pivote de este primer paso y la primera fila, que no sufre
modificacin alguna, se denomina fila pivote.
El multiplicador y el pivote para columna 2 es:
=

, =

32
6 3
=
= ; 3 3 32 2
22
4 2
3
Se procedi a restar a la tercera fila la multiplicacin de 2 por la segunda fila:
= 3 32 =

3
0
[0

2
1
5
4

3
3
22
0
5 ]

Calculemos el rango de la matriz ampliada:

, = ,


| ]

El multiplicador y el pivote para columna 1 es:

73

Mtodos Numricos con MatLab

= 2 21 =

Ing.: Willam Caiza

21
1 1
= = ; 2 2 21 1
11
3 3
1

Se procedi a restar a la segunda fila la multiplicacin de 3 por la primera fila:


2
3
2
1
[ 0 5/3 4/3| 5/3]
5/3
1
2
3
= 3 31 =

31
1
1
=
= ; 3 3 31 1
11
3
3
1

Se procedi a restar a la tercera fila la multiplicacin de 3 por la primera fila:


3
[0
0

2
5/3
4/3

1
2
4/3| 5/3]
10/3 5/3

El multiplicador y el pivote para columna 2 son:


=

= 3 32 =

, =

32
6 3
=
= ; 3 3 32 2
22
4 2
3

3.1 Se procedi a restar a la tercera fila la multiplicacin de 2 por la segunda fila:


3
[0
0

2
5/3
0

1
2
4/3| 5/3]
22/5 1/3

El rango de A
Ran(A)=3
Ran (A|b) =3
m=3

3.4 ELIMINACIN DE GAUSS JORDAN
Definicin:
El mtodo de Gauss-Jordan se basa en el mtodo de Gauss el cual transforma la matriz de
coeficientes en una matriz triangular superior procediendo a realizar la matriz trianguklar
inferior en el cual se obtienen sus soluciones mediante la reduccin del sistema dado a otro

74

Mtodos Numricos con MatLab

Ing.: Willam Caiza

equivalente hasta la (n-1) columna, contina el proceso de transformacin hasta obtener


una matriz diagonal, la cual se le multiplica por su inverso a cada uno de los elementos de la
diagonal principal para que sus valores sean 1, finalmente en la ultima columna se obtiene
la solucin de la variables
Ejemplo 17:
+ =
+ + + =
+ + =

+ + =

Siendo su matriz ampliada:


3 2
1 1
2
1
[

3 1
1
1 1
1 2 || 3
1 3
2
5 ]
2

1
1

Transformando a matriz triangular superior

El multiplicador y el pivote para columna 1 son:


1

1 = 1 ;
3

2 = 2 + 1;
3 = 3 21;
4 = 4 + 1

1 2/3
0 1/3
[
0 7/3
0 1/3
3 = 2

1 1/3 1/3
0 4/3 8/3
|
]
1 4/3 7/3
1 1/6 16/3

17

F3 ;

73

4= 2 4;

1
0
0
0

2/3
1 1/3 1/3
0 4/3 8/3
1/3
|
1/7 8/7 3
0
1 3/2
8
0

4= 3 4;
7

75

Mtodos Numricos con MatLab

Ing.: Willam Caiza

1 2/3
0 1/3
0
0
0
0

1 1/3
1/3
0 4/3
8/3
|
1/7 8/7 3
0 13/14 13/7
=
=
=
=

Se proceder a transformar a matriz inferior

1 2/3
0 1/3
0
0
0
0
1= 1
2= 2
3= 3

1 1/3
1/3
0 4/3
8/3
|
1/7 8/7 3
0 13/14 13/7

2
4;
13
8
4;
39
16
4;
13

3
0
0
0

2
3 0
3
1/3
0 0
| 0
5
1 0
0
0 13/2 13
0

3
0
0
0

0
0 0
3
1/3
0 0
| 0
5
1 0
0
0
13/2
13
0

1 = 1 + 33

1 + 1 + 62

1
0
0
0

0
1
0
0

0
0
1
0

0 6
0| 0
0 5
1 2

=
=
=
=

76

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Se pudo comprobar que mediante el mtodo de Gauss y el mtodo de Gauss-Jordan se


obtuvo la misma solucin

Ejemplo 18:

Resolver el siguiente sistema mediante Gauss-Jordn.

2 3
[3 2
5 1

1 1 F
1
4| 3]
2
1 4

Se procedi a dividir la primera fila para 2:


3
1 1
2
2 | 2 ] F2 F2 3F1
[
3 2 4 3 F3 F3 5F1
5 1 1 4
1

Se procedi a la segunda fila restar la multiplicacin de 3 por la primera fila y a la tercera fila
restarle la multiplicacin de 5 por la primera fila
3
1
1
2
2
2
2
13
11| 9
0

F2 F2 ( )
13
2
2| 2
17
7 3

[0 2
2 2 ]
1

Se multiplico a la segunda fila por 13


1

3
2

[0

17
2

1
1
3
2
2
|
F

F
1
1
11
9
2 2

17
13| 13
F

F
+
F
3
3
7
3
2 2

2
2 ]

77

Mtodos Numricos con MatLab

Ing.: Willam Caiza


3

Se procedi a la primera fila restar la multiplicacin de 2 por la segunda fila y a la tercera


fila sumarle la multiplicacin de

17
2

por la segunda fila

10
7

13 13
13
11| 9
F3 F3 ( )
1

48
13| 13
48 96
0
13 13 ]

0
[0

13

Se multiplico a la tercera fila por 48


10
7
10

13 13 F1 F1 + 13 F3
11|| 9
11

13 13 F2 F2 13 F3
1
2 ]

1 0

0 1
[0 0

10

Se procedi a la primera fila sumarle la multiplicacin de 13 por la tercera fila y a la segunda


11

fila restarle la multiplicacin de 13 por la tercera fila


Se obtuvo una matriz triangular superior eh inferior, lo que nos dio como resultado:
1 0 0 1
[0 1 0| 1]
0 0 1 2

=
=
=

Ejemplo 19:
9
Resolver el siguiente sistema mediante Gauss-Jordn
+ =
+ =

1
3 2 3 5
| ] 1
2 4 1 2
3
2
3
4

[1
2

5
1 | ] 2
2
1
3 2
1 2

78

Mtodos Numricos con MatLab

Ing.: Willam Caiza

2
5
1
1
3
3
[
| 3 ] 2 2 ( )
16
4
16
0
3
3
3
2
5
1
1
2
3
[
| 3 ] 1 1 + 2
9
1
3
0 1

16 4
1 0
[
0 1

5
3
8 | 2 ]
1
9

16 4

5
3
3 5
+ = =
8
2
2 8
9
1
9
1
= =

16
4
16
4
=


=
=


Ejemplo 20:
Obtener para que el sistema de ecuaciones tenga:
a) Solucin nica
b) Infinitas soluciones
c) No tenga solucin
+ =
+ =
1
2 1 6
| ] 1
1 4
2
1
3
[1 2| ] 2 2 1
4
1
[

79

Mtodos Numricos con MatLab

Ing.: Willam Caiza


1
2 | 3] 2
1 1 2
1
2

1
[
0

1
3
1
[1 2| 2 ] 1 1 2
2
0 1 2 1
1 0
|
0 1

2
2( 1)
2
2 1 ]

2 1 0

1
2

= 2
1

Ejemplo 21:
Obtener para que el sistema de ecuaciones tenga:
a) Solucin nica
b) Infinitas soluciones
c) No tenga solucin
+ =
+ =

1
2 1
| ] 1
2 1
2

1
[1 2| 2] 2 2 1
2 1

1
1
2 | 2 ] ( 2 )
[
2
4 2 2 2
4 2
0
2
2

[1
0

2|
1

1
2 ]
1
1
1
2 2
2+

80

Mtodos Numricos con MatLab

Ing.: Willam Caiza

1
1 0 2+
[
|
] 4 2 0 4 2 2 4 2
0 1 1
2+
|| =
i.
ii.

|| = || = =
< || = || = =

=
1 0 12
[
|
] 02
0 0 2

=
1 1 12
|
]
0 0 0
Cdigo de Programa de Gauss- Gauss Jordan en Matlab
[

Botn para el mtodo de Gauss

function calcular_Callback(hObject, eventdata,


handles)
clc;
valor=get(handles.a,'string');
vm=str2num(valor);
valorb=get(handles.b,'string');
vmb=str2num(valorb);

Ingreso de las matrices


Definimos el tipo de dato

A=[vm,vmb];
n=length(vm);
for i=1:n
for k=i+1:n
pivo=A(k,i)/A(i,i);
A(k,:)=A(k,:)-pivo*A(i,:);
end
end
a=A(:,1:n);
b=A(:,n+1);
x(n)=b(n)/a(n,n);
for k=n:-1:1

Concatenacin de las matrices


Clculo de x por el mtodo de gauss

Clculo de los valores para x

81

Mtodos Numricos con MatLab

Ing.: Willam Caiza

si=0;
for j=k+1:n
si=si+a(k,j)*x(j);
end
x(k)=(b(k)-si)/a(k,k);
end
set(handles.Gauss,'string',num2str(A));
set(handles.matriz,'string',num2str(x'));

Impresin de resultados

Botn para el mtodo de Gauss Jordan

function jordan_Callback(hObject, eventdata,


handles)
clc;
valor=get(handles.a,'string');
vm=str2num(valor);
valorb=get(handles.b,'string');
vmb=str2num(valorb);
A=[vm,vmb];
A1=[vm,vmb];
n=length(vm);
for i=1:n
for k=i+1:n
pivo=A(k,i)/A(i,i);
A(k,:)=A(k,:)-pivo*A(i,:);
end
end
for i=1:n
for k=i+1:n
pivo=A(i,k)/A(k,k);
A(i,:)=A(i,:)-pivo*A(k,:);
end
end
A1=A;
for i=1:n
A1(i,:)=A1(i,:)/A1(i,i);
End

Ingreso de las matrices

Concatenacin de las matrices

Matriz triangular superior

Matriz triangular inferior

Para convertir la diagonal a 1

set(handles.gaussjordan,'string',num2str(A));
set(handles.matriz,'string',num2str(A1));

82

Mtodos Numricos con MatLab

Ing.: Willam Caiza


Impresin de resultados

Resultado del Guide para el mtodo de Gauss y Gauss Jordan

Ejecucin del Guide para el mtodo de Gauss

Imagen 3.5: Mtodos de Guass y Gauss-Jordan 1

83

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Imagen 3.6: Mtodos de Guass y Gauss-Jordan 2

Ejecucin del Guide para el mtodo de Gauss-Jordan

Imagen 3.6: Mtodos de Guass y Gauss-Jordan 3

EJERCICIOS PROPUESTOS
Mtodo de Gauss
Resuelva las siguientes ecuaciones por el mtodo de Gauss:

84

Mtodos Numricos con MatLab


1)

Ing.: Willam Caiza

2 + = 1
{ + 2 = 7
3 + = 0

2) 2 + 3 = 1
{
3 + 2 = 5
3)

++ =1
{2 + 3 4 = 9
+ = 1

4)

3 + 2 + = 1
{5 + 3 + 4 = 2
+ =1

5)

9 + 5 = 33

{ + 3 = 9
+ =5

6) {

3 4 = 6
2 + 4 = 16

7) {

2 + 3 = 1
3 + 4 = 0
+3

8) {

=5

3 = 5
+3

=5
2
9) {
2
4 2 =1

10) {

+ = 60
16 + 20 = 1100

Mtodo De Gauss Jordan


Resuelva las siguientes ecuaciones por el mtodo de Gauss Jordan:

+ 2 + 3 = 1
1) {3 2 = 2
4 + 4 + 4 = 3

85

Mtodos Numricos con MatLab

Ing.: Willam Caiza

+ 5 = 2
2) { 5 + = 3
2
5
+ 3 + 2 = 2
5
+ 2 3 = 0
3 + 2 + 6 = 8
3) {
3 + 3 + = 0
2 + 3 + 2 = 8
2 + 6 + 7 = 7
4) { + 2 = 1
5 + 7 4 = 9
2 3 = 8
5) {4 5 + = 15
2 + 4 = 1
+ =2
6) {3 + 3 + = 2
+ =0
++ =0
7) { + 2 + 3 = 0
3 + 5 + 7 = 1

Referencias

http://www.vitutor.com/algebra/sistemas%20I/g_e.html
http://ocw.unizar.es/ciencias-experimentales/matematicas-primer-curso-grado-cienciatecnologia-alimentos/bloques/bloque3/ejercicios/tema3_metodo_gauss_resueltos.pdf

86

Mtodos Numricos con MatLab

Ing.: Willam Caiza

CAPTULO IV: AJUSTE DE


CURVAS

4.1 INTRODUCCIN.
El ajuste de curvas nos proporciona funciones mediante las cuales podemos
predecir valores en un instante t+j, en el presente capitulo las funciones encontradas
mediante el mtodo de los mnimos cuadrados son la funcin lineal y la funcin
cuadrtica.
El mtodo de los mnimos cuadrados nos proporciona funciones donde la suma de
los errores al cuadrado debe ser el mnimo; en otras palabras, nos proporciona
funciones que se ajustan a una nube de puntos.

4.2 MTODO DE LOS MNIMOS CUADRADOS

87

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Mtodo de los Mnimos Cuadrados


12
10
8

= 0 + 1

6
4
2
0
0

20

40

60

80

100

120

140

160

Imagen 4.1: Mtodos de los Mnimos Cuadrados

El mtodo de los mnimos cuadrados es un modelo matemtico que se basa en minimizar la


suma de los cuadrados de los errores, como se describe a continuacin.

1) =
=

:

=

4.3 SUPUESTOS O HIPTESIS DEL MODELO DE REGRESIN LINEAL

a) ( ) = , donde = ; donde = +

88

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Imagen 4.2: Representacin Grfica

b) ( ) = ( ( )) = ;
La varianza de los errores es constante.
c) ( , ) = ( ( )) ( ( )) =
Ejemplo 1:
Si SCxx es la suma de los cuadrados de los xx, demuestre SCxx = xi 2 nx 2.
Demostracin

= ( )2 = (xi 2 2xi x + x 2 )
= xi 2 2 xi x + x 2
= xi 2 2xnx + nx 2
= xi 2 2nx 2 + nx 2
=
Ejemplo 2:
Si SCyy es la suma de los cuadrados de los yy, demuestre SCyy = .
Demostracin
= ( )2 = (yi 2 2yi y + y 2 )

89

Mtodos Numricos con MatLab

Ing.: Willam Caiza

= yi 2 2 yi y + y 2
= yi 2 2yny + ny 2
= yi 2 2ny 2 + ny 2
=
Ejemplo 3:
Si SCxy es la suma del producto de los xy, demuestre SCxy = .
Demostracin
= ( )( ) = (xi yi xyi yxi + xy)
= xi yi xyi yxi + xy
= xi yi nyx nyx + nxy
=

TEOREMA: Bajo los supuestos anteriores, demuestre:


+

=

Si

=

Entonces
=

Demostracin

1 se tiene
Derivando con respecto a los parmetros

= 0

= 0
1

2
0 +
1 ))2
= (
)
= ( (

=1

=1

0 +
1 ) + (
0 +
1 )2 ]
= [2 2 (

0 2
1 +
0 2 + 2
0
1 +
1 ]
= [2 2
2

0 2
1 +
0 + 2
0
1 +
1 ]
= 2 2

90

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Primera restriccin del modelo

( 2 + 2 2 + + 2 )
=
1

12
2
+
+ +
=0

=
+ 2
+ +
)

(

= 1 + 2 + +
=

=
2 +
2 + +
2 )

2 + + 2

= 21 + 2


=
+
2 + +
)

1 +
2 + +

=
= (1 + + )
=
Entonces la primera ecuacin normal es:
+2
1 = 0
2 +2n
+
1 = 0 (1)
- +
Segunda restriccin del modelo

( 2 + 2 2 + + 2 )
=
1
1

12
2
+
+ +
=0
1
1
1

=
2
2(1 1 + 2 2 + + )
1
1

91

Mtodos Numricos con MatLab

Ing.: Willam Caiza


=


= 2(1
+ 2
+ +
)
2

0
=2
) = 2(x1 2 + x2 2 + + xn 2 )
(
xi 2 =0
2
Entonces la segunda ecuacin normal es:
0 +2
1 2 =0
2 + 2
0 +
1 2 =0 (2)
+

Ecuaciones Normales {

+
1 = 0
+
0 +
1 2 = 0
+

Ejemplo 4:
Encontrar las ecuaciones normales de una funcin de segundo grado
+
+

=
Demostracin

()2 = 0

()2 = 0
1

()2 = 0
2

2
0 +
1 x +
1 x 2
= (
)
;
=

=1

0 +
1 x +
1 x 2 ))2
= ( (
=1

0 +
1 x +
2 x 2 ) + (
0 +
1 x +
1 x 2 ))2 = 0
= ( 2 2 (
=1

92

Mtodos Numricos con MatLab

Ing.: Willam Caiza

0 2
1 x 2
2 x 2 +
0 + 2
0
1 x +
1 x 2 + 2
0
2 x 2
= ( 2 2
=1

1
2 x 3 + 2 2 x 4 )
+ 2

Primera restriccin del modelo

=
0 22
0 2
0 )

(21

=1
= 2(1 + 2 + )

=
=

=
0 2 +
0 2 + +
0 2 )

0 + 2
0 + + 2
0 )
= (2
0 +
0 + +
0 )
= 2(
=


(2
0 1 1 + 20 1 2 + + 20 1 )

1 1 + 2
1 2 + + 2
1 )
= (2
1 (1 + 2 + + )
=2


=
=


=
0
2 1 2 + 2
0
2 2 2 + + 2
0
2 2 )

(2

2 1 2 + 2
2 2 2 + + 2
2 2 )
= (2
2 (1 2 + 2 2 + + 2 )
= 2


=
=

Entonces la primera ecuacin normal es:

0 + 2
1 + 2
2 2 = 0
2 + 2
=1

=1

=1

Segunda restriccin del modelo

93

Mtodos Numricos con MatLab

Ing.: Willam Caiza

=
1 22 2
1 2
1 )

(21 1

=1
= (21 1 22 2 2 )
= 2(1 1 + 2 2 + + )

=
=


=
0
1 1 + 2
0
1 2 + + 2
0
1 )

(2

=1
0 1 + 2
0 2 + + 2
0 )
= (2
0 (1 + 2 + + )
= 2


=
=

2 2 2 2
2
=

(1 1 + 1 2 + +
1 )

=1

1 1 2 + 2
1 2 2 + + 2
1 2 )
= (2
1 (1 2 + 2 2 + + 2 )
= 2


=
=


=
1
2 1 3 + 2
1
2 2 3 + + 2
1
2 3 )

(2

=1
2 1 3 + 2
2 2 3 + + 2
2 3 )
= (2
2 (1 3 + 2 3 + + 3 )
= 2


=
=

Entonces la segunda ecuacin normal es:

0
1 2
2 3 = 0

=1

=1

=1

=1

94

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Tercera restriccin del modelo

=
2 1 1 2 2
2 2 2 2 2
2 2 )

(2

=1

= (21 1 2 22 2 2 2 2 )
= 2(1 1 2 + 2 2 2 + + 2 )

=
=1


=
0
2 1 2 + 2
0
2 2 2 + + 2
0
2 2 )

(2

=1

0 1 2 + 2
0 2 + + 2
0 )
= (2
0 (1 2 + 2 2 + + 2 )
= 2


=
=1


=
1
2 1 3 + 2
1
2 2 3 + + 2
1
2 3 )

(2

=1

1 1 + 2
1 2 + + 2
1 3 )
= (2
1 (1 3 + 2 3 + + 3 )
= 2

=1

2 4

2 2 x2 4 + +
2 2 x 4 )

(2 x1 +
=

=1
2 x1 4 + 2
2 x2 4 + + 2
2 x 4 )
= (2
2 (x1 4 + x2 4 + + x 4 )
= 2


=
=1

Entonces la tercera ecuacin normal es:

0
1
2 4 = 0

2

=1

=1

=1

=1

95

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Entonces las 3 ecuaciones normales quedan plateadas de la siguiente manera

0 +
1
2 2 = 0 (1)

=1

=1

=1

0 +
1 2
2 3 = 0 (2)

=1

=1

=1

=1

0 2 +
1 3
2 4 = 0 (3)
2
=1

=1

=1

=1

Ordenando los trminos en cada lado de la ecuacin obtenemos las ECUACIONES


NORMALES

0 +
1 +
2 2 (1)
=

=1

=1

=1

0 +
1 2 +
2 3 (2)
=
=1

=1

=1

=1

0 2 +
1 3 +
2 4 (3)
2 =
=1

=1

=1

=1

Ejemplo 5:

Dados los siguientes datos, encuentre la ecuacin de regresin lineal ajuste, encontrar
0 1.

X
1
3
5
6

Y
1
3,5
6
7

(1+3+5+6) 15
4

96

Mtodos Numricos con MatLab

1
3
5
6
15

sumatoria

1
3,5
6
7
17,5

Ing.: Willam Caiza

-2,75
-0,75
1.25
1.8
0

( )( )

( )^2

297/32
21/32
65/32
189/32
143/8

121/16
9/16
25/16
81/16
59/4

-3,375
-0,875
1.44
2.625
0

(1+3.5+6+7) 17.5
4

143
1 = 8 = 1.212
59
4
0 =

175
15
1.212
= 0.17
4
4
= 0.17 + 1.212

Ejemplo 6:

En un estudio para describir la relacin entre la expansin al ruido y la hipertensin se


realizan las siguientes mediciones.

Promedio

60
65
70
80
80
85
90
90
94
100
81,4

1
1
5
4
2
5
6
4
7
7
4,2

= 81.4

x-x
-21,4
-16,4
-11,4
-1,4
-1,4
3,6
8,6
8,6
12,6
18,6

y-y
-3,2
-3,2
0,8
-0,2
-2,2
0,8
1,8
-0,2
2,8
2,8

(x-x)(y-y) (x-x)^2
68,48
457,96
52,48
268,96
-9,12
129,96
0,28
1,96
3,08
1,96
2,88
12,96
15,48
73,96
-1,72
73,96
35,28
158,76
52,08
345,96
219,2
1526,4

y
1,1
1,815
2,53
3,96
3,96
4,675
5,39
5,39
5,962
6,82

(yi-yi)^2
0,01
0,664225
6,1009
0,0016
3,8416
0,105625
0,3721
1,9321
1,077444
0,0324
14,137994

(yi-y)^2
10,24
10,24
0,64
0,04
4,84
0,64
3,24
0,04
7,84
7,84
45,6

(yi-yi)^2
9,61
5,688225
2,7889
0,0576
0,0576
0,225625
1,4161
1,4161
3,104644
6,8644
31,229194

2
(1 )
1 =14.134

97

Mtodos Numricos con MatLab

Ing.: Willam Caiza


2
(1 )
1 =31.229

= 4.2
1 =

219.2
= 0.143
152.68

a.- Interpretacin

Hipertensin=f(ruido)

= 7.4402 + 0.143

b.- Si x=65

y = 0,1436x - 7,4895
R = 0,6903

5
4

= 7.4402 + 0.143(65)
3

= 1.815

Si x=66

= 7.4402 + 0.143(66)

0
0

20

40

60

80

100

120

= 1.958
Por cada nivel que aumenta en el ruido, la hipertensin aumenta a 0.143 unidades

98

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Programa Regresin Lineal


Cdigo Matlab
function pushbutton1_Callback(hObject, eventdata, handles)
% En esta lnea de cdigo se crea el evento para programar el botn calcular.
global a
% En esta lnea de cdigo creamos una variable global para trabajar en todo el algoritmo.
x=str2num(get(handles.edit1,'string'));
y=str2num(get(handles.edit2,'string'));
% En estas dos lneas de cdigo guardamos los datos del vector X y el vector Y y los convertimos de
String a numricos.
m=length(x);
% En esta lnea de cdigo guardamos en la variable m el tamao del vector x.
n=str2num(get(handles.edit3,'string'));
% En esta lnea de cdigo guardamos el dato del grado del polinomio.
error=0;
% En esta lnea de cdigo establecemos el error cero para realizar nuestro algoritmo de iteracin.
if m ~= length(y)
msgbox 'ingrese correctamente los puntos (x,y)'
return
end
% En este cdigo establecemos la condicin para que X y Y posean el mismo nmero de datos.
for j=1:n+1
for k=1:n+1
s1=0;
error=0;
for i=1:m
s1=s1+(x(i)^(j+k-2));
error=error+1;
end
A(j,k)=s1;
end
end
for j=1:n+1
s2=0;
error=0;
for i=1:m
s2=s2+(y(i)*(x(i)^(j-1)));
error=error+1;
end
B(j)=s2;
end
if error==0
msgbox 'verifique que las casillas estn llenadas correctamente no ingresar letras)'
else
B=B';
a=inv(A)*B;
a=a';
set(handles.text7,'string',num2str(a));
end
function pushbutton2_Callback(hObject, eventdata, handles)

99

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Funcionamiento del programa en modo grafico:

Imagen 4.3: Programa de Regresin lineal

En la Fig. 4.2 se observa el funcionamiento del programa de regresin lineal con los datos
x(2,4,6,8) y y(2,5,4,5). Calculamos los valores de B0 y B1 y despus se grafica el ajuste de
curva para los puntos ya mencionados.
4.4 GENERALIZACIN DE MODELOS LINEALES
4.4.1 MODELO POTENCIAL

=
Dado un modelo no lineal mediante transformaciones pasar a modelo lineal
Sea el modelo potencial
=
= ( )
= +
= +
= + 1
=
0 =
1 =
=

Ejemplo 7:

100

Mtodos Numricos con MatLab

Ing.: Willam Caiza

= . ,
= +
= + 1
=
=
=
=

=
=
+ =
=
= 0 + 1
=

=
=
=
=
PROPIEDADES
Ejemplo 8:
1) Si = suma de los cuadrados de los xx
= ( )2 , demuestre que = 2 2
( 2 2 + 2 ) = 2 2 + 2
= 2 2 + 2
= 2 2 2 + 2

=
Ejemplo 9:
2) Si =suma de los cuadrados de los yy
= ( )2 , demuestre que = 2 2
( 2 2 + 2 ) = 2 2 + 2
= 2 2 + 2
= 2 2 2 + 2

101

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Ejemplo 10:
)(
) =

3) = (
= ( )( )
= ( + )
= +
= +

=
4.5 REGRESIN MLTIPLE
En el captulo anterior se desarroll el ajuste lineal simple, es decir donde haba una variable
dependiente junto a una variable independiente.
En el presente tema se tratar el caso de ajuste lineal donde hay una variable dependiente y
varias variables independientes.
Matricialmente el modelo multilineal se representa

= +
Su ajuste es:
=
Nuestro modelo podra tener la forma
1
2
= 3 ;

[ ]

1 11
0

1 21
X= 1 31 ; = [ ]

[1 1 ]

4.5.1 MTODO DE MNIMOS CUADRADOS PARA LA REGRESIN MULTILINEAL


= +
=
El error se define:

(1) =

102

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Reemplazamos el valor de en la ecuacin (1)


=
Este valor se necesita para el mtodo indicado en la sumatoria cuadrada de los errores

= = ( ) ( ) = 0
= = ( )( ) = 0

(2) = [ + ] = 0

Para poder derivar (2) se necesita las siguientes propiedades y observaciones de la


ecuacin (2):
1.

Debemos demostrar = .

2.

Debemos demostrar es simtrica.

3.
4.

= , donde A es una matriz cualquiera.

( ) = 2, donde A es simtrica.

Desarrollo de las propiedades para realizar la derivada de la ecuacin 2


a) Demuestre

Se demuestra para el modelo


0 +
1
=
1
2
= 3 ;

[ ]

1 11
0

1 21
X= 1 31 ; = [ ]

[1 1 ]

Por construccin
1 11
0
1 21
= [1 , 2 , 3 , , ] 1 31 [ ]

[1 1 ] 1
0

= [
=1

1 ] [ ]
=1

0 =1 +
1 =1 1
(3) =
Y

103

Mtodos Numricos con MatLab

Ing.: Willam Caiza

1 ] [ 1

0
= [

11

1
21

1
1 2
1 ] [ ]

0 +
1 11
0 +
1 21
0 +
1 1 ] [ 2 ]
= [

0 +
1 11 ) + 2 (
0 +
1 21 )++ (
0 +
11 )
= 1 (
0 + 2
0 +. . +
0 ) + (1
1 11 + 2
1 21 + +
1 1 )
= (1
0 (1 +2 + + )+
1 (1 11 + 2 21 + + 1 )
=
0 =1 +
1 =1 1
(4) =
Igualamos (3) y (4)

0 +
1 1 =
0 +
1 1

=1

=1

=1

=1

Entonces obtenemos la demostracin:


=
b) Demuestre que =
= ( )
= ( )
= =
Entonces: =
Por lo tanto: Z es simtrica.
c) Demuestre que

= , donde A es una matriz cualquiera.


11 12
1
= [21 22 ] ; = [ ]
2
31 32
11 12
1

[[ 21 22 ] [ ]]

2
31 32

11 1 + 12 2

[ 21 1 + 32 2 ]

31 1 + 32 2

( + 12 2 )
( + 22 2 )
1 11 1
1 21 1

(11 1 + 12 2 )
( + 22 2 )
[2
2 21 1
Derivando respecto a 1 y a 2 obtenemos:

11
= [
12

21
22

( + 32 2 )
1 31 1

( + 32 2 )
2 21 1
]

31
32 ]

104

Mtodos Numricos con MatLab


Igualamos

llegamos a la demostracin:
11 21 31 11
= [
]=[
12 22 32
12

Ing.: Willam Caiza

21
22

31

32 ] =

Con las demostraciones y las observaciones hechas derivamos la ecuacin (2):

=
[ + ] = 0

= [ ( ) 2
( ) +
( )]

= 2( ) +2

= ( ) = ( )
=
= ( )1

Programa:
Programa Ejecutado

105

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Programa Regresin Multilpe


Cdigo:
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
m=3;
n=str2double(inputdlg('Ingrese el numero de filas:'));
for i=2:m
for j=1:n
etiqueta=['Ingrese el valor X(',num2str(j),',',num2str(i),')'];
x(j,i)=str2double(inputdlg(etiqueta));
end
end
x(:,1)=1;
for i=1:n
etiqueta=['Ingrese el valor B(1,',num2str(i),')'];
y(i,1)=str2double(inputdlg(etiqueta));
end
total=(inv(x'*x)*(x'*y));
for i=1:n
ys(i,1)=(total(1,1)*x(i,1))+(total(2,1)*x(i,2))+(total(3,1)*x(i,3));
end
set(handles.uitable1,'Data',x);
set(handles.uitable2,'Data',y);
set(handles.uitable3,'Data',total);
set(handles.text1,'String',ys);
x=[x(:,2) x(:,3)];
plot3(x,y,ys,'*');
grid on;
axis on;
hold on;
rotate3d on;
plot3([min(x(:,1)) max(x(:,1))],[min(y) max(y)],[min(ys) max(ys)]);

106

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Imagen 4.4: Ejecucin del programa de regresin lineal

4.6 MTODO DE MNIMOS CUADRADOS PARA LA REGRESIN MATRICIAL


4.6.1 DERIVACIN MATRICIAL
Sea = 51 + 22 + 33
(1 , 2 , 3 ) = 51 + 22 + 33
5

= (2)

( ) =
=

( ) = (2 )

= 1 + 2 + 3
1

( ) = ( 2 ) =

= ;
( ) = 2
(1

11
3 ) = (12
13

12
22
23

13 1
23 ) (2 )
33 3

107

Mtodos Numricos con MatLab

Ing.: Willam Caiza

(11 1 + 12 2 + 13 3 + 12 1 + 22 2 + 23 3 ) + 13 1 + 23 2 + 33 3
1
= (2 )
3
11 12 + 12 2 1 + 13 3 1 + 12 1 2 + 22 22 + 23 3 2 + 13 3 1
+
23 3 2 +33 32

= 211 1 + 212 2 + 213 3


1

= 212 1 + 222 2 + 223 3


2

11
= (12
13

12
22
23

= 233 3 + 213 1 + 223 2


3
13 1

23 ) (2 )
() = 2

33 3

Ejemplo 11:
Demuestre que:

= +

= ( ) ( )
= ( + () )( )
= ( )( )
=
Se debera demostrar que:
=
=

( )

=
= ( )
= ( )
= ( ( ) )
=

= 2 +
= 2 +

108

Mtodos Numricos con MatLab

Ing.: Willam Caiza

=
2 = ( )2 = ( 0 0 )2

= ( (0 + 0 ))2
2

=1

=1

= [ 2 2 (0 + )]2
=1

= [ 2 2 (0 + ) + (0 + 0 )2 ]
=1

2
= [ 2 2 0 2 + 0 + 20 1 + 1 2 ]
=1

2 =
= 0
0 1
0 1

= [2 20 1 21 + 0 + 20 1 2 + 1 1 2 ]
0

2
(20 1 +
1 +
20 1 2)
0
0
0

2 + 0 + 1 =0

Ejemplo 12:
Demostracin del mtodo de regresin matricial
=
=

0 +

0 +

0 +
1 2

La ecuacin normal matricial de la regin lineal es:


( . ) = .
Por lo tanto:
1 1
2
1
= (1 )
= (

1
1

= ( 0 )
1

1
2

1
)

1
2
=()

109

Mtodos Numricos con MatLab

Ing.: Willam Caiza

= .
( . )
1
(
1

1
2

1 1
0
1

1 1
1 2
) = (
) ( ) (
1 2
1
1
0

(
)
2 ) ( ) = (


1

( 0) = (
1

2)


(
)


)
2

Calcular la inversa de (


2
2) = (


=

2 ( )2

=
2

( )2
(

( )2

1
( )2


( )2
)

( )2

2
(

+ ( )

=(

(
)

1
2

1
2
1
)( )

2
(
( )
( )2

( )2
)
1
( )2

(
)
)

(
)

Ejemplo 13:
-

EDAD
2
3

5 nios de 2,3,5,7 y 8 aos de edad pesan, respectivamente, 14,20,32,42 y 44 (kg)


hallar la recta de regresin.

PESO
14
20

110

Mtodos Numricos con MatLab


5
7
8

Ing.: Willam Caiza

32
42
44

Peso vs Edad
50
45
40
35
30
25
20
15
10
5
0
0

EDAD
PESO
X
Y
(x-)
2
14
-3
3
20
-2
5
32
0
7
42
2
8
44
3
Promedio:
5
30,4

(y-)
-16,4
-10,4
1,6
11,6
13,6

(x-)(y-)
49,2
20,8
0
23,2
40,8
134

(x-)^2
9
4
0
4
9
26

(
) (
)
=

(
)

5,15384615 4,63076923
y = 4,65 + 5,15x
peso = 4,65 + 5,15(aos)
INTERPRETACIN:
- Por cada ao el peso
del nio aumentar
en 5,15kg.

111

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Ejemplo 14:
Con la siguiente tabla, desarrollar:
y
e interpretar los resultados.
a) Hallar la recta de regresin y encontrar
b) Hallar las frmulas Polinmicas de Segundo Grado e interpretar los resultados.
c) Modelo Lineal (Modelo de regresin multilineal) e interpretar los resultados.
REGISTRO

SEXO

1
2
3
4
5
6
7
8

mujer
mujer
mujer
mujer
mujer
mujer
mujer
mujer

Promedio:

CRANEO
X5
55
55
54,5
57
57
54
56
58
55,8125

a)

ESTATURA
X1
158
152
168
159
158
164
156
167
PESO
Y
43
45
48
49
50
51
52
52
48,75

PIE
X2
36
34
39
36
36
36
36
37

)
(x-
-0,8125
-0,8125
-1,3125
1,1875
1,1875
-1,8125
0,1875
2,1875

BRAZO
X3
68
66
72,5
6,5
68,5
71
67
73

ESPALDA
X4
43
40
41
42
44
44,5
36
41,5

)
(y-
-5,75
-3,75
-0,75
0,25
1,25
2,25
3,25
3,25

CRANEO
X5
55
55
54,5
57
57
54
56
58

)(y-
)
(x-
4,671875
3,046875
0,984375
0,296875
1,484375
-4,078125
0,609375
7,109375
14,125

PESO
Y
43
45
48
49
50
51
52
52

)^2
(x-
0,66015625
0,66015625
1,72265625
1,41015625
1,41015625
3,28515625
0,03515625
4,78515625
13,96875

(
) (
)
=

(
)

1,01118568 7,68680089

112

Mtodos Numricos con MatLab

Ing.: Willam Caiza

60
50
40

y = 1,0112x - 7,6868
R = 0,1892

30
20
10
0
53,5

54

54,5

55

55,5

56

56,5

57

57,5

58

58,5

INTERPRETACIN
Por cada centmetro que se aumente en el dimetro del crneo el peso aumenta en
1,011 kg
ESTATURA PESO
X1
Y
X*Y
X*X
158
43
6794
24964
152
45
6840
23104
168
48
8064
28224
159
49
7791
25281
158
50
7900
24964
164
51
8364
26896
156
52
8112
24336
167
52
8684
27889
Promedio:
1282
390 62549 205658
2

0 )=
(2 )+ (1)+n(
2 )+ 2 (
1)+ (
0 )=
3 (
2 )+ 3 (
1)+ 2 (
0 )= 2
4 (

X*X*X
3944312
3511808
4741632
4019679
3944312
4410944
3796416
4657463
33026566

x*x*x*x
623201296
533794816
796594176
639128961
623201296
723394816
592240896
777796321
5309352578

y(x*x)
1073452
1039680
1354752
1238769
1248200
1371696
1265472
1450228
10042249

Reemplazamos los valores obtenidos en las ecuaciones:


2 )+)+1282(
1)+8(
0 )=390
205658(
2 )+)+205658(
1)+1282(
0 )=62549
33026566(
2 )+33026566(
1)+205658(
0 )=10042249
5309352578(

113

Mtodos Numricos con MatLab

Ing.: Willam Caiza

60
50
40

y = -0,0253x2 + 8,3554x - 640,52


R = 0,2026

30
20
10
0
150

155

160

165

170

INTERPRETACIN
Manteniendo constante los parmetros por cada centmetro de aumento de su
estatura su peso aumenta en 8,35kg

c)
ESTATURA
X1
158
152
168
159
158
164
156
167

PIE
X2
36
34
39
36
36
36
36
37

BRAZO
X3
68
66
72,5
68,5
68,5
71
67
73

PESO
Y
43
45
48
49
50
51
52
52

0 +
1 X1 +
2 X2 +
3 X3
=
0 +
1*Estatura+
2 *Long_Pie+
3 *Long_Brazo
Peso=
MATRIX X
1
1
1
1
1
1
1
1

158
152
168
159
158
164
156
167

36
34
39
36
36
36
36
37

68
66
72,5
68,5
68,5
71
67
73

MATRIX X
TRANSPUESTA

114

Mtodos Numricos con MatLab


1
158
36
68

1
152
34
66

Ing.: Willam Caiza

1
168
39
72,5

1
159
36
68,5

1
158
36
68,5

1
164
36
71

1
156
36
67

1
167
37
73

(MATRIX X TRANSPUESTA) * (MATRIZ X)


8
1282
290
554,5

1282
205658
46519
88957,5

290
46519
10526
20120,5

554,5
88957,5
20120,5
38479,75

INVERSA DE (MATRIX X TRANSPUESTA) * (MATRIZ X)


133,320266 3,24411952 1,19933602 4,95147277
3,24411952 0,50985378 0,38970121 0,92816275
1,19933602 0,38970121 0,50165996 0,62131808
4,95147277 0,92816275 0,62131808 1,7495232

(MATRIX X TRANSPUESTA) * (Y)


390
62549
14146
27056,5
CALCULO DE LOS COEFICIENTES
13,802218
0,08900191
0,50554496
0,56283111

INTERPRETACIN
PARA LA
ESTATURA
Manteniendo constante todos los dems parmetros
por cada centmetro en aumento de la estatura su
peso aumenta en 0,089kg

115

Mtodos Numricos con MatLab

Ing.: Willam Caiza

PARA LONG_PIE
Manteniendo constante todos los dems parmetros
por cada centmetro en aumento de longitud del pie
su peso disminuye en 0,5KG
PARA
LONG_BRAZO
Manteniendo constante todos los dems parmetros
por cada centmetro en aumento en longitud de
brazo su peso aumenta 0,56KG

EJERCICIOS PROPUESTOS
Ajuste de curvas
1.- Ajustar los datos de la siguiente tabla:
X

5,1

8,8

a).- Hacer el grafico de la funcin


Pginas web:
http://portales.puj.edu.co/objetosdeaprendizaje/Online/OA10/capitulo3/3.6.htm
2.- Supongamos un muelle sometido a traccin, se ha cargado el muelle con diferentes
pesos (F, variable independiente o y ) y se han anotado los alargamientos (l variable
dependiente o x)
Cargas
sucesivas F(yi)
gramos

Lecturas
sucesivas (xi)
L / mm

200
400
500
700
900
1000

60
120
150
210
260
290

Pgina web:
http://ocw.unican.es/ensenanzas-tecnicas/fisica-i/practicas1/Ajuste%20por%20minimos%20cuadrados.pdf

116

Mtodos Numricos con MatLab

Ing.: Willam Caiza

3.- 15 estudiantes a los cuales se les realizo un test de inteligencia cuyas puntuaciones se
reflejan en la variable X, y a los que se haba realizado una prueba que se refleja en las
puntuaciones de la variable Y, calcular la recta de regresin de Y sobre X.
n
X
Y

1
9
5

2
12
5

3
6
1

4
9
4

5
7
2

6
9
2

7
5
1

8
9
3

9
7
3

10
3
1

11
10
4

12
6
2

13
11
5

14
4
2

15
13
5

Pgina web:
http://www.ugr.es/~jsalinas/apuntes/C5.pdf
4.- Construir una recta que aproxime los datos de la tabla siguiente y hallar la ecuacin de
dicha recta:
X
1
2
4
5
6
8
Y
1
2
2
4
5
7
5.- Ajustar una recta de mnimos cuadrados a los datos de la tabla que a continuacin se
indica, en los casos siguientes:
a).- X como variable independiente,
b).- Y como variable independiente.
Y hacer la grfica correspondiente
X
Y

1986
18

1987
20

1988
22

1989
24

1990
25

1991
26

1992
28

1993
30

1994
32

Pgina web:
http://books.google.es/books
Coeficiente de correlacin
1. Una compaa desea hacer predicciones del valor anual de sus ventas totales en
cierto pas a partir de la relacin de estas y la renta nacional. Para ello cuenta con los
siguientes datos:
x
189 190 208 227 239 252 257 274 293 308 316
y
402 404 412 425 429 436 440 447 458 469 469

2. La empresa Santos desea saber si sus ventas dependen de la publicidad que ellos
hacen a sus productos tomaran sus datos segn resultados obtenidos, ellos deciden
utilizar el mtodo de correlacin lineal simple para encontrar la relacin las
cantidades de son en millones:
publicidad
1172,2

Ventas
593,8

117

Mtodos Numricos con MatLab


1209,2
1233,1
1256,9
1301,9
1320
1350,4
1357,9
1380,8
1381,8
1402,5
1403
1406,1
1423,7

Ing.: Willam Caiza

596
598,3
600,8
603,3
607,7
608,5
611,2
592,4
585,6
589
589,4
593,5
597,6

3. La informacin estadstica obtenida de una muestra de tamao 12 sobre la relacin


existente entre la inversin realizada y el rendimiento obtenido en cientos de miles
de euros para la explotacin agrcolas es al siguiente:
Inversin (x)
11
Rendimiento(y) 2

14
3

16
5

15
6

16
5

18
33

20
7

21
10

14
6

20
10

19
5

11
6

4. El nmero de hrs. Dedicadas al estudio de una asignatura y la calificacin obtenida


en el examen correspondiente, de ocho personas es:
Horas(x)
Calificacin(y)

20
6,5

16
6

34
8,5

23
7

27
9

32
9,5

18
7,5

22
8

5. de un ncleo de poblacin, acuden los clientes, en cientos, que figuran en la tabla.


N de clientes(x)
Distancia(y)

8
15

7
19

6
25

4
23

2
34

1
40

6. En una muestra de 1500 individuos se recogen datos sobre dos medidas


antropomtricas X e Y. Los resultados que se obtienen son
x = 14,

y = 100,

sx = 2,

sy = 25,

sxy = 45.

Obtener el modelo de regresin lineal que mejor aproxima Y en funcin de X.


Utilizando este modelo calcular de modo aproximado la cantidad Y esperada cuando
X = 15.
7.

De una muestra de 8 observaciones conjuntas de valores de dos variables X e Y se


obtiene la siguiente informacin:

118

Mtodos Numricos con MatLab

Ing.: Willam Caiza

.
Obtener la recta de regresin de Y sobre X. Explicar el significado de los parmetros.
Calcular el coeficiente de determinacin. Comentar el resultado e indicar el porcentaje
de variacin de Y que no est explicado por el modelo de regresin lineal.
Si el modelo es adecuado. C ul es la prediccin para un valor de x = 4?
Obtener la recta de regresin de X sobre Y.

a)
b)
c)
d)

8.

La tabla siguiente contiene la edad X y la mxima de la presin sangunea Y de un


grupo de 10 mujeres:

Edad
56
42
72
36
63
47
55
49
38
42
Presin 14.8 12.6 15.9 11.8 14.9 13.0 15.1 14.2 11.4 14.1
a) Calculad el coeficiente de correlacin lineal entre las variables y decid que indica.
b) Determinad la recta de regresin de Y sobre X, justificando la adecuacin de un

modelo lineal. Interpretar los coeficientes.


c) Valorad la bondad del modelo.
d) Haced las predicciones siguientes, slo cuando crea que tengan sentido:
d.1) Presin sangunea de una mujer de 51 aos.
d.2) Presin sangunea de una nia de 10 aos.
d.3) Presin sangunea de un hombre de 54 aos.

9. Se ha llevado a cabo un ajuste lineal a una nube de puntos formada por


observaciones de dos variables X e Y y se ha obtenido un coeficiente de
determinacin de 0.03. Discutid si las siguientes afirmaciones son ciertas y por qu:
a) El coeficiente de correlacin lineal entre X e Y valdr 0.173.
b) La covarianza entre X e Y puede ser negativa.
c) Las variables X e Y son casi independientes.
d) El coeficiente de determinacin entre X e Y valdr -0.03.
e) El coeficiente de determinacin entre X y Y valdr 0.03.

f) Solo el 3% de la variabilidad total de Y queda sin explicar en el modelo.


10. Dada la siguiente distribucin bidimensional encontrar el modelo de regresin (lineal
o parablica) que mejor se ajuste a la nube de puntos.
xi
yi

1 1 2 3 4 5 5 6
13 15 18 19 21 16 20 14

119

Mtodos Numricos con MatLab

Ing.: Willam Caiza

11. Los datos siguientes forman parte de un anuncio publicado por un joyero de
Singapur en el peridico Strauss Times el 29 de febrero de 1992. Estos datos hacen
referencia al precio (en dlares de Singapur) de anillos que llevan un diamante. El
tamao de un diamante, que se indica en quilates (1 quilate=200 mg).
tamao 0.17 0.16 0.17 0.25 0.16 0.15 0.21 0.15
precio 355 328 350 675 342 322 483 323
tamao 0.16 0.17 0.16 0.17 0.18 0.23 0.23 0.12
precio 345 352 332 353 438 595 553 223

Ajustar un modelo lineal a estos datos y decidid si el ajuste obtenido es bueno. Comprobad
si se cumplen para los residuos las suposiciones de independencia y de varianza constante.

120

Mtodos Numricos con MatLab

Ing.: Willam Caiza

CAPITULO V: INTERPOLACION
5.1 INTERPOLACIN
En numerosos fenmenos de la naturaleza observamos una cierta regularidad en la forma
de producirse, esto nos permite sacar conclusiones de la marcha de un fenmeno en
situaciones que no hemos medido directamente.
La interpolacin consiste en hallar un dato dentro de un intervalo en el que conocemos los
valores en los extremos.
En el captulo anterior se desarroll la regresin lineal, en el cual se encontraba una funcin
que ajuste a los datos, en este captulo encontraremos funciones que pasen por puntos dados
a lo cual se reconoce con el nombre de interpolacin.
Dados los puntos + 1 puntos (0 , 0 ), (1 , 1 ), . . , ( , ) el polinomio interpolador es
de grado n.
5.2 INTERPOLACIN INVERSA.
Los procesos de interpolacin pueden ser utilizados para encontrar las races de una funcin
tabular.
La siguiente ecuacin nos muestra un polinomio de orden 2.
2 () = 2 + +
Al realizar la interpolacin se debe realizar el siguiente despeje:
=
1 = 1
1 =
El resultado de la interpolacin es resultado de la siguiente expresin,
X=1
Ejemplo 1:
Dados los siguientes puntos encontrar el polinomio interpolador, de grado 2.

Nota

2
4
6

3
2
1

Antes de evaluar los puntos y obtener las ecuaciones de clculo del polinomio interpolador
se debe ordenar los valores de x en forma ascendente independiente de cualquier valor y.

121

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Desarrollo
El polinomio de grado 2, podra ser de la = + + , para el punto (2,3) se tiene la
siguiente ecuacin = + + , de idntica forma para los dems puntos.
3 = 4 + 2 +
2 = 16 + 4 +
1 = 36 + 6 +
De las ecuaciones evaluadas se obtiene la siguiente matriz.
4 2 1
= [16 4 1]
36 6 1
Al aplicar Gauss y Gauss-Jordan se calcula la matriz inversa.
Aplicando Gauss.
4
1 = [16
36

2 1
4 1
6 1

4
1 = [ 0
36

2
1
4 3
6
1

1 0 0
4 1 0] F3
0 0 1

F3-9*F1

4
1 = [0
0

2
1
4 3
12 8

1 0 0
4 1 0] F2
9 0 1

F2-(1/3)*F1

4
1 = [0
0

2
1
4 3
12 8

1 0 0
4 1 0] F3
9 0 1

F3-3*F2

4
= [0
0

1
0
0

2
1
4 3
0
1

0 0
1 0] F2
0 1

1
4
3

F2-4*F1

0 0
1 0] F2
3 1

F2+3*F3 y F1

F1-*F3

Aplicando Gauss-Jordan.
4
1 = [0
0

2 0
4 0
0 1

1
1 = [0
0

0 0
1 0
0 1

2 3 1
5 8 3 ] F1
3 3 1
0.125 0.25
1,25
2
3
3

F1+(1/2)*F2

0.125
0.75] F1
1

(1/4)*F1 y F2

(-1/4)*F2

Una vez encontrada la inversa aplicamos la formula X=1

122

Mtodos Numricos con MatLab

Ing.: Willam Caiza

3
0.125 0.25 0.125
1 = [1,25
]

[
2]
2
0.75
1
3
3
1
0
= [0.5]
4
Interpretando el resultado para el polinomio interpolador se coloca la primera letra como el
valor de mayor grado y as sucesivamente.
=
0
= 0.5
=
4

= 0.5 + 4

Ejemplo 2:
Existe otra forma de encontrar el polinomio interpolador y es mediante el uso de
determinantes, para su mayor entendimiento se procede a realizar el clculo del Ejemplo
1.
3 = 4 + 2 +
2 = 16 + 4 +
1 = 36 + 6 +
Para hallar los coeficientes a,b y c realice la resolucin del sistema de ecuaciones usando el
mtodo de Cramer.
Desarrollo
3
|2
= 1
4
|16
36

2 1
4 1|
6 1 = (12 + 12 + 2) (4 + 18 + 4) = 26 26 = 0
2 1
(16 + 96 + 72) (144 + 24 + 32) 184 200 16
4 1|
6 1

4
|16
= 36
4
|16
36

3
2
1
2
4
6

1
1|
1 = (8 + 16 + 108) (72 + 4 + 48) = 132 124 = 8 = 1
1
(16 + 96 + 72) (144 + 24 + 32) 184 200 16
2
1|
1

4
|16
= 36
4
|16
36

2
4
6
2
4
6

3
2|
1 = (16 + 288 + 144) (432 + 48 + 32) = 448 512 = 64 = 4
1
(16 + 96 + 72) (144 + 24 + 32)
184 200 16
1|
1

EL resultado es el mismo obtenido con el mtodo anterior.

123

Mtodos Numricos con MatLab

Ing.: Willam Caiza

=
0
= 0.5
=
4
= 0.5 + 4
5.3 INTERPOLACIN DE NEWTON
En ocasiones es til considerar varios polinomios aproximados 1 (), 2 (), () y,
despus, elegir el ms adecuado a las necesidades.
Los polinomios interpoladores de Newton se calculan mediante un esquema recursivo.
1 () = 0 + 1 ( 0 )
2 () = 0 + 1 ( 0 ) + 2 ( 0 )( 1 )
3 () = 0 + 1 ( 0 ) + 2 ( 0 )( 1 ) + ( 0 )( 1 )( 2 )
() = 0 + 1 ( 0 ) + 2 ( 0 )( 1 ) + 3 ( 0 )( 1 )( 2 )
+ ( 0 )( 1 )( 2 )( 3 ) +
+ ( 0 )( 1 )( 2 ) ( 1 )
() se obtiene a partir de 1 () usando la recurrencia.
() = 1 () + ( 0 )( 1 )( 2 ) ( 1 )
Se dice que () es un polinomio de Newton con centros 0 , 1 , , 1 .
Calculo mediante diferencias divididas
Donde los coeficientes 0 , 1 ,, , se puede calcular mediante diferencias divididas, es
decir:
0 = [0 ]
1 = [0 , 1 ]
2 = [0 , 1 , 2 ]
= [ , 1 , , 1 , 0 ]
Calculo de [0 ] se define de la siguiente forma:
[0 ] = 0

Calculo de [0 , 1 ] se define de la siguiente forma:


[0 , 1 ] =

[1 ] [0 ]
1 0

124

Mtodos Numricos con MatLab

Ing.: Willam Caiza

[0 , 1 ] =

(1 ) (0 ) 1 0
=
1 0
1 0

Calculo de [0 , 1 , 2 ] se define de la siguiente forma:


[0 , 1 , 2 ] =

[1 , 2 ] [0 , 1 ]
2 0

[2 ] [1 ] [1 ] [2 ]

2 1
1 0
[0 , 1 , 2 ] =
2 0
2 1 1 0

2 1 1 0
[0 , 1 , 2 ] =
2 0

Ejemplo 3:
Calcular el polinomio de Newton usando los siguientes puntos (2,3), (4,2), (6,1). Para un
polinomio de Grado 2.
Desarrollo

Paso 1: El polinomio de Newton debe estar de la siguiente forma como se ver a


continuacin.
2 () = 0 + 1 ( 0 ) + 2 ( 0 )( 1 )

Paso 2: El clculo de los coeficientes 0 , 1 , 2 . Se presenta a continuacin.


0 = [0 ] = 0
0 = 3

1 = [0 , 1 ]
1 = [0 , 1 ] =

[1 ] [0 ] (1 ) (0 ) 1 0
=
=
1 0
1 0
1 0
23

1 =
=
42

2 = [0 , 1 , 2 ]

125

Mtodos Numricos con MatLab

Ing.: Willam Caiza

[1 , 2 ] [0 , 1 ]
2 = [0 , 1 , 2 ] =
=
2 0

[2 ] [1 ] [1 ] [2 ]
2 1 1 0
2 0

2 1 1 0 2 1 2 3
1 1 0 6 4 4 2
2 = 2
=
2 0
62
2 =

Paso 3: Una vez conocidos los coeficientes procedemos a formar el polinomio de


Grado 2.
1
2 () = 3 ( 2)
2

Ejemplo 4:
Calcular el polinomio de Newton usando los siguientes puntos (3,5), (4,7), (6,2). Para un
polinomio de Grado 2.
Desarrollo

Paso 1: El polinomio de Newton debe estar de la siguiente forma como se ver a


continuacin.
2 () = 0 + 1 ( 0 ) + 2 ( 0 )( 1 )

Paso 2: El clculo de los coeficientes 0 , 1 , 2 . Se presenta a continuacin.


0 = [0 ] = 0
0 = 5

1 = [0 , 1 ]
1 = [0 , 1 ] =

[1 ] [0 ] (1 ) (0 ) 1 0
=
=
1 0
1 0
1 0
75
1 =
=
43
2 = [0 , 1 , 2 ]

[1 , 2 ] [0 , 1 ]
2 = [0 , 1 , 2 ] =
=
2 0

[2 ] [1 ] [1 ] [2 ]
2 1 1 0
2 0
126

Mtodos Numricos con MatLab

Ing.: Willam Caiza

2 1 1 0 2 7 7 5

2 1 1 0 6 4 4 3
2 =
=
2 0
63
2 =

Paso 3: Una vez conocidos los coeficientes procedemos a formar el polinomio de


Grado 2.
3
2 () = 5 + 2( 3) ( 3)( 4)
2
Programa de Interpolacin de Newton en consola.
function calcular_Callback(hObject, eventdata, handles)
% hObject
handle to calcular (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
g=get(handles.dimension,'Value');%Toma la dimension que se desee el
polinomio
t=(get(handles.tabla,'data'));%Toma los datos de la tabla
t=str2double(t);
xt=t(:,1);
fx=t(:,2);
x=xt';
d=zeros(length(fx));%El tamao de la tabla
d(:,1)=fx;
for k=2:length(x)
for j=1:length(x)+1-k
d(j,k)=(d(j+1,k-1)-d(j,k-1))/(x(j+k-1)-x(j)); %Realiza la
operacion del Polinomio de Newton
end
end
%Formacion del polinomio
for w=1:length(x)
ds=num2str(abs(d(1,w)));
%Estas condiciones que se observan sirven para colocar
%al polinomio de forma que tenga el valor positivo
if w>1
if x(w-1)<0
sg1='+';
else
sg1='-';
end
end
if d(1,w)<0
sg2='-';
else
sg2='+';
end
if w==1
acum=num2str(d(1,1));
elseif w==2
polact=['(x' sg1 num2str(abs(x(w-1))) ')'];%Toma al polinomio
para que siempre sea positivo
actual=[ds '*' polact];% y colocarlo de sea manera para
visualizarlo
acum=[acum sg2 actual];% en consola

127

Mtodos Numricos con MatLab

Ing.: Willam Caiza

else
polact = [polact '*' '(x' sg1 num2str(abs(x(w-1))) ')'];%Toma
al polinomio para que siempre sea positivo
actual = [ds '*' polact];% y colocarlo de sea manera para
visualizarlo
acum=[acum sg2 actual];% en consola
end
end
set(handles.resultado,'string',acum);
pol=inline(acum);
fplot(handles.cuadro,pol,[min(x) max(x)]);
grid on;%poner colores donde se encuentra el valor del polinomio
interpolado
zoom on;
hold on;
vx=(get(handles.valor,'string'));
vx=str2double(vx);
if vx<min(xt)
errordlg('ingrese un valor de x dentro del intervalo de valores de x
de la tabla asi sera posible visualizar el punto','Error!');
end
if vx>max(xt)
errordlg('ingrese un valor de x dentro del intervalo de valores de x
de la tabla asi sera posible visualizar el punto','Error!');
end
p=(get(handles.resultado,'string'));%Para visualizar el polinomio en
consoola
p=inline(p);
s=(feval(p,vx));%Aqui evalua los valores obtenidos del polinomio
s=num2str(s);%Para poder graficar en consola
set(handles.solucion,'string',s);%visualizacion del resultado del
polinomio
s=str2double(s);%Se combierte en string para que se visualizara en edit
text
plot(vx,s,'ko');%Para Graficar el en grafico del guide
hold off

128

Mtodos Numricos con MatLab

Ing.: Willam Caiza

5.4 INTERPOLACIN DE LAGRANGE


En la interpolacin de Lagrange implica en la construccin de un polinomio interpolador de
grado que pasa por + 1 puntos ( , ) como se puede observar de la forma

() = ()
Donde () es:

=0

() =
=0

Ahora se puede escribir el polinomio interpolador de grado n, de una funcin () en los


puntos (0 , 0 ), (1 , 1 ), , ( , ).

() = ()
=0

() = 0 0 (), 1 1 (), 2 2 () . . , ()
A continuacin se encuentra un polinomio de grado 1 y de grado 2.
Polinomio de Grado 1
Paso 1: Como es un polinomio de grado 1, los puntos a tomar en consideracin son
de 0 a 1, como se presenta a continuacin (0 , 0 ), (1 , 1 ).

() = () ,

=1

=0
1

1 () = ()
=0

129

Mtodos Numricos con MatLab

Ing.: Willam Caiza

1 () = 0 0 () + 1 1 ()

Paso 2: 1 () nuestro polinomio de grado 1.


Paso 3: Debemos obtener los valores de 0 , 1y los de 0 (), 1 (), los valores de
0 , 1 son conocidos como datos del ejercicio, los datos no conocidos son los
0 (), 1 (), que se procede a calcular de la siguiente manera.


() =

=0

0 () =
=0
0
1

1 () =
=0
1


1
=
0 0 1

0
=
1 1 0

Paso 4: Obtenidos los valores de 0 (), 1 (), se procede a formar el polinomio


interpolador es el siguiente:
1
0
1 () = 0 (
) + 1 (
)
0 1
1 0

Polinomio de Grado 2
Paso 1: Como es un polinomio de grado 1, los puntos a tomar en consideracin son
de 0 a 1, como se presenta a continuacin (0 , 0 ), (1 , 1 ), (2 , 2 ).

() = () ;

=2

=0
2

2 () = ()
=0

2 () = 0 0 () + 1 1 () + 2 2 ()

Paso 2: 2 () nuestro polinomio de grado 2.


Paso 3: Debemos obtener los valores de 0 , 1 , 2y los de 0 (), 1 (), 2 (), los
valores de 0 , 1 , 2 son conocidos como datos del ejercicio, los datos no conocidos
son los 0 (), 1 (),2 () que se procede a calcular de la siguiente manera.

() =
=0

130

Mtodos Numricos con MatLab

Ing.: Willam Caiza


2

0 () =
=0
0
2

1 () =
=0
1
2

2 () =
=0
2


1
2
=(
)(
)
0
0 1 0 2

0
2
=(
)(
)
1
1 0 1 2

0
1
=(
)(
)
2
2 0 2 1

Paso 4: Obtenidos los valores de 0 (), 1 (), se procede a formar el polinomio


interpolador es el siguiente:
1
2
0
2
0
1
2 () = 0 (
)(
) + 1 (
)(
) + 2 (
)(
)
0 1 0 2
1 0 1 2
2 0 2 1

Ejemplo 5:

Calcular el polinomio de Lagrange usando los siguientes puntos (1,-2), (-3,1). Para un
polinomio de grado 1.
Desarrollo

Paso 1: Para efectuar la resolucin del problema se utilizara las siguientes formulas.
1

1 () = () ;

=1

=0

() =
=0

1 () = 0 0 () + 1 1 ()

Paso 2: Debemos encontrar los valores de 0 (), 1 (). Donde obtenemos los
siguientes resultados.
1

() =
=0
0

( 1 )

=
0
0 1

131

Mtodos Numricos con MatLab

() =

Ing.: Willam Caiza


( 1 ) ( + 3) ( + )
=
=
0 1
1+3

() =
=0
1

() =

( 0 )

=
1
1 0

( 0 ) ( 1)
( )
=
=
1 0
3 1

Paso 3: Se debe obtener los valores de 0 , 1 , esos valores se obtiene de los puntos
que se dieron como datos.
=
=

Paso 4: Encontrados todos los valores por obtener se procede a formar el polinomio
de Lagrange
1 () = 0 0 () + 1 1 ()
1 () = (2) (

( + )
( )
) + (1) (
)

Paso 5: Efectuando una simplificacin del polinomio que de la siguiente forma.

() = ( + ) ( )

Ejemplo 6:
Calcular el polinomio de Lagrange usando los siguientes puntos (-2,1), (0,-1), (2,3). Para un
polinomio de Grado 2.
Desarrollo

Paso 1: Para efectuar la resolucin del problema se utilizara las siguientes formulas.
2

2 () = () , = 2
=0

() =
=0

2 () = 0 0 () + 1 1 () + 2 2 ()

Paso 2: Debemos encontrar los valores de 0 (), 1 (), 2 (). Donde obtenemos los
siguientes resultados.

132

Mtodos Numricos con MatLab

Ing.: Willam Caiza


2

0 () =
=0
0


1
2
=(
)(
)
0
0 1 0 2

1
2
0
2
0 () = (
)(
)=(
)(
)
0 1 0 2
2 0 2 2
() = (

0
2
( )
)(
)=
2 0 2 2

1 () =
=0
1


0
2
=(
)(
)
1
1 0 1 2

0
2
+2 2
1 () = (
)(
)=(
)(
)
1 0 1 2
0+2 02
() = (

( + )( )
+2 2
)(
)=
0+2 02

2 () =
=0
2


0
1
=(
)(
)
2
2 0 2 1

0
1
+2 0
2 () = (
)(
)=(
)(
)
2 0 2 1
2+2 20
+2 0
( + )
() = (
)(
)=
2+2 20

Paso 3: Se debe obtener los valores de 0 , 1 , 2 esos valores se obtiene de los


puntos que se dieron como datos.
=
=
=

Paso 4: Encontrados todos los valores por obtener se procede a formar el polinomio
de Lagrange
1 () = 0 0 () + 1 1 () + 2 2 ()
1 () = (1) (

( + 2)( 2)
( 2)
( + 2)
) + (1) (
) + (3) (
)
8
4
8

Paso 5: Efectuando una simplificacin del polinomio que de la siguiente forma.

() = ( ) + ( + )( ) + ( + )

133

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Programa de Interpolacin de Lagrange en consola.


% INTERPOLACION "POLINOMIO DE LAGRAGE"
clc %permite borrar el area de trabajo
clear %permite borrar las variables almacenadas
format long%permite utilizar la maxima capacidad de la maquina
fprintf('INTERPOLACION "POLINIMIO DE LAGRAGE"\n\n\n');
%fprintf me permite ingresar comentarios de manera textual que pueden
%orientar al usuario en el uso del programa
xi=input('Ingrese los puntos pertenecientes a las x: ');
yi=input('Ingrese los puntos pertenecientes a las y: ');
%input es un comando de solicitud de entrada de datos del usuario.
n=length(xi);
x=sym('x'); %esta funcion nos permite dejar la variable 'x' como simblica
% y asi poder trabajar con ella, sin tener que asignarle un valor.
for j=1:n
producto=1;
for i=1:j-1
producto=producto*(x-xi(i)); %calculo del producto 1 superior de L
end
producto2=1;
for i=j+1:n
producto2=producto2*(x-xi(i)); %calculo del producto 2 superior de L
end
producto3=1;
for i=1:j-1
producto3=producto3*(xi(j)-xi(i)); %calculo del producto 3 inferior de L
end
producto4=1;
for i=j+1:n
producto4=producto4*(xi(j)-xi(i)); %calculo del producto 4 inferior de L
end
L(j)=(producto*producto2)/(producto3*producto4); %clculos de las L para
fprintf('\n L%d:\n',j-1) %poder hallar el polinomio
disp(L(j)) %la funcin dispo nos permite visualizar variables o texto
% en el workspace
end
pn=0;
for j=1:n
pn=pn+L(j)*yi(j); %calculo del polinomio interpolante
end
fprintf('\n POLINOMIO INTERPOLANTE: \n')
%disp(pn) % esta ejecucion la podemos utilizar cuando no necesitamos
%simplicar la expresion
pn = simple(pn); %este comando nos permite simplificar toda la expresion
disp(pn)
opc=input('\nDesea aproximar un valor (si/no): ','s');
%este comando nos permite saber si el usuario quiere obtener una
%aproximacion de un punto dado, en el polinomio que se acaba de obtener
if opc=='si'
x=input('\nIngrese el punto a aproximar: ');
y=eval(pn); %evaluar el punto en el polinomio
disp('\nLa aproximacion a f(x) es:')
disp(y)
end

134

Mtodos Numricos con MatLab

Ing.: Willam Caiza

5.5 INTERPOLACIN POR SPLINES.


La definicin de spline hace referencia a una amplia clases de funciones que son utilizadas
en aplicaciones que requieren la interpolacin de datos o un suavizado de curvas.
Las funciones para la interpolacin de splines normalmente se determinan como
minimizadores de la aspereza sometida a una serie de restricciones.

5.5.1 SPLINE LINEAL.


Este es el caso ms sencillo. En l, vamos a interpolar una funcin f(x) de la que se nos dan
un nmero N de pares (x,f(x)) por los que tendr que pasar nuestra funcin polinmica P(x).
Esta serie de funciones nuestras van a ser lineales, esto es, con grado 1: de la forma P(x) = ax
+ b. Que se encargan de unir cada par de coordenadas mediante una recta.
Dados los n+1 puntos:
X

..

Una funcin spline de grado 1 que interpole los datos es simplemente unir cada uno de los
puntos (Par coordenados) mediante segmentos de recta, como se ilustra en las siguientes
figuras:

135

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Fig 1. Spline de grado 1 con seis puntos.


Claramente esta funcin cumple con las condiciones de la spline de grado 1. As, se tiene
que para este caso:

0 () = 0 + 0 (0 , 1 )
1 () = 1 + 1 (1 , 2 )
() = {
}
..
1 () = 1 + 1 (1 , 1 )
Donde:
1. (x) es un plinomio de grado menos o igual que 1.
2. S(x) tiene derivada continua de orden k-1=0.
3. S( )= , para j=0,1,2,,n
Por lo tanto, el spline de grado 1 queda definido como:

0 + [1 , 2 ]( 0 ) [0 , 1 ]
1 + [2 , 1 ]( 1 ) [1 , 2 ]
() = {
}
.
1 + [ , 1 ]( 1 ) [1 , ]

Ejemplo 7:

Interpolar con splines: () = en los puntos en los que x vale {1, 2, 4}


f(1) = 1
f(2) = 0.5
f(4) = 0.25
Desarrollo

El primer segmento 1 () = + deber unir los primeros dos puntos de coordenadas


(1,1) y (2,0.5). Surge un sistema lineal de dos ecuaciones en dos incgnitas:

136

Mtodos Numricos con MatLab

Ing.: Willam Caiza

(1) 1 = +
(2) 0.5 = 2 +
De (1) se obtiene:
= 1 (3)
Reemplazando (3) en (2) se obtiene:
0.5 = 2(1 ) +
Luego
= 1.5
Reemplazando el valor de (b) en (1), se obtiene:
= 0.5
Por lo tanto, se concluye que: 1 () = 0,5 + 1,5 El segundo segmento 2 () =
+ deber unir el segundo punto (2,0.5) con el tercer punto (4,0.25). Anlogamente a lo
hecho para 1 (), en el caso de 2 () se obtiene:
(1) 0.5 = 2 +
(2) 0.25 = 4 +
= 0.125,

= 0.7

Luego 2 () = - 0.125x + 0.75

5.5.2 SPLINE CUADRTICO


Los polinomios P(x) a travs de los que construimos el Spline tienen grado 2. Esto quiere
decir, que va a tener la forma P(x) = ax + bx + c

Que las partes de la funcin a trozos P(x) pasen por ese punto. Es decir, que las dos
Pn(x) que rodean al f(x) que queremos aproximar, sean igual a f(x) en cada uno de
estos puntos.
Que la derivada en un punto siempre coincida para ambos "lados" de la funcin
definida a trozos que pasa por tal punto comn.
Esto sin embargo no es suficiente, y necesitamos una condicin ms. Por qu?
Tenemos 3 incgnitas por cada P(x). En un caso sencillo con f(x) definida en tres
puntos y dos ecuaciones P(x) para aproximarla, vamos a tener seis incgnitas en
total. Para resolver esto necesitaramos seis ecuaciones, pero vamos a tener tan slo

137

Mtodos Numricos con MatLab

Ing.: Willam Caiza

cinco: cuatro que igualan el P(x) con el valor de f(x) en ese punto (dos por cada
intervalo), y la quinta al igualar la derivada en el punto comn a las dos P(x).
Se necesita una sexta ecuacin, de dnde se extrae? Esto suele hacerse con el valor de la
derivada en algn punto, al que se fuerza uno de los P(x).

Con la 2da derivada se puede encontrar el punto de inflexin.

Con la 1ra deriva se puede encontrar los puntos crticos.


X

10

5
8; 4

2; 4

10; 3

Series1

4; 1

0
0

10

Al ser Cuadrtica de la forma:

2 + + = 0

La primera derivada seria:

2 + = 0

Y la segunda derivada seria:

2a=0

15

Pasos para la determinacin del spline cuadrtico:


1 Se forma por los puntos externos.
4 = 41 + 21 + 1
3 = 1003 + 103 + 3
2 Se forma por los puntos internos.
1 = 161 + 41 + 1
1 = 162 + 42 + 2
4 = 642 + 82 + 2
4 = 643 + 83 + 3
3 Derivadas internas.

138

Mtodos Numricos con MatLab

Ing.: Willam Caiza

81 + 1 = 82 + 2
81 + 1 82 2 = 0
162 + 2 = 163 + 3
162 + 2 163 3 = 0
4 Y por ltimo la segunda derivada con los extremos.
23 = 0
Ax = b
= 1
El ejercicio pasamos a resolverlo en Excel, para encontrar los puntos de unin.
a1
4
0
16
0
0
0
8
0
0

b1
2
0
4
0
0
0
1
0
0

c1
1
0
1
0
0
0
0
0
0

a2
0
0
0
16
64
0
-8
16
0

b2
0
0
0
4
8
0
-1
1
0

c2
0
0
0
1
1
0
0
0
0

a3
0
100
0
0
0
64
0
-16
1

b3
0
10
0
0
0
8
0
-1
0

c3
0
1
0
0
0
1
0
0
0

B
4
3
1
1
4
4
0
0
0

En el anterior cuadro estn las ecuaciones, del punto 1,2 y 3 sin las constantes y B seria
nuestra (Y).

0,250

-0,250

-0,250

-0,250

0,250

0,250

-2,000

1,500

2,000

1,500

-1,500

-1,500

4,000

-2,000

-3,000

-2,000

2,000

2,000

0,000

0,125

0,000

0,063

-0,063

-0,125

0,000

-1,500

0,000

-1,000

1,000

1,500

0,000

4,000

0,000

4,000

-3,000

-4,000

0,000

0,000

0,000

0,000

0,000

0,000

0,000

0,500

0,000

0,000

0,000

-0,500

0,000
-4,000
0,000
0,000
0,000
5,000
Estos datos es la matriz inversa de las ecuaciones de los puntos (Primer cuadro)
1,75
-12
21

139

Mtodos Numricos con MatLab

Ing.: Willam Caiza


-0,3125
4,5
-12
-2,6645E17
-0,5
8

Estos son los datos de la multiplicacin entre la Matriz inversa y nuestra (B).

x
2,000
2,100
2,200
2,300
2,400
2,500
2,600
2,700
2,800
2,900
3,000
3,100
3,200
3,300
3,400
3,500
3,600
3,700
3,800
3,900
4,000

y
4,000
3,518
3,070
2,658
2,280
1,938
1,630
1,358
1,120
0,918
0,750
0,618
0,520
0,458
0,430
0,438
0,480
0,558
0,670
0,818
1,000

x1
4,000
4,100
4,200
4,300
4,400
4,500
4,600
4,700
4,800
4,900
5,000
5,100
5,200
5,300
5,400
5,500
5,600
5,700
5,800
5,900
6,000

y1
1,000
1,197
1,388
1,572
1,750
1,922
2,088
2,247
2,400
2,547
2,688
2,822
2,950
3,072
3,188
3,297
3,400
3,497
3,588
3,672
3,750

x2
8,000
8,100
8,200
8,300
8,400
8,500
8,600
8,700
8,800
8,900
9,000
9,100
9,200
9,300
9,400
9,500
9,600
9,700
9,800
9,900
10,000

y2
4,000
3,950
3,900
3,850
3,800
3,750
3,700
3,650
3,600
3,550
3,500
3,450
3,400
3,350
3,300
3,250
3,200
3,150
3,100
3,050
3,000

Esta tabla representa la ecuacin: 2 + + = 0, con la cual ya representa la unin del


par ordenado de los puntos y se forma la siguiente grfica:

140

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Spline Cuadratico
4,5
4
3,5
3
2,5
2
1,5
1
0,5
0
0

10

12

5.5.3 SPLINE CUBICO


Cada polinomio P(x) a travs del que construimos los Splines en [m, n] tiene grado 3. Esto
quiere decir, que va a tener la forma P(x) = ax + bx + cx + d
En este caso vamos a tener cuatro variables por cada intervalo (a, b, c, d), y una nueva
condicin para cada punto comn a dos intervalos, respecto a la derivada segunda:

Como puede deducirse al compararlo con el caso de splines cuadrticos, ahora no


nos va a faltar una sino dos ecuaciones (condiciones) para el nmero de incgnitas
que tenemos.

Considere : [, ] y un conjunto de nodos


= 0 < 1 < < =
Un spline cubico para f es una funcin S: [a, b] tal que:
1)
2)
3)
4)
5)

|[ , +1 ]= es un polinomio cbico en [ , +1 ]
( ) = ( ) para j= 0,1,,n
+1 (+1 ) = (+1 ) para = 0,1, , 2
(+1 ) = (+1 ) para = 0,1, , 2
+1
(+1 ) = (+1 ) para = 0,1, , 2
+1

Pasos para la determinacin del spline cubico:


1 Se forma por los puntos externos.
4 = 41 + 21 + 1
3 = 1003 + 103 + 3
2 Se forma por los puntos internos.

141

Mtodos Numricos con MatLab

Ing.: Willam Caiza

1 = 161 + 41 + 1
1 = 162 + 42 + 2
4 = 642 + 82 + 2
4 = 643 + 83 + 3
3 Derivadas internas.
81 + 1 = 82 + 2
81 + 1 82 2 = 0
162 + 2 = 163 + 3
162 + 2 163 3 = 0
4 Y por ltimo la segunda derivada con los extremos.
23 = 0
Ax = b
= 1
Coordenadas:
x
2
4
8
10
4,5

y
4
1
4
3

8; 4

2; 4

4
3,5

10; 3

3
2,5
Series1

2
1,5
1

4; 1

0,5
0
0

10

12

Grafica de los puntos coordenados, sin la unin de las coordenadas.


Al ser Cbica de la forma:

3 + 2 + + = 0

142

Mtodos Numricos con MatLab

Ing.: Willam Caiza

La primera derivada seria:

3 2 + 2 + = 0

La segunda derivada seria:

6ax + 2b=0

Y su tercera deriva seria:

6a = 0

Empezamos con las ecuaciones de los extremos y terminamos con las ecuaciones
internas

Las ecuaciones representadas con las coordenadas.


a1

b1

c1

d1

a2

b2

c2

d2

a3

1000

64

16

64

16

512

64

48

-48

-8

-1

b3

c3

d3

100

10

512

64

192

16

-192

-16

-1

24

-24

-2

48

-48

-2

12

60

0,023

-0,008

-0,023

-0,016

0,016

0,008

0,047

-0,016

-0,141

0,047

0,141

0,094

-0,094

-0,047

-0,281

0,094

-0,313

-0,063

0,313

-0,125

0,125

0,063

0,375

-0,125

2,000

0,000

-1,000

0,000

0,000

0,000

0,000

0,000

-0,016

0,016

0,016

0,016

-0,016

-0,016

-0,031

0,031

0,328

-0,234

-0,328

-0,281

0,281

0,234

0,656

-0,469

-2,188

1,063

2,188

1,375

-1,375

-1,063

-4,375

2,125

4,500

-1,500

-4,500

-1,000

2,000

1,500

9,000

-3,000

0,008

-0,023

-0,008

-0,016

0,016

0,023

0,016

-0,047

-0,234

0,703

0,234

0,469

-0,469

-0,703

-0,469

1,406

2,313

-6,438

-2,313

-4,625

4,625

6,438

4,625

-13,875

-7,500

18,500

7,500

15,000

-15,000

-17,500

-15,000

45,000

Estos datos representa la matriz inversa de las ecuaciones.


0,125

143

Mtodos Numricos con MatLab

Ing.: Willam Caiza


-0,750
-0,500
7,000
-0,109
2,063
-11,750
22,000
0,094
-2,813
27,250
-82,000

Este cuadro analiza la multiplicacin de la matriz inversa con (B).


x
2,000
2,100
2,200
2,300
2,400
2,500
2,600
2,700
2,800
2,900
3,000
3,100
3,200
3,300
3,400
3,500
3,600
3,700
3,800
3,900
4,000

y
4,000
3,800
3,601
3,403
3,208
3,016
2,827
2,643
2,464
2,291
2,125
1,966
1,816
1,675
1,543
1,422
1,312
1,214
1,129
1,057
1,000

x1
4,000
4,200
4,400
4,600
4,800
5,000
5,200
5,400
5,600
5,800
6,000
6,200
6,400
6,600
6,800
7,000
7,200
7,400
7,600
7,800
8,000

y1
1,000
0,929
0,913
0,946
1,024
1,141
1,291
1,470
1,672
1,892
2,125
2,365
2,608
2,848
3,079
3,297
3,496
3,671
3,817
3,928
4,000

x2
8,000
8,200
8,400
8,600
8,800
9,000
9,200
9,400
9,600
9,800
10,000

y2
4,000
4,028
4,016
3,968
3,888
3,781
3,652
3,505
3,344
3,174
3,000

Esta tabla representa la ecuacin: 3 + 2 + + = 0, con la cual ya representa la


unin del par ordenado de los puntos y se forma la siguiente grfica:

144

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Spline Cubico
4,5
4
3,5
3
2,5
2
1,5
1
0,5
0
0

10

12

CAPTULO VI: DERIVACIN


NUMRICA

145

Mtodos Numricos con MatLab

Ing.: Willam Caiza

6.1 DIFERENCIACIN NUMRICA


En los cursos de clculo se define la derivada de en x0 como
( + ) ()
0

Una manera razonable de aproximar la derivada es


( + ) ()
(1)
()

Para el caso de una funcin lineal, () = + , la aproximacin dada por la expresin (1)
resulta exacta para cualquier valor de h distinto de cero. Pero para cualquier funcin en
general no siempre resulta exacta.
A continuacin se hace una estimacin del error asociado a la aproximacin dada por (1)
usando el teorema de Taylor con un polinomio de grado 1.
() lim

()
( )2 .
() =
+
) +
2
si x = x0 + h, x - x0 = h, y reemplazando en (2) resulta:
()

()(

( + ) = () + () +

() 2.

< <

(2)

< < +

si se despeja (x0) entonces:


( + ) () ()
() =

.
< < + (3)

2
Observe que la ecuacin (3) es ms til que la ecuacin (1), ya que tiene un trmino que
cuantifica el error y este se conoce como trmino de error.
()

( + ) ()
()
|
|

Ejemplo 1:
Si se utiliza la frmula (1) para calcular la derivada de () = () = /4 y con
h=0.01. Cul es la respuesta y cul es su grado de precisin o error?
Solucin:
() =

= , = 0.01
4

( + ) () ( 4 + 0.01) ( 4)
() =
=
= 0.70355991.

() =
() =

146

Mtodos Numricos con MatLab

Ing.: Willam Caiza

()
()
0.01
(0.01)|
=|
| = |
= 0.005
2
2
2

( |() 1)

Se puede obtener una cota ms precisa usando el hecho que < < +

< < + 0.01


4
4
De modo que | | < 0.714142376 y la cota sera
()

=|

(0.01)| <

0.0714142376

(0.01) = 0.003573712

() = ( ) = cos = 0.707106781
4
4
Observe que si () = , () =
El error real es: 0.707106781 0.703559491 = 0.003547290186.
Se puede obtener otra frmula para aproximar la derivada usando la ecuacin (2),
()
()(
( )2
() = () +
) +
2
Si = , 0 = , reemplazando el valor de x se tiene :
2

( + ) = () () +
Si se despeja () resulta:

() 2
.
2

< <

() ( ) ()
+

2
() ( )
()
() =
|
| (4)

2
A la aproximacin (1) se le llama frmula de diferencia hacia delante y a la aproximacin
dada por (4) se le conoce como frmula de diferencia hacia atrs, ambas frmulas
presentan el mismo error. Se puede obtener otra frmula para aproximar la derivada con un
error que involucre h2 usando un polinomio de grado 2 as:
() =

()
()
( )2 +
( )3 (5)
2
6
Si se reemplaza = + = en (5) resulta:
() = () + ()( ) +

() 2 () 3
( + ) = () +
+
+
. < 1 < +
2
6
()

() 3
( ) = () () +
2
. < 2 <
2
6
Si se restan las anteriores ecuaciones, se tiene:
1
(0 + ) (0 ) = 2 (0 ) + 6 3 ( (1 ) + (2 )) , 0 < 2 < 0 < 1 <
0 +
Ahora se despeja f (x0):
(0 + ) (0 ) 1 2
(0 ) =
(), 0 < < 0 +
(6)
2
6
()
(0 + ) (0 )

(0 )
=|
2 |,
0 < < 0 +
2
6
La anterior frmula para aproximar la derivada de se la conoce como diferencia centrada.
()

147

Mtodos Numricos con MatLab

Ing.: Willam Caiza

En las figuras 6.1 y 6.2 se ilustran las aproximaciones dadas por las ecuaciones (1) y (6).

Imagen 6.1 Funcin

Imagen 6.2: Funcin

6.2 ERRORES POR TRUNCAMIENTO Y REDONDEO AL APROXIMAR LA DERIVADA


Considere la ecuacin de diferencias centradas (6).
(0 + ) (0 ) 1 2
(), 0 < < 0 + (6)
2
6
La aproximacin a la derivada es ( + ) ( ), y el error en la aproximacin es
2 () El error se denomina error por truncamiento por que es provocado por el
truncamiento de la serie de Taylor. La precisin finita de la mquina produce otro error
denominado error por redondeo.
(0 ) =

148

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Este error aparece en el clculo de ( + ) ( ) en el numerador de la


aproximacin ya que si al evaluar ( + ) ( ) se encuentra que ( +
) ( )) son los errores del redondeo, entonces los valores calculados en la mquina

( + ) (
) se relacionan con los valores verdaderos por las ecuaciones:
( + ) = ( + ) + ( + ),
( + ) = ( ) + ( )

( + ) ( )
( + ) (
) ( + ) ( )
=
+
2
2
2
Luego el error total en la aproximacin es:

()

( + ) ( ) ( + ) ( ) 2
=
+

2
2
6
Error de redondeo

error por

truncamiento
Como se puede apreciar, tiene una parte debida al error del redondeo y otra al error de
truncamiento. Si se supone que los errores de redondeo e(x0 h) estn acotados por algn
nmero > 0 y la tercera derivada de est acotada por M > 0, entonces:
( + ) ( )
2
2
2
|
|
= | ()|
2
2
6
6
Por tanto
( + ) ( )
2
()
|

| +
2
6
Si la cota para el error se denota con e (h), entonces:
2
() = +
26

Si se quisiera reducir el error de truncamiento 6 se escogera un valor de h pequeo,

pero al mismo tiempo un h pequeo hace que el error por redondeo sea grande.
Como los valores de se dan normalmente con t cifras decimales se puede suponer que el
error de redondeo est acotado por = 0.5 10 .
En la prctica no es posible calcular un valor ptimo h ya que slo se conocen algunos
valores de y no se conoce la tercera derivada. Lo que se debe tener presente es que con la
reduccin de h no siempre se mejora la aproximacin.

6.3 INTEGRACIN NUMRICA


La deduccin de las frmulas de cuadraturas puede hacerse a partir de la interpolacin
polinomial.
Luego aproximamos la integral de f(x) por la integral del polinomio de grado n la formula
resultante se llama Frmula de Cuadratura de Newton-Cotes.
Sea la particin de [a,b], definido x=a<x1<x2<....<xn, igualmente espaciados
Si el primer nodo 0 = y el ltimo nodo = , entonces se dice que la frmula de
Newton-Cotes es cerrada.
Frmulas de Cuadratura de Newton-Cotes

149

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Imagen 6.3 Integracin Numrica

1
() 2 (0 + 1 ) REGLA DEL TRAPECIO

i.

2
() 3 (0 + 41 + 2 ) REGLA DE SIMPSON

ii.

iii.

3
()

iv.

4
() 45 (70 + 321 + 122 + 323 + 74 ) REGLA DE BOOLE

(0 + 31 + 32 + 3 ) REGLA DE DE SIMPSON

6.4 REGLA DEL TRAPECIO

Figura 6.4: Regla del trapecio

La frmula del Trapecio es


b
h
f(x)dx = (f(x0 ) + f(x1 ) );
2
a

Regla del trapecio

Sean las particiones de [a, b] definida como una sucesin de trminos


{0 , 1 , 2 . . } y 0 = y = ,
Estas particiones son equidistantes es decir = 0 + k=0,1,2n
h=

ba
n

; donde n es el numero de intervalos Que tiene [a, b]

Ejemplo 2:
Dado a=3 y b=7 encontrar las particiones del intervalo [a,b] si n=5

150

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Desarrollo

73 4
=
=

5
5

Entonces
4
0 + 0 = 3 + 0. = 3
5
4 19
1 + 1 = 3 + =
5
5
4 23
=
5
5
4 27
3 + 3 = 3 + 3. =
5
5
4 31
4 + 4 = 3 + 4. =
5
5
4
5 + 5 = 3 + 5. = 7
5
2 + 2 = 3 + 2.

Es decir {3,

19 23 27 31
5

, 7}

{0 , 1 , 2 , 3 , 4 , 5 }

Propiedades de particin equidistante


1. = ( )
2. = ( ), [0 , ]
3. = 0 +
Ejemplo 3:

GRAFICO CUADERNO
n=5
= +

=
=
=

Calculando las particiones tenemos:


1.1 = 0 + 1 = 2 + 1 = 3
2 = 0 + 2 = 2 + 2(1) = 4
3 = 0 + 3 = 2 + 3(1) = 5
4 = 0 + 4 = 2 + 4(1) = 6
5 = 0 + 5 = 2 + 5(1) = 7

1ra Verificacin 1.
1 3 = (1 3)(1)
3 - 5 = (-2)(1)
2=2
151

Mtodos Numricos con MatLab

Ing.: Willam Caiza

2da Verificacin de
5 2 = (5 2)(1)
74=3
3=3
2da Verificacin de 2. 1ra Verificacin de 2.
X X3 = ( 3), [0,5]
si t = 0
x5=1(03)
x = -3 + 5
x=2
X X0 = ( 3), [0,5]
si t = 5
x2=1(50)
x=5+2
x=7
3ra Verificacin de 2.
X X4 = ( 4), [0,5]
si t = 2
x6=1(24)
x=-2+6
x=4
Ejemplo 4:
b

h
f(x)dx = (f(a) + f(b))
2
a


:
b

f(x)dx = Pn (x)dx
a

Para el caso de la Regla del Trapecio: n = 1


b

f(x)dx Pn (x)dx = P1 (x)dx; n = 1 mtodo de trapecio


a

b 1

Li (x)f(xi )dx = (L0 (x)f(x0 ) + L1 (x)f(x1 ))dx


a i=0

= f(x0 ) L0 (x)dx + f(x1 ) + L1 (x)dx


a
b xx1

= f(x0 ) a

x0 x1

b xx0

dx + f(x1 ) a

x1 x0

dx (1)

152

Mtodos Numricos con MatLab

Ing.: Willam Caiza

153

Mtodos Numricos con MatLab

function pushbutton1_Callback(hObject,
eventdata, handles)
funcion=char(inputdlg('ingrese la funcion'));
n=str2double(inputdlg('cuantos numeros desea
ingresar'));
f=inline(funcion);
for i=1:n
etiqueta=['x( ' num2str(i) ')='];
x(i)=str2double(inputdlg(etiqueta));
end
%%codigo para uniciar un contador y asignar
una sentencia de salida de un mensaje al iniciar
el programa
for i=1:n
y(i)=f(x(i));
end %%Inicio de una sentencia para almacenar
los valores ingresados en una funcin
opcion=str2double(inputdlg('elija la opcion 1 o
2'));%%codigo de salida para mensaje de elegir
una opcion
switch opcion
case 1
h=x(2)-x(1);
integral=(f(x(2))-f(x(1)))*(h/2);
ex=x(1):0.1:x(2);
[fx cx]=size(ex) %%comando para crear
dos opciones para el usuario y realizar el
trapecio..
for i=1:cx
ff(i)=f(ex(i));
end
plot([x(1)-5 x(2)+5],[0 0]);
hold on;
plot([0 0],[max(ff)+3 min(ff)-3]);
area(ex,ff);
set(handles.text2,'String',integral);%%mostrar
las sentencias almacenadas en el codigo anterior.
case 2
s=0;
[fx cx]=size(ex);
for i=1:cx
ff(i)=f(ex(i));
end %%para el caso 2 iniciamos una
variable en 0 para realizer un contador, y con el
siguiente cdigo obtenemos la dimensin de la
funcin ingresada,

Ing.: Willam Caiza

case 2
s=0;
for i=2:n-1
s=s+2*f(x(i));
end
h=x(2)-x(1);
integral=(h/2)*(f(x(1))+s+f(x(n)));
set(handles.text2,'string',integral);
xx=x(1):0.1:x(n);
[fxx cxx]=size(xx);
for i=1:cxx
yy(i)=f(xx(i));
end
plot([x(1)-5 x(2)+5],[0 0]);
hold on;
plot([0 0],[max(ff)+3 min(ff)-3]);
area(xx,yy); %%mediante las lineas de
este codigo nosostros sacaremos el area es
decir la integral de la funcin ingresada
y tambin los puntos mximos y minimos.
end
for i=1:n
etiqueta=['x(' num2str(i) ')='];
x(i)=str2double(inputdlg(etiqueta));
end%%con este codigo solo aadimos una
etiqueta para mostrar los resultados
for i=1:n
y(i)=f(x(i));
end
h=x(2)-x(1);
integral=(f(x(2))-f(x(1)))*(h/2);Las lineas de
este codigo son para calcular el metodo de
trapecio por medio de la formula.
ex=x(1):0.1:x(2);
[fx cx]=size(ex);
for i=1:cx
ff(i)=f(ex(i));
end
plot([x(1)-5 x(2)+5],[0 0]);
hold on;
plot([0 0],[max(ff)+3 min(ff)-3]);
area(ex,ff);
%%con esta lnea de cdigo nos rive para
graficar los puintos y obtener la grafica de la
funcin

154

Mtodos Numricos con MatLab

Ing.: Willam Caiza

plot([x(1)-5 x(2)+5],[0 0]);%%el codigo


plot sirve para realizer la grafica de los puntos
correspondientes
hold on;
plot([0 0],[max(ff)+3 min(ff)-3]);
area(ex,ff);
set(handles.text2,'String',integral);
Algoritmo del Trapecio

Figura 6.5: Ejecucin del programa

6.1.2 Regla del Trapecio Mltiple

Imageb 6.6: regla del trapecio Mltiple

() = = 1 () + 1 () + 1 () + 1 ()

= ((0 ) + (1 )) + ((1 ) + (2 )) + ((2 ) + (3 )) + ((3 ) + (4 ))


2
2
2
2

= ((0 ) + 2(1 )) + 2(2 ) + 2(3 ) + (4 )


2
:

155

Mtodos Numricos con MatLab

Ing.: Willam Caiza

() = (( ) + ( ) + ( ))

Dado , calcular:
Utilizar la Regla del Trapecio
Utilizar la Regla del Trapecio 3 veces
Utilizar la Regla del Trapecio 5 veces

RESOLUCION
=
7

73
=4
1

4
() = ((3) + (7)) = (9 + 49) = 116
2
2
3

=
4 13
=
3
3
8 17
2 = 3 + =
3
3
3 = 3 + 4 = 7

73 4
=
3
3

1 = 3 +

() =
3

13

13
17

17
((3) + ( )) + ( ( ) + ( )) + ( ( ) + (7))
2
3
2
3
3
2
3

13
17
((3) + 2 ( ) + 2 ( ) + (7))
2
3
3

169
289
= (9 + 2 (
) + 2(
) + 49) = 106,518
2
9
9
=

=
4
19
1 = 3 + (1) =
5
5
4
23
2 = 3 + (2) =
5
5
4
27
3 = 3 + (3) =
5
5
4
31
4 = 3 + (4) =
5
5
4
5 = 3 + (5) = 7
5

73 4
=
5
5

156

Mtodos Numricos con MatLab


7

() =
3

Ing.: Willam Caiza

19

19
23

23
27
((3) + ( )) + ( ( ) + ( )) + ( ( ) + ( ))
2
5
2
5
5
2
5
5

27
31

31
+ ( ( ) + ( )) + ( ( ) + (7))
2
5
5
2
5

19
23
27
31
((3) + 2 ( ) + 2 ( ) + 2 ( ) + 2 ( ) + (7))
2
5
5
5
5
2
361
529
729
961
= (9 + 2 (
) + 2(
) + 2(
) + 2(
) + 49) = 105,76
5
25
25
25
25
=

Algoritmo Trapecio Multiple


function pushbutton1_Callback(hObject,
eventdata, handles)
funcion=char(inputdlg('ingrese la funcion'));
f=inline(funcion);
n=str2double(inputdlg('ingrese numero de
particiones'));
for i=1:n
etiqueta=['x(' num2str(i) ')='];
x(i)=str2double(inputdlg(etiqueta));
end
for i=1:n
y(i)=f(x(i));
end
% constante
k=(x(n)-x(1))/(2*(n-1));
%sumatorio del trapecio interno
s=0;
for i=1:n-1
s=s+2*f(x(i));
end
integral=k*(f(x(1))+s+f(x(n)));
set(handles.text2,'String', integral);
set(handles.text5,'String', funcion);
set(handles.text7,'String', x);

%eje x
plot([x(1)-2 x(n)+2],[0 0]);
hold on;
%eje y
plot([0 0],[min(y)-2 max(y)+2]);
%area de integracin
xx=x(1):0.1:x(n);
[fxx cxx]=size(xx);
for i=1:cxx
yy(i)=f(xx(i));
end
plot(xx,yy,'r');
area(xx,yy);
%para graficar los puntos x0...xn
for i=1:n
cadena(i)=num2str(x(i));
end
for i=1:n
text(x(i),0,cadena(i));
end
legend('Trapecio Mltiple');

157

Mtodos Numricos con MatLab

Ing.: Willam Caiza

6.5 REGLA DE SIMPSON 1/3

Imagen 6,8

h
(f(x0 ) + 4f(x1 ) + f(x2 ))
3

f(x)dx
a

= f(x)dx = P2 (x)dx, n = 2
a
2

= ()( ) = (0 ()(0 ) + 1 ()(1 ) + 2 ()(2 ))


=0

= (0 ) () + (1 ) 1 () + (2 ) 2 ()

=
=0

f(x0 )

0 () =

1 2

0 1 0 2

1 () =

0 2

1 0 1 2

2 () =

0 1

2 0 2 1

2
h(t 1) h(t 2)
h(t 0)h(t 2)
hdt + f1
hdt +
h 2h
h h
0
2

+f(x2 )

h(t) h(t 1)
hdt
2h h

158

Mtodos Numricos con MatLab

Ing.: Willam Caiza

2
f(x0 ) h 2
f(x20 ) h 2
(t 1)(t 2)dt f(x1 ) h (t)(t 2)dt +
(t)(t 1)dt
2 0
2
0
0

() = [()] + () + 2 ( )
2
=1

=
; = + , ( = 0,1,2,3, , )

(0 )

2
( 1) ( 2)
( 0)( 2)
+ 1
+
2

0
2

+(2 )

() ( 1)

2
(0 ) 2
( ) 2
( 1)( 2) (1 ) ()( 2) + 20 ()( 1)
2
2
0
0
0
2
(0 ) 2 2
(2 ) 2 2
2
(
(

3 + 2) (1 )
2) +
( )
2
2
0
0
0

(0 ) 3 3 2
( ) 3 2 2
3 2 2 2
2
(
+ 2| ) (1 ) (
| )+ 2 ( | )
0
2
3
2
3
2 0
2
3
2 0
(0 ) 2
( ) 2
4
( ) (1 ) ( ) + 2 ( )
2
3
3
2
3

((0 ) + 4(1 ) + (2 ) )
Algoritmo de Simpson
3

R. Simpson 1/3

function calcular_Callback(hObject, eventdata,


handles)
%CODIGO DEL PROGRAMA(CALCULO DE
AREA)
f=inline(get(handles.fx,'string'));
a=str2num(get(handles.a,'string'));
b=str2num(get(handles.b,'string'));
n=str2double(get(handles.n,'string'));
h=(b-a)/n;
s=f(a)+f(b);%%con estos codigos solo convertimos
las datos ingresamos a num, para poder utilizarlos
en los otros cdigos.
for i=2:n
x(i)=a+(i-1)*h;
s=s+2*f(x(i)); %%iniciamos un contador con la
sentencia for.
end
I=s*(h/2);
set(handles.area,'string',I)%%mostramos el
resultado en la pantalla del rea..

%CODIGO PARA GRAFICA


for i=1:n+1
x(i)=a+(i-1)*h;
y(i)=f(x(i)); %%iniciamos el contador para
almacenar los datos en una funcin
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
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)])
ylabel('F(X)');
grid 'on'
set(handles.axes1,'xminorgrid','on');
set(handles.axes1,'yminorgrid','on');

159

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Imagen6.9 Botones de la mscara de interface

Imagen 6.6: Ejecucin del programa

I=

[
+ 4
( )

n1
i=1

n2

( ) + 2

i=1

( ) + ( ) ]

Regla simpson 3 multipl

160

Mtodos Numricos con MatLab

Ing.: Willam Caiza

6.6 REGLA SIMPSON 3/8

3
() = 8 (0 + 31 + 32 + 3 ) 8
0

Demostracin:
3

() = 3 =
0

=0

3 () = 0 0 () + 1 1 () + 2 2 () + 3 3 ()
Donde:
0 2 3
0 =

0 1 0 2 0 3
1 =

0 2 3

1 0 1 2 1 3

2 =

0 1 3

2 0 2 1 2 3

0 1 2

3 0 3 1 3 2
3
( 1) ( 2) ( 3)
0 =
2 3
0
3
() ( 2) ( 3)
+ 1
2
0
3
() ( 1) ( 3)
+ 2
2
0
3
( 1) ( 2) 0 3
+ 3

( 1)( 2)( 3)
3 2
6 0
0
3
3
+ 1 ( 2)( 3) 2 ( 1)( 3)
2 0
2 0

3

+ 3 ( 1)( 2)
6 0
0 3 2

( 3 3 + 2)( 3)
6 0
1 3 3
3 3 3
2
+
( 4 + 3) +
3 + 2
2 0
6 0
3
3 ()3 3 2 + 2
6 0
( ) 3
( ) 4 5 3
3
0 ( 3 6 2 + 11 6) + 1 [
+ 3 2 | ]
0
6
2
4
3
0
( ) 4 4 3 3 2 3
( ) 4
3
+ 2 [ +
+
| ] + 3 [ 3 + 2 | ]
0
2
4
3
2 0
6
4
3 =

161

Mtodos Numricos con MatLab

Ing.: Willam Caiza

3
9
9
3
0 + 1 + 2 + 3
8
8
8
8
3
8

[0 + 31 + 32 + 3 ]

R. de 3/8 Simpson

Ejemplo 6:

Dada ()
a) Integrar mediante el trapecio
b) Integrar 5 veces mediante el trapecio
c) Integrar 5 veces Simpson 1/3
RESOLUCION:
a) =

85
1

=3
8

3
() = ((5) + (8)) = ((5) + (8)) = 0.0456
2
2
5

Valor real
8

() = cos()85 = 0.429
5

Error
0.429 0.0456
= |
| = 0.89 100% = 89%
0.429

b) =

85
5

=5

28

28
31
() = ((5) + ( )) + ( ( ) + ( ))
2
5
2
5
5
5

31
34

34
37
+ ( ( ) + ( )) + ( ( ) + ( ))
2
5
5
2
5
5

37
+ ( ( ) + (8))
2
5
=

3
28
31
34
37
((5) + 2 ( ) + 2 ( ) + 2 ( ) + 2 ( )) + (8) = 0.4162
10
5
5
5
5

162

Mtodos Numricos con MatLab

Ing.: Willam Caiza

0.429 0.4162
= |
| = 0.03 100% = 3%
0.429

c) =

85
4

=4
8

() =
5

23
26
((5) + 4 ( ) + ( ))
3
4
4

26
29
+ ( ( ) + 4 ( ) + (8))
3
4
4

1
23
26
29
((5) + 4 ( ) + 2 ( ) + 4 ( ) + (8)) = 0.42997
4
4
4
4

6.7 REGLA DE BOOLE


4

() =
0

2
(70 + 321 + 122 + 323 + 74 )
45

Demostracin:
4

() = 4 () =
0

=0

4 () = 0 0 () + 1 1 () + 2 2 () + 3 3 () + 4 4 ()
Dnde:
0 =

0 2 3 4
( 1) ( 2) ( 3) ( 4)

=
0 1 0 2 0 3 0 4
2 3 4

1 =

0 2 3 4
() ( 2) ( 3) ( 4)

=
1 0 1 2 1 3 1 4
2 3

2 =

0 1 3 4
( 1) ( 3) ( 4)

=
2 0 2 1 2 3 2 4
2 2

3 =

0 1 2 4
( 1) ( 2) ( 4)

=
3 0 3 1 3 2 3 4
3 2

163

Mtodos Numricos con MatLab

4 =

Ing.: Willam Caiza

0 1 2 3
( 1) ( 2) ( 3)

=
4 0 4 1 4 2 4 3
4 3 2

0 4
1 4
( 1)( 2)( 3)( 4)
( 2)( 3)( 4) +
24 0
6 0
2 4
4
( 1)( 3)( 4) 3 ( 1)( 2)( 4) +
4 0
6 0
4 4
( 1)( 2)( 3)
24 0
0 4 2
4
( 3 + 29( 2 7 + 12) 1 ( 3 5 2 + 6) ( 4) +
24 0
6 0
2 4 3
3 4 3
2
( 4 + 3) ( 4)
( 3 2 + 2)( 4) +
4 0
6 0
4 4 3
( 3 2 + 2)( 3)
24 0
0 4 4
1 4 4
3
2
( 10 + 35 50 + 24)
( 9 3 + 26 2 24) +
24 0
6 0
2 4 4
4
( 8 3 + 19 2 12) 3 ( 4 7 3 + 14 2 8) +
2 0
6 0
4 4 4
( 6 3 + 11 2 6) +
24 0
0 5 10 4 35 3 50 2
5 9 4 26 3 24 2 4
4
[
+

+ 24| ] 1 [
+

| ]
0
24 5
4
3
2
6 5
4
3
2 0
2 5 8 4 19 3 12 2 4
3 5 7 4 14 3 8 2 4
+
[
+

| ]
[
+

| ]
4 5
4
3
2 0
6 5
4
3
2 0
4 5 6 4 11 3 6 2 4
[
+

| ]
24 5
4
3
2 0

[ ] [ ] + [ ] [ ] + [ ]

[ + + + + ]

R. de Boole

164

Mtodos Numricos con MatLab

Ing.: Willam Caiza

6.8 INTEGRACION DE ROMBERG


Mtodo de Integracin de Romberg (extrapolacin de Richardson)

Sea = () = (),
=
El mtodo de Romberg utiliza la regla del trapecio,
= () + ()
Donde () es la integral dada por el mtodo del trapecio y () es el error de truncamiento
del mtodo del trapecio.
El mtodo combina dos aproximaciones de integracin numrica para obtener un tercer valor
aproximado ms exacto
Nivel 0

Nivel 1

Nivel 2

Nivel 3

h1

h2

h3
Supongamos
que tenemos dos aproximaciones: (1 ) , (2 ) con 1 , 2 son subintervalos
del mismo intervalo.
= (1 ) + (1 )
(1)
)
)

=
(
+
(
(2)
2
2
h4
Igualando (1) y (2)
(1 ) + (1 ) = (2 ) + (2 )
(A)
El error que se comete con la regla del trapecio con n subintervalos est dado por:
1
(1 ) = 12 ( )1 2 () y
1

(2 ) = 12 ( )2 2 ()
1
2
(1 ) 12 ( )1 ()
=
(2 ) 1 ( ) 2 ()
2
12
2
2
(1 ) 1
1
= 2=( )
(2 ) 2
2

(1 ) = (2 ) (1 )
2

(B)

(B) en (A)
(1 ) + (2 ) (

1 2
) = (2 ) + (2 )
2

1 2
(2 ) ( ) (2 ) = (2 ) (1 )
2
1 2
(2 ) (( ) 1) = (2 ) (1 )
2

165

Mtodos Numricos con MatLab

(2 ) =

(2 ) =

Ing.: Willam Caiza

(2 ) (1 )
1 2
( ) 1
2
(1 ) (2 )
1(

1 2
)
2

(C) en (2)
= (2 ) +

(1 ) (2 )

1 2
1( )
2

1
Para el caso de Romberg se tiene 2 = 1 ;
( = )
2
2
(1 ) (2 )
1
1
= (2 ) +
= (2 ) (1 ) + (2 )
3
3
3
4
1
)
)
= 3 (2 3 (1
(Nivel 1)
El nmero de niveles de aproximacin depende de las aproximaciones que se hicieron en el
nivel 0.
Para el nivel 2, se tiene la expresin de Romberg
16
1
= 15 15
Donde =integral ms exacta
Y =integral menos exacta}
Para el nivel 3, se tiene la expresin de Romberg
64
1
= 83 63

Aun cuando la regla del trapecio es la frmula de Newton Cotes ms sencilla de aplicar,
hemos mostrado en las secciones anteriores que carece del grado de exactitud requerido
generalmente. La integracin de Romberg es un mtodo que tiene aplicaciones muy
variadas debido a que usa la regla del trapecio para dar aproximaciones preliminares y luego
aplicar el proceso de extrapolacin, para obtener correcciones a las aproximaciones

ALGORITMO DE ROMBERG
Nivel 1
4
1
() ()
3
3
Donde,
hm : Integral ms exacta
he : Integral menos exacta
2
Integrar mediante Romberg1 ()
2

() = () |2 = (0.41615 + 0.54030) = 0.95645

a) Nivel 0
= 1, =

1
1
; =
2
2

166

Mtodos Numricos con MatLab

Ing.: Willam Caiza

1
(=1) = [(1) + (2)] = 0.87538
2
1
3
1 = [(1) + 2 ( ) + (2)] = 0.93643
(= )
4
2
2
4
1
(0.93643) (0.87538) = 0.95678
3
3
Error:
|0.95645 0.95678|
100 = 0.03%
|0.95645|
b) Nivel 0
1
1
= 1, = , =
2
4
1
(=1) = [(1) + (2)] = 0.87538
2
1
3
1 = [(1) + 2 ( ) + (2)] = 0.93643
(= )
4
2
2
1
5
3
7
1 = [(1) + 2 ( ( ) + ( ) + ( )) + (2)] = 0.95146
(= )
8
4
2
4
4
Nivel 1
4
1
() ()
3
3
4
1
(0.93643) (0.87538) = 0.95678
3
3
4
1
(0.95143) (0.93643) = 0.95647
3
3
Nivel 2
16
1
() ()
15
15
16
1
(0.95647)
(0.95678) = 0.95645
15
15
=

|0.95645 0.95645|
100 = 0%
|0.95645|

Nivel 3
64
1
() ()
63
15
6.9 CUADRATURA DE GAUSS
La Cuadratura de Gauss es el nombre que se le conoce a una clase de tcnicas para realizar
tal estrategia o tcnica. Las frmulas particulares de cuadratura de Gauss descritas se
denominan frmulas de Gauss-Legendre. Antes de describir el procedimiento, mostraremos
que las frmulas de integracin numrica, al igual que la regla del trapecio, pueden lograr

167

Mtodos Numricos con MatLab

Ing.: Willam Caiza

obtenerse usando el mtodo de coeficientes indeterminados. Este mtodo se emplear


despus para desarrollar las frmulas de Gauss-Legendre.
El mtodo de coeficientes indeterminados ofrece un tercer procedimiento que tambin
tiene utilidad para encontrar otras tcnicas de integracin, como la cuadratura de Gauss.
Para ilustrar el procedimiento, la ecuacin se expresa como
= 0 () + 1 ()
Ecuacin
donde las c = constantes. Ahora observe que la regla del trapecio deber dar resultados
exactos cuando la funcin que se va a integrar es una constante o una lnea recta. Dos
ecuaciones simples que representan esos casos son Y = 1 y Y = x. Ambas se ilustran en la
figura As, las siguientes igualdades se debern satisfacer:
()/2

0 + 1 =

()/2

()/2
+ 1

2
2 ()/2
despus de evaluar las integrales tenemos:
0

0 + 1 =
6.10 DESARROLLO DE LA FRMULA DE GAUSS-LEGENDRE DE DOS PUNTOS
As como en el caso anterior para la obtencin de la regla del trapecio, el objetivo de la
cuadratura de Gauss es determinar los coeficientes de una ecuacin de la forma
= 0 (0 ) + 1 (1 ) (1)
donde las c = los coeficientes desconocidos. Sin embargo, a diferencia de la regla del
trapecio que utiliza puntos extremos fijos a y b, los argumentos de la funcin x0 y x1 no
estn fijos en los extremos, sino que son incgnitas
De esta manera, ahora se tienen cuatro incgnitas que deben evaluarse y, en consecuencia,
se requieren cuatro condiciones para determinarlas con exactitud.
Representacin grfica de las variables desconocidas x0 y x1 para la integracin por medio
de la cuadratura de Gauss.

168

Mtodos Numricos con MatLab

Ing.: Willam Caiza

El mtodo de integracin numrica emplea intervalos desiguales o diferentes de los


primeros mtodos en los cuales los intervalos eran constantes e iguales. El mtodo de
Cuadratura Gaussiana, tambin se lo conoce como Gauss Legendre.
La primera expresin del mtodo se basa en el mtodo del trapecio o de 2 puntos.
Conocemos:

[() + ()]
=
2
=

() +
()
2
2

= 1(0 ) + 2(1 ) (1)


En la expresin 1 C1,C2,0 , 1
Suponiendo que 1 ajusta exactamente la integral mediante una constante
= 1, = , = 2 , = 3
1

1(1 ) + 2(2 ) = 1 = 2
1
1

1(1 ) + 2(2 ) = = 0
1
1

1(1 ) + 2(2 ) = 2 =
1
1

2
3

1(1 ) + 2(2 ) = 3 = 0
1

Resolviendo el sistema anterior obtenemos


1 = 2 = 1

169

Mtodos Numricos con MatLab

Ing.: Willam Caiza

1 = 2 =
= 1 (

) + 1 (

1
3

1
3

Es la expresin de Gauss-Legendre par 2 puntos.

6.11 TRASLACIN DE LA CUADRATURA DE GAUSS LEGENDRE


Basado en optimizar tambin los intervalos en los que se evala la funcin n+1 puntos,
aproximacin es exacta hasta polinomio orden n n+1 puntos y n+1 intervalos (2n+2
variables), aproximacin exacta polinomio orden 2n+1
Para aplicar la cuadratura de Gauss - Legendre en un intervalo [a;b], se debe efectuar el
cambio de variable:

De esta manera,
1

() = (

.1

+
+
).

2
2
2

Por lo tanto, la frmula de cuadratura est dada por:

+
() =
, (
, +
)
2
2
2
=1

Para la transformacin de cualquier integral en [a,b[ a una integral de [-1,1], se tiene las
siguientes transformaciones.
= 0 + 1 ;

0 =
=

+
+

2
2

, 1 =
2
2

Derivando obtenemos = 2
En general el mtodo se puede escribir

=
( )
2
=1



() ,

170

Mtodos Numricos con MatLab

Ing.: Willam Caiza

+2
+

2
2
los corresponden a una tabla, son los m ceros del m-avo polinomio de Legendre.
=

Tabla para pesos y nodos para integracin Gauss-Legendre diferentes puntos

2 puntos
3 puntos

4 puntos

Ek
-0.577350269
0.577350269
0.774596669241
0
0.774596669241
-0.861136312
-0.339981044
0.339981044
0.861136312

Wk
1
1
0.555555556
0.888888889
0.555555556
0.347854845
0.652145155
0.652145155
0.347854845

Ejemplo 7:
Resolver la integral por Gauss-Legendre con m=4

2 ; = 4

2 = 0,4674011003
0


1 = + (0,3399810436) = 1,052418651
4 4
2 =


+ (0,3399810436) = 0,5183776762
4 4

3 =
3 =


+ (0,861136116) = 1,461733041
4 4


+ (0,861136116) = 0,1080632958
4 4
ahora evaluamos la integral
(1 ) = 0,5487769211
(2 ) = 0,233412695
(3 ) = 0,232569837

171

Mtodos Numricos con MatLab

Ing.: Willam Caiza

(4 ) = 0,01182412727
entonces
=
=

[ (1 ) + 2 (2 ) + 3 (3 ) + 4 (4 )]
4 1

[(0,6521451549)(0,5487769211) + (0,6521451549)(0,233412695)
4
+ (0,3478548451)(0,232569837)
+(0,3478548451)(0,01182412727)]
= 0,4673836586

Ejemplo 8:
Calcular la siguiente integral
,

(, + + + + )

para m=2
+

= 0 + 1 (1 ) , 0 = 2 , 1 = 2
0 = 0,4; 1 = 0,4
= 0,4 + 0,4( )
= 0,4
0.8

() = ( 0,2 + 25 + 200 2 + 675 3 200 4 + 400 5 )0,4


0

1 =
2 =

3
(0,4)
1 =
+ (0,4)(0,5773502692) = 0,169059892
2 = (0,4) + (0,4)(0,5773502692) = 0,630940107
(1 ) = 0,5167405448
(2 ) = 1,505837233
(1 ) + (2 ) = 1,822577778

Ejemplo 9:

172

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Calcule por el mtodo de cuadratura de gauss la siguiente integral

Utilizando la formula de cuadratura de gauss de dos puntos tenemos


=
Entonces tenemos

+ 21
2+1 1
3
+
=
+
= +
2
2
2
2
2
2
1

+
() =
(
+
)
2
2
2

1
1
3
1
1
3 1 3
= ( + ) =
( + ) 2+2
2
2
2
2
2
2
=

1
1
1
[ ( ) + ( )]
2
3
3

1 3
1
1
3 1 +3
1
3
+
[(
+ ) 23 2 + (
+ ) 23 2 ]
2
23 2
23 2

= 7,3832
Ahora integraremos de la forma normal
2

= =
= =

Es una integral por partes


2

=
1

Evaluando los limites tenemos 7,3830

Ejemplo 10:
Evaluar la siguiente integral por medio de la cuadratura de Gauss.

= ( + )

Solucin analtica
1

= () = (
1

1
) + ( )
3
3

173

Mtodos Numricos con MatLab

Ing.: Willam Caiza


1

+
() =
(
+
1)
2
2
2

Reemplazando valores tenemos


=[2(

1 3

) + ((

) 2 1] + [2( )3 + (( )2 1]

1
4

EJERCICIOS PROPUESTOS
1.-Integre la funcin siguiente en forma tanto analtica como la regla de Simpson, con n=4 y
5. Anracialice los resultados.
5

(4x 3)3 dx
3

2.- Integre la funcin siguiente tanto en forma analtica como numrica. Emplee las reglas del
trapecio y de Simpson 1/3 para integrar numricamente la funcin. Para ambos casos, utilice
la versin de aplicacin mltiple, con n=4. Calcule los errores relativos porcentuales para los
resultados numricos.
3

x 2 ex dx
0

3.- Integre la funcin siguiente tanto analtica como numricamente. Para las
evaluaciones numricas use a) una sola aplicacin de la regla del trapecio, b) la
regla de Simpson 1/3, c) la regla de Simpson 3/8, d) la regla de Boole, e) el mtodo
del punto medio, f) la frmula de integracin abierta de 3 segmentos y 2 puntos, y g)
la frmula de integracin abierta de 4 segmentos y 3 puntos. Calcule los errores
relativos porcentuales de los resultados numricos.
1

152x dx
0

4.- Integre la funcin que sigue tanto en forma analtica como numrica. Para las
evaluaciones numricas utilice, a) una sola aplicacin de la regla del trapecio; b) la
regla de Simpson 1/3; c) la regla de Simpson 3/8; d) aplicacin mltiple de las reglas
de Simpson, con n=5; e) la regla de Boole; f) el mtodo del punto medio; g) la
frmula de integracin abierta de 3 segmentos y 2 puntos, y h) la frmula de
integracin abierta de 4 segmentos y 3 puntos.
3

(5 + 3cosx) dx
0

174

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Calcule los errores relativos porcentuales para los resultados numricos.

5.- Suponga que la fuerza hacia arriba de la resistencia del aire sobre un objeto que
cae es proporcional al cuadrado de la velocidad. Para este caso, la velocidad se
calcula con
gm
gcd
v(t) = tanh (
t)
cd
m
Donde cd =coeficiente de arrastre de segundo orden, a) Si g=9.8 m/s 2 , m=68.1 kg y
cd = 0.25 kg/m, use integracin analtica para determinar qu tan lejos cae el objeto
en 10 segundos, b) Haga lo mismo, pero evale la integral con la regla del trapecio
de segmento mltiple. Use una n suficientemente grande para detener tres dgitos
significativos de exactitud.
6.- Evalu la integral de los datos tabulados a continuacin, con a) la regla del
trapecio y b) las reglas de Simpson:
x
f(x)

0
1

0.1
8

7. - Evalu la integral siguiente:

0.2
4

0.3
3.5

0.4
5

0.5
1

(8 + 4cosx)dx
0

a)en forma analtica; b)con una sola aplicacin de la regla del trapecio; c)con
aplicacin mltiple de la regla de trapecio, con n=2y4; d)con una sola aplicacin de
la regla de Simpson1/3; e con la aplicacin mltiple de la regla de Simpson1/3, con
n=4; f)con una sola aplicacin de regla de Simpson 3/8; g) con aplicacin mltiple de
la regla de Simpson 3/8, con n=5.

8. - Evalu la integral siguiente:


3

(1 ex )dx
0

a)en forma analtica; b)con una sola aplicacin de la regla del trapecio; c)con
aplicacin mltiple de la regla de trapecio, con n=2y4; d)con una sola aplicacin de
la regla de Simpson1/3; e con la aplicacin mltiple de la regla de Simpson1/3, con
n=4; f)con una sola aplicacin de regla de Simpson 3/8; g) con aplicacin mltiple de
la regla de Simpson 3/8, con n=5.

9. - Evalu la integral siguiente:


3

(1 ex )dx
0

a)en forma analtica; b)con una sola aplicacin de la regla del trapecio; c)con
aplicacin mltiple de la regla de trapecio, con n=2y4; d)con una sola aplicacin de
la regla de Simpson1/3; e con la aplicacin mltiple de la regla de Simpson1/3, con
n=4; f)con una sola aplicacin de regla de Simpson 3/8; g) con aplicacin mltiple de
la regla de Simpson 3/8, con n=5.

175

Mtodos Numricos con MatLab

Ing.: Willam Caiza

10. - Evalu la siguiente integral:


4

(1 x 4x 3 + 2x 5 )dx
2

a)en forma analtica; b)con una sola aplicacin de la regla del trapecio; c)con
aplicacin mltiple de la regla de trapecio, con n=2y4; d)con una sola aplicacin de
la regla de Simpson1/3; e con la aplicacin mltiple de la regla de Simpson1/3, con
n=4; f)con una sola aplicacin de regla de Simpson 3/8; g) con aplicacin mltiple de
la regla de Simpson 3/8, con n=5.
Referencia4: mtodos numricos para ingenieros (sexta edicin), autor: Steve C.
Chapra, pg.: 572

CAPTULO VII: ECUACIONES


DIFERENCIALES ORDINARIAS
DE PRIMER ORDEN

176

Mtodos Numricos con MatLab

Ing.: Willam Caiza

7.1 ECUACIONES DIFERENCIALES ORDINARIAS DE PRIMER ORDEN


Las ecuaciones diferenciales son una parte muy importante del anlisis matemtico y
modelan innumerables procesos de la vida real. Una ecuacin diferencial es una relacin,
vlida en cierto intervalo, entre una variable y sus derivadas sucesivas. Su resolucin
permite estudiar las caractersticas de los sistemas que modelan y una misma ecuacin
puede describir procesos correspondientes a diversas disciplinas. Las ecuaciones
diferenciales tienen numerosas aplicaciones a la ciencia y a la ingeniera, de Modo que los
esfuerzos de los cientficos se dirigieron en un principio, a la bsqueda de mtodos de
resolucin
y
de
expresin
de
las
soluciones
en
forma
adecuada.

Clasificacin de las
Ecuaciones
Diferenciales

2
+
+ 3 = 0
2

Tipo

Una o ms variables
dependientes con
respecto a una sola
variable
independiente.

Orden

El orden de una
ecuacin diferencial se
toma de la derivada
mayor en la ecuacin.

y'''+ 3y'' - 3y' - y = 0 es una


ecuacin de orden 3

Linealidad

Una ecuacin
diferencial ordinaria
de orden n es lineal
cuando F (x, y, y',...,
y(n)) = 0

+
1 1 +...+
1 + 0 = ()

+ 3 = ;

7.2 MTODOS DE RUNGE-KUTTA


Los mtodos de Runge-Kutta se aplican a ecuaciones diferenciales que tienen la siguiente
forma:

= (, )

7.2.1 MTODO DE EULER


+1 = + ( , ), +1 = +
Tambin se lo conoce a este mtodo como mtodo de Euler-Cauchy o de punto pendiente.

177

Mtodos Numricos con MatLab

Ing.: Willam Caiza

En donde se predice un nuevo valor de y, usando la pendiente (igual a la primera derivada


en el valor original de x) para extrapolar linealmente sobre el tamao de paso h.

Imagen 7.1: Ilustracin grfica del mtodo de Euler

Ejemplo 1:
Utilizando el mtodo de Euler calcule:
= . En x [, ] con = . y la condicin inicial () = .
Desarrollo
Resolviendo analticamente la ecuacin diferencial tenemos:

= 2 1.2

= ( 2 1.2)

= ( 2 1.2)

3
ln =
1,2 +
3

= 3 1,2+
Obteniendo el valor de c mediante la condicin inicial y(0)=1, entonces
1=

03
3 1,20+

1 =
1 =
=0

178

Mtodos Numricos con MatLab

Ing.: Willam Caiza

(, )

+1

Error

()

-1,2

0,7

0,25

0,7

-0,79625

0,5009375

0,7446 0,059897932

0,5

0,5009375 -0,47589063

0,38196484

0,5721 0,124388219

0,75

0,38196484 -0,24350259

0,3210892

0,4679 0,183661373

0,3210892 -0,06421784

0,30503474

0,4203 0,236047593

1,25

0,30503474

0,11057509

0,33267851

0,4278 0,286968824

1,5

0,33267851

0,34931244

0,42000662

0,5091 0,346536024

1,75

0,42000662

0,78226233

0,6155722

0,7308 0,425278299

0,6155722

1,72360216

1,04647274

1,3056 0,528513939

Frmulas:
Tabla 1.1

Tabla 1.2

.
Tabla 1.3

Tabla 1.4

Tabla 1.5

Tabla 1.6

179

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Ejemplo 2:
Con el mtodo de Euler integre numricamente la ecuacin
= , .
[, ]
h=1 pasos de 1
Condicin () =
Desarrollo

(, )

+1

()

Error

6,40216371

4,70108186

6,70108186

5,55162279

12,2527046

13,6857774

9,61870008

16,3197819

11,6522387

27,9720207

30,1066952

20,879467

37,1992489

25,4930811

62,69233

66,7839558

46,1385184

83,3377673

56,4612371

139,799004

-65,8995022

-4,71913255

0 +1 = + ( , )
0 +1 = 2 + 3 1
0 +1 = 5
+1
+1
+1
+1

= (+1 , 0 +1 )
= (1 ; 5)
= 4 0,81 0.5 5
= 6,40216

( , )(+1 , 0 +1 )
2

3 + 6,40216
2

= 4,7010815
+1 = +
+1 = 2 + 4,7010815
+1 = 6,7010815
Aplicando Laplace a la ecuacin
= 4 0,8 0.5
() (0) + 0,5() = 4

1
0,8

180

Mtodos Numricos con MatLab

Ing.: Willam Caiza

4
+2
0,8
4 + 2 1,6
() + 0,5() =
0,8
() + 0,5() =

()( + 0,5) =

() =

4 + 2 1,6
0,8

4 + 2 1,6
0,8 ( + 0,5)

Aplicando fracciones parciales


2 2,4

=
+
0,8 ( + 0,5) 0,8 + 0,5
2 2,4 = + 0,5 + 0,8
+ =2
0,5 0,8 = 2,4
=

14 0,8 40 0,5

+
13
13

Ejemplo 3:
Con el mtodo de Euler integre numricamente la ecuacin

= + + ,

Desde x=0 hasta x=4 con un tamao de paso 0,5. La condicin inicial en x=0 es y=1.
Desarrollo

= 2 3 + 12 2 20 + 8.5

= (2 3 + 12 2 20 + 8.5)
= (2 3 + 12 2 20 + 8.5)
=
1=

04
2

4
+ 4 3 10 2 + 8.5 +
2

+ 4(0)3 10(0)2 + 8.5(0) +

=1
= 0,5 + 4 3 10 2 + 8,5 + 1
4

181

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Error:
=
= 3,21875 5,25 = 2,03125
O, expresada como error relativo porcentual, =-63,1.
En el segundo paso:
(1) = (0,5) + (0,5; 5,25)0,5
() = 5,25 + {2(0,5)3+ 12(0,5)2 20(0,5) + 8,5}
() = 5,875
Tabla de comparacin de los valores verdaderos y aproximados mediante el mtodo de
Euler.
Se utiliza la ecuacin + = + ( , ) para implementar el mtodo de Euler:
(0,5) = (0) + (0,1)0,5
Donde y(0)=1 y la pendiente estimada en x=0 es:
(0,1) = 2(0)3+ 12(0)2 20(0) + 8,5 = 8,5
Por lo tanto,
(0,5) = 1,0 + 8,5(0,5) = 5,25
La solucin verdadera en x=0,5 es:
= 0,5(0,5)4+ 4(0,5)3 10(0,5)2 + 8,5(0,5) + 1 = 3,21872

x
0
0,5
1
1,5
2
2,5
3
3,5
4

y verdadero
1
3,21875
3
2,21875
2
2,71875
4
4,71875
3

y euler
1
5,25
5,875
5,125
4,5
4,75
5,875
7,125
7

global

local

-63,1
-95,8
131
-125
-74,7
46,9
-51
-133,3

-63,1
-28
-1,41
20,5
17,3
4
-11,3
-53

182

Mtodos Numricos con MatLab

Ing.: Willam Caiza

8
7
6
5
4

y verd

y euler

2
1
0
0

10

12

Figura 7.2 grafica del mtodo de Euler en Excel

Ejemplo 4:
Resuelva el siguiente problema de valor inicial
En el intervalo de t=0 a 2, donde y (0) = 1. Muestre todos sus resultados en la misma grfica.
dy
= yt 3 1.5y
dt
Desarrollo
EULER h=0,5
i xi
y real
0 0
1.0000
1 0.5
0.4798
2 1
0.2865
3 1.5
0.3737
4 2
2.7183

f(xi,yi)
0
-1.5000
-0.3438
-0.0391
0.1099

yi+1
1
0.2500
0.0781
0.0586
0.1135

3,0000
2,5000
EULER h=0,25

2,0000

EULER h=0,5
1,5000

Y REAL

1,0000

PUNTO MEDIO

0,5000

RK CUARTO ORDEN

0,0000
0

Figura7.3 mtodos de Runge Kutta

183

Mtodos Numricos con MatLab

Ing.: Willam Caiza

7.3 ANLISIS DEL ERROR PARA EL MTODO DE EULER


La solucin numrica de las EDO implica dos tipos de error:
Errores de truncamiento: Originados por la naturaleza de las tcnicas empleadas para
aproximar los valores de y.
Errores de redondeo: Causados por el nmero limitado de cifras significativas que una
computadora puede retener.
7.3.1 ERRORES DE TRUNCAMIENTO
Los errores de truncamiento se componen de dos partes:
Error de truncamiento local: Que resulta de una aplicacin del mtodo considerado, en un
solo paso.
Error de truncamiento propagado: Que resulta de las aproximaciones producidas durante
los pasos previos.
La suma de los dos es el error total de truncamiento.
7.4 MEJORAS DEL MTODO DE EULER
Un motivo fundamental de error en el mtodo de Euler es suponer que la derivada al inicio
del intervalo es la misma durante todo el intervalo. Hay dos modificaciones simples para
evitar esta consideracin y son:
1. Mtodo de Heun
2. Mtodo del punto medio
Algoritmo de resolucin de ecuaciones diferenciales por el mtodo de Euler

184

Mtodos Numricos con MatLab

Ing.: Willam Caiza

PROGRAMA DEL MTODO DE EULER


% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject
handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
f1=get(handles.edit1,'string');
[1]
f=inline(f1,'x','y');
[2]
x(1)=str2double(get(handles.edit2,'string'));
[3]
xf(1)=str2double(get(handles.edit3,'string'));
[4]
h=str2double(get(handles.edit4,'string'));
[5]
yi=get(handles.edit5,'string');
[6]
y(1)=str2double(yi);
[7]
n=(xf-x)/h;
[8]
sol=strcat('Dy=',f1);
[9]
soly=strcat('y(0)=',yi);
[10]
in=dsolve(sol,soly,'x');
[11]
inte=inline(in,'x','y');
[12]
fun=string(in);
[13]
ff(1)=y(1);
[14]
a(1)=0;
[15]
for i=1:n
[16]
a(i+1)=i;
[17]
y(i+1)=y(i)+h*f(x(i),y(i));
[18]
x(i+1)=x(i)+h;
[19]
ff(i+1)=inte(x(i+1),y(i+1));
[20]
end
[21]
set(handles.edit6,'string',fun);
[22]
set(handles.uitable1,'data',[a',x',ff',y']);
[23]
plot(handles.axes1,x,y,'b','linewidth',3);
[24]
legend EULER ORIGINAL
[25]
plot(handles.axes1,x,ff,'r','linewidth',2)
[26]
hold(handles.axes1,'on');
[27]
grid(handles.axes1,'on');
[28]
------------------------------------------------------------------------------------------------------------------------------------------

[1] Permite el ingreso de la funcin.


[2] Ingresa la funcin con la sintaxis de Matlab.
[3] Ingresa el valor inicial para evaluar.
[4] Ingresa el valor final para evaluar.
[5] Ingresa el valor de h que es el paso a usar (distancia entre puntos).
[6] Ingresa la condicin inicial para la resolucin de la funcin.
[7] Toma el valor de la condicin inicial y lo transforma de caracteres a nmeros.
[8] Determina el nmero de repeticiones operando los valores ingresados.
[9] Concatena la funcin original que se ingres.
[10] Concatena la condicin inicial ingresada.
[11] La funcin SOLVE permite resolver la ecuacin diferencial ingresada.
[12] La funcin INLINE permite llamar a la funcin de resolucin de forma automtica.
[13] Toma la resolucin de la ecuacin como carcter.
[14] Deriva el valor de y.
[15] Inicializa la variable.
[16] Define el bucle for.

185

Mtodos Numricos con MatLab

Ing.: Willam Caiza

[17] Asigna un valor a la variable a.


[18] Resuelve la ecuacin para encontrar el valor de y.
[19] Resuelve la ecuacin para encontrar el valor de x.
[20] El valor final de la funcin con los valores x e y hallados.
[22] Muestra el resultado de la resolucin.
[21] Termina el bucle del for.
[23] Establece las etiquetas para la tabla.
[24] Grafica la curva de resolucin de Euler.
[25] Muestra la leyenda de los resultados graficados.
[26] Muestra una tabla con los datos obtenidos.
[27] Mantiene los ejes de la grafica
[28] Muestra una cuadrcula en la grfica.
7.4.2 MTODO DE HEUN
Este mtodo emplea dos derivadas uno en el punto inicial y otra en el final. Las dos
derivadas se promedian con la finalidad de obtener una mejor estimacin de la pendiente
en todo el intervalo.
Recuerde que en el mtodo de Euler la pendiente al inicio del intervalo
y i= f(xi, yi )
la expresin anterior se utiliza para extrapolar linealmente a yi+1 ,mediante la siguiente
expresin
y i+10= yi + f(xi, yi )h
La ecuacin es una prediccin intermedia, da una estimacin
que permite el clculo de la estimacin de la pendiente al final del intervalo:

de

yi+1

y i+1= f(xi+1, y i+10)


Combinando las dos pendientes, para obtener un pendiente promedio se obtiene:
f(xi, yi )+f(xi+1, y i+10)

2
La cual va a ser la pendiente de la expresin de Euler
Resumen de las ecuaciones

+=

+ (, ) (Predictor)

+ = +

(, )+(+, +)

(Corrector)

El mtodo de Heun es un procedimiento predictor corrector de un solo paso.


Un criterio de terminacin para la convergencia del corrector est dado por:
j

j1

(y y )
|Ea | = | i+1 j i+1 |
(y i+1)

186

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Imagen 7.4 Representacin grfica del mtodo de Heun

7.5 MTODO DE RUNGE-KUTTA DE SEGUNDO ORDEN


La expresin del mtodo de Runge-Kutta de 2do orden es:
Yi+1 = Yi + (a1 k1 + a2 k 2 )h ()
Donde: k1 = f(xi , yi )
() ;
k 2 = f(xi + (p1 )h , yi + q11 (k1 )h)
()
Recordando la serie de Taylor, tenemos:
f(xi , yi ) 2
Yi+1 = Yi + f(xi , yi )h +
h
()
2!
Encontrando f(xi , yi ) :
df(xi , yi ) f dx f dy
f(xi , yi ) =
=
+
dx
x dx y dx
df f dy
f(xi , yi ) =
+
()
dx y dx
df f dy h2
Yi+1 = Yi + f(xi , yi )h + ( + )
()
dx y dx 2!
Utilizando la serie de Taylor de dos variables; tenemos:
g
g
g(x + r; y + s) = g(x; y) r + s +
x
y
Veamos el valor de:
f

f(xi + (p1 )h , yi + q11 (k1 )h) = f(xi , yi ) + p1 h x + q11 (k1 )h y + O(h2 ) (7)
Si = / tenemos:
a1+ a2 = 1
1

a2 p1 = 2

a2 q11 = 2

a1 = 1

1
= 1/2
2

p1 = 1
q11 = 1

187

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Entonces:
1
1
Yi+1 = Yi + ( k1 + k 2 )h
2
2
k1 = f(xi , yi )
k 2 = f(xi + h , yi + (k1 )h)
Si = tenemos:
a1+ a2 = 1
a1 = 1 1 = 0
1

a2 p1 = 2

a2 q11 = 2

METODO HEUN

p1 = 1/2
q11 = 1/2

Entonces:
Yi+1 = Yi + ( k 2 )h
k1 = f(xi , yi )
k 2 = f(xi + 1/2h , yi + 1/2(k1 )h)

METODO DE PUNTO MEDIO

Explicacin
Los mtodos de Runge-Kutta tienen la exactitud del esquema de la Serie de Taylor, sin
necesitar del clculo de derivadas superiores.
La frmula general es:
+1 = + (; ; )
Donde (x; Yi ;h) es la funcin de incremento, y representa el promedio de la pendiente
sobre el intervalo.
La funcin de incremento se puede escribir en su forma general como:
= a1 k 1 + a 2 k 2 + + a n k n
Donde las ai son constantes y las ki son:
k1 = f(xi ; yi )
k 2 = f(xi + p1 h; yi + q11 k1 h)
k 3 = f(xi + p2 h; yi + q 21 k1 h++ q 22 k 2 h)
k n = f(xi + pn h; yi + q n1 k1 h+q n1 2k 2 h +.+ q n1 (n 1k n h )
Todas las k son relaciones recurrentes. Por lo que k1 aparece en la ecuacin k2, que aparece
en la ecuacin k3, etc. Esta recurrencia hace a los mtodos RK eficientes para su clculo en
computadora.
Algoritmo de resolucin de ecuaciones diferenciales por el mtodo de Heun

188

Mtodos Numricos con MatLab

Ing.: Willam Caiza

189

Mtodos Numricos con MatLab

Ing.: Willam Caiza

PROGRMA DEL MTODO DE HEUN


% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject
handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
f1=get(handles.edit1,'string');
[1]
f=inline(f1,'x','y');
[2]
%condiciones inciales
x(1)=str2double(get(handles.edit2,'string'));
[3]
y(1)=str2double(get(handles.edit5,'string'));
[4]
%Parametros
xf(1)=str2double(get(handles.edit3,'string'));
[5]
h=str2double(get(handles.edit4,'string'));
[6]
n=(xf-x)/h;
[7]
a(1)=0;
[8]
for i=1:n
[9]
a(i+1)=i;
[10]
x(i+1)=x(i)+h;
[11]
k1= f(x(i),y(i));
[12]
k2=f(x(i)+h,y(i)+h*k1);
[13]
y(i+1)=y(i)+(h/2)*(k1+k2);
[14]
k(i+1)=k1;
[15]
l(i+1)=k2;
[16]
end
[17]
set(handles.edit6,'string',y(i+1));
[18]
set(handles.uitable1,'data',[a' x' k' l' y']);
[19]
plot(handles.axes1,x,y,'b','linewidth',2);
[20]
plot(handles.axes1,x,k,'r','linewidth',1);
[21]
plot(handles.axes1,x,l,'g','linewidth',1);
[22]
legend Original Rk k1 k2
[23]
hold(handles.axes1,'on');
[24]
grid(handles.axes1,'on');
[25]
zoom(handles.axes1,'on');
[26]
------------------------------------------------------------------------------------------------------------------------------------------

[1] Permite el ingreso de la funcin.


[2] Ingresa la funcin con la sintaxis de Matlab.
[3] Ingresa el valor inicial para evaluar.
[4] Ingresa el valor final para evaluar.
[6] Ingresa el valor de h que es el paso a usar (distancia entre puntos).
[6] Ingresa la condicin inicial para la resolucin de la funcin.
[7] Determina el nmero de repeticiones operando los valores ingresados.
[8] Inicializa la variable.
[9] Inicia bucle for.
[10] Asigna un valor a la variable a dependiendo del ciclo de iteracin.
[12] Obtiene el valor de la primera constante.
[13] Obtiene el valor de la segunda constante.
[14] Obtiene el valor de y.
[15] Asigna a una variable el valor de la primera constante.
[16] Asigna a una variable el valor de la segunda constante.
[17] Termina el bucle for.
[18] Muestra el resultado como ecuacin.
[19] Establece etiquetas para la tabla.

190

Mtodos Numricos con MatLab

Ing.: Willam Caiza

[20] Genera la grfica de RK.


[21] Genera la grfica de K1.
[22] Genera la grfica de K2.
[23] Coloca la legenda de la grfica realizada.
[24] Mantiene los ejes de la grfica.
[25] Muestra una cuadrcula en la grfica.
[26] Muestra un acercamiento a la grfica.
7.6 MTODOS DE RUNGE-KUTTA DE TERCER ORDEN
Para
el resultado son seis ecuaciones con ocho incgnitas, por lo tanto se deben
suponer dos valores con antelacin para poder desarrollar el sistema de ecuaciones. Una
versin ampliamente usada es:
1
Yi+1 = Yi + (k1 + 4k 2 + k 3 )h
6
k1 = f(xi , yi )
1
1
k 2 = f (xi + h , yi + (k1 )h)
2
2
k 3 = f(xi + h , yi (k1 )h) + 2k 2 h)
Si la ecuacin deferencial ordinaria est en funcin solo de x, este mtodo de tercer orden
se reduce a la regla de Simpson 1/3.
Los mtodos de RK de tercer orden dan resultados exactos cuando la solucin es cubica, al
tratarse de polinomios la ecuacin ser exacta cuando la ecuacin diferencial ordinaria sea
cbica y la solucin sea de cuarto grado.

Imagen 7.8: Ejemplo en Excel

191

Mtodos Numricos con MatLab

Ing.: Willam Caiza

7.7 MTODOS DE RUNGE-KUTTA DE CUARTO ORDEN


El ms popular de los mtodos Rk es el de cuarto orden. La versin comnmente usada se
llama mtodo clsico de Rk de cuarto orden:
1
Yi+1 = Yi + (k1 + 2k 2 + 2k 3 + k 4 )h
6
k1 = f(xi , yi )
k 2 = f(xi + 1/2h , yi + 1/2(k1 )h)
k 3 = f(xi + 1/2h , yi + 1/2(k 2 )h))
k 4 = f(xi + h , yi + (k 3 )h)
Demostracin:
El mtodo de RK de cuarto orden est basado en lo siguiente:
Yi+1 = Yi + (a1 k1 + a2 k 2 + a3 k 3 + a4 k 4 )h
(1)
Dnde: sabiendo el valor de Y = Yi para xi , nosotros podemos encontrar el valor de Yi =
Yi+1 para xi+1 , y h = (xi+1 xi )
La ecuacin (1) es comparada con los primeros cinco trminos de la serie Taylor
dy

Yi+1 = Yi + dx|

xi ,yi

1 d4 y

4! dx4 xi ,yi

(xi+1 xi ) +

1 d2 y
2!

dx2

xi ,yi

(xi+1 xi )2 +

(xi+1 xi )4

Sabiendo que

dy
dx

1 d3 y

3! dx3 xi ,yi

(xi+1 xi )3 +

(2)

= f(xi , yi )

h = (xi+1 xi )

Entonces:
1

Yi+1 = Yi + f(xi , yi )h + 2! f(xi , yi ) (h)2 + 3! f(xi , yi ) (h)3 + 4! f(xi , yi ) (h)4


Basndonos en la ecuacin (2) y (3), una de las soluciones ms usadas es:
1
Yi+1 = Yi + (k1 + 2k 2 + 2k 3 + k 4 )h
6
Este mtodo tiene similitud con el procedimiento de Hun en cuanto a que se usan
mltiples estimaciones de la pendiente para obtener una mejor pendiente promedio en el
intervalo.
As, el siguiente valor (Yi+1) es determinado por el presente valor (Yi )mas el producto del
tamao del intervalo (h) por una pendiente estimada. La pendiente es un promedio
ponderado de pendientes:
k1 es la pendiente al principio del intervalo;
k2 es la pendiente en el punto medio del intervalo, usando k1 para determinar el valor de y
en el punto xi + h/2 usando el mtodo de Euler

192

Mtodos Numricos con MatLab

Ing.: Willam Caiza

k3 es otra vez la pendiente del punto medio, pero ahora usando k2 para determinar el valor
de y
k4 es la pendiente al final del intervalo, con el valor de y determinado por k3
Promediando las cuatro pendientes, se le asigna mayor peso a las pendientes en el punto
medio:

Ejemplo: Resuelva el siguiente problema de valor inicial en el intervalo de t=0 a 2, donde y


(0) = 1. Muestre todos sus resultados en la misma grfica.
dy
= yt 3 1.5y
dt
Desarrollo
a) Mtodo RK de cuarto orden con h=0.5.
RK CUARTO ORDEN
i

xi

yreal

k1

1 0,5

0,4798

-1,5

0,2865

3 1,5
4

1
2

xi+0,5*h yi+0,5*k1*h

k2

yi+0,5*k2*h

k3

xi+h yi+k3*h

k4

yi+1

0,25

0,625

-0,9277

0,7681

-1,1401

0,5

0,43

-0,5912

0,4811

-0,6615

0,75

0,3157

-0,3404

0,396

-0,4269

0,2676

-0,1338

0,2869

0,3737

-0,1435

1,25

0,2511

0,1138

0,3154

0,1429

1,5

0,3584

0,672

0,3738

2,7183

0,7008

1,75

0,5489

2,1186

0,9034

3,4866

2,117

13,7607

2,5131

Imagen 7.9: Cuadro de datos del mtodo de runge kutta 4to orden
3,0000
2,5000
EULER h=0,25

2,0000

EULER h=0,5
1,5000

Y REAL
PUNTO MEDIO

1,0000

RK CUARTO ORDEN
0,5000
0,0000
0

0,5

1,5

2,5

Imagen 7.10: grafica del mtodo de Runge Kutta 4to orden

193

Mtodos Numricos con MatLab

Ing.: Willam Caiza

7.8 MTODOS DE RUNGE-KUTTA DE ORDEN SUPERIOR


Para tener resultados ms exactos, se recomienda el mtodo de RK de quinto orden.
Yi+1 = Yi +

1
(7k1 + 32k 3 + 12k 4 + 32k 5 + 7k 6 )h
90

Dnde:
k1 = f(xi , yi )
1
1
k 2 = f (xi + h , yi + (k1 )h)
4
4
1
1
1
k 3 = f (xi + h , yi + (k1 )h + (k 2 )h))
4
8
8
1
1
k 4 = f (xi + h , yi (k 2 )h + (k 3 )h)
2
2
3
3
9
k 5 = f (xi + h , yi + (k1 )h + (k 4 )h)
4
16
16
3
2
12
12
8
(k 3 )h (k 4 )h + (k 5 )h)
k 5 = f (xi + h , yi (k1 )h + (k 2 )h +
7
7
7
7
7
Ejemplo 6:
Use el mtodo clsico de Runge-Kutta de 5to Orden para integrar numricamente la
siguiente ecuacin:
f(x;y) = -2 + 12 20x + 8,5 desde x=0 hasta x=4, con un tamao de paso de 0,5.
Condicin inicial en x=0 y y=1.
Desarrollo
x
0
0,5
1
1,5
2
2,5
3
3,5
4

k1

k2

k3

k4

k5

k6

8,5
1,25
-1,5
-1,25
0,5
2,25
2,5
-0,25

6,1836
0,1992
-1,6602
-0,8945
0,9961
2,5117
2,1523
-1,582

6,1836
0,1992
-1,6602
-0,8945
0,9961
2,5117
2,1523
-1,582

4,2188
-0,5938
-1,6563
-0,4688
1,4688
2,6563
1,5938
-3,2188

2,582
-1,1523
-1,5117
0,0039
1,8945
2,6602
0,8008
-5,1836

1,25
-1,5
-1,25
0,5
2,25
2,5
-0,25
-7,5

y
1
3,2188
3
2,2188
2
2,7188
4
4,7188
3

194

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Imagen 7.11: grafica de Runge Kutta orden superior

EJERCICIOS PROPUESTOS
1.- Resuelva el siguiente problema de valor inicial en el intervalo de t=0 a 2, donde y (0) = 1.
Muestre todos sus resultados en la misma grfica.
dy
= yt 3 1.5y
dt
b) Analticamente.
c) Mtodo de Euler con h=0.5 y 0.25.
d) Mtodo RK de cuarto orden con h=0.5.
2.- Resuelva el siguiente problema en el intervalo de x=0 a 1. Usando un tamao de paso de
0.25 donde y (0)=1. Muestre todos sus resultados en la misma grfica.
dy
= (1 + 2x)y
dx
a) Analticamente.
b) Mtodo de Euler.
c) Mtodo de Heun sin el corrector.
d) Mtodo de Ralston.
e) Mtodo de RK de cuarto orden.
3.- Utilice los mtodos de a) Euler y b) Heun (sin iteracin) para resolver:
d2 y
t+y=0
dt 2
Donde y (0) = 2 y y (0) = 0. Resuelva de x = 0 a 4, con h = 0.1. Compare los mtodos por
medio de graficar las soluciones.
4.- Resuelva el problema siguiente con el mtodo de RK de cuarto orden:
d2 y
dy
+ 0.6 + 8y = 0
2
dx
dx

195

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Donde y (0) = 4 y y (0) = 0. Resuelva de x = 0 a 5 con h= 0.5. Grafique sus resultados.


5.- Resuelva la ecuacin que se presenta a continuacin, de t = 0 a 3, con h = 0.1, con los
mtodos de a) Heun (sin corrector), y b) RK y Ralston de segundo orden:
dy
= y sen3 (t)
y(0) = 1
dx
6.-Solucione en forma numrica el problema siguiente, de t = 0 a 3:
dy
= y + t 2 ,
y(0) = 1
dt
Utilice el mtodo de RK de tercer orden, con un tamao de paso de 0,5.
7.-Use los mtodos de:
a) Euler
b) RK de cuarto orden
Para resolver:
dy
dt

= 2y + 4e1

dz
yz 2
=
dx
3
En el rango de x = 0 a 1, con un tamao de paso de 0,2, con y(0) = 2 y z(0) = 4.
8.-El movimiento de un Sistema acoplado masa-resorte (como indica la figura) esta descrito
por la ecuacin diferencial ordinaria que sigue:
d2 x
dx
m 2 + c + kx = 0
dt
dt
Donde x=desplazamiento desde la posicin de equilibrio (m), t=tiempo(s), m=20(kg) masa y
s

c= coeficiente de amortiguamiento (N m). El coeficiente de amortiguamiento c adopta tres


valores, 5 (subamortiguado), 40 (amortiguamiento crtico) y 200 (sobreamortiguado). La
s

constante del resorte es k = 20 (N m). La velocidad inicial es de cero y el desplazamiento


inicial es x = 1(m). Resuelva esta ecuacin con el uso de un mtodo numrico durante el
periodo 0 t 15 s grafique el desplazamiento versus el tiempo de amortiguamiento
sobre la misma curva.
9.- Si se drena el agua desde un tanque cilndrico vertical por medio de abrir una vlvula en
la base, el lquido fluir rpido cuando el tanque este lleno y despacio conforme se drene.
Como se ve, la tasa a la que el nivel del agua disminuye es:
dy
= ky
dt

196

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Donde k es una constante que depende de la forma del agujero y del area de la seccin
transversal del tanque y agujero de drenaje. La profundidad del agua y se mide en metros y
el tiempo t en minutos.
Si k = 0.006, determine cuanto tiempo se requiere para vaciar el tanque si el nivel de fluido
se encuentra en un inicio a 3m. Resuelva con la aplicacin de la ecuacin de Euler y escriba
un programa de computadora en Excel. Utilice un paso de 0.5 minutos.
10.-La siguiente es una ecuacin diferencial de Segundo orden con valor inicial:
d2 x
dx
+ (5x) + (x + 7)sen(wt) = 0
2
dt
dt
Dnde:
dx
(0) = 1,5
y
x(0) = 6
dt
Observe que w = 1. Descomponga la ecuacin en dos ecuaciones diferenciales de primer
orden. Despus de la descomposicin, resuelva el sistema t = 0 a 15, y grafique sus
resultados.
Referencia5: mtodos numricos para ingenieros (sexta edicin), autor: Steve C. Chapra,
pg.: 68

Algoritmo de resolucin de ecuaciones diferenciales por el mtodo de Runge Kutta

197

Mtodos Numricos con MatLab

Ing.: Willam Caiza

PROGRAMA
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject
handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
f1=get(handles.edit1,'string');
[1]
f=inline(f1,'x','y');
[2]
%condiciones inciales
x(1)=str2double(get(handles.edit2,'string'));
[3]
y(1)=str2double(get(handles.edit5,'string'));
[4]
%Parametros
xf(1)=str2double(get(handles.edit3,'string'));
[5]
h=str2double(get(handles.edit4,'string'));
[6]
n=(xf-x)/h;
[7]
a(1)=0;
[8]
for i=1:n
[9]
a(i+1)=i;
[10]
x(i+1)=x(i)+h;
[11]
k1= f(x(i),y(i));
[12]
k2=f(x(i)+h/2,y(i)+(h/2)*k1);
[13]
k3=f(x(i)+h/2,y(i)+(h/2)*k2);
[14]
k4=f(x(i)+h,y(i)+(h)*k3);
[15]
y(i+1)=y(i)+h*(k1+2*k2+2*k3+k4)/6;
[16]
k(i+1)=k1;
[17]
l(i+1)=k2;
[18]
m(i+1)=k3;
[19]
p(i+1)=k4;
[20]
end
[21]
set(handles.edit6,'string',y(i+1));
[22]
set(handles.uitable1,'data',[a' x' k' l' m' p' y']);
[23]
plot(handles.axes1,x,y,'b','linewidth',2);
[24]
plot(handles.axes1,x,k,'r','linewidth',1);
[25]
plot(handles.axes1,x,l,'g','linewidth',1);
[26]
plot(handles.axes1,x,p,'y','linewidth',1);
[27]
plot(handles.axes1,x,m,'k','linewidth',1);
[28]
legend Original Rk k1 k2 k3 k4
[29]
hold(handles.axes1,'on');
[30]
grid(handles.axes1,'on');
[31]
zoom(handles.axes1,'on');
[32]
-----------------------------------------------------------------------------------------------------------------------------------------

198

Mtodos Numricos con MatLab

Ing.: Willam Caiza

[1] Permite el ingreso de la funcin.


[2] Ingresa la funcin con la sintaxis de Matlab.
[3] Ingresa el valor inicial para evaluar.
[4] Ingresa el valor final para evaluar.
[6] Ingresa el valor de h que es el paso a usar (distancia entre puntos).
[6] Ingresa la condicin inicial para la resolucin de la funcin.
[7] Determina el nmero de repeticiones operando los valores ingresados.
[8] Inicializa la variable.
[9] Inicia bucle for.
[10] Asigna un valor a la variable a dependiendo del ciclo de iteracin.
[12] Obtiene el valor de la primera constante.
[13] Obtiene el valor de la segunda constante.
[14] Obtiene el valor de la tercera constante.
[15] Obtiene el valor de la cuarta constante.
[16] Obtiene el valor de y.
[17] Asigna a una variable el valor de la primera constante.
[18] Asigna a una variable el valor de la segunda constante.
[19] Asigna a una variable el valor de la tercera constante.
[20] Asigna a una variable el valor de la cuarta constante.
[21] Termina el bucle for.
[22] Muestra el resultado como ecuacin.
[23] Establece etiquetas para la tabla.
[24] Genera la grfica de RK.
[25] Genera la grfica de K1.
[26] Genera la grfica de K2.
[27] Genera la grfica de K3.
[28] Genera la grfica de K4.
[29] Coloca la legenda de la grfica realizada.
[30] Mantiene los ejes de la grfica.
[31] Muestra una cuadrcula en la grfica.
[32] Muestra un acercamiento a la grfica.

ANEXOS
Propiedades de Laplace

L{ f(t) + g(t) } = F(s) + G(s)


L{ a.f(t) } = a.F(s)

L{ f(at) } = ()

L{ eat.f(t) } = F(s-a)
L{ f(t-a) } = e-as.F(s)
L{ f (t) } = s.F(s) f(0)
L{ f (t) } = s2.F(s) s.f(0) f(1)

L{ 0 f(T). dt } =

()

199

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Tabla de la transformada de Laplace


f(t)
()

()
cos()
()
( )

. ()
1
()

() ()

F(s)
1

1
2
!
2+1

2 + 2

2 + 2
1

()

()

(). ()

EJERCICIOS DE LAPLACE CON ECUACIONES DIFERENCIASLES POR LAPLACE


Usando la transformada de Laplace encuentre la solucin de la ecuacin.
+ =
() =
() =
( ())() = () () = ()
( ())() = () () () = ()

( )() = ( )() =
+
Aplicacin la transformada de Laplace a nuestra ecuacin obtenemos:
8
( 2 2 + 5)() 2 8 =
,
+1
Lo que implica:
2 2 + 10
() = 2
( 2 + 5)( + 1)
3( 1) + 2(4)
1
=

.
2
2
( 1) +
+1
Por lo tanto

200

Mtodos Numricos con MatLab

Ing.: Willam Caiza

() = 1 (

3( 1) + 2(4)
1

) ()
( 1)2 + 2
+1

= 3 1 ((1)2 +2 ) ()+4 1 ((1)2 +2 ) () 1 (+1) ()


= 3 cos(2) + 4 sen(2)
Obtenga la ecuacin que es solucin de la siguiente ecuacin diferencial por el mtodo de
la transformada de Laplace, haciendo uso de las tablas y propiedades.
()
+ () = () () =

() =

{D2 g(t) + 4g(t)} = {sen(4t)}


{D2 g(t) + 4{g(t)} = {sen(4t)}
{S 2 G(s) Sg(0) g (0)} + 4{G(s)} = {

S2

4
}
+ 42

1
4
2 () 0 + 4() = 2
5
( + 42 )
1
4
()( 2 + 4) = 2
5 ( + 42 )
4
1 20 + ( 2 + 42 )
2 + 36
2
()( + 4) = 2
+ =
=
( + 42 ) 5
5( 2 + 42 )
5( 2 + 42 )
1 2
( + 62 )
( 2 + 62 )
5
() =
() =
5( 2 + 42 )( 2 + 42 )
5( 2 + 42 )( 2 + 42 )
Aplicando la transformada Inversa de Laplace
1 2
( + 62 )
5
1 {()}
1

= {
}
5( 2 + 42 )( 2 + 42 )
1 {()} = () = 0.2667(2) + 0.0834(4 + )
Resuelva usando transformada de Laplace la ecuacin
+ = () ,
() = () =
Donde
0
0<3
() = {

3
Primero observamos que:
() = ( 3) = ( 3)( 3) + 3( 3),
Donde
0
() = {
1

<0
0

201

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Entonces si () = (y(t))(s),aplicando transformada de Laplace a la ecuacin diferencial


obtenemos
3 + 1 3
( 2 + 4)() =

2
Esto implica
3 + 1
() = 2 2
3
( + 4)
3 + 1
() = 1 ( 2 2
3 ) ()
( + 4)
3 + 1
+
=
+ +
2 ( 2 + 4) 2 2 + 4
Resolviendo se obtiene
3

= 4, = 4, = 4, = 4
As
3 + 1
31 1 1 3
1
=
+

2 ( 2 + 4) 4 4 2 4 2 + 4 4 2 + 4

() = 1 (

3 + 1
3 1
3
1
) () = + cos(2) sin(2)
+ 4)
4 4
4
8

2 ( 2

Por lo tanto
() = ( 3)( 3)
3 1
3
1
= ( + ( 3) cos(2( 3)) sin(2( 3))) ( 3)
4 4
4
8
Hallar:
{ + () + ()}
Por la propiedad de linealidad tenemos que:
{4 5 + 6 3 3(4) + 2(2)}
= 4{ 5 } + 6{ 3 } 3{(4)} + 2{cos(2)}
1
3!
4

=4
+6 43 2
+2 2
5

+ 16
+4
4
36
12
2
=
+

+
5 4 2 + 16 2 + 4
Hallar:
{( + ) + ()}
Por la propiedad de linealidad tenemos que:
{( + 2)2 + 4 (2)}

202

Mtodos Numricos con MatLab

Ing.: Willam Caiza

= {( + 2)2 } + { 4 cosh(2)}
= {( 2 + 4 + 4) } + { 4 cosh(2)}
= {( 2 } + 4{ } + 4{ } + { 4 cosh(2)}
Aplicando el primer teorema de la traslacin:
= {( 2 } + 4{ } + 4{ } + { 4 cosh(2)}
2!
4
4
+4
=
+
+
+
3
2
( 1)
( 1)
1 ( + 4)2 4
5 4 + 29 3 + 9 2 21 + 20
=
( 1)3 ( + 2)( + 6)

203

Mtodos Numricos con MatLab

Ing.: Willam Caiza

ANEXO I: MULTIPLICADORES DE
LAGRANGE

1 MULTIPLICADORES DE LAGRANGE
El mtodo de los multiplicadores de Lagrange es un procedimiento para encontrar los
mximos y minimos de funciones de variables multiples las cuales estan sujetas a
restricciones.
1.1 CONCEPTOS FUNDAMENTALES
Para poder tener una mejor comprensin del mtodo de los multiplicadores de Lagrange se
debe tener en cuenta estos conceptos fundamentales
En clculo, un punto crtico de una funcin de una variable real es cualquier valor en
el dominio en donde la funcin no es diferenciable o cuando su derivada es 0.

Funcin de variables mltiples , es aquella funcin la cual consta de varias


variables.
(, 1 , 2 , , )

Puntos estacionarios: Un punto estacionario de una funcin de una variable real, es


un nmero donde la derivada de es cero. Si la funcin es derivable y tiene
un extremo local en un punto, ese punto estar entre sus puntos estacionarios.

Curvas de nivel de una funcin de variables: cuando la funcin tiene dos variables
podra representarse mediante una superficie en el espacio tridimensional. Dicha
superficie estara formada por los puntos de la forma (, , (, )).
No obstante, existe una forma de representar grficamente funciones de dos variables
en el plano: mediante las conocidas como curvas de nivel de la funcin. Dichas curvas

204

Mtodos Numricos con MatLab

Ing.: Willam Caiza

se obtienen al cortar la superficie mediante planos horizontales a distintas alturas, de


forma que todos esos cortes forman una familia de curvas que se proyectan sobre el
plano ().
: 2
(, ) = 2 + 2
2 + 2 =

1.2 PROCEDIMIENTO
El mtodo dice que los puntos donde la funcin tiene un extremo condicionado con k
restricciones, estn entre los puntos estacionarios (puntos donde la derivada de la funcin es
igual a cero) de una nueva funcin sin restricciones construida como una combinacin
lineal de la funcin y las funciones implicadas en las restricciones, cuyos coeficientes son los
multiplicadores.
1.3 DETERMINACIN DE LA ECUACIN DE LAGRANGE
Se tiene una funcin de tipo (, 1 , 2 , , )la cual tiene un dominio D, donde las variables
de dicha funcin est sujeta a las siguientes restricciones de tipo (, 1 , 2 , , ) las cuales
se encuentran en el dominio D de la funcin primaria.
Las variables , 1 , 2 , , estn sujetas a las restricciones de igualdad (m < n):
1 (, 1 , 2 , , ) = 0
2 (, 1 , 2 , , ) = 0

205

Mtodos Numricos con MatLab

Ing.: Willam Caiza

(, 1 , 2 , , ) = 0
Donde las funciones , 1 , 2 , , son diferenciables, debe tener segundas derivadas
continuas, mientras que las deben tener primeras derivadas continuas.
Para simplificar el clculo se trabajara con un funcin doble (, ) = , y sujeto a una
restriccin (, ) = , la cual se encuentra dentro del dominio de
(, ) = .
Como sabemos una funcion de tipo (, ) = , se la puede representar por medio de sus
curvas de nivel; es decir para cada valor de d tendr una curva.
La funcion (, ) = , sera una nica funcin que pasa una de las curvas de nivel.
El punto donde cruza la funcin (, ) = , por un punto de la curva de nivel de la funcin
(, ) = es un punto crtico.
Para determinar ese punto critico se utilizara el gradiente vector, el cual se encuentra en
direccin del mximo cambio de la funcin, se sabe que el gradiente es perpendicular a las
curvas de nivel.
1.4 ECUACION GENERAL DE LOS MULTIPLICADORES DE LAGRANGE
(, , ) = (, ) + (, )
Punto estacionario: En este punto la restriccion (, ) = interseca en un punto de las
curvas de nivel de la funcion (, ) = .
El gradiente de (, ) = , es paralelo al gradiente de la funcin (, ) =
de ah se obtiene = donde la constante c se remplaza por .

Una vez optenida esta relacin: =


Se procede a obtener las derivadas parciales:

206

Mtodos Numricos con MatLab

Ing.: Willam Caiza



,
=
,


De esta manera obtendre las siguientes igualdades:

(, ) =

Ejemplo 1:
Encuentre los valores ptimos de la funcin:
a. Los puntos crticos.
b. Los puntos mximos y mnimos de la funcin.
Sea (, ) = + +
Sujeta a la Restriccin: + =
Paso # 1
Ec. Lagrange:

(1 , 2 , , ) = (1 , 2 , , ) + 1 (1 , 2 , , )
=1

(, , ) = (, ) + ()
(, , ) = ( 2 + 12 + 2 2 ) + (4 2 + 2 = 25)
Paso # 2
Derivar aplicando derivadas parciales:

= 2 + 12 + 8 = 0

= 12 + 4 + 2 = 0

= 4 2 + 2 25 = 0

Paso # 3
Formar el sistema de ecuaciones no lineales:

207

Mtodos Numricos con MatLab

Ing.: Willam Caiza

1)

2 + 12 + 8 = 0

2)

12 + 4 + 2 = 0

3)

4 2 + 2 25 = 0

Paso # 4
Resolver el sistema; de la ecuacin 1) despejamos y:
12 = 8 2
4)

2
1
=
3
6

Sustituyo 4) en 2)
2
1
2
1
12 + 4 ( ) + 2 ( ) = 0
3
6
3
6
34
4
5)
3 2 = 0
3
3
Sustituyo 4) en 3)
2
1 2
2
1
1 2
4 2 + ( ) 2 ( ) ( ) + ( ) 25 = 0
3
6
3
6
6
2
2
2
1
1 2
4 + ( ) 2 ( ) ( ) + ( ) 25 = 0
3
3
6
6
145 2 4 2 2 2 2 2
6)
+ + 25 = 0
36
9
9
2

Paso # 5
Factorizamos la ecuacin 5)
34
4
( 3 2 ) = 0
3
3
= 0;
Sustituyo 2 =

17
4

1 = 2 ;

2 =

17
4

en 5)
145 2 4 2
17 2 2 2
17
+ ( ) + ( ) 25 = 0
36
9
4
9
4
100 2
25 = 0
9
225
2 =
100
3
3
1 = ;
2 =
2
2

Sustituyo = 2 ; 2 =

17
4

en 4)

208

Mtodos Numricos con MatLab

Ing.: Willam Caiza

3
17
= ; = 4 ; =
2
4
Sustituyo 1 = 2 en 6)
145 2 4 2 2 2 2
+ (2) + (2) 25 = 0
36
9
9
145 2 16 2 2 2
+
+ 25 = 0
36
9
9
25 2
= 25
4
1 = 2;

2 = 2

Sustituyo = 2 ; 1 = 2 en 6)
= 2; = 3 ; = 2
= 2; = 3 ; = 2
Paso # 6
Analizar los puntos crticos de la funcin cuando existe un como mximo relativo o mnimos
relativo.
(, ) > 0 .
(, ) < 0 .
Soluciones:
(2, 3); (2, 3) = 59 .
3
3
( , 4) ; ( , 4) = 90.25 .
2
2
Ejemplo 2:
Encontrar el mximo de esta funcin: (, ) = Restriccin

El grfico de la funcin restriccin:

= .

El cdigo en Matlab es:


x=[-3:0.1:3];
y=[-3:0.1:3];
[X,Y]=meshgrid(x,y);
Z=X.*Y
mesh(X,Y,Z);
title('GRAFICA DE FUNCION')
hold on
%%
x=-3:0.1:3
y=sqrt((1-(x.^2/9))*16);
plot(x,y);
hold on
%%
x=-3:0.1:3

209

Mtodos Numricos con MatLab

Ing.: Willam Caiza


y=-sqrt((1-(x.^2/9))*16);
plot(x,y);
hold on

Figura 1: Grfica de una funcin.

Nuestra restriccin pasa hacer nuestra funcin g.

(, ) =

2
9

2
16

Paso # 1

Derivada parcial de la funcin f con respecto a x.

Multiplicamos con la funcin g, procedemos a la Derivada parcial de la funcin g


con respecto a x.
4 =

2
x
9

Paso # 2

Derivada parcial de la funcin f con respecto a y

Multiplicamos con la funcin g, procedemos a la Derivada parcial de la funcin g


con respecto a y.

Paso #3
Establecemos nuestras 3 ecuaciones:
2

1. 4 = x
9

2. 4 =
3.

2
9

2
16

2
16

=1

Paso # 4
Despejamos la primera ecuacin , obtenemos nuestra ecuacin (4).

210

Mtodos Numricos con MatLab

Ing.: Willam Caiza

18

Paso # 5
Remplazamos nuestra ecuacin (4) en nuestra ecuacin (2).

2
y
16
1 18
4x = (
)
8

4 =

2
9

2
16

Obtenemos la ecuacin (5).

Paso # 6
Remplazamos nuestra ecuacin (5) en nuestra ecuacin (3).

2 2
+
=1
9 16
2
9

1 =

2
9

; 2 =

=1

32
;
2

2 =

9
2

32
2

Paso # 7
Obtenemos nuestro valores de, y.
1 = 2 2 ;

2 = 22

Paso # 8
Obtenemos nuestros puntos: (

32
2

; 2 2 ) ; (

32
2

; 2 2 )

Los puntos obtenidos se pueden encontrar con el solver de Matlab:


Paso # 9
Remplazamos nuestros puntos en la funcin, con lo cual obtendremos nuestro punto mximo
y mnimo.

(, ) = 4
En este caso obtenemos un valor de 24 en ambos casos por lo que se determina que los dos
son puntos mximos.
Programa 1: Programa de Multiplicadores de Lagrange.

211

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Cdigo del programa:


syms x y L k a b c
f=char(get(handles.edit1,'string'));
g=char(get(handles.edit2,'string'));
L=f+k*g
fx=diff(L,x)
fy=diff(L,y)
fk=diff(L,k)
[var1 var2
var3]=solve(fx==a,fy==b,fk==c,a,b,c);
set(handles.edit3,'string',char(var1));
set(handles.edit4,'string',char(var2));
set(handles.edit5,'string',char(var3));
L=f+k*g
[x,y,k]=solve(diff(L,x),diff(L,y),diff(L,k),x,y,k)
set(handles.edit6,'string',char(x));
set(handles.edit7,'string',char(y));
set(handles.edit8,'string',char(k));
x=[-4:0.1:4];
y=[-4:0.1:4];
[x,y]=meshgrid(x,y);
z=x.^2+12*x.*y+2*y.^2;
mesh(x,y,z);
title('GRAFICA DE FUNCION');
hold on
rotate3d on

Figura 2: Grfica de una funcin.

212

Mtodos Numricos con MatLab

Ing.: Willam Caiza

ANEXO II: SISTEMA DE ECUACIONES


NO LINEALES MTODO DE NEWTON

1. SISTEMA DE ECUACIONES NO LINEALES METODO DE NEWTON


Este es un mtodo iterativo, a diferencia de los mtodos directos donde la solucin a una
ecuacin o sistema de ecuaciones se logra siempre al primer intento siguiendo paso a paso
un procedimiento determinado, los mtodos iterativos obtienen la solucin como resultado de
una serie de aproximaciones generadas sucesivamente a partir de una aproximacin inicial a
la solucin. Tambin se lo conoce como el mtodo de NEWTONRAPHSON
MULTIVARIABLE, Tiene una convergencia cuadrtica siempre y cuando se conozca un
valor inicial suficientemente preciso.
Para este mtodo partiremos ya con el conocimiento del mtodo de Newton Raphson para
resolver una ecuacin con una incgnita en el cual podemos ver que necesitamos un valor

213

Mtodos Numricos con MatLab

Ing.: Willam Caiza

inicial, la funcin evaluada en ese punto y la derivada de la funcin evaluada en el punto


inicial y mediantes esta ecuacin obtenemos un nuevo valor. Pero ahora como tenemos un
sistema de ecuaciones se tendr que adaptar esta frmula para que nos permita obtener la
solucin a dicho sistema:
+1 = ( )/ ( )
Pues ahora ya tenemos un conjunto de ecuaciones no lineales de f1, f2, f3, , fn. Las cuales
debemos igualar a cero, esto significa que vamos a encontrar las races de cada una de estas
ecuaciones no lineales que resuelvan todo el sistema.
(1, 2, 3, , ) = 0
(1, 2, 3, , ) = 0
(1, 2, 3, , ) = 0
Ahora debemos tomar en cuenta la manera en que vamos a derivar este conjunto de
ecuaciones y para adaptar este mtodo como ya se mencion ya no tenemos una variable sino
un vector de variables, al igualar las funciones a cero obtenemos un vector de funciones y de
estas necesitamos las derivadas pero al ser un conjunto se realiza las derivadas parciales de
cada funcin respecto a cada variable acomodadas en una matriz la cual se denomina
MATRIZ JACOBIANA aqu se expresa ya de manera matricial.
DERIVADA DE LA PRIMERA FUNCION CON
RESPECTO A Y
DERIVADA DE LA PRIMERA FUNCION CON
RESPECTO A X

( , , , )
+1

( , , , )
[ +1 ] = [ ]

+1

[( , , , , )]

]
[

DERIVADA DE LA PRIMERA FUNCION CON


RESPECTO A Z

Por lo que al obtener la matriz Jaciobiana, tambin debemos encontrar su inversa y de existir
la misma para poder desarrollar este mtodo al efectuar la siguientes operaciones
matemticas obtengo los valores de cada variable para la siguiente iteracin y esto lo
calculamos hasta que le valor de la nueva iteracin menos la antigua iteracin sea
prcticamente cero, es decir llegar a obtener la convergencia.

Ejemplo 1:

214

Mtodos Numricos con MatLab

Resolver {

Ing.: Willam Caiza

+ =
, + , =

Figura 1. Grfica de las funciones en Matlab.

1. Realizaremos el proceso para encontrar el primer Xi+1, dadas las siguientes


ecuaciones las igualamos a cero y damos un punto inicial.
(1, 2, 3, ) = 2 + 2 2 = 0
(1, 2, 3, ) = 2 0,5 + 0,1 = 0
2. Encontramos Derivadas parciales de las funciones con respecto a cada una de las
variables.

= 2

= 2 0,5

= 2

= 1

3. Formamos la matriz Jacobiana.


[

2
2 0.5

2
]
1

4. Remplazamos los puntos iniciales para obtener valores numricos en la matriz


Jacobiana y calculamos su inversa.
(1,2; 0,8)

215

Mtodos Numricos con MatLab

Ing.: Willam Caiza


2 (1.2)
2 (1.2) 0.5

2.4
[
1.90

0.160
]
1

2 (0.8)
]
1

5. Calculamos la matriz inversa aumentando la matriz identidad.


0.160
1 0

]
1
0 1
2.4
0.160
1
0
1.901 2.402 2 [

]
0
5.44
1.90
2.40
2.4
0.160
1
0
1/2.90 1 [

] 2/5.44 2
0
5.44
1.90 2.40
1 0
0.18
0.29
0.5522 + 1 1 [

]
0 1
0.35 0.44
0.18
0.29
[
]
0.35
0.44
[

2.4
1.90

6. Evaluamos las ecuaciones en el punto inicial y multiplicamos por la inversa del


Jacobiano.
0.08
0.18
0.29
0.055
[
][
]=[
]
0.14
0.35 0.44
0.33
7. Para encontrar el Xi+1, restamos el producto anterior menos los puntos iniciales.
1.20
1.14
0.055
[
][
]=[
]
0.8
0.83
0.33
8. Como ya lo explicamos se repite el proceso asumiendo como nuevo punto inicial el
Xi+1 encontrado.
9. Este mtodo es complejo si se lo realiza de forma manual por lo que se presenta un
ejercicio realizado en Excel.
Considrese el sistema no lineal siguiente:
1 (, ) = 2 + 2 2 = 0 (Circunferencia)
2 (, ) = 2 0,5 + 0,1 = 0 (Parbola)
a) Usar el mtodo de Newton comenzando en el punto P0 = (p0, q0) = (1,2; 1,8) y
calcular los puntos P1 y P2.
f(x1,x2,,xn)=

2 + 2 2
2 0,5 + 0,1

g(x1,x2,,xn)=
df/dx=
dg/dx=

2x
2x-0,5

df/dy=
dg/dy=

2y
-1

MATRIZ JACOBIANA
2x
2y

216

Mtodos Numricos con MatLab

Ing.: Willam Caiza


2x-0,5

2 + 2 2

2 0,5

2 0,5 + 0,1

f(Xi)

( )
1()


( )
J(Xi)

J-1(Xi)

Xi

1,200000

0,080000

2,400000

1,600000

Yi

0,800000

0,140000

1,900000

Xi+1

1,144118

0,004267

Yi+1

0,833824

-1

1() ()
1( ) ( )
J-1(Xi)*f(Xi)

Xi+1=Xi-(J-1(Xi)*f(Xi))

0,183824

0,294118

0,055882

1,144118

-1,000000

0,349265

-0,441176

-0,033824

0,833824

2,288235

1,667647

0,189740

0,316419

0,001798

1,142320

0,003123

1,788235

-1,000000

0,339299

-0,434169

0,000092

0,833732

1,142320

0,000003

2,284640

1,667463

0,190097

0,316980

0,000002

1,142318

0,833732

0,000003

1,784640

-1,000000

0,339255

-0,434304

0,000000

0,833732

1,142318

0,000000

2,284637

1,667464

0,190098

0,316981

0,000000

1,142318

0,833732

0,000000

1,784637

-1,000000

0,339255

-0,434304

0,000000

0,833732

-0,800000

0,080000

-1,600000

2,400000

-0,150602

-0,361446

0,009639

-0,809639

1,200000

-0,060000

-2,100000

-1,000000

0,316265

-0,240964

0,039759

1,160241

-0,809639

0,001674

-1,619277

2,320482

-0,152975

-0,354975

-0,000289

-0,809350

1,160241

0,000093

-2,119277

-1,000000

0,324196

-0,247709

0,000520

1,159721

-0,809350

0,000000

-1,618699

2,319443

-0,153071

-0,355040

0,000000

-0,809349

1,159721

0,000000

-2,118699

-1,000000

0,324312

-0,247776

0,000000

1,159721

1,300000

0,500000

2,600000

1,800000

0,156740

0,282132

0,146082

1,153918

0,900000

0,240000

2,100000

-1,000000

0,329154

-0,407524

0,066771

0,833229

1,153918

0,025798

2,307837

1,666458

0,187952

0,313213

0,011533

1,142386

0,833229

0,021340

1,807837

-1,000000

0,339786

-0,433761

-0,000491

0,833719

1,142386

0,000133

2,284772

1,667439

0,190086

0,316957

0,000067

1,142318

0,833719

0,000133

1,784772

-1,000000

0,339261

-0,434304

-0,000013

0,833732

1,142318

0,000000

2,284637

1,667464

0,190098

0,316981

0,000000

1,142318

0,833732

0,000000

1,784637

-1,000000

0,339255

-0,434304

0,000000

0,833732

1,400000

0,960000

2,800000

2,000000

0,135135

0,270270

0,227027

1,172973

1,000000

0,360000

2,300000

-1,000000

0,310811

-0,378378

0,162162

0,837838

1,172973

0,077838

2,345946

1,675676

0,183852

0,308077

0,030189

1,142784

0,837838

0,051541

1,845946

-1,000000

0,339381

-0,431307

0,004187

0,833651

1,142784

0,000929

2,285567

1,667303

0,190018

0,316818

0,000465

1,142318

0,833651

0,000911

1,785567

-1,000000

0,339291

-0,434300

-0,000081

0,833732

1,142318

0,000000

2,284637

1,667464

0,190098

0,316981

0,000000

1,142318

0,833732

0,000000

1,784637

-1,000000

0,339255

-0,434304

0,000000

0,833732

15

-0,900000

0,500000

-1,800000

2,600000

-0,128535

-0,334190

-0,084319

-0,815681

1,300000

0,060000

-2,300000

-1,000000

0,295630

-0,231362

0,133933

1,166067

16

-0,815681

0,025048

-1,631362

2,332134

-0,151470

-0,353247

-0,006305

-0,809376

10

11

12

13

14

217

Mtodos Numricos con MatLab

Ing.: Willam Caiza

1,166067

0,007110

-2,131362

-1,000000

0,322837

-0,247102

0,006330

1,159737

-0,809376

0,000080

-1,618752

2,319475

-0,153066

-0,355032

-0,000026

-0,809349

1,159737

0,000040

-2,118752

-1,000000

0,324308

-0,247775

0,000016

1,159721

-0,809349

0,000000

-1,618699

2,319443

-0,153071

-0,355040

0,000000

-0,809349

1,159721

0,000000

-2,118699

-1,000000

0,324312

-0,247776

0,000000

1,159721

-1,000000

0,960000

-2,000000

2,800000

-0,111111

-0,311111

-0,168889

-0,831111

1,400000

0,200000

-2,500000

-1,000000

0,277778

-0,222222

0,222222

1,177778

20

-0,831111

0,077906

-1,662222

2,355556

-0,148028

-0,348689

-0,021478

-0,809633

1,177778

0,028523

-2,162222

-1,000000

0,320070

-0,246056

0,017917

1,159861

21

-0,809633

0,000782

-1,619266

2,319721

-0,153013

-0,354949

-0,000283

-0,809350

1,159861

0,000461

-2,119266

-1,000000

0,324276

-0,247769

0,000139

1,159721

-0,809350

0,000000

-1,618699

2,319443

-0,153071

-0,355040

0,000000

-0,809349

1,159721

0,000000

-2,118699

-1,000000

0,324312

-0,247776

0,000000

1,159721

17

18

19

22

Este mtodo nos permite obtener un xi+1 un par ordenado (x, y) pero para representarlo
grficamente en Matlab debemos evaluar este x, y para obtener una z y graficar los puntos z =
(x, y) para las dos funciones f y g.

+1 2 + +1 2 2

z1=f(x, y)
0,004267
0,001674
0,025798
0,077838
0,025048
0,077906

+1 2 +1 0,5+1
+ 0,1

z2=f(x, y)
0,003122837
9,29017E-05
0,021339806
0,051541271
0,007109654
0,028523457

z1=f(x,y)
0,000000
0,000000
0,000000
0,000000
0,000000
0,000000

z2=f(x,y)
0
7,13318E-15
0
1,22402E-14
1,38778E-16
1,97065E-15

Grficamente en Matlab podemos observar los puntos (xx+1, yyi+1, z) e interpretar las
respuestas.

218

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Figura 1: Grfica de las funciones en Matlab.

PROGRAMA 1: Cdigo usado para graficar los puntos.


x=[-3:0.2:3];
y=[-3:0.2:3];
[X,Y]=meshgrid(x,y);
Z=X.^2+Y.^2-2;
mesh(X,Y,Z);
hold on
x1=x;
y1=y;
[X1,Y1]=meshgrid(x1,y1);
Z1=X.^2-Y-0.5*X+0.1;
mesh(X1,Y1,Z1);
hold on
x=[1.144118 -0.809639 1.13918 1.172973 -0.815681 -0.831111]
y=[0.833824 1.160241 0.833229 0.837838 1.166067 1.177778]
z=[0.004267 0.001674 0.025798 0.077838 0.025048 0.077906]
[X,Y,Z]=meshgrid(x,y,z)
plot3(x,y,z,'xr')
hold on
x=[1.144118 -0.809639 1.13918 1.172973 -0.815681 -0.831111]
y=[0.833824 1.160241 0.833229 0.837838 1.166067 1.177778]
z=[0.003123 0.000093 0.021340 0.051541 0.007110 0.028523]
[X,Y,Z]=meshgrid(x,y,z)
plot3(x,y,z,'*g')
hold on
x=[1.144118 -0.809639 1.13918 1.172973 -0.815681 -0.831111]
y=[0.833824 1.160241 0.833229 0.837838 1.166067 1.177778]
z=[0.000000 0.000000 0.000000 0.000000 0.000000 0.000000]
[X,Y,Z]=meshgrid(x,y,z)
plot3(x,y,z,'om')
hold on

Pero la interpretacin de estos puntos son los ms aproximados a la solucin del sistema, pero
debemos notar que su resultado final sera una serie de aproximaciones generadas

219

Mtodos Numricos con MatLab

Ing.: Willam Caiza

sucesivamente a partir de una aproximacin inicial a la solucin que generaran una curva
en la interseccin como se puede ver.

PROGRAMA 2: Cdigo usado para graficar la Curva.


x=[-3:0.2:3];
y=[-3:0.2:3];
[X,Y]=meshgrid(x,y);
Z=X.^2+Y.^2-2;
mesh(X,Y,Z);
hold on
x1=x;
y1=y;
[X1,Y1]=meshgrid(x1,y1);
Z1=X.^2-Y-0.5*X+0.1;
mesh(X1,Y1,Z1);
hold on
x=[1.144118 -0.809639 1.13918 1.172973 -0.815681 -0.831111]
y=[0.833824 1.160241 0.833229 0.837838 1.166067 1.177778]
z=[0.004267 0.001674 0.025798 0.077838 0.025048 0.077906]
[X,Y,Z]=meshgrid(x,y,z)
plot3(x,y,z,'r')
hold on
x=[1.144118 -0.809639 1.13918 1.172973 -0.815681 -0.831111]
y=[0.833824 1.160241 0.833229 0.837838 1.166067 1.177778]
z=[0.003123 0.000093 0.021340 0.051541 0.007110 0.028523]
[X,Y,Z]=meshgrid(x,y,z)
plot3(x,y,z,'g')
hold on
x=[1.144118 -0.809639 1.13918 1.172973 -0.815681 -0.831111]
y=[0.833824 1.160241 0.833229 0.837838 1.166067 1.177778]
z=[0.000000 0.000000 0.000000 0.000000 0.000000 0.000000]
[X,Y,Z]=meshgrid(x,y,z)
plot3(x,y,z,'m')
hold on

2. APLICACIONES DEL MTODO DE NEWTON-RAPHSON

220

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Son muy variadas las aplicaciones del mtodo de Newton. Para destacar est en la solucin
de problemas de flujos de potencia en ingeniera elctrica. Tambin se encuentran
aplicaciones mecnicas en la solucin de ecuaciones que determinan la posicin en la
dinmica de un mecanismo o sistema.
3. CONCLUSIN
El mtodo de newton es eficiente en la solucin de sistemas de ecuaciones no lineales,
converge muy rpidamente y proporciona una muy buena precisin en los resultados. El
mtodo se emplea en la solucin de problemas acadmicos y en problemas propios del
mundo real.
Note que el mtodo de Newton-Raphson no trabaja con intervalos donde nos asegure que
encontraremos la raz, y de hecho no tenemos ninguna garanta de que nos aproximaremos a
dicha raz. Desde luego, existen ejemplos donde este mtodo no converge a la raz, en cuyo
caso se dice que el mtodo diverge. Sin embargo, en los casos donde si converge a la raz lo
hace con una rapidez impresionante, por lo cual es uno de los mtodos preferidos.

221

Mtodos Numricos con MatLab

Ing.: Willam Caiza

ANEXO III: INTRODUCCIN A LA


PROGRAMACIN EN MATLAB
1. INTRODUCCIN
En el presente anexo, se har uso y se explicara Matlab ya que es uno de los principales
softwares de desarrollo para la ingeniera, entre sus principales caractersticas se hallan: la
manipulacin de matrices, la representacin de datos y funciones, la implementacin de
algoritmos, la creacin de interfaces de usuario (GUI) y la comunicacin con programas en
otros lenguajes y con otros dispositivos hardware. Matlab es al mismo tiempo un entorno y
un lenguaje de programacin. Uno de sus puntos fuertes es el hecho de que el lenguaje de
Matlab permite construir nuestras propias herramientas reusables.
La manera ms fcil de visualizar Matlab es pensar en l como en una calculadora
totalmente equipada, aunque, en realidad, ofrece muchas ms caractersticas y es mucho
ms verstil que cualquier calculadora. Matlab es una herramienta para hacer clculos
matemticos, e implementaciones complejas de programas de uso para la ingeniera cuyo
desarrollo se realiza con facilidad relativa.

222

Mtodos Numricos con MatLab

Ing.: Willam Caiza

1.1 CARACTERISTICAS BASICAS


1.1.1 COMANDOS BASICOS
Los comandos bsicos que se utilizan en Matlab son parecidos a los de cualquier
calculadora.
Operacin
Adicin
Sustraccin
Multiplicacin
Divisin
Potencia
Raz Cuadrada
Logaritmo Base 10
Logaritmo Natural
Exponencial
Funciones Trigonomtricas

Smbolo
+
*
/
^
sqrt( )
log10( )
log( )
exp( )
sin cos tan

Tabla 1.1 Comandos Bsicos en Matlab

1.2 CARACTERES ESPECIALES Y COMANDOS


Matlab distingue entre maysculas y minsculas. Las Flechas del teclado recuperan los
comandos anteriores.
Smbolo
%
;
\n
input()
clc
clear all
format rat
format short
223isp.()
num2str
help
plot()
hold on
hold off

Operacin
Smbolo de comentario (ignora la lnea)
Separacin de comandos. Si se coloca al final del comando, no se muestra el
resultado
Expresin de escape (lnea siguiente)
Nos permite obtener valores desde la consola
Borrar la pantalla
Limpiar toda la memoria
Resultado en fraccin
Resultado en decimales
Imprimir mensaje
Convertir numero a cadena
Permite obtener ayuda sobre un comando
Graficar
Mantener las anteriores graficas
No conservar las anteriores graficas
Tabla 1.2 Caracteres Especiales y comandos

2. VECTORES Y FUNCIONES
2.1 VECTORES
Para crear un vector se utiliza el operador dos puntos :
x=1:5
x=
1 2 3 4 5

223

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Tambin se puede indicar el paso de la sucesin de datos


x=1:0.5:3
x=
1 1.5 2 2.5 3

Mediante el uso de subndices, por ejemplo x(1) es el primer elemento, x(2) el segundo x(3)
ser el tercero y as sucesivamente
Por ejemplo:
x=1:0.4:5;
x(3)
ans=
1.8000

Para acceder a un bloque de elementos se usa el operador : por ejemplo, elementos


de la posicin 2 a la 5
x=1:0.4:5;
x (2:5)
ans=
1.4000 1.8000 2.2000 2.6000 3.0000

Tambin se puede utilizar la palabra clave end para encontrar elementos desde la
posicin deseada hasta el final, por ejemplo, elementos de la posicin 2 al final
x=1:0.5:5;
x (2: end)
ans=
1.5000.1 000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000

2.2 FUNCIONES
Las funciones son expresiones reusables, son una especie de objetos en las cuales se
programa secuencias que se repiten dentro de la aplicacin algunas veces
Ejemplo 2.1:
SUMA
clc;
clear all;
format rat;
var1=input('ingrese el primer sumando\n');
var2=input('ingrese el segundo sumando\n');
s=var1+var2;
disp(['la suma de: ' num2str(var1) ' + ' num2str(var2) ' = ' num2str(s)]);

[1]
[2]
[3]
[4]
[5]

EXPLICACION:

224

Mtodos Numricos con MatLab

Ing.: Willam Caiza

[1] Borra todas las variables, incluyendo las globales, y las funciones
[2] Matlab cuenta con distintos modos de trabajo, por defecto es el format short, para este
ejemplo se coloca el modo de trabajo en formato racional, es decir que expresa los nmeros
racionales como cocientes de enteros
[3] La funcin input permite ingresar por teclado los datos requeridos en el programa
[4]A la variable s se le asigna la operacin suma (var1+var2)
[5] La funcin disp de MATLAB se utiliza para mostrar un escalar, un mensaje (string), un
vector o una matriz.

Imagen 2.1: Ejecucin del programa

Como se observa en la fig. 2.1 mediante el uso de comandos bsicos y el ingreso de datos
por teclado se puede realizar distintas operaciones bsicas, en este caso una suma de
valores ingresados por teclado

FUNCIN
clc;
clear all;
funcion=input('Ingrese la funcion:','s');
f=inline(funcion);
a=input('Ingrese el valor inicial de x, a=\n');
b=input('Ingrese el valor final de x, b=\n');
paso=input('Ingrese el paso de [a,b]\n');
x=a:paso:b;
[filax columnax]=size(x);
for i=1:columnax
y(i)=f(x(i));
end
disp(['columna x columna y']);
disp([x' y']);

[1]
[2]

[3]

[4]

EXPLICACION:
[1] La funcin input permite ingresar por teclado los datos requeridos en el programa
[2] la funcin inline permite que la variable funcin sea reconocida como una expresin
matemtica
[3] Forma de expresar un vector

225

Mtodos Numricos con MatLab

Ing.: Willam Caiza

[4] La funcin disp de MATLAB se utiliza para mostrar un escalar, un mensaje (string), un
vector o una matriz.

Imagen2.2: Ejecucin del programa

Ejemplo 2.3:

GRAFICA PARABOLA
clc;
clear all;
funcion=input('Ingrese la funcion:','s');
f=inline(funcion);
tinicial=input('Ingrese el tiempo inicial:\n');
tfinal=input('Ingrese el tiempo final:\n');
t=tinicial:0.2:tfinal;
[filat columnat]=size(t);
for i=1:columnat
y(i)=f(t(i));
end
plot(t,y,'r');
disp(['columna t columna y']);
disp([t' y']);

[1]
[2]

[3]

[4]

EXPLICACION:
[1] La funcin Inline nos permite crear en la misma ventana de comandos, una corta
funcin que puede ser llamada de forma repetida
[2] Asignacion de datos a una variable
[3] Forma de expresar un vector
[4] La funcin disp imprime al vector

226

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Imagen 2.3: Ejecucion del Programa

El siguiente programa realiza el grafico de una funcin por medio del comando plot, el cual
toma los valores de la variable ingresada. De esta manera primero se ingresa la funcin
deseada y se ingresan los valores lmite para la variable.
Por medio del bucle for se evala la funcin de acuerdo a los valores que tome la variable
logrando as obtener los puntos para la grfica.
Ejemplo 2.4:
FUNCIN DE VARIAS VARIABLES
clc;
clear all;
funcion=input('Ingrese la funcion: ', 's');
f=inline(funcion);
disp(f(2,-2,3,-3))

[1]
[2]
[3]

EXPLICACION:
[1] Borra todas las variables, incluyendo las globales, y las funciones
[2] La funcin input permite ingresar por teclado los datos requeridos en el programa
[3] La funcin Inline nos permite crear en la misma ventana de comandos, una corta
funcin que puede ser llamada de forma repetida

227

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Imagen 2.4: Ejecucion del Programa

Para el siguiente programa se desea evaluar una funcin con varias variables, por medio del
comando inline se facilita el clculo. Se ingresa la funcin de varias variables y de acuerdo a
los valores constantes de cada variable se har el clculo.
3. MATRICES
Para trabajar con matrices se debe, ingresar sus valores por filas, cada valor de la fila deber
estar separada por espacio o por coma y cada fila se separa con un punto y coma como se
indica a continuacin:
>>A=[3 7;-1 2]
A=
3
-1

7
2

Para encontrar una posicin en especial de la matriz:


>>A(2,2)
Ans=
2

Ejemplo 3.1:
MATRIZ
clc;
clear all;
filas=input('Ingrese el numero de filas=\n');
columnas=input('Ingrese el numero de columnas=\n');
for i=1:filas
for j=1:columnas
etiqueta=['Ingrese la matriz A(' num2str(i) ',' num2str(j) ')='];
A(i,j)=input(etiqueta);
end
end
disp(A);

228

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Imagen 3.1: Ejecucion del Programa

El ejemplo ilustra la construccin de una matriz, para la cual se debe ingresar el nmero de
filas y columnas deseadas por medio del teclado
Por medio de un bucle se ingresan los datos que ocuparan cada posicin de la Matriz.

4 OPERADORES RELACIONALES
Permiten comparar datos, los resultados son valores lgicos, es decir: 1 (verdadero) o 0
(falso).

Imagen A1. Operadores relacionales

ESTRUCTURAS DE CONTROL
Matlab se manejan principalmente tres estructuras de control:

Decisin: if ... elseif ... else ... end

Repeticin un nmero fijo de veces: for ... end

229

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Repeticin bajo condiciones: while... end Se puede, pero no es habitual,


utilizar estas estructuras en la ventana de trabajo de Matlab.

CONDICIONAL
Si queremos ejecutar un conjunto de instrucciones en el caso de que se cumpla una
condicin, usaremos una estructura if.
La manera ms sencilla de usarla es la siguiente:

if expresion logica
Conjunto de ordenes (de Matlab)
end

El conjunto de ordenes se ejecuta si la expresin lgica es verdadera.


CONTROL DE FLUJO
MATLAB, al igual que la mayora de los lenguajes de programacin, incluye instrucciones
para el control del flujo de sus programas, incrementando de esta forma la potencia de los
clculos realizables.
BUCLES FOR
Estos bucles permiten la ejecucin de un comando o grupo de comandos, en base a un
nmero predeterminado de veces. Por ejemplo:

for i=1:n, x(i)=0, end

Asigna el valor 0 a los n primeros elementos del vector x. Si n es menor que 1, el comando
central no se ejecutar ninguna vez. Si x no existe, o bien tiene menos de n elementos, se
reservar memoria adicional de forma automtica.
Una prctica comn es la utilizacin de bucles anidados:
for i=1:m
for j=1:m
A(i,j)=1/(i+j-1) ;
end
end

Es importante no olvidar que cada sentencia for debe concluir con su end correspondiente.
BUCLES WHILE

230

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Los bucles WHILE permiten la ejecucin de un comando o grupo de comandos un nmero


indeterminado de veces bajo el control de una condicin lgica. Esto es, los comandos se
ejecutarn mientras se verifique dicha condicin.
Como ejemplo mostramos los comandos necesarios para averiguar cul es el primer nmero
entero cuyo factorial es un nmero de 100 dgitos:
n=1
while prod(1:n)< 1e100, n=n+1; end;

SENTENCIA IF
En su forma ms simple, la sentencia if se escribe en la siguiente forma (obsrvese que a
diferencia de C/C++/Java la condicin no va entre parntesis, aunque se pueden poner si
se desea):
if condicion
sentencias
end

Existe tambin la bifurcacin mltiple, en la que pueden concatenarse tantas condiciones


como se desee, y que tiene la forma:
if condicion1
bloque1
elseif condicion2
bloque2
else
[1]
bloque3
end
[1] opcin por defecto para cuando no se cumplen las condiciones 1 ni 2

La opcin por defecto else puede ser omitida: si no est presente no se hace nada en caso
de que no se cumpla ninguna de las condiciones que se han chequeado. Un ejemplo de uso
podra ser:
if I == J
A(I,J) = 2;
elseif abs(I-J) == 1
A(I,J) = -1;
else
A(I,J) = 0;
end

Es interesante aqu observar qu obtenemos al ejecutar las sentencias anteriores dentro de


dos bucles for anidados. Ejecutando help relop se puede obtener informacin sobre el
funcionamiento de los operadores relacionales utilizados en las sentencias de control.

231

Mtodos Numricos con MatLab

Ing.: Willam Caiza

5 INTRODUCCIN A LA INTERFACE GRFICA DE USUARIO (GUI)


Desde el punto de vista de la programacin, una GUI es una visualizacin grfica de una o
ms ventanas que contienen controles, llamados componentes, que permiten a un usuario
realizar tareas en forma interactiva.
GUI es un entorno de programacin grfica, que ofrece Matlab para poder realizar y
ejecutar diversos programas, el entorno de Matlab tiene las caractersticas bsicas de todos
los programas visuales como Visual Basic o Visual C++.

Para poder realizar un programa en GUI, se debe seguir los siguientes pasos:
1. En la ventana principal de Matlab, se debe ejecutar el comando guide, obteniendo
la siguiente ventana

Imagen 1: Comando Guide

Con las siguientes opciones, como se describe en el grafico anterior.


Elegimos la primera opcin, Blank GUI, y tenemos la siguiente ventana:

Imagen 2: Mascara De Interface De Matlab

232

Mtodos Numricos con MatLab

Ing.: Willam Caiza

2. En la ventana anterior se puede colocar diversos componentes predefinidos por


Matlab, los cuales podran ser:
Select

Push Button

Slider

Radio Button

Check Box

Edit Text

Static Text

Pop-up Menu

ListBox

Toggle Button

Table

Axes

Panel

ActiveX Control
Button Group
Imagen 3: Paleta de componentes

3. Grabar el archivo con la extensin predefinido por Matlab (.m).

Una aplicacin GUI consta de dos archivos uno cuya extensin es .m y otro cuya extensin
es .Imagen, la cual es la parte grafica del programa. Las dos partes estn unidas a travs de
las subrutinas callback. Una vez que se graba los archivos podemos ejecutar el programa
desde la ventana del comando de Matlab solamente escribiendo el nombre del archivo.
Por ejemplo si guardamos un archivo sumador.Imagen y sumador.m escribiendo sumador y
presionando enter se ejecuta el programa.

6 EJEMPLOS BASICOS A LA INTRODUCCION A MATLAB

Ejemplo 1:
En el ejemplo se hace uso de un pushbutton, edit y text, se ingresa un texto en
edit se hace click y el texto pasa a text.

233

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Pushbutton1
Edit1

Text1

Ejemplo 1: Interfaz

function pushbutton1_Callback(hObject, eventdata, handles)


objeto1=get(handles.edit1,'string');
set(handles.text1,'string',objeto1)

[1]
[2]

EXPLICACION:
[1] El mtodo get permite que la variable objetos1 guarda los datos escritos en el objeto edit1
[2] El mtodo set permite ingresar en el objeto text1 lo almacenado en la variable objeto1

Ejemplo 1: Ejecucin

Ejemplo 2:
El ejemplo hace uso del objeto axes, para graficar una funcin

234

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Pushbutton1
1

Axes1

Ejemplo 2: Interfaz

function pushbutton1_Callback(hObject, eventdata, handles)


x=linspace(0,10,100);
[1]
plot(handles.axes1,x,cos(x));
[2]

EXPLICACION:
[1] La funcin linspace (a,b,n) permite definir un intervalo y un nmero de puntos a
utilizarse en ese intervalo
[2] La funcin plot permite graficar en el objeto axes1 todos los puntos de la variable x en
base a la funcin coseno

Ejemplo 2: Ejecucin

Ejemplo 3:
Se hace uso de dos objetos axes, en el cual se puede ver su uso para realizar grficos.

235

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Pushbutton1
1

Axes1

Axes2

Ejemplo 3: Interfaz

function pushbutton1_Callback(hObject, eventdata, handles)


x=linspace(0,10,100);
[1]
plot(handles.axes1,x,cos(x));
[2]
plot(handles.axes2,x,x.^2);
[3]

EXPLICACION:
[1] La funcin linspace(a,b,n) permite definir un intervalo y un nmero de puntos a utilizarse en ese intervalo
[2] La funcin plot permite graficar en el objeto axes1 todos los puntos de la variable x en base a la funcin
coseno
[3] La funcin plot permite graficar en el objeto axes2 todos los puntos de la variable x en base a la funcin X^2

Ejemplo 3: Ejecucin

Ejemplo 4:
En el ejemplo se muestra un men de opciones de colores, que al elegir nos muestra el
color seleccionado.

236

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Popupmenu 1
1
Text 1
1
Ejemplo 4: Interfaz

PRIMERA FORMA:
function popupmenu1_Callback(hObject, eventdata, handles)
texto=get(handles.popupmenu1,'Value');
switch(texto)
case 1
color='y';
case 2
color='g';
case 3
color='b';
case 4
color= [ 1 0 1];
end
set(handles.text1,'Backgroundcolor',color);

[1]
[2]

EXPLICACION:
[1] El objeto popupmenu1 contiene un arreglo ordenado de nmeros (en este caso va del 1
al 4), y a cada posicin del arreglo le es asignado un nombre, la variable texto acoge la
opcin seleccionada
[2] La funcin switch permite seleccionar una accin en base a lo asignado en la variable
texto
SEGUNDA FORMA:
function popupmenu1_Callback(hObject, eventdata, handles)
clc;
contenido=get(hObject,'string');
valor=get(hObject,'Value');
texto=contenido(valor);
switch cell2mat(texto)
case 'Amarillo'
color='y';
case 'Verde'
color='g';
case 'Azul'
color='b';
case 'Rojo'
color='r';
end

[1]
[2]
[3]
[4]
[5]

237

Mtodos Numricos con MatLab

Ing.: Willam Caiza

set(handles.text1,'Backgroundcolor',color);

[6]

EXPLICACION:
[1] Vector de objetos amarillo, verde, azul
[2] La funcin hObject permite acceder a la variable contenido cuando el programa se encuentra en ejecucin
[3] Acceder a cada uno de los ndices
[4] Transforma la matriz de arrays en una matriz del tipo matemtico
[5] Si se escoge la opcin Amarillo, la variable color almacena la letra y
[6] El objeto text1 , con la funcin Backgroundcolor, cambia al color indicado por la variable color

OBSERVACIONES
Para los dems casos se repiten los mismas acciones realizadas en el literal [5]

Ejemplo 4: Ejecucin

Ejemplo 5:
En este ejemplo mostramos una lista con operaciones aritmticas, ingresando los nmeros
n1=5 y n2=10, procedemos a seleccionar una de las operaciones y ver su resultado.

Listbox 1

Text 2
1
Ejemplo 5: Interfaz

function listbox1_Callback(hObject, eventdata, handles)


contenido=get(hObject,'string')
a=get(hObject,'Value')
operaciones=contenido(a)
n1=5;
[1]
n2=10;
switch cell2mat(operaciones)

238

Mtodos Numricos con MatLab


case 'Suma'
res=n1+n2
case 'Resta'
res=n1-n2;
case 'Multiplicacion'
res=n1*n2;
case 'Divisin'
res=n1/n2;
end
set(handles.text2,'string',res);

Ing.: Willam Caiza

[2]

EXPLICACION:
[1] La variable n1 se encuentra inicializada con el numero 5

[2] A la variable res se le asigna una operacin matemtica (suma)

Ejemplo 5: Ejecucin

Ejemplo 6:

Uibuttongroup 1
Text 2
Radiobutton 1
Text 3

Pushbutton 1
Ejemplo 6: Interfaz

function pushbutton1_Callback(hObject, eventdata, handles)


estado = get(handles.radiobutton1,'Value');
if estado==1
set(handles.text3,'String', 'Sopa');
end

[1]
[2]
[3]

239

Mtodos Numricos con MatLab

Ing.: Willam Caiza

estado = get(handles.radiobutton2,'Value');
if estado==1
set(handles.text3,'String', 'Sandwich');
end

EXPLICACION:
[1] La funcin valu permite comprobar si ha sido seleccionado el radiobuton, entonces la
variable "estado se le asigna el numero 1
[2] Si la variable estado es 1 entonces asido seleccionado radiobuton 1
[3] En el objeto text3 se visualizara la el mensaje "Sopa", caso contrario la otra opcin

Ejemplo 6: Ejecucin

Ejemplo 7:
Uso de un Radio Button para cambiar el tamao de letra en un mensaje

Buttongroup 1
Text 1

Radiobutton

Ejemplo 7: Interfaz
function uibuttongroup1_SelectionChangedFcn(hObject, eventdata, handles)
A=get(hObject,'String');
[1]
switch A
case '10'
set(handles.text1,'FontSize',10);
[2]
case '14'
set(handles.text1,'FontSize',14);
[3]

240

Mtodos Numricos con MatLab


case '18'
set(handles.text1,'FontSize',18);
end

Ing.: Willam Caiza

[4]

EXPLICACION:
[1] La variable A almacena la opcin seleccionada en el radio button
[2] La funcin Fotsize permite seleccionar el tamao de la letra en base a la variable A, si
A=10 entonces el tamao de la letra cambia a 10
[3] Si A = 14 cambia el tamao de la letra del texto
[4] Si A = 18 cambia el tamao de la letra del texto
OBSERVACIONES:
El siguiente ejemplo ilustra el uso de un Radio Button para cambiar el tamao de letra en un
mensaje, para ello es necesario tener presente las siguientes definiciones:
Button Group: Solo se puede tener un Button Group en la Gui, permite exclusividad de seleccin con
los radio button.
Radio Button: Indica una opcin que puede ser seleccionada y realiza una accin determinada.

Ejemplo 7: Ejecucin

Ejemplo 8:

Realizaremos un ejemplo de cmo usar el check Box.


1. Creamos una nuevo Gui y colocamos cada elemento que usaremos.
2. Realizamos el algoritmo que muestre la funcin de cada elemento

241

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Uibuttongroup 1
Axes 1

Radiobutton 1

Checkbox 1
Ejemplo 8: Interfaz

function uibuttongroup1_SelectionChangedFcn(hObject, eventdata, handles)


A=get(hObject,'String');
switch A
case 'Seno'
ezplot('sin(x)',[0 10]);
case 'Coseno'
ezplot('cos(x)',[0 10 ]);
case 'Tangente'
ezplot('tan(x)',[0 10]);
end
function checkbox1_Callback(hObject, eventdata, handles)
valor=get(hObject,'Value');
if valor==1
grid on;
else
grid off;
end

[1]

[2]

[3]
[4]

EXPLICACION:
[1] Uibuttongropu1 contiene a un grupo de radiobutton, y asu vez permite que solo un
radiobutton pueda ser seleccionado a la vez
[2] Permite graficar la funcin en base al interval dado
[3] La funcin grid on permite mostrar lneas de la cuadrcula
[4] La funcin grid on permite ocultar lneas de la cuadrcula
OBSERVACIONES:
Check Box: Indica el estado (on off) de un atributo, y
Toggle Button: Un botn con solo 2 estados (on off)

242

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Ejemplo 8: Ejecucin

Ejemplo 9:
Para realizar el ejemplo se realiza lo siguiente:
1. Creamos una nuevo Gui y colocamos cada elemento que usaremos.
2. Realizamos el algoritmo que muestre la funcin de cada elemento

Slider1

Axes1

Ejemplo 9: Interfaz

function slider1_Callback(hObject, eventdata, handles)


A=get(hObject,'Value');
x=linspace(0,10,100);
y=A*sin(A*x);
plot(x,y);

[1]
[2]
[3]

EXPLICACION:
[1] En este ejemplo se muestra como poder aumentar o disminuir la ampliacin de una

grfica con el uso de Slide.

243

Mtodos Numricos con MatLab

Ing.: Willam Caiza

[2] La variable A evala las acciones hechas en el slider1


[3] A la variable y se le asigna el producto de A por la funcin seno
OBSERVACIONES:
Slider: Es una barra que nos permite deslizarnos para aumentar o disminuir el rango de
valores.

Ejemplo 9: Ejecucin

3.
Ejemplo 10:
4.
Realizaremos un ejemplo de cmo usar tablas.
1. Creamos una nuevo Gui y colocamos cada elemento que usaremos.
2. Realizamos el algoritmo que muestre la funcin de cada elemento.

Uitable1

Ejemplo 10: Interfaz

function pushbutton1_Callback(hObject, eventdata, handles)


A={'Pedro' 'Ana' 'David' 'Gabriela'};
[1]
P={10 20 15 12};
[2]
datos=[A' P'];
[3]
set(handles.uitable1,'data',datos);

244

Mtodos Numricos con MatLab

Ing.: Willam Caiza

EXPLICACION:
[1] A es un vector de string
[2] P es un vector de numeros
[3] A' es la transpuesta del vector A , P' es la transpuesta del vector P , la variable datos une
la transpuesta del vector A y la transpuesta del vector P

Ejemplo 10: Ejecucin

Ejemplo 11:
A continuacin realizaremos el algoritmo de la suma de 2 variables
1. Como muestra la figura 11.1 procedemos a insertar los objetos necesarios.
2. De la paleta de componentes escogemos dos edit text, los cuales seran edit1 y
edit2 respectivamente, insertamos un push button y dos static text.

Figura 11.1: componentes para la interface

3. Al guardar el archivo, Matlab internamente crea el cdigo necesario de los objetos


insertados para proceder a utilizarlos y manipular los objetos insertados en la
fig.11.1
OBSERVACION:

245

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Generalmente se programara dentro de la function pushbutton1_Callback (hObject,


eventdata, handles).

Text 6

text2

Edit 2

Edit 1
Pushbutton 1
Text 4

Text 5

Ejemplo 11: Interfaz


function pushbutton1_Callback(hObject, eventdata, handles)
valor1=str2double(get(handles.edit1,'string'));
valor2=str2double(get(handles.edit2,'string'));
suma=valor1+valor2;
set(handles.text5,'string',suma);

[1]
[2]
[3]

EXPLICACION:
[1] Al valor1 se le asigna el contenido del objeto edit1
La funcin str2double realiza la transformacin de string a un valor numrico;
La funcin get es la funcin por medio de la cual obtenemos los valores ingresados por el usuario
[2] Suma=valor1+valor2, realiza la respetiva suma.
[3] La funcin set (colocar), muestra los resultados obtenidos en el programa por medio del objeto text2.

Ejemplo 12: Ejecucin del algoritmo de la suma

Ejemplo 12:

246

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Algoritmo de Suma y Promedio.

Text 2
Text 6

Pushbutton 1

Text 5

Ejemplo 12: Interfaz


function pushbutton1_Callback(hObject, eventdata, handles)
n=str2double(inputdlg('cuantos numeros desea ingresar'));
for i=1:n
etiqueta1=['Ingrese dato(' num2str(i) ')'];
datos(i)=str2double(inputdlg(etiqueta1));
end
s=0;
for i=1:n
s=s+datos(i);
end
promedio=s/n;
set(handles.text5,'string',s);
set(handles.text6,'string',promedio);

[1]
[2]
[3]
[4]

[5]
[6]

Ejemplo 22: Ejecucin

EXPLICACION:
[1] inputdlg aparece un cuadro de dialogo donde idicamos cuantos datos se ingresaran
[2]Utilizamos el comando for end, para poder ingresar los datos al programa.
[3] la variable "etiqueta1" indica el orden de los datos
[4] el arreglo datos(i), aparece un cuadro de dilogo que acojera todos los datos que
ingresemos
[5] Utilizamos la variable s como inicializador de la suma de los nmeros ingresados,
mediante la cual podemos realizar la suma de los datos.

247

Mtodos Numricos con MatLab

Ing.: Willam Caiza

[6] calculamos el promedio, utilizando la suma anterior dividida para el nmero de datos
ingresados.

Ejemplo 32: Ejecucin

Ejemplo 12: Ejecucin de algoritmo suma y promedio

Ejemplo 13:
Programa Para Sumar o Multiplicar Datos en un listbox

248

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Uipanel 1
Pushbutton 1

Edit 1
Pushbutton 2

Listbox 1

Pushbutton 3

Text 1

Ejemplo 43: Interfaz

function pushbutton1_Callback(hObject, eventdata, handles)


dato=get(handles.edit1,'String');
old_dato=get(handles.listbox1,'String');
new_dato=strvcat(old_dato,dato);
set(handles.listbox1,'String',new_dato);

[1]
[2]
[3]
[4]

EXPLICACION:
[1] Se importan los datos del edit1
[2]Se importa el dato ingresado del Listbox1
[3]Se crea un nuevo dato concatenando verticalmente los datos del Listbox1 con el
comando strvcat.
[4]Se imprimen los datos concatenados en el Listbox1.
SUMA

249

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Ejemplo 53.1: Ejecucin Suma

function pushbutton2_Callback(hObject, eventdata, handles)


acum=0;
x=str2num(get(handles.listbox1,'string'));
for i=1:length(x)
acum=acum+x(i);
end
set(handles.text1,'string',acum);

[1]
[2]
[3]

EXPLICACION:
[1] Se crea un acumulador que este igualado a 0,
[2] Se asigna a una variable los datos encontrados en el Listbox
[3] Se crea un bucle con un For que empiece desde 1 y recorra hasta el nmero de datos
ingresados en el Listbox
[4] Dentro del for se acumulan los datos (acum=acum+ datos), de esta manera los datos
quedan sumados.
MULTIPLICACIN

250

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Ejemplo 63.2: Ejecucin Multiplicacin

function pushbutton3_Callback(hObject, eventdata, handles)


mul=1;
x=str2num(get(handles.listbox1,'string'));
for i=1:length(x)
mul=mul*x(i);
end
set(handles.text1,'string',mul);

[1]
[2]
[3]
[4]

EXPLICACION:

[1]Se crea una variable que este igualado a 1 ya que con esta variable vamos a
realizar las multiplicaciones y la multiplicacin por 0 es 0,
[2] Se coloca en una variable los datos encontrados en el Listbox
[3] se crea un For que empiece desde 1 y recorra hasta el nmero de datos
ingresados en el Listbox
[4] Dentro del for se multiplican los datos (mul=mul*datos
Ejemplo 14:
Importacin y exportacin de datos entre Excel y Matlab

251

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Pushbutton 1

Pushbutton 2

Text 2

Text 3

Uitable 1

Ejemplo 14: Interfaz

function pushbutton1_Callback(hObject, eventdata, handles)


Ruta=inputdlg('Ingrese ruta de archivo xlsx(con extensin)');
set(handles.text2,'string',Ruta);
A=cell2mat(Ruta);
B=xlsread(A);
set(handles.uitable1,'data',B);
function pushbutton2_Callback(hObject, eventdata, handles)
B=get(handles.uitable1,'data');
Ruta2=inputdlg('Ingrese ruta de destino (con extensin):');
set(handles.text3,'string',Ruta2);
C=cell2mat(Ruta2);
xlswrite(C,B);

[1]
[2]
[3]
[4]

[5]
[6]
[7]
[8]

EXPLICACION:
[1] Se utiliza la funcin inputdlg para ingresar por un cuadro de dilogo la direccin del
archivo a leer
[2] Se usa la funcin cell2mat en la variable ruta para convertir el vector tipo cell a vector
normal.
[3] Se usa la funcin xlsread para importar los datos desde la ruta ingresada.
[4] En la quinta lnea presentamos los datos importados en una tabla de datos.
Botn 2:
[5] Se obtienen los datos de la tabla.
[6] se ingresa la ruta de destino para el nuevo archivo
[7] Se utiliza usamos la funcin cell2mat para convertir el vector tipo cell a vector normal.
[8] Se exporta el archivo, con la funcin xlswrite, a la ruta ingresada con los datos obtenidos.

252

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Ejemplo 14: Importacin y Exportacion

Ejemplo 14: Ejecucin

Ejemplo 15:

253

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Uso de Axes
Mediante el uso del axes en el entorno grafico guide del Matlab nosotros podemos crear la
grfica de una funcin que ingresemos:
Para obtener un axes presionamos el botn indicado por la flecha en el entorno grafico
guide:

Pushbutton 1

Axes 1

Ejemplo 15: Uso de Axes Interfaz

function pushbutton1_Callback(hObject, eventdata, handles)


funcion=char(inputdlg('ingrese la funcion'));
f=inline(funcion);
etiqueta1=['(x)inicial'];
xi =str2double(inputdlg(etiqueta1));
etiqueta2=['(x)final'];
xf =str2double(inputdlg(etiqueta2));
x=xi:0.1:xf;
[f1 c]=size(x);
for i=1:c
y(i)=f(x(i));
end
plot(handles.axes1,x,y ,'g');
hold on;
plot(handles.axes1,[min(x) max(x)],[0 0],'r');
plot(handles.axes1,[0 0], [min(y) max(y)], 'r');
xlabel('x')
ylabel('y')

[1]
[2]

[3]

[4]

EXPLICACION:
[1] Usamos la funcin (char) para convertir la funcin en una cadena de caracteres y poder
evaluarla

254

Mtodos Numricos con MatLab

Ing.: Willam Caiza

[2] Ingresamos los datos para poder evaluar la funcin mediante etiquetas:
[3]Mediante un (for) Definimos el vector para poder realizar las graficas.
[4]Mediante la funcin plot dibujamos un vector de valores (y) en ordenadas frente a otro
vector(x) en las abscisas. Ambos vectores tienen el mismo nmero de elementos.
OBSERVACIONES:

La funcin hold on, nos permite dibuja barias lneas en una misma figura.
La funcin lebel podemos poner nombre a los ejes de la grafica

Tambin es posible cambiar el color y la forma de la grafica

Colores: 'r'(rojo), 'b'(azul), 'g'(verde), 'y'(amarillo), 'k'(negro), 'm'(morado),


'w'(blanco), 'c'(celesta),

Ejemplo 15: Ejecucin

Ejemplo 16:
Uso del Uitable
Uitable es una funcin del entorno grafico de Matlab que enumera los datos ingresados o
enumera los resultados de un programa.
Para obtener un uitable presionamos el botn indicado en el entorno grafico guide:

255

Mtodos Numricos con MatLab

Ing.: Willam Caiza

Uipanel 1

Pushbutton 1

Uitable 1

Axes 1
Uipanel 2
Uitable 2

Ejemplo 16: Uso de Uitable Interfaz

function pushbutton1_Callback(hObject, eventdata, handles)


funcion=char(inputdlg('ingrese la funcion'));
f=inline(funcion);
etiqueta1=['(x)inicial'];
xi =str2double(inputdlg(etiqueta1));
etiqueta2=['(x)final'];
xf =str2double(inputdlg(etiqueta2));
x=xi:0.1:xf;
[f1 c]=size(x);
for i=1:c
y(i)=f(x(i));
end
plot(handles.axes1,x,y);
hold on;
plot(handles.axes1,[min(x) max(x)],[0 0],'r');
plot(handles.axes1,[0 0], [min(y) max(y)], 'r');
datos1=[x' y'];
datos2=[xi xf'];
set(handles.uitable1, 'ColumnName', {'x','y'});
set(handles.uitable1,'data', datos1);
set(handles.uitable2, 'RowName', {'X0','Xf'});
set(handles.uitable2,'data',datos2 );
xlabel('x')
ylabel('y')

[1]
[2]

[3]

EXPLICACION:
[1] Ingresamos la funcion en el inputdlg
[2] La funcin Inline permite que la variable funcin se con vierta en una expresin matemtica
[3] [m,n] = size(X) [m,n] = size(X) devuelve el tamao de la matriz X en las
independientes m y n

variables

OBSERVACIN:
Se puede poner nombres a las filas o columnas de nuestra uitable mediante las funciones :

256

Mtodos Numricos con MatLab

Ing.: Willam Caiza

'ColumnName': La cual nos sirve para nombrar las columnas.


'RowName: La cual usamos para nombrar las filas.

Ejemplo 16: Ejecucin

Ejemplo 17:
Uso del elemento Checkbox y Msgbox

Text 2

Checkbox 1

Ejemplo 17: Uso de Checkbox y Msgbox Interfaz

function checkbox1_Callback(hObject, eventdata, handles)


if (get(hObject,'Value') == get(hObject,'Max'))
msgbox('Seleccionado');
else
msgbox('No seleccionado');
end

[1]
[2]

257

Mtodos Numricos con MatLab

Ing.: Willam Caiza

EXPLICACION:
[1] En la primera lnea de cdigo creamos una sentencia if (de condicin) para obtener el valor numrico del
elemento checkbox ( 1 como verdadero y cero como falso).
[2]Se enva un cuadro de mensaje, con la sentencia msgbox, enviando Seleccionado si es nmero 1 No
seleccionado si es cualquier otro nmero.

Ejemplo 17: Ejecucin

258

S-ar putea să vă placă și