Sunteți pe pagina 1din 88

METODOS NUMERICOS

Gilberto Aguilar Miranda


Febrero, 2010
2
Indice general
1. CONCEPTOS DE PROGRAMACION 1
1.1. Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Errores de redondeo y truncamiento . . . . . . . . . . . . . . 3
1.2.1. N umeros enteros y reales en el sistema binario . . . . 3
1.2.1.1. N umeros enteros . . . . . . . . . . . . . . . . 3
1.2.1.2. N umeros reales . . . . . . . . . . . . . . . . . 3
1.2.2. Cifras signicativas y error de redondeo . . . . . . . . 4
1.2.3. Error de truncamiento . . . . . . . . . . . . . . . . . . 5
1.2.4. Errores absoluto y relativo . . . . . . . . . . . . . . . 6
1.2.5. Propagacion del error . . . . . . . . . . . . . . . . . . 7
1.3. Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4. Funciones propias del lenguaje . . . . . . . . . . . . . . . . . 13
1.5. Sentencias de seleccion y repeticion . . . . . . . . . . . . . . . 14
1.6. ARREGLOS . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2. ESTRUCTURACION DE FUNCIONES Y PROGRAMAS 25
2.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2. SUBPROGRAMAS . . . . . . . . . . . . . . . . . . . . . . . 30
2.2.1. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.1.1. Funciones internas . . . . . . . . . . . . . . . 32
2.2.1.2. Funciones escritas por el programador . . . . 33
2.2.1.3. Procedimientos . . . . . . . . . . . . . . . . . 35
3. RAICES DE ECUACIONES 39
3.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2. Metodos de intervalos . . . . . . . . . . . . . . . . . . . . . . 41
3.2.1. Metodo de biseccion . . . . . . . . . . . . . . . . . . . 41
3.2.2. Metodo de la falsa posicion . . . . . . . . . . . . . . . 42
3.3. METODOS ABIERTOS . . . . . . . . . . . . . . . . . . . . . 43
3
4 INDICE GENERAL
3.3.1. Iteracion de punto jo . . . . . . . . . . . . . . . . . . 43
3.3.1.1. Criterio de convergencia . . . . . . . . . . . . 45
3.3.2. Metodo de Newton-Raphson . . . . . . . . . . . . . . 47
3.4. Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4. SISTEMAS DE ECUACIONES LINEALES 53
4.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.2. Eliminacion de Gauss . . . . . . . . . . . . . . . . . . . . . . 54
4.3. Metodo de Gauss-Jordan . . . . . . . . . . . . . . . . . . . . 54
4.4. Metodo de la inversa . . . . . . . . . . . . . . . . . . . . . . . 54
4.5. Metodo de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . 54
4.6. Aplicaciones a la ingeniera . . . . . . . . . . . . . . . . . . . 55
5. AJUSTE DE CURVAS E INTER instrumentsPOLACION 57
6. DIFERENCIACION E INTEGRACION NUMERICA 59
6.1. Derivacion numerica . . . . . . . . . . . . . . . . . . . . . . . 60
6.1.1. Formulas de alta exactitud . . . . . . . . . . . . . . . 60
6.1.2. Datos irregularmente espaciados . . . . . . . . . . . . 61
6.2. Integracion numerica . . . . . . . . . . . . . . . . . . . . . . . 63
6.2.1. Metodo del trapecio . . . . . . . . . . . . . . . . . . . 63
6.2.2. Metodo de Simpson de 1/3 y 3/8 . . . . . . . . . . . . 65
6.2.3. Intervalos desiguales . . . . . . . . . . . . . . . . . . . 65
6.3. Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7. ECUACIONES DIFERENCIALES PARCIALES 67
7.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.2. Metodos de un paso . . . . . . . . . . . . . . . . . . . . . . . 70
7.2.1. Metodo de Euler . . . . . . . . . . . . . . . . . . . . . 70
7.2.2. Metodo de Euler mejorado . . . . . . . . . . . . . . . 71
7.2.3. Metodo de Runge-Kutta . . . . . . . . . . . . . . . . . 72
7.2.4. Sistemas de ecuaciones diferenciales . . . . . . . . . . 76
7.3. Metodos de pasos m ultiples . . . . . . . . . . . . . . . . . . . 78
7.4. Aplicaciones a la ingeniera . . . . . . . . . . . . . . . . . . . 79
Lista de Figuras
1.1. Sentencia if . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2. Sentencia if else . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3. Sentencia if elseif . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.1. Proceso de dise no de programas . . . . . . . . . . . . . . . . . 27
2.2. Llamada a un subprograma . . . . . . . . . . . . . . . . . . . 31
2.3. Graca con el comando plot(Y) . . . . . . . . . . . . . . . . . 36
2.4. Graca con el comando plot(X,Y) . . . . . . . . . . . . . . . 36
2.5. Graca con el comando plot y parametros . . . . . . . . . . . 37
3.1. Graca de las funciones . . . . . . . . . . . . . . . . . . . . . 40
3.2. Convergencia de punto jo . . . . . . . . . . . . . . . . . . . . 46
3.3. Convergencia de punto jo . . . . . . . . . . . . . . . . . . . . 46
3.4. Graca de las funciones . . . . . . . . . . . . . . . . . . . . . 48
6.1. datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.2. segmentos de integracion . . . . . . . . . . . . . . . . . . . . . 66
7.1. Sistema masa-resorte-amortiguador . . . . . . . . . . . . . . . 69
7.2. Familia de curvas . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.3. Obtencion de una aproximacion en metodos de un paso . . . 71
7.4. Metodo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.5. Metodo de Heun . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.6. Graca de la solucion a la ecuacion diferencial del ejemplo . . 76
5
6 LISTA DE FIGURAS
Lista de Tablas
1.1. Errores de truncamiento, ejemplo 1 . . . . . . . . . . . . . . . 6
7.1. Resultados de la solucion a una ecuacion diferencial por el
metodo de Runge-Kutta de 4
o
orden . . . . . . . . . . . . . . 76
7.2. Resultados de solucion a ejemplo de sistema de ecuaciones
m ultiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7
8 LISTA DE TABLAS
Unidad 1
CONCEPTOS DE
PROGRAMACION
1
2 UNIDAD 1. CONCEPTOS DE PROGRAMACION
1.1. Algoritmos
Algunas deniciones de algoritmo:
Un algoritmo es un metodo para resolver un problema.
Un algoritmo es una secuencia de pasos para resolver un problema.
Caractersticas de los algoritmos:
Un algoritmo debe ser preciso e indicar el orden de realizacion de cada
paso.
Un algoritmo debe ser denido. Si se sigue el algoritmo dos veces con
las mismas entradas, se debe obtener el mismo resultado cada vez.
Un algoritmo debe ser nito. Si se sigue un algoritmo, se debe terminar
en alg un momento
La denicion de un algoritmo debe describir tres partes: la entrada, el
proceso y la salida.
Los algoritmos se pueden escribir con diferentes tecnicas. En este curso se
utilizara la tecnica de seudocodigo, que se denira mas adelante.
1.2. ERRORES DE REDONDEO Y TRUNCAMIENTO 3
1.2. Errores de redondeo y truncamiento
Las soluciones calculadas por la computadora no son soluciones exactas.
La exactitud de una solucion numerica puede verse disminuida por difer-
entes factores, en esta seccion se analizan algunas de las fuentes de los errores
1.2.1. N umeros enteros y reales en el sistema binario
Las computadoras y calculadoras utilizan el sistema numerico binario
(sistema de base 2) para la representacion de los n umeros.
1.2.1.1. N umeros enteros
Los n umeros enteros decimales se representan de manera exacta en la
computadora, si el n umero a representar esta en el rango permitido. Si se
utilizan 16 dgitos binarios para la representacion de un n umero entero con
signo, uno de estos dgitos se utiliza para el signo y el resto para la mantisa.
El rango de valores que se pueden almacenar con estos 16 dgitos binarios
es de 2
15
1 a 2
15
, o sea, de 32767 a -32768.
1.2.1.2. N umeros reales
Los n umeros reales se pueden representar en una notacion llamada
de punto otante (o coma otante). En esta notacion, los n umeros se
representan por medio de una mantisa y un exponente en la forma m b
e
,
donde m es la mantisa, b el exponente y e el exponente. La mantisa es un
n umero fraccionario en el cual la primera cifra a la derecha del punto es
diferente de cero.
Por ejemplo, en el sistema decimal:
n umero en punto otante
32.524 0,32524 10
2
0.00254689 0,254689 10
2
En el sistema binario se sigue la misma forma, con la salvedad de que la
base en lugar de ser 10, es 2.
En una computadora, se utiliza un n umero determinado de dgitos binarios
en la representacion de punto otante. Algunos de estos dgitos se asignan
para la mantisa, otros para el exponente y dos para los signos (de la mantisa
4 UNIDAD 1. CONCEPTOS DE PROGRAMACION
y del exponente). Puesto que el n umero de dgitos de la mantisa es nito,
al representar algunos n umeros reales decimales en la computadora no es
posible una representacion exacta, esto es, se pierden dgitos en la repre-
sentacion en la computadora.
Por ejemplo, la siguiente suma realizada en octave da:
300000

k=1
1
3
= 99999,9999996892
en lugar de 100 000.
La forma en punto otante puede introducir un error en la representacion
de los n umeros, esto se debe, a que el n umero de dgitos de la mantisa es
nito.
Antes de estudiar esta situacion, se introduce el concepto de cifras signica-
tivas.
1.2.2. Cifras signicativas y error de redondeo
La cantidad de cifras signicativas de un n umero aproximado, es la
cantidad de cifras de la aproximacion que se conoce con certidumbre, mas
una estimada.
Por ejemplo, al armar que la medicion de cierta longitud es 15.4 cm., se
quiere decir que sobre el valor 15 tenemos certeza, mientras que el decimal
4 es un tanto ambiguo y esta afectado de cierto error. Solo se puede armar
que la longitud esta entre 15.35 y 15.45, presentandose una incertidumbre
de 0.1 cm.
Algunos autores consideran que el numero de cifras signicativas como el
numero de cifras que se conoce con certidumbre.
Como ya se indico anteriormente, los n umeros reales se pueden rep-
resentar por medio de una mantisa y un exponente en la forma decimal
normalizada como:
p = 0.d
1
d
2
d
3
d
k
d
k+1
10
n
(1.1)
donde d
1
{1, 2, , 8, 9} y d
k
{0, 1, , 8, 9} para k > 1
0.d
1
d
2
d
3
d
k
d
k+1
es la mantisa y n es el exponente. Si se limita la
mantisa a un n umero k de cifras, se obtiene la representacion en la forma
conocida como de punto otante, tambien llamada de coma otante. La
exactitud de la representacion de un n umero esta limitada por el valor de
k, esto es, la cantidad de cifras de la mantisa.
1.2. ERRORES DE REDONDEO Y TRUNCAMIENTO 5
Por ejemplo, el n umero real
p =
16
7
= 2,2857142857143
se puede representar en punto otante con ocho cifras signicativas en dos
formas, con redondeo por recorte o con redondeo simetrico.
En la forma de recorte, solo se toma las primeras ocho cifras signicativas
del n umero y se desecha el resto
p = 0,22857142 10
1
En la forma de redondeo simetrico, el valor de la primera cifra a desechar
(la novena en este caso) dene el valor de la ultima cifra a conservar, si es
cinco o mayor, se incrementa el valor de la ultima cifra a conservar, en caso
contrario se deja igual
p = 0,22857143 10
1
El n umero anterior representado en punto otante con cinco cifras signi-
cativas es el mismo en ambas formas de redondeo, recorte y simetrico, ya
que la primera cifra a desechar es un 1.
p = 0,22857 10
1
Por lo anterior la representacion de los n umeros en punto otante intro-
duce un error, a este error le conoce como error de redondeo. La mayora
de las calculadoras y lenguajes de programacion utilizan la representacion
de n umeros reales en la forma de punto otante con redondeo simetrico.
Es importante anotar que algunos autores llaman al redondeo por recorte,
simplemente recorte, o poda, o truncamiento; y al redondeo simetrico
simplemente redondeo.
1.2.3. Error de truncamiento
Cuando una expresion matematica se reemplaza por una formula mas
simple, se introduce un error, conocido como error de truncamiento.
Por ejemplo, el calculo de e
x
con la serie de Taylor es:
e
x
= 1 + x +
x
2
2
+
x
3
6
+
x
4
24
+
x
5
120
+
x
6
720
+
6 UNIDAD 1. CONCEPTOS DE PROGRAMACION
Una aproximacion a e
x
se obtiene al utilizar unicamente algunos de los
terminos de la serie. Es de esperar, que al aumentar el n umero de elementos
de la serie en una aproximacion, la aproximacion obtenida tenga menos error.
Ejemplo 1. Aproximar e
0,1
con cuatro, cinco y seis elementos de la serie
y ocho cifras signicativas. Comparar el resultado con el valor a 14 cifras
signicativas e
0,1
= 1,1051709180756.
Solucion:
La serie de Taylor de e
x
es:
e
x
= 1 + x +
x
2
2
+
x
3
6
+
x
4
24
+
x
5
120
+
x
6
720
+
Aproximacion con los primeros cuatro terminos de la serie
e
0,1
1 + 0,1 + 0,005 + 1,6666667 10
4
= 1,1051667
Aproximacion con los primeros cinco terminos de la serie
e
0,1
1 + 0,1 + 0,005 + 1,6666667 10
4
+ 4,16666667 10
6
= 1,1051708
Aproximacion con los primeros cinco terminos de la serie
e
0,1
1+0,1+0,005+1,666666710
4
+4,1666666710
6
+8,333333310
8
= 1,1051709
Los resultados se resumen en la tabla 1.1
Tabla 1.1: Errores de truncamiento, ejemplo 1
terminos aproximacion E
t

t
4 1.1051667 0.0000042180756 0.000003817
5 1.1051708 0.0000001180756 0.000000106
6 1.1051709 0.0000000180756 0.000000016
1.2.4. Errores absoluto y relativo
Si p es una aproximacion al n umero p, se dene dos errores
El error absoluto E = |p p| que indica la distancia entre el valor
exacto y la aproximacion.
1.2. ERRORES DE REDONDEO Y TRUNCAMIENTO 7
El error relativo e =
|p p|
|p|
que mide el error como una porcion del
valor exacto.
Ejemplo, si p = 3,14159265 y p = 3,14, el error absoluto es
E = |3,14159265 3,14| = 0,001593
y el error relativo
e =
|3,14159265 3,14|
|3,14159265|
=
0,001593
3,14159265
= 0,00569240810
En general se preere trabajar con el error relativo, ya que esta rela-
cionado directamente con la magnitud de las cantidades que se consideran.
Un n umero p es una aproximacion a un n umero p con d cifras signica-
tivas si d es el mayor n umero natural tal que
|p p|
|p|
<
10
d+1
2
Ejemplos:
1. Si p = 1,4142125623731 y p = 1,4142,
|1,4142125623731 1,4142|
|1,4142125623731|
=
1,35623731
1,4142
= 9,59 10
6
<
10
4
2
entonces, d = 5. Por lo tanto, p es una aproximacion a p con cinco
cifras signicativas.
1.2.5. Propagaci on del error
Los diferentes errores en los valores utilizados en una cadena de
operaciones sucesivas puede incrementarse o inclusive compensarse.
Considerar dos n umeros p y q con valores aproximados p y q y errores

p
y
q
, respectivamente. La suma de estos valores es
p + q = ( p +
p
) + ( q +
q
) = ( p + q) + (
p
+
q
) (1.2)
Por lo tanto, el error en una suma es la suma de los errores de los
sumandos. Si los errores son del mismo signo, el error total en la suma se
8 UNIDAD 1. CONCEPTOS DE PROGRAMACION
vera incrementado.
En el caso de una multiplicacion,
pq = ( p +
p
) ( q +
q
) = p q + q
p
+ p
q
+
p

q
Si las magnitudes de p y q son mayores a 1, los errores
p
y
q
pueden verse
incrementados.
En la resta de dos valores casi iguales, se tiene una perdida de cifras
signicativas, por ejemplo al sumar los valores p = 3,1415926563 y el valor
q = 3,1415957371, ambos con once cifras signicativas
p q = 3,1415926563 + (3,1415957371) = 0,0000030805
el resultado tiene solo cinco cifras signicativas, con una perdida de seis.
Los errores iniciales en los datos se propagan a lo largo de las operaciones.
Una cualidad deseable es que un error peque no en los valores iniciales pro-
duzcan errores peque nos en el resultado nal. Un algoritmo con esta cualidad
es un algoritmo estable, en el caso contrario se denomina inestable.
1.3. TIPOS DE DATOS 9
1.3. Tipos de datos
Las computadoras son principalmente utilizadas para el manejo de
datos. Un dato es la expresion general que describe los objetos con los
cuales opera una computadora.
Tipos de datos
Las computadoras pueden trabajar con diferentes tipos de datos. Los
algoritmos y los programas de computadora correspondientes operan sobre
esos datos.
Los tipos de datos se pueden clasicar en dos tipos, los simples (elementales)
y los compuestos (estructurados).
Los tipos de datos simples son los siguientes:
numericos como: entero, real.
logicos, tambien conocidos como booleanos.
caracter.
http://es.wikibooks.org/wiki/Manual_de_LaTeX/Escribiendo_texto/Caracteres_especiales
Algunos lenguajes de programacion admiten otros tipos de datos como
son los complejos, los enumerados, los subrangos, etc.
Es importante tomar nota de que para cada tipo de datos estan
denidos, tanto las operaciones validas con ellos como el los valores que
pueden tomar estos datos.
Los datos numericos, como su nombre lo indica, son aquellos que pueden
tomar valores numericos, a su vez se dividen en dos formas distintas, los
enteros y los reales.
El tipo entero es un subconjunto nito de los n umeros enteros, este
subconjunto esta determinado por el n umero bytes asignado a ellos.
En las computadoras personales actuales es com un que se asignen 2 o 4
bytes de memoria para estos valores, dando un rango de valores de -32768
a 32767 para el caso de 2 bytes y de -2,147483,648 a 2,147,483,647 para
el caso de 4 bytes. Algunos lenguajes manejan ademas otros tipos enteros
10 UNIDAD 1. CONCEPTOS DE PROGRAMACION
(FORTRAN, C, etc.).
El tipo real es un subconjunto de los n umeros reales y constan de una
parte entera y una parte decimal. La computadora representa los n umeros
reales en el sistema binario, con un n umero jo de dgitos. Esta situacion
provoca que solo se puedan representar un n umero nito de n umeros reales,
por lo que algunos n umeros reales se representan con una aproximacion a
ellos (ver errores de redondeo), y en particular se presentan problemas con
n umeros muy grandes o muy peque nos.
El tipo logico (tambien llamado booleano) es aquel dato que solo puede
tomar uno de dos valores: cierto o verdadero (true) y falso (false).
Este tipo de dato se utiliza cuando hay que representar la alternativa
s o no ante determinadas condiciones. Por ejemplo, la condicion de si un
valor entero es par, es verdadera o es falsa.
El tipo caracter es el conjunto nito y ordenado de los caracteres
que reconoce la computadora. Los caracteres se pueden clasicar en tres
categoras:
caracteres alfabeticos (A, B, C,..., a, b, c,...)
caracteres numericos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
caracteres especiales (+ - * / . ^ < > $) y otros
Operadores
Con los datos, dependiendo de su tipo, se pueden realizar diferentes
operaciones, o visto de otra forma, los diferentes operadores reconocidos por
un lenguaje de programacion particular se pueden aplicar solo a algunos
tipos de datos.
Los operadores numericos, como su nombre lo indica, se aplican a
datos numericos y el resultado de la operacion es un dato numerico.
Los operadores numericos generalmente reconocidos son: suma (+), resta
(-), multiplicacion (*), division (/), exponenciacion (o ** seg un el lenguaje).
1.3. TIPOS DE DATOS 11
Los operadores relacionales, algunas veces llamados de comparacion,
establecen la relacion que existe entre dos datos numericos o caracter, el
resultado en un dato de tipo booleano. Los operadores relacionales comunes
son: mayor que (>), menor que (>), mayor o igual que (>=), menor o igual
que (<=), igual a ( ==), diferente a (~=). Ya que el tipo caracter es un
conjunto ordenado, la comparacion se realiza en base a su posicion dentro
del conjunto.
Constantes y variables
Es importante denir algunos conceptos basicos como variable y
constante.
Los datos con los que opera un programa pueden tener siempre el mismo
valor durante la ejecucion de un programa o algoritmo (constantes) o
cambiar su valor (variables).
Las constantes son datos (objetos) cuyo valor se conserva durante la
ejecucion del programa o algoritmo. Se especican por su valor (4, 3.2, A)
o pueden tener un nombre asignado (constantes nombradas) como pi.
Las variables son objetos cuyo valor puede ser modicado durante la
ejecucion del programa o algoritmo, estos objetos siempre son identicadas
por un nombre determinado impuesto por el programador, los nombres de
las variables son una secuencia caracteres letras, dgitos y guion bajo ( ),
con la restriccion de que el primero de ellos debe ser una letra, por ejemplo:
total, total1, valor total, etc.
En algunos lenguajes de programacion, cada variable solo puede tener
valores de un tipo de dato, en MATLAB pueden cambiar tanto su valor
como su tipo de dato.
En resume, los datos, o son constantes o se almacenan en objetos
llamados variables.
Expresiones
Los datos (constantes o variables) se pueden utilizar para realizar
operaciones con ellos. Las expresiones son combinaciones de constantes,
variables, smbolos de operacion, parentesis y nombres de funciones. Se
construyen de manera muy similar a la utilizada en la notacion matematica,
12 UNIDAD 1. CONCEPTOS DE PROGRAMACION
solo que su sintaxis es mas restringida, por ejemplo:
a*(b+3)/c\\
sin(x+pi)\\
4 > a\\
Las expresiones son de tipo numerico cuando su resultado es un n umero,
y son de tipo logico cuando su resultado es un valor de tipo logico.
1.4. FUNCIONES PROPIAS DEL LENGUAJE 13
1.4. Funciones propias del lenguaje
Las funciones en un lenguaje de programacion tienen un sentido similar
al de las funciones matematicas en el sentido de que reciben argumentos
(valores), realizan algunas operaciones con ellos y dan como resultado
un valor. En MatLab, como en otros lenguajes, existen funciones propias
del lenguaje y funciones escritas por el programador. En esta seccion
se explicaran algunas funciones propias de MatLab. En otro captulo se
estudia la creacion de funciones esccritas por el programador.
Algunas funciones internas de MATLAB con n umeros son
rem(x,y) proporciona el residuo de la division entre dos n umeros
rem( 4 , 5)
rem( 5 , 4)
rem( 3 , 2 . 1 )
rem( 2. 1 , 2)
round(x) redondea un n umero real al entero mas cercano
round( 5 . 1 )
round( 5. 56)
round( 5. 56)
round( 5. 49)
class(objeto) proporciona la clase (tipo de dato) de un objeto
c l a s s ( 8 . 5 )
c l a s s ( hol a )
c l a s s ( 8. 5 )
num2str(x) proporciona una cadena con los caracteres de un numero
num2str( 8)
num2str ( 8 . 5 )
num2str( pi )
num2str( 3. 14)
c l a s s ( pi )
c l a s s (num2str( pi ) )
14 UNIDAD 1. CONCEPTOS DE PROGRAMACION
1.5. Sentencias de selecci on y repeticion
La ejecucion secuencial de sentencias se puede modicar por medio de las
sentencias de seleccion o por las sentencias de repeticion. En esta seccion se
estudian este tipo de sentencias. Las sentencias de seleccion y de repeticion,
eval uan expresiones logicas, por lo que primero se estudian este tipo de
expresiones.
Expresiones logicas
Las expresiones logicas son aquellas cuyo resultado es un valor de tipo
logico (verdadero o falso), los operadores que dan como resultado este tipo
de valores son los relacionales (>, <, >=, <=, ==, ~=) y los booleanos
(&&, ||, ~).
En MATLAB, un valor numerico de cero se interpreta como falso, cualquier
otro valor se interpreta como verdadero.
Las siguientes son expresiones logicas correctas
x > 4
y ~= x
x > 4 && y < 3
x > 0 || y < 0
radical >= 0
Sentencias de selecci on
La estructura secuencial de un algoritmo en ocasiones debe romperse,
una de las formas es dividir el ujo de la ejecucion en varias ramas
dependiendo de una condicion logica.
Una de las maneras de realizarlo es por medio de una sentencia de
seleccion. Existen tres tipos de sentencias de seleccion, la simple, la doble y
la m ultiple.
Sentencia de seleccion simple
En la seleccion simple, se eval ua una condicion (expresion logica) y
dependiendo del resultado se esa condicion (verdadera o falsa), se toma
una de dos ramas posibles, si la condicion se eval ua a verdadero, se elige
1.5. SENTENCIAS DE SELECCI

ON Y REPETICI

ON 15
Figura 1.1: Sentencia if
una rama en la que se ejecuta un bloques de sentencias, en caso de que
se eval ue a falso, se elige una rama vaca. En la gura 1.1 se muestra de
manera graca una sentencia de seleccion simple.
En matlab, esta sentencia se escribe de la siguiente forma:
i f condi ci on
e s t at ut o1 ( e s t at ut os 1 )
end
el estatuto1 (grupo de estatutos1) se ejecutara si y solo si la condicion se
eval ua a verdadero.
Sentencia de seleccion doble
Esta sentencia es similar a la de seleccion simple, con la salvedad de que
la rama que se elige al evaluar la condicion a falso, no esta vaca. En la gura
se muestra 1.2 de manera graca una sentencia de seleccion doble.
En Matlab, esta sentencia se escribe:
i f condi ci on
e s t at ut o1 ( e s t at ut os 1 )
el se
e s t at ut o2 ( e s t at ut os 2 )
16 UNIDAD 1. CONCEPTOS DE PROGRAMACION
Figura 1.2: Sentencia if else
end
el estatuto1 (grupo de estatutos1) se ejecutara si y solo si la condicion
se eval ua a verdadero, de otra manera, se ejecutara el estatuto2 (grupo de
estatutos2).
Se puede escribir una estructura de seleccion m ultiple, por medio de
una secuencia de sentencias if-else. Se trata de la sentencia conocida como
if-elseif-else. En la gura 1.3 se muestra el diagrama.
Esta sentencia se escribe:
i f condi ci on1
e s t at ut o1
el s e i f condi ci on2
e s t at ut o2
el s e i f condi ci on3
e s t at ut o3
.
.
.
el se
e s t a t ut o po r de f e c t o
end
el estatuto1 se ejecutara si la condicion1 se eval ua a verdadero, el
1.5. SENTENCIAS DE SELECCI

ON Y REPETICI

ON 17
Figura 1.3: Sentencia if elseif
18 UNIDAD 1. CONCEPTOS DE PROGRAMACION
estatuto2 se ejecuta si la condicion2 se eval ua a verdadero, el estatuto3
se ejecuta si la condicion3 se eval ua a verdadero, etc., si ninguna de las
condiciones se eval ua a verdadero se ejecuta el estatuto por defecto. Es
importante aclarar, que solo se ejecuta uno de los estatutos (grupo de
estatutos). El else (junto con el estatuto por defecto) se puede omitir, en
cuyo caso no se ejecutara ning un estatuto si ninguna de las condiciones se
eval ua a verdadero.
Ejemplo, escribir un script para determinar si un n umero es par o impar
cl c
cl ear
disp Determi nar s i un numero es par o impar
x= input ( Dame un numero ent er o : ) ;
i f round( x) = x
disp no es un ent er o
el s e i f rem( x , 2 ) == 0
disp es par
el se
disp es impar
end
Una version un poco mas amigable, cuestion de gustos
cl c
cl ear
disp Determi nar s i un numero es par o impar
x= input ( Dame un numero ent er o : ) ;
i f round( x) = x
disp ( [ e l numero num2str( x) no es un ent er o ] )
el s e i f rem( x , 2 ) == 0
disp ( [ e l numero num2str( x) es par ] )
el se
disp ( [ e l numero num2str( x) es impar ] )
end
Ejercicios. Escribir scripts para:
1. Determinar el mayor de dos n umeros.
2. Determinar el mayor de tres n umeros.
3. Determinar si de tres valores, el producto dos de ellos es el otro.
1.5. SENTENCIAS DE SELECCI

ON Y REPETICI

ON 19
4. Calcular las races reales de una ecuacion en la forma ax
2
+ bx + c,
para valores reales de a, b y c.
20 UNIDAD 1. CONCEPTOS DE PROGRAMACION
1.6. ARREGLOS
Un arreglo es una coleccion de datos, todos ellos del mismo tipo. Inicia-
remos con el estudio de los arreglos de datos numericos.
Los datos se pueden arreglar de diferente manera:
como una lista horizontal, llanmado vector la
_
5 4 2 6 1,2

como una lista vertical, llamado vector columna


_

_
5
4
2
6
1,2
_

_
en forma rectangular, llamado matriz
_
2 5 0,8
1 1,3 6
_
en forma de varias dimensiones, no muy utilizada
Para denir una variable como un vector la, se utiliza la sintaxis
x = [5, 4, 2, 6, 1,2] ;
Para referirse a un elemento determinado se utiliza el nombre de la variable
y el indice del elemento, por ejemplo: x(3) se reere al tercer elemento cuyo
valor es 2.
De manera similar, para denir una variable como un vector columna:
x = [5; 4; 2; 6; 1,2] ;
Observe que se utiliza el caracter coma para separar los elementos (colum-
nas) en un arreglo horizontal (vector la), y el caracter punto y coma para
separar los elementos (las) de un arreglo vertical (vector columna).
Como denira el arreglo rectangular?
_
2 5 0,8
1 1,3 6
_
1.6. ARREGLOS 21
Solucion:
matriz = [2, 5, 0,8; 1, 1,3, 6] ;
Ejemplos de uso de arreglos
Para una lista de n umeros, determinar el valor promedio de los valores
de la lista y la cantidad de ellos que son mayores que el valor promedio. Los
n umeros de la lista y el tama no de ella se intoducen por el teclado
%ej empl o 1 3 Determi naci on de cant i dad de numeros mayores
% a l a media de una l i s t a
%i nt r oduc i r e l tamano de l a l i s t a
tam = input ( Tamano de l a l i s t a : ) ;
%l e c t ur a de l o s dat os , not ar que no hay que e s p e c i f i c a r e l tamano de l
%ar r e g l o
for i ndex =1:tam
l i s t a ( i ndex ) = input ( [ Val or del el emento num2str( i ndex ) : ] ) ;
end
%suma de t odos l o s v al or e s de l a l i s t a
suma = 0; for i ndex =1:tam
suma = suma + l i s t a ( i ndex ) ;
end
%c al c ul o de l v al or promedio
promedi o = suma / tam;
%det ermi naci on de cuant os son mayores que e l promedio
cuenta = 0; for i ndex =1:tam
i f ( l i s t a ( i ndex ) > promedi o )
cuenta = cuenta + 1;
end
end
%de s pl i e q ue de r e s ul t ados
disp ( [ El val or promedi o es : num2str( promedi o ) ] ) ;
disp ( [ num2str( cuenta ) el ementos son mayores al promedi o ] ) ;
El arreglo, es un vector columna o un vector la? Analice como pudiera
determinarlo.
OPERACIONES CON ARREGLOS
Dos arreglos son iguales si: son del mismo tipo, del mismo tama no y
sus elementos son iguales ( en posiciones iguales). Realizar las siguientes
22 UNIDAD 1. CONCEPTOS DE PROGRAMACION
operaciones y observar el resultado:
>> x = [ 1 , 2 , 3 , 4 ] ;
>> y = [ 1 , 2 , 3 , 4 ] ;
>> i f i s e qua l ( x , y) disp i g ua l e s ; el se disp di f e r e nt e s ; end
>> z = [ 1 ; 2 ; 3 ; 4 ] ;
>> i f i s e qua l ( x , z ) disp i g ua l e s ; el se disp di f e r e nt e s ; end
N umero de las y de columnas, dimensiones de un arreglo, probar los
siguientes comandos y sacar conclusiones
>> si ze ( x)
>> si ze ( z )
>> si ze ( matri z )
>> mat =[ 2 , 5 , 0. 8; 1 , 1. 3 , 6] ;
>> si ze ( mat )
Se puede asignar el valor retornado por el comando size en un arreglo,
o en dos variables:
>> tam = si ze ( mat ) ;
>> tam
>> [ num f i l as , num columnas ] = si ze ( mat ) ;
>> num f i l as
>> num columnas
Aprendimos algo muy interesante, algunas funciones regresan mas
de un valor y estos valores se pueden asignar a un arreglo (vector la) o se
pueden asignar a variables escalares.
Las operaciones aritmeticas entre matrices solo se pueden realizar si
son del mismo tama no, o sea, si tiene el mismo n umero de las y el mismo
n umero de columnas.
por ejemplo, realizar los siguientes comandos y analizar el resultado:
>> x =[ 1 , 2 , 3 , 4] ;
>> y = [ 5 , 3 , 2 , 5] ;
>> x+y
>> xy
>> 2x
>> 2x+3y
>> z=x ;
1.6. ARREGLOS 23
>> z
>> x y
>> x . y
>> x . / y
>> a =[ 2 , 0; 1 , 5]
>> b=[ 2 , 3; 0 , 1]
>> c =[ 3 , 4; 0 , 2]
>> a+b
>> ac
>> 2a2(cb)
24 UNIDAD 1. CONCEPTOS DE PROGRAMACION
Unidad 2
ESTRUCTURACION DE
FUNCIONES Y
PROGRAMAS
25
26UNIDAD 2. ESTRUCTURACION DE FUNCIONES Y PROGRAMAS
2.1. Introducci on
Cuando se da un nuevo problema, es una tendencia natural el sentarse
enfrente de la computadora y empezar a programar sin gastartiempo en
pensar en analizarlo. Cuando se tiene cierta experiencia, es posible pro-
gramar .
a
l vuelo en el caso de problemas muy simples, Sin embargo, en
el mundo real, los problemas son grandes. Para problemas grandes es mas
practico pensar en el problema y en la forma en que se va a resolver antes
de escribir siquiera una lnea del codigo.
Algunos dicen que la programacion es facil, el saber que programar es lo
difcil. En ocasiones es mas difcil entender el problema que hacer un pro-
grama para resolverlo. Porque una vez que se entendio el problema, es rel-
ativamente facil dividirlo en partes mas peque nas, que son mas faciles de
manejar con peque nas funciones las cuales se pueden ir trabajando sepa-
radamente.
El dise no top-down es el proceso de iniciar con un problema grande e ir di-
vidiendolo en partes mas peque nas, mas faciles de entender (subproblemas),
realizando cada una de ellas una tarea del problema. Cada subproblema
puede a su vez dividirse en problemas mas peque nos en caso necesario, y
repetirse este proceso de division hasta que se tengan problemas peque nos
y por lo tanto faciles de resolver. Una vez que un problema se dividio en
peque nas partes, se puede escribir y probar cada pieza independientemente.
Posteriormente se combinan todas las tareas para conformar el programa
que resuelve el problema en cuestion.
El concepto del dise no top-down es la base de un proceso formal de dise no
de programas (existen otras metodologas). La gura 2.1 detalla el proceso
top-down, y a continuacion se describe brevemente cada uno de los pasos.
1. Establecer claramente el problema que se trata de resolver.
Los programas se escriben para resolver un problema en particular,
pero el problema puede no estar claramente denido de manera que se
pueda escribir el programa adecuado. Por ejemplo, se puede requerir
un programa para obtener las races de un polinomio en x. Este
requerimiento no esta sucientemente claro para que un programador
dise ne un programa que cubra la necesidad, se debe saber mas de el.
Por ejemplo:
los coecientes son reales o complejos?
se requieren todas las races o solo las reales?
2.1. INTRODUCCI

ON 27
Figura 2.1: Proceso de dise no de programas
cual es el grado maximo del polinomio?
Una descripcion mas adecuada del problema sera:
Dise nar y escribir un programa para obtener las races reales y com-
plejas de un polinomio de grado maximo 5 con coecientes reales.
2. Denir las entradas requeridas por el programa y las salidas producidas
Las entradas al programa, los datos con los que lo alimentamos, y
las salidas, los resultados que proporciona, deben estar claramente
especicados de tal manera que el programa cumpla con los requerim-
ientos para los cuales se escribe. Para el problema de las races de un
polinomio, los coecientes deben estar en orden preestablecido de tal
manera que el programa sea capaz de leerlos adecuadamente. De la
misma manera, el programa debe producir las respuestas requeridas
en un formato adecuado para su interpretacion y uso.
3. Dise nar el algoritmo que se debe implementar en el programa
Un algoritmo es un procedimiento paso por paso para encontrar la
28UNIDAD 2. ESTRUCTURACION DE FUNCIONES Y PROGRAMAS
solucion a un problema. Esta es la etapa en la cual se utilizan las
tecnicas de dise no top-down. El programador busca las divisiones
logicas del problema y lo divide en subtareas. Este proceso se llama
descomposicion. Si las subtareas son grandes, el programador puede
dividirlas a un mas, en sub-subtareas, este proceso continua hasta que
el problema se ha dividido en muchas piezas peque nas, de manera que
cada una de ellas realice un trabajo simple y claramente entendible.
Cada una de las peque nas piezas se rena a traves de un proceso
llamado renamiento por pasos, en esta fase el programador inicia
con una descripcion general de lo que debe hacer esa parte del
problema y luego dene sus funciones con mas detalle y mas detalle
hasta que esta especicada de manera de que se puede transforma en
estatutos de MatLab/Octave. Este renamiento se realiza por medio
del seudocodigo, un lenguaje de sintaxis libre.
4. Convertir el algoritmo en estatutos de MatLab/Octave En esta
fase, se reemplazan los estatutos de seudocodigo con los correspondi-
entes estatutos de MatLab/Octave.
5. Probar el programa El programa se debe probar para todos los con-
juntos legales de valores de entrada.
Ejercicio. El vuelo de un proyectil: Si se asume friccion despreciable
del aire y se ignora la curvatura de la tierra, un proyectil que se lanza al aire
desde la supercie de la tierra, sequira un atrayectoria parabolica. La altura
del proyectil en el instante t de tiempo esta dado por la ecuacion 2.1
y(t) = y
0
+ v
y0
t +
1
2
gt
2
(2.1)
donde y
0
es la altura inicial del proyectil sobre la supercie de la tierra, v
y0
es la velocidad inicial del objeto, y g es la aceleracion debido a la gravedad
de la tierra. La distancia horizontal que a viajado el proyectil como una
funcion del tiempo despues de lanzado esta dado por la ecuacion 2.2
x(t) = x
0
+ v
x0
t (2.2)
donde x
0
es la posicion horizontal inicial del proyectil sobre la tierra y v
x0
es la velocidad horizontal inicial del proyectil.
Si el proyectil es lanzado con una rapidez inicial v
0
a un angulo de grados
con respecto a la supercie de la tierra, entonces las componentes iniciales
de la velocidad vertical y horizontal seran:
v
x0
= v
0
cos (2.3)
2.1. INTRODUCCI

ON 29
v
y0
= v
0
sin (2.4)
Asuma que un proyectil es lanzado desde una posicion (x
0
, y
0
) = (0, 0) con
una velocidad inicial v de 20 metros por segundo y un angulo inicial de
grados. Dise ne, escriba y pruebe un programa que determine la distancia
horizontal que viaja el proyectil desde que es lanzado hasta que toca la tier-
ra de nuevo. El programa debe calcular la distancia para todos los angulos
desde 0 hasta 90
o
en pasos de 1
o
. Determine el angulo que maximiza el
rango (distancia horizontal) del proyectil.
SOLUCION
Para resolver este problema, se debe determinar una ecuacion para calcu-
lar el rango del proyectil. Con manipulaciones matematicas se obtiene la
ecuacion
rango =
2v
2
0
g
cos sin (2.5)
Ahora se aplicara la tecnica de dise no a este problema.
Establecer el problema Una descripcion adecuada al problema es: Cal-
cular el rango que viajar a un proyectil cuando es lanzado con una
velocidad inicial v
0
y un angulo . Calcular este rango para una v
0
de
20 metros por segundo y todos los angulos entre 0
o
y 90
o
en incre-
mentos de 1
o
. Determinar el angulo que produce el maximo rango
posible. Asumir que no friccion del aire.
Denir las entras y salidas del programa En este problema no se re-
quieren datos de entrada, puesto que se conoce v
0
y y no se requiere
leerlos. Las salidas del programa sera una tabla que muestre el rango
para cada angulo , el angulo para el cual el rango es maximo y el
valor del rango maximo.
Dise no del algoritmo Un algoritmo es:
Hacer para theta = 0 hasta 90 grados
Calcular el rango del proyectil para cada angulo theta
Escribir el rango como una funcion de theta
Determinar si este angulo proporciona el rango mayor
Fin de hacer
Escribir el angulo theta que da el rango maximo y el valor del
rango maximo
30UNIDAD 2. ESTRUCTURACION DE FUNCIONES Y PROGRAMAS
Un mayor renamiento para este algoritmo:
Inicializar las variables max_rango y max_angulo a cero
Inicializar v0 a 20 metros por segundo
Inicializar gravedad a 9.81 metros por segundo al cuadrado
For theta = 0 hasta 90 grados
%convertir grados a radianes
radian = grados2radianes(theta)
%calcular el rango
rango = (-2*v0^2/gravedad)*sin(radian)*cos(radian)
Write theta y rango
%Determinar si el rango es el maximo
If ( rango > max_rango ) Then
max_rango = rango
max_angulo = theta
End If
End For
Escribir max_grados y max_rango
Escribir el programa en MatLab/Octave
Ejercicio:El costo por envo de un paquete es de $100 por paquete. Por
cada kilogramo o fraccion que exceda de un kilogramo, se cobran $30, y si el
paquete excede de 40 kilogramos se cobran adicionalmente $100 por concepto
de exceso de peso. No se aceptan paquetes de mas de 50 kilogramos. Escriba
un programa que acepte el peso de un paquete y calcule el costo del envo.
2.2. SUBPROGRAMAS
Cuando un problema se divide en subproblemas, cada una de estos
subproblemas se encargada de la solucion de una parte del problema inicial.
As como para resolver un programa se escribe un algoritmo, para resolver
cada uno de los subproblemas se escribe un subalgoritmo.
Los subprogramas pueden realizar las mismas funciones que un progra-
ma:
Aceptar datos.
Realizar calculos.
2.2. SUBPROGRAMAS 31
Devolver resultados.
Los subprogramas se utilizan para un proposito especico, recibe datos
desde un programa (u otro subprograma) y le devuelve resultados. Se dice
que el programa llama o invoca al subprograma. Cuando el programa invoca
a un subprograma, le cede el control, entonces, el subprograma ejecuta su
tarea y devuelve el control al programa, como se ilustra en la gura 2.2.
Figura 2.2: Llamada a un subprograma
Los subalgoritmos se pueden dividir en dos tipos, funciones y proced-
imientos.
En las siguientes secciones se describen las funciones y subprogramas juntos
con los conceptos de variables locales y globales y los argumentos.
2.2.1. Funciones
Matematicamente una funcion es una operacion que toma uno o mas
valores llamados argumentos y produce un valor denominado resultado, por
ejemplo
f(x) =
1
1 + x
2
f es el nombre de la funcion y x es el argumento, denominado argumento
formal y se utiliza en la denicion de la funcion. para evaluar la funcion f
debemos denir un valor actual a x, por ejemplo para x = 3, se obtiene un
valor de 0.1 para f, esto se expresa
f(3) = 0,1
El concepto matematico de una funcion se aplica en la programacion.
En la programacion, se denen funciones con uno o varios argumentos que
producen un valor. Se identican dos tipos de funciones, las denidas en
32UNIDAD 2. ESTRUCTURACION DE FUNCIONES Y PROGRAMAS
el lenguaje (funciones internas o de biblioteca) y funciones escritas por el
programador (funciones externas).
Las funciones se invocan por su nombre y con los argumentos actuales entre
parentesis. Con la funcion se asocia un valor que depende de los valores de
los argumentos actuales. Cuando se invoca una funcion en una expresion,
los argumentos actuales deben coincidir en cantidad, tipo y orden con los
argumentos formales de la denicion.Por ejemplo, la funcion cos, acepta
un argumento, un angulo en radianes y produce el valor de la funcion
trigonometrica coseno, y se puede usar como en la siguiente expresion
x cos(theta*3.1416/180)
2.2.1.1. Funciones internas
Se presentan algunas de las funciones internas denidas en MatLab/Oc-
tave
2.2. SUBPROGRAMAS 33
Denicion valor obtenido
sin(x) seno del angulo x, argumento en radianes.
sind(x) seno del angulo x, argumento en grados.
cos(x) coseno del angulo x, argumento en radianes.
cosd(x) coseno del angulo x, argumento en grados.
tan(x) tangente del angulo x, argumento en radianes.
tand(x) tangente del angulo x, argumento en grados.
asin(x) arco seno de x (en radianes).
Para x en el dominio [1, 1] asin(x) esta en el rango [/2, /2]
asind(x) arco seno de x, resultado en grados.
acos(x) arco coseno de x (en radianes).
Para x en el dominio [1, 1] acos(x) esta en el rango [/2, /2]
asind(x) arco coseno de x, resultado en grados.
atan(x) arco tangente de x (en radianes).
Para x real atan(x) esta en el rango [/2, /2]
atand(x) arco tangente de x, resultado en grados.
atan2(x,y) arco tangente de cuatro cuadrantes del punto de coordenadas (x,y).
abs(x) valor absoluto de x
sqrt(x) raz cuadrada positiva de x
exp(x) exponencial de x, e
x
log(x) logaritmo natural de x
log10(x) logaritmo com un (base 10) de x
round(x) valor entero mas cercano a x
x(x) valor de la parte entera de x
oor(x) valor entero mas cercano menor o igual a x
ceil(x) valor entero mas cercano mayor o igual a x
2.2.1.2. Funciones escritas por el programador
Las funciones escritas por el programador se denen de acuerdo al
lenguaje de programacion. Para el caso de MatLab/Octave, cada funcion se
escribe en un archivo con extension m, llamado archivo M. El formato que
debe tener el archivo es el siguiente:
function <variable> = <nombre de la funcion> ( lista de argumentos )
<acciones>
variable = <valor>
34UNIDAD 2. ESTRUCTURACION DE FUNCIONES Y PROGRAMAS
El archivo M debe tener el mismo nombre que la funcion. Por ejemplo
la denicion de una funcion para evaluar la expresion matematica
1
1 + x
2
function valor = f (x)
valor = (1/(1+x*x);
El texto de la denicion se escribe en un archivo de nombre f.m. La
funcion se puede invocar por su nombre de la siguiente manera
>> f ( 3)
ans = 0. 10000
>> f ( 0)
ans = 1
>> f ( 0 . 1 )
ans = 0. 99010
>> f ( 5)
ans = 0. 038462
>>
Para una funcion mas compleja sera necesario escribir algunos coman-
dos, por ejemplo, escribir una funcion para obtener el mayor de tres numeros.
function mayor = mayorDeTres ( x , y , z )
i f ( x > y) && ( x > z )
mayor = x ;
el s e i f ( y > x) && ( y > z )
mayor = y ;
el se
mayor = z
end
Para probar la funcion, se escribe
>> mayorDeTres ( 1 , 2 , 3)
ans = 3
>> mayorDeTres ( 3 , 2 , 1)
ans = 3
>> mayorDeTres ( 1 , 3 , 2)
ans = 3
2.2. SUBPROGRAMAS 35
>> mayorDeTres ( 1 , 2 , 2)
ans = 2
>>
Ejercicios:Escribir funciones para:
1. Calcular la media geometrica de una serie de n umeros
n

x
1
x
2
x
3
x
n
2. Calcular el valor efectivo (RMS) de una serie de n umeros
_
1
n

n
i=1
x
2
i
3. Calcular la media armonica de una serie de n umeros
n
1
x
1
+
1
x
2
+ +
1
xn
4. Evaluar la funcion denida en segmentos
f(x, y) =
_
3t
2
+ 5, t 0
3t
2
+ 5, t < 0
Las variables utilizadas en una funcion son locales a ella, esto signica
que desaparecen al momento de que termina la ejecucion de la funcion y se
retorna el control al subprograma que invoca la funcion. Una excepcion es
cuando se declaran como globales o como persistentes, esta situacion no se
cubre en este esta seccion.
En MatLab/Octave, a diferencia de otros lenguajes, las funciones pueden
regresar mas de un valor, esta caracterstica se tratara en temas posteriores.
2.2.1.3. Procedimientos
Los procedimientos son subprogramas mas generales que las funciones.
Los procedimientos se utilizan para realizar un proceso especico, que puede
involucrar el calculo de cero o mas resultados y no puede ocurrir en una
expresion. A diferencia de la mayoria de los lenguajes de programacion, en
MatLab/Octave, Los procedimientos no reciben argumentos
El procedimiento se llama escribiendo su nombre
CAPACIDADES DE GRAFICACI

ON DE MatLab/Octave
En MatLab/Octave se cuenta con el comando plot que permite generar
gracas en dos dimensiones. En su version mas simple, graca los valores
de un vector vs. su posicion dentro del vector, por ejemplo, los comandos:
36UNIDAD 2. ESTRUCTURACION DE FUNCIONES Y PROGRAMAS
>>Y=[ 12 , 5 , 25 , 14 , 8] ;
>>plot (Y)
generan la graca mostrada en la gura 2.3.
Figura 2.3: Graca con el coman-
do plot(Y)
Figura 2.4: Graca con el coman-
do plot(X,Y)
En una version mas versatil, el comando plot puede gracar los valores
en dos vectores, que se interpretan como pares de puntos, los comandos
>>X=[ 0 . 5 , 1 . 2 , 2 , 3 , 5 ] ;
>>Y=[ 12 , 5 , 25 , 14 , 8] ;
>>plot (X, Y)
generan la graca mostrada en la gura 2.4. El comando plot acepta
parametros que permiten, entre otras cosas: denir el modo de conectar
los puntos, ya sea con lneas de diferentes tipos o sin unirlas, tambien per-
mite denir el color de las lneas, la forma y color de los puntos, denir un
encabezado para la gura, los mensajes en los ejes coordenados, mensajes
en posiciones especcos de la graca, etc.
Los comandos:
>>x = pi : pi /10: pi ;
>>y = tan( si n ( x ) ) si n ( tan( x ) ) ;
>>plot ( x , y , r s , LineWidth , 2 , MarkerEdgeColor , k , MarkerFaceCol or , . . .
g , MarkerSi ze , 10)
generan la graca mostrada en la gura 2.5
2.2. SUBPROGRAMAS 37
Figura 2.5: Graca con el comando plot y parametros
38UNIDAD 2. ESTRUCTURACION DE FUNCIONES Y PROGRAMAS
Unidad 3
RAICES DE ECUACIONES
39
40 UNIDAD 3. RAICES DE ECUACIONES
3.1. Introducci on
Las soluciones a una ecuacion f(x) = 0, se llaman races de la ecuacion, o
ceros de la funcion f(x). En los problemas de la ingeniera es com un tener la
necesidad de obtener las races de ecuaciones no lineales. Existen diferentes
metodos, cada uno de ellos apropiados para diferentes tipos de funciones, Se
estudiaran dos categoras de metodos, los metodos cerrados y los metodos
abiertos, ademas del metodo graco como un auxilio para los otros metodos.
METODO GRAFICO
Con el conocimiento de los valores de una funcion, se puede seleccionar un
rango sobre el cual gracar la funcion y determinar visualmente el punto en
que cruza el eje horizontal, el valor aproximado de la raz. En caso necesario,
una primera graca puede servir para seleccionar un rango menor, de manera
de obtener mayor exactitud en la aproximacion determinada.
Ejemplo, obtener un cero positivo de la funcion:
f(x) = xsin
_
1
x
_
0,2e
x
(3.1)
El primer factor de la funcion, xsin(1/x) es singular en x = 0 al alejarse x
desde cero, sin(1/x) oscila con frecuencia decreciente y valores entre -1 y 1,
de manera que el producto xsin(1/x) oscila en forma creciente al aumentar x
desde cero. El segundo termino de la funcion, 0,2e
x
, decrece desde 0.2 hasta
cero al aumentar x desde cero. La graca de f(x) se muestra en la gura
3.1, en la cual se puede observar que existe una raz en aproximadamente
0.4 (x

= 0,4).
Figura 3.1: Graca de las funciones
3.2. M

ETODOS DE INTERVALOS 41
3.2. Metodos de intervalos
Los metodos cerrados (metodos de intervalos) para obtener los ceros de
una funcion fx) se basan en identicar un intervalo en el cual se encuentra
al menos un cero, y en forma repetida reducir su tama no hasta encontrar el
cero. Los diferentes metodos se diferencian en la forma en que determinan
los lmites en cada reduccion del intervalo.
Si en un intervalo [a, c] se encuentra un n umero impar de races de f(x) = 0,
entonces el producto f(a) f(b) < 0.
3.2.1. Metodo de bisecci on
Se basa en encontrar el punto medio del intervalo, de manera que lo
divide en dos subintervalos del mismo tama no y luego identicar en cual
de los dos subintervalos se encuentra la raz para repetir el proceso hasta
que el intervalo es lo sucientemente peque no seg un los requerimientos del
problema que se resuelve.
Dado un intervalo [a, c] en el cual se encuentra al menos una raz de f(x) = 0,
el punto medio del intervalo es:
b =
a + c
2
(3.2)
Si el producto f(a) f(b) < 0 la raz se encuentra en el subintervalo [a, b],
de otra manera la raz se encuentra en el subintervalo [b, c].
El tama no del intervalo es el valor maximo del error absoluto que se puede
esperar, ya que la raz se encuentra dentro de dicho intervalo. Por lo anterior,
se obtiene una aproximacion a la raz con un cierto error absoluto deseado,
cuando el intervalo es de tama no menor o igual al error absoluto especicado.
En caso de ser necesario obtener la raz con un error relativo menor a uno
especicado, se calcula el error relativo aproximado al no tener elementos
para calcular el error relativo verdadero. El error relativo aproximado se
calcula con los valores de dos aproximaciones sucesivas (valores medios de
los intervalos) con

ar
=
b
i
b
i1
b
i
(3.3)
Se puede demostrar que con este metodo, el error relativo aproximado es
siempre mayor al error relativo verdadero.
Ejercicio. Obtener la raz positiva de la ecuacion
f(x) = xsin(1/x) 0,2e
x
= 0
42 UNIDAD 3. RAICES DE ECUACIONES
que se encuentra en el intervalo [0,2, 0,6] con el metodo de biseccion:
1. con un error absoluto menor a 0.005
2. con un error relativo aproximado menor a 0.5 % (0.005)
SOLUCI

ON:
1. con un error absoluto
a c b error absoluto f(a) f(b) nuevo intervalo
0.2 0.6 0.4 0.2 -0.35553 0.10532 [0,2, 0,4]
0.2 0.4 0.3 0.1 -0.35553 -0.20553 [0,3, 0,4]
0.3 0.4 0.35 0.05 -0.20553 -0.04272 [0,35, 0,4]
0.35 0.4 0.375 0.025 -0.04272 0.03402 [0,35, 0,375]
0.35 0.375 0.3625 0.0125 -0.04272 -0.00373 [0,3625, 0,375]
0.3625 0.375 0.36875 0.00625 -0.00373 0.01531 [0,3625, 0,36875]
0.3625 0.36875 0.36563 0.00343
El valor aproximado de la raz es 0.36563
2. con un error relativo aproximado
a c b error relativo f(a) f(b) nuevo intervalo
0.2 0.6 0.4 -0.35553 0.10532 [0,2, 0,4]
0.2 0.4 0.3 33 % -0.35553 -0.20553 [0,3, 0,4]
0.3 0.4 0.35 14 % -0.20553 -0.04272 [0,35, 0,4]
0.35 0.4 0.375 6.7 % -0.04272 0.03402 [0,35, 0,375]
0.35 0.375 0.3625 3.4 % -0.04272 -0.00373 [0,3625, 0,375]
0.3625 0.375 0.36875 1.7 % -0.00373 0.01531 [0,3625, 0,36875]
0.3625 0.36875 0.36563 0.86 % -0.00373 0.00585 [0,3625, 0,36563]
0.3625 0.36563 0.36407 0.43 %
El valor aproximado de la raz es 0.36407
3.2.2. Metodo de la falsa posicion
El metodo de biseccion tiene una velocidad de convergencia (rapidez en la
cual se obtiene una aproximacion a una raz ) bastante baja. Modicando la
forma en que se calcula cada aproximacion se puede lograr una convergencia
mas rapida para la mayora de las funciones. Uno de estos metodos es el de
falsa posicion. Para obtener una mejor aproximacion que el punto medio del
intervalo [a, c] como en el metodo de biseccion si se utiliza el punto (b, 0)
en que la secante L que pasa por los puntos (a, f(a)) y (b, f(b)) cruza el eje
3.3. METODOS ABIERTOS 43
OX (ver la gura ??, para encontrar b, el valor de x en el punto de cruce
se igualan las formulas de la pendiente m de la recta L al tomar los puntos
(a, f(c)) y (c, f(c))
m =
f(c) f(a)
c a
(3.4)
y los puntos(b, 0) y (c, f(c))
m =
0 f(c)
b c
(3.5)
Igualando las pendientes que aparecen en 3.4 y 3.5, se tiene
f(c) f(a)
c a
=
0 f(c)
b c
(3.6)
de donde, al despejar b se obtiene
b = c f(c)
c a
f(c) f(a)
(3.7)
3.3. METODOS ABIERTOS
Los metodos abiertos, son aquellos que convergen localmente, esto es,
que requieren de un punto inicial que este cerca de la raz, esto generalmente
produce una convergencia mas rapida que los metodos de convergencia
global (metodos cerrados). Los metodos abiertos emplean una formula para
determinar en forma iterativa aproximaciones a la raz. El metodo de punto
jo es una buena alternativa para iniciar el estudio de los metodos abiertos.
3.3.1. Iteraci on de punto jo
Un punto jo de una funci on g(x) es un n umero real P tal que p =
g(P). Geometricamente, los puntos jos de la funcion g(x) son los puntos
de interseccion de la curva y = g(x) con la recta y = x (ver la gura ??.
El metodo del punto jo se basa se basa en obtener un punto jo de la
ecuacion
x = g(x) (3.8)
Si se aplica la ecuacion 3.8 en forma iterativa se obtiene
x
k+1
= g(x
k
) (3.9)
44 UNIDAD 3. RAICES DE ECUACIONES
donde k = 0, 1, 2, es el n umero de iteracion.
Con un valor inicial x
0
apropiado, la ecuacion puede converger a un punto
jo de g(x). Los punto jos obtenidos son las races de la ecuacion.
Entonces, para obtener raices de una ecuacion como 3.1, se transforma esta
ecuacion por medio de operaciones algebraicas a la forma de la ecuacion
3.8 y se obtienen los puntos jos. En ocaciones es necesario realizar varias
formas de la ecuacion de punto jo para diferenctes races.
Ejemplo. Calcular el punto jo de la funcion e
x
en el punto cercano a
x = 0,5
Con la ecuacion de punto jo (ecuacion 3.7 y g(x) = e
x
se establece la
ecuacion
x
k+1
= e
xk
y con x
0
= 0,5 se obtiene la serie de valores
x
1
= e
0,5
= 0,606531
x
2
= e
0,606531
= 0,545239
x
3
= e
0,545239
.
.
.
x
9
= e
0,566409
= 0,567560
x
10
= e
0,567560
= 0,566907
Se observa que la sucesion converge, o sea, que se ha obtenido una aproxi-
macion a un punto jo de e
x
.
Es importante anotar, que con este proceso, la sucesion de valores x
k
no siempre converge, como se ilustra en el siguiente ejemplo.
Ejemplo. Calcular un punto jo de la funcion 1 + x x
2
/4 cercano a
x = 2,1
Con la ecuacion de punto jo (ecuacion 3.7 y g(x) = 1+xx
2
/4 se establece
la ecuacion
x
k+1
= 1 + x
k
x
2
k
/4
y con x
0
= 2,1 se obtiene la serie de valores
3.3. METODOS ABIERTOS 45
x
1
= 1 + (2,1)
(2,1)
2
4
= 2,2025
x
2
= 1 + (2,2025)
(2,2025)
2
4
= 2,4152515625
x
3
= 1 + (2,4152515625)
(2,4152515625)
2
4
= 2,87361159004
x
4
= 1 + (2,87361159004)
(2,87361159004)
2
4
= 3,93802248264
x
5
= 1 + (3,93802248264)
(3,93802248264)
2
4
= 6,81502775108
.
.
.
lm
n
x
n
=
La serie x
k
no converge, por lo que no se obtiene un punto jo de la funcion
1 + x x
2
/4.
3.3.1.1. Criterio de convergencia
Criterio de convergencia para el punto jo. Si hay un punto jo P de
g(x) en el intervalo |a, b|, y si p
0
(a, b), si |g

(x)| 1 para todo x (|a, b|,


entonces P es el unico punto jo de g en |a, b| y la iteracion p
n
= g(p
n1
converge a dicho punto P. En caso contrario, si p
0
= P entonces la iteracion
no converge a P, y se dice que P es un punto repulsivo y la iteracion
presenta una divergencia local.
La convergencia se puede presentar en dos formas, monotona
(0 < g

(P) < 1)y oscilante (1 < g

(P) < 0) como se ilustra en la


g 3.2. De la misma forma, la divergencia se puede presentar en dos formas
monotona ( 1 > g

(P)) y oscilante (g

(P)-1) como se ilustra en la gura


3.3.
Para determinar un punto jo P de una funcion g(x) se debe encontrar
un valor x = p
0
tal que |g

(p
0
)| < 1 y aplicar la iteracion de punto jo hasta
un error absoluto aproximado o un error relativo aproximado determinado
por la naturaleza del problema.
46 UNIDAD 3. RAICES DE ECUACIONES
Covergencia monotona Convergencia cclica
Figura 3.2: Convergencia de punto jo
Divergencia monotona Convergencia cclica
Figura 3.3: Convergencia de punto jo
Ejemplo. Determinar los puntos jos de la funcion
g(x) = 4 + 4,1x
1
2
x
2
3.3. METODOS ABIERTOS 47
Solucion:
Para determinar de manera aproximada los puntos jos de g(x) se analiza
la funcion, esta indica que corresponde a una parabola, En la gura 3.4 se
muestran las gracas de y = x y de y = g(x), donde se observa que los
puntos jos son aproximadamente 2 y 4.
La derivada de g(x) es
g

(x) = 4,1 x
Para el punto jo cercano a 2, determinar un valor inicial (P
0
) adecuado:
p g

(p)
2 2.1
2.2 1.9
2.3 1.8
2.4 1.7
1.9 2.2
1.8 2.3
No se encuentra un valor cercano al punto jo en 2.
Para el punto jo cercano a 4, por ejemplo p
0
= 4, se tiene que g)4) = 0,1.
p
a
|g

(p)| g(p)
4 0.1 4.4
4.4 9.09 % 0.3 4.36
4.36 0.925 % 0.26 4.3712
4.3712 0.26 % 0.27 4.368225
4.368225 0.06 %
Se obtiene un valor aproximado del punto jo P

= 4,368225 con un error
relativo aproximado de
a
= 0,06 %.
3.3.2. Metodo de Newton-Raphson
Uno de los metodos mas utilizados es el de Newton-Raphson, con este
metodo se tiene una convergencia cuadratica para las races simples. Utiliza
la pendiente de la recta tangente a un punto para obtener una aproximacion
a la raz. Si se supone un valor x
0
cercano a la raz y se traza la recta
tangente a la curva en ese punto, la interseccion de esa recta con el eje
horizontal da una aproximacion a la raz (ver la gura ??).
48 UNIDAD 3. RAICES DE ECUACIONES
Figura 3.4: Graca de las funciones
La pendiente de la recta tangente a la curva es la primera derivada
de f(x), entonces la pendiente a la recta tangente a la curva en el punto
(x
0
, f(x
0
)) es f

(x
0
). Si denotamos con x
1
al punto donde la recta tangente
se intersecta con el eje horizontal, se puede escribir:
f

(x) =
f(x
0
) 0
x
0
x
1
(3.10)
de donde se despeja x1
x
1
= x
0

f(x
0
)
f

(x
0
)
(3.11)
Para repetir el proceso se escribe la ecuacion
x
k+1
= x
k

f(x
k
)
f

(x
k
)
(3.12)
Si se aplica en forma iterativa esta ecuacion, se obtiene una sucesion de
aproximaciones a la raz.
3.3. METODOS ABIERTOS 49
Ejemplo.
Ejemplo. Obtener las races de la funcion
f(x) = x
2
6,2x + 8
Solucion. La derivada de f(x) es
f

(x) = 2x 6,2
La ecuacion iterativa de Newton-Raphson es
x
k+1
= x
k

x
2
k
6,2x
k
+ 4)
2x
k
6,2)
Para determinar puntos de inicio para cada una de las races (por ser un
polinomio de grado 2, podran ser dos races) se puede hacer una tabulacion
de valores de f(x) y si se concidera necesario una graca a partir de los
valores de la tabulacion. Dados los valores de los coecientes, se tabula en
el perodo (5, 5) con intervalos de uno.
x -5 -4 -3 -2 -1 0 1 2 3 4 5
f(x) 64 48.8 35.6 24.4 15.2 8 2.8 -0.4 -1.6 -0.8 2
Se observa que debe haber races cercanas a x = 2 y a x = 5.
Para obtener la raz cercana a x = 2 se utiliza como valor inicial x
0
= 0.
La sucesion de aproximaciones es
f(2) = 0,4
f

(2) = 2,2
x
1
= 2
0,4
2,2
= 1,818181818
f(1,818181818) = 0,03305785171
f

(1,818181818) = 2,563636364
x
1
= 1,818181818
0,03305785171
2,563636364
= 1,831076725
puesto que f(x) se acerca a cero, se tiene convergencia a una raz
f(1,831076725) = 0,0001662778367 = 1,662778367 10
4
f

(1,831076725) = 2,537846550
x
1
= 1,831076725
1,662778367 10
4
2,537846550
= 1,831142244
50 UNIDAD 3. RAICES DE ECUACIONES
f(1,831142244) = 4,9614 10
9
f

(1,831142244) = 2,537715512
x
1
= 1,831142244
4,9614 10
9
2,537715512
= 1,831142246
f(1,831142246) = 1,141 10
10
f

(1,831142246) = 2,537715508
x
1
= 1,831142246
1,141 10
10
2,537715508
= 1,831142246
Se tienen dos aproximaciones sucesivas con valor de 1.831142246, o sea, una
raz es x = 1,831142246 con 10 cifras signicativas.
Obtener la otra raz con un error relativo aproximado porcentual menor
a 0.1 %. Se toma como valor inicial x = 4 y se obtiene la sucesion de
aproximaciones (con 10 dgitos signicativos).
Primera aproximacion
f(4) = 0,8
f

(4) = 1,8
x
1
= 4
0,8
1,8
= 4,444444444

a
=

4,444444444 4
4,444444444

100 = 10 %
segunda aproximacion
f(4) = 0,8
f

(4) = 1,8
x
1
= 4
0,8
1,8
= 4,444444444

a
=

4,444444444 4
4,444444444

100 = 10 %
Ejemplo. Obtener las primeras dos races positivas de la funcion
f(t) = 1,21e
6,6t
sin(11,4t 111,7

) + 0,28e
55,9t
cos(18t + 26,1

)
3.4. APLICACIONES 51
3.4. Aplicaciones
1. Se tiene un tanque esferico para almacenar agua. Si el radio del
tanque es de R = 3m, a que profundidad debe llenarse de modo
que el tanque contenga 30 m
3
?
Solucion
El volumen contenido en el tanque esta dado por la ecuacion
V = h
2
(3R h)
3
donde, R es el radio del tanque y h es la profundidad del agua en el
tanque.
Para las condiciones del problema se tiene:
30 = h
2
(3 3 h)
3
= h
2
(9 h)
3
Puesto que la incognita es h, la ecuacion se escribe de manera
adecuada como
h
3
9h
2
+
90

= 0
El problema que se tiene es obtener las races de la ecuacion f(h) = 0,
donde f(h) = h
3
9h
2
+
90

.
La profundidad del lquido h debe ser mayor a cero (volumen del
lquido 0 m
3
), pero menor que seis m (volumen del lquido de 226
m
3
), o sea, 0 < h < 6. Una precision adecuada pudiera ser a nivel de
centmetros, o sea con un error absoluto menor a 0.01.
Puesto que la ecuacion es facil de derivar, se utilizara el metodo de
Newton-Raphson, entonces
f(h) = h
3
9h
2
+
90

(h) = 3h
2
18h
La ecuacion de newton-Raphson es:
h
k+1
= h
k

h
3
9h
2
+
90

3h
2
18h
52 UNIDAD 3. RAICES DE ECUACIONES
Como valor inicial se puede utilizar h = 1 (para h=3, el volumen
sera de aproximadamente 113 m
3
). Los calculos son (h
0
= 1):
f(1) = 1
3
9(1)
2
+
90

= 20,6478
f

(1) = 3(1)
2
18(1) = 15
h
1
= 1
20,6478
15
= 2,3765
El error absoluto relativo es de 1.3765, por lo que es necesaria otra
iteracion, con h
1
= 2,3765
f(2,3765) = 2,3765
3
9(2,3765)
2
+
90

= 8,7601
f

(1) = 3(2,3765)
2
18(2,3765) = 25,8337
h
2
= 2,3765
8,7601
25,8337
= 2,0374
El error absoluto relativo es de 0.3391, por lo que es necesaria otra
iteracion, con h
2
= 2,0374
f(2,0374) = 2,0374
3
9(2,0374)
2
+
90

= 0,25391
f

(1) = 3(2,0374)
2
18(2,0374) = 22,2202
h
2
= 2,0374
,2539
24,2202
= 2,0269
El error absoluto relativo es de 0.0105, siendo un poco estrictos se hace
otra iteracion, con h
3
= 2,0269
f(2,0269) = 2,0269
3
9(2,0269)
2
+
90

= 0,00007140 = 7,140 10
5
f

(1) = 3(2,0269)
2
18(2,0269) = 24,1592
h
2
= 2,0269
7,140 10
5
24,1592
= 2,0269
El error absoluto relativo es de 0.0.
El valor del nivel del agua para un volumen de 30 m
3
es de
aproximadamente 2.03 m
Unidad 4
SISTEMAS DE
ECUACIONES LINEALES
53
54 UNIDAD 4. SISTEMAS DE ECUACIONES LINEALES
4.1. Introducci on
4.2. Eliminacion de Gauss
4.3. Metodo de Gauss-Jordan
4.4. Metodo de la inversa
4.5. Metodo de Gauss-Seidel
Considerar el sistema
4x y + z = 7
2x 8y + z = 21
2x + y + 5z = 15
Escribir las ecuaciones en la forma
x =
7 + y z
4
y =
21 + 4x + z
8
z =
15 + 2x y
5
Estas ecuaciones sugieren el proceso iterativo
x
k+1
=
7 + y
k
z
k
4
y
k+1
=
21 + 4x
k
+ z
k
8
z
k+1
=
15 + 2x
k
y
k
5
Si se inicia con los valores P
0
= (x
0
, y
0
, z
0
) se pudiera esperar que el proceso
iterativo converga a la solucion del sistema.
Se puede escribir una funcion de MATLAB que permita calcular una
aproximacion del proceso iterativo.
4.6. APLICACIONES A LA INGENIER

IA 55
function new aprox=g s ( aprox )
new aprox ( 1) = (7+aprox(2)aprox ( 3 ) ) / 4 ;
new aprox ( 2) = (21+4aprox(1)+aprox ( 3 ) ) / 8 ;
new aprox ( 3) = (15+2aprox(1)aprox ( 2 ) ) / 5 ;
Y utilizarla para realizar aproximaciones en forma repetida
4.6. Aplicaciones a la ingeniera
Los sistemas idealizados masa-resorte-amortiguador desempe nan un pa-
pel importante en la mecanica. Para cada masa, la segunda ley de New-
ton se emplea junto con el equilibrio de fuerzas para desarrollar un modelo
matematico del sistema, esto es (ver gura ??.
m
d
2
x
dt
2
= F
D
F
U
(4.1)
donde, m es la masa, F
D
es la fuerza hacia abajo, F
U
es la fuerza hacia
arriba y x es el desplazamiento de la masa.
La fuerza ejercida por un resorte es proporcional a su deformacion, y esta
dada por la ley de Hooke
F = kx donde k es la constante de resorte (4.2)
1. En la gura ?? se presenta un sistema de masa-resorte. Despues de lib-
erar las masas, estas son jaladas hacia abajo por la fuerza de gravedad.
Observe que el desplazamiento resultante en cada resorte se mide re-
specto a lo largo de las coordenadas locales referidas a su posicion
inicial. Sobre cada masa se ejerce una fuerza hacia arriba por los re-
sorte conectados entre ella y la masa que esta arriba, y una fuerza
hacia abajo resultado de los resorte conectados debajo de ella y por la
gravedad. Escribiendo la ecuacion de equilibrio de fuerzas para cada
masa se obtienen tres ecuaciones
m
1
d
2
x
1
dt
2
= 2k(x
2
x
1
) + m
1
g kx
1
(4.3)
m
2
d
2
x
2
dt
2
= k(x
3
x
2
) + m
2
g 2k(x
2
x
1
)
m
3
d
2
x
3
dt
2
= m
3
g k(x
3
x
2
)
Para obtener los desplazamientos cuando eventualmente el sistema
llega al reposo, esto es, cuando las posiciones de cada masa no varian,
56 UNIDAD 4. SISTEMAS DE ECUACIONES LINEALES
se obtienen las ecuaciones
3kx
1
2kx
2
= m
1
g
2kx
1
+ 3kx
2
kx
3
= m
2
g
kx
2
+ kx
3
= m
3
g
Si todos los resortes son iguales con k = 10 kg/s
2
y las masas son
m
1
= 2 kg, m
2
= 3 kg y m
3
= 2,5 kg, utilice un metodo numerico
para determinar el desplazamiento desde su posicion inicial de cada
masa en estado de reposo.
2. Para el sistema idealizado masa-resorte de la gura ??, a partir de las
ecuaciones de equilibrio, se obtienen las ecuaciones en reposo:
k
2
(x
2
x
1
) = k
1
x
1
k
3
(x
3
x
2
) = k
2
(x
2
x
1
)
k
4
(x
4
x
3
) = k
3
(x
3
x
2
)
F = k
4
(x
4
x
3
)
si la fuerza F = 2000 kg. y las constantes de resorte k
1
a k
4
son 150,
50, 75 y 225 kg/s
2
respectivamente, calcular las x.
3. En la gura ?? se muestra un sistema con tres bloques conectados
por una cuerda con peso y descanzan sobre un plano inclinado. Si se
usan ecuaciones de cuerpo libre, se obtiene un sistema de ecuaciones
simultaneas:
100a + T = 519,72
50a T + R = 216,55
25a R = 108,27
Encuentre la aceleracion a y las tensiones T y R en las dos cuerdas.
Unidad 5
AJUSTE DE CURVAS E
INTER
instrumentsPOLACION
57
58UNIDAD5. AJUSTE DE CURVAS E INTER INSTRUMENTSPOLACION
Unidad 6
DIFERENCIACION E
INTEGRACION
NUMERICA
59
60 UNIDAD 6. DIFERENCIACION E INTEGRACION NUMERICA
6.1. Derivacion numerica
6.1.1. F ormulas de alta exactitud
Formulas de diferencias dibvididas nitas centradas
Primera derivada
f

(x) =
f(x
i+1
) f(x
i1
)
2h
(6.1)
f

(x) =
f(x
i+2
) + 8f(x
i+1
) 8f(x
i1
) + f(x
i2
)
12h
(6.2)
Segunda derivada
f

(x) =
f(x
i+1
) 2f(x
i
) + f(x
i1
)
h
2
(6.3)
f

(x) =
f(x
i+2
) + 16f(x
i+1
) 30f(x
i
) + 16f(x
i1
) f(x
i2
)
12h
2
(6.4)
(6.5)
Ejercicio:
Calcule una aproximacion a la primera y segunda derivada de la funcion
f(x) = tan(x/3) en x = 3 con pasos de 0.5 y 0.1, compare resultados
Solucion:
Con h = 0,5 se necesitan los valores siguientes
x 2.0 2.5 3.0 3.5 4.0
y(x) 0.78684 1.1008 1.5574 2.3383 4.1317
La primera derivada con O(h
2
)
f

(3)

=
2,3383 1,1008
2(0,5)
= 1,2375
La primera derivada con O(h
4
)
f

(3)

=
4,1317 + 8(2,3383) 8(1,1008) + 0,78684
12(0,5)
= 1,0925
La segunda derivada con O(h
2
)
f

(3)

=
2,3383 2(1,5574) + 1,1008
(0,5)
2
= 1,2972
6.1. DERIVACI

ON NUM

ERICA 61
La segunda derivada con O(h
4
)
f

(3)

=
4,1317 + 16(2,3383) 30(1,5574) + 16(1,1008) 0,78684
12(0,5)
2
= 1,1284
Con h = 0,1 se necesitan los valores siguientes
x 2.8 2.9 3.0 3.1 3.2
y(x) 1.3502 1.4488 1.5574 1.6779 1.81274.1317
La primera derivada con O(h
2
)
f

(3)

=
1,6779 1,4488
2(0,1)
= 1,1455
La primera derivada con O(h
4
)
f

(3)

=
1,8127 + 8(1,6779) 8(1,4488) + 1,3502
12(0,1)
= 1,1419
La segunda derivada con O(h
2
)
f

(3)

=
1,6779 2(1,5574) + 1,4488
(0,1)
2
= 1,1900
La segunda derivada con O(h
4
)
f

(3)

=
1,8127 + 16(1,6779) 30(1,5574) + 16(1,4488) 1,3502
12(0,1)
2
= 1,1859
Los resultados se resumen en la tabla
PRIMERA DERIVADA SEGUNDA DERIVADA
h O(h
2
) O(h
4
) O(h
2
) O(h
4
)
0.5 1.2375 1.0925 1.2972 1.1284
0.1 1.1455 1.1419 1.19 1.1859
6.1.2. Datos irregularmente espaciados
Para tres pares de puntos (x
0
, f(x
0
), (x
1
, f(x
1
), (x
1
, f(x
1
) el polinomio
de interpolacion de Lagrange (equivalente al de diferencias divididas de New-
ton) se puede escribir
f(x) =
(x x
1
)(x x
2
)
(x
0
x
1
)(x
0
x
2
)
f(x
0
)+
(x x
0
)(x x
2
)
(x
1
x
0
)(x
0
x
2
)
f(x
1
)+
(x x
0
)(x x
1
)
(x
2
x
0
)(x
2
x
1
)
f(x
2
)
(6.6)
62 UNIDAD 6. DIFERENCIACION E INTEGRACION NUMERICA
La derivada del polinomio 6.6 es
f

(x) =
2x x
1
x
2
(x
0
x
1
)(x
0
x
2
)
f(x
0
)+
2x x
0
x
2
(x
1
x
0
)(x
0
x
2
)
f(x
1
)+
2x x
0
x
1
(x
2
x
0
)(x
2
x
1
)
f(x
2
)
(6.7)
donde x es el valor en el cual se quiere estimar la derivada. A un cuando
esta ecuacion es mas complicada que las aproximaciones de las diferencias
divididas, tiene dos ventajas: primera, se puede estimar la derivada para
cualquier punto entre x
0
y x
2
; segunda, los puntos pueden estar irregular-
mente espaciados.
Ejemplo. problema 24.40 de CHAPRA Y CANALE, ed. 4.
Se tomo la posicion de un avion caza sobre un portaviones durante el ater-
rizaje:
t, s 0 0.51 1.03 1.74 2.36 3.24 3.82
x, m 154 186 209 250 262 272 274
donde x es la distancia desde el extremo del portaaviones. Estime a)
la velocidad (dx/dt) y b) la aceleracion (dv/dt) usando diferenciacion
numerica.
Solucion:
Para t = 0 y t = 0,51 se pueden utilizar los puntos t = 0, 0,51, 1,03
f

(t) = 154
2t 0,51 1,03
(0 0,51)(0 1,03)
+
2t 0 1,03
(0,51 0)(0,51 1,03)
186 +
2t 0 0,51
(1,03 0)(1,03 0,51)
209
= 154
2t 1,53
0,5253
+ 186
2t 1,03
0,2652
+ 209
2t 0,51
0,5356
= 71,9124 35,9502t
al evaluar en t = 0 y t = 0,51 se obtiene:
v(0) = 71,9124
v(1) = 53,5778
para t = 1,03 se utilizan los puntos t = 0,51, 1,03, 1,74
f

(t) = 186
2t 1,03 1,74
(0,51 1,03)(0,51 1,74)
+ 209
2t 0,51 1,74
(1,03 0,51)(1,03 1,74)
+ 250
2t 0,51 1,03
(1,74 0,51)(1,74 1,03)
= 27,3087 + 21,9768t
al evaluar en t = 1,03
v(1,03) = 49,9447
El siguiente script de MATLAB se utiliza para realizar los calculos
6.2. INTEGRACI

ON NUM

ERICA 63
cl c
x = [ 0 0. 51 1. 03 1. 74 2. 36 3. 24 3 . 8 2 ] ;
f = [ 154 186 209 250 262 272 274 ] ;
df (1)= f ( 1) ( 2 x(1)x(2)x ( 3 ) ) / ( ( x(1)x ( 2) ) ( x(1)x ( 3 ) ) ) + . . .
f ( 2) ( 2 x(1)x(1)x ( 3 ) ) / ( ( x(2)x ( 1) ) ( x(2)x ( 3 ) ) ) + . . .
f ( 3) ( 2 x(1)x(1)x ( 2 ) ) / ( ( x(3)x ( 1) ) ( x(3)x ( 2 ) ) ) ;
f pri ntf ( \n %4s \ t %10s \n , t , v ) ;
f pri ntf ( %4.2 f \ t %10.4 f \n , x ( 1) , df ( 1 ) ) ;
for i =2:6
df 1 = f ( i 1)(2x( i )x( i )x( i +1))/(( x( i 1)x( i ) ) ( x( i 1)x( i +1) ) ) ;
df 2 = f ( i ) ( 2 x( i )x( i 1)x( i +1))/(( x( i )x( i 1))( x( i )x( i +1) ) ) ;
df 3 = f ( i +1)(2x( i )x( i 1)x( i ) ) / ( ( x( i +1)x( i 1))( x( i +1)x( i ) ) ) ;
df ( i ) = df 1+df 2+df 3 ;
f pri ntf ( %4.2 f \ t %10.4 f \n , x( i ) , df ( i ) ) ;
end
df ( 7) = f ( 5) ( 2 x(7)x(6)x ( 7 ) ) / ( ( x(5)x ( 6) ) ( x(5)x ( 7 ) ) ) + . . .
f ( 6) ( 2 x(7)x(5)x ( 7 ) ) / ( ( x(6)x ( 5) ) ( x(6)x ( 7 ) ) ) + . . .
f ( 7) ( 2 x(7)x(5)x ( 6 ) ) / ( ( x(7)x ( 5) ) ( x(7)x ( 6 ) ) ) ;
f pri ntf ( %4.2 f \ t %10.4 f \n , x ( 7) , df ( 7 ) ) ;
plot ( x , df , xk )
Queda como ejercicio el calculo de la aceleracion.
6.2. Integraci on numerica
6.2.1. Metodo del trapecio
_
b
a
f(x)dx
f(a) + f(b)
2
(b a) (6.8)
El error verdadero se puede aproximar con la ecuacion
E
a
=
1
12
f

()(b a)
3
(6.9)
donde f

() se puede aproximar con el valor promedio en el intervalo de


integracion

(x) =
_
b
a
f(x)dx
b a
64 UNIDAD 6. DIFERENCIACION E INTEGRACION NUMERICA
Ejemplo: La integral de la funcion f(x) = xsen(x) + 6 en el intervalo
0 x 5 es
_
5
0
(x sen(x) + 6)dx = 5 cos(5) + sen(5) + 30 27,6227648
La aproximacion con la regla del trapecio (ecuacion ??)
es:
Se requieren los valores de la funcion en los puntos extremos x = 0 y
x = 5
f(0) = (0) sen(0) + 6 = 6 f(5) = 5 sen(5) + 6 1,20538
La aproximacion es
_
5
0
[xsen(x) + 5] dx
(6 + 1,20538
2
(5 0) = 18,0135
El error verdadero es E
t
= 9,60926, es muy grande, debido a que la
funcion dista mucho de ser una recta en el intervalo de integracion, como
se muestra en la gura.
La estimacion del error (ecuacion ??) es
f

(x) = xcos(x) + sen(x)


f

(x) = 2 cos(x) xsen(x)


_
5
0
f

(x)dx =
_
5
0
(2 cos(x) xsen(x))dx 0,459387f

()
0,459387
5 0
= 0,091877E
a
=
1
12
(0,091877)(5 0)
3
= 0,957056
Si se divide el intervalo de integracion en dos segmentos, esto es:
50
2
= 2,5, y se aplica la regla del trapecio a cada segmento se tiene
i 0 1 2
x 0 2.5 5
f(x) 0 7.49618 1.20538
y seg un la ecuacion de aplicacion m ultiple de la regla del trapecio
_
5
0
f(x)dx
2,5
2
(0 + 2(7,49618) + 1,20538)) = 20,2472
6.2. INTEGRACI

ON NUM

ERICA 65
6.2.2. Metodo de Simpson de 1/3 y 3/8
6.2.3. Intervalos desiguales
Determine la distancia recorrida a partir de los siguientes datos:
t 1 2 3.25 4.5 6 7 8 8.5 9.3 10
v 5 6 5.5 7 8.5 8 6 7 7 5
donde t es el tiempo en segundos y v es la velocidad en m/s
SOLUCION:
La distancia recorrida desde el instante t
0
hasta el instante t
1
se obtiene con
la integral de la velocidad
x =
_
t
1
t
0
v(t)dt
Los datos (ver g 6.1) estan irregularmente espaciados con segmentos de
tama no 1, 1.25, 1.25, 1.5,1,1,10.5,0.8 y 0.7. Se observa que entre los valores
de tiempo 2 y 4.5 se tienen dos segmentos de tama no de intervalo 1.25 y
entre valores de tiempo 6 y 8 se tienen otros dos segmentos de tama no de
intervalo 1, el metodo de Simpson de 1/3 es adecuado para dos segmentos
del mismo tama no. Para el resto de los segmentos se utiliza el metodo del
trapecio.
I
1
=
_
2
1
v(t)dt

=
2 1
2
(5 + 6) = 5,5
I
2
=
_
4,5
2
v(t)dt

=
1,25
3
(6 + 4(5,5) + 7) = 14,5833
I
3
=
_
6
4,5
v(t)dt

=
6 4,5
2
(7 + 8,5) = 11,625
I
4
=
_
8
6
v(t)dt

=
1
3
(8,5 + 4(8) + 6) = 15,5
I
5
=
_
8,5
8
v(t)dt

=
8,5 8
2
(6 + 7) = 3,25
I
6
=
_
9,3
8,5
v(t)dt

=
9,3 8,5
2
(7 + 7) = 5,6
I
7
=
_
10
9,3
v(t)dt

=
10 9,3
2
(7 + 5) = 4,2
66 UNIDAD 6. DIFERENCIACION E INTEGRACION NUMERICA
El valor aproximado de la integral es la suma de las integrales parciales:
I

= I
1
+I
2
+I
3
+I
4
+I
5
+I
6
+I
7
= 5,5+14,5833+11,625+15,5+3,25+506+4,2 = 60,2583
La distancia recorrida es x = 60,2583 m.
0
2
4
6
8
10
0 2 4 6 8 10 12
v
t
Figura 6.1: datos
0
2
4
6
8
10
0 2 4 6 8 10 12
v
t
0
2
4
6
8
10
0 2 4 6 8 10 12
v
t
0
2
4
6
8
10
0 2 4 6 8 10 12
v
t
0
2
4
6
8
10
0 2 4 6 8 10 12
v
t
0
2
4
6
8
10
0 2 4 6 8 10 12
v
t
0
2
4
6
8
10
0 2 4 6 8 10 12
v
t
0
2
4
6
8
10
0 2 4 6 8 10 12
v
t
0
2
4
6
8
10
0 2 4 6 8 10 12
v
t
Figura 6.2: segmentos de inte-
gracion
6.3. Aplicaciones
Unidad 7
ECUACIONES
DIFERENCIALES
PARCIALES
67
68 UNIDAD 7. ECUACIONES DIFERENCIALES PARCIALES
Las ecuaciones diferenciales se usan para construir modelos matematicos
en la ciencia y la ingeniera. A menudo no se conoce una solucion analtica,
los metodos numericos proporcionan una aproximacion a la solucion.
7.1. Introducci on
Los sistemas idealizados masa-resorte-amortiguador desempe nan un pa-
pel importante en la mecanica. Para cada masa, la segunda ley de New-
ton se emplea junto con el equilibrio de fuerzas para desarrollar un modelo
matematico del sistema, esto es (ver gura 7.1).
m
d
2
x
dt
2
= F
D
F
U
(7.1)
donde, m es la masa, F
D
es la fuerza hacia abajo, F
U
es la fuerza hacia
arriba y x es el desplazamiento de la masa.
La fuerza ejercida por un resorte es proporcional a su deformacion, y esta
dada por la ley de Hooke
F = kx donde k es la constante de resorte (7.2)
La fuerza ejercida por un amortiguador lineal es proporcional a la velocidad
y esta dada por la ecuacion
F = c
dx
dt
donde c es la constante de amortiguacion (7.3)
La fuerza ejercida por el resorte y por el amortiguador se oponen al
movimiento, de manera que se tiene:
m
d
2
x
dt
2
= c
dx
dt
kx
que da la ecuacion
m
d
2
x
dt
2
+ c
dx
dt
+ kx = 0 (7.4)
que es la ecuacion que representa el comportamiento del sistema masa-
resorte-amortiguador de la gura (7.1).
Las ecuaciones en las que aparece alguna derivada de la funcion descono-
cida se conocen como ecuaciones diferenciales. Por ejemplo, la ecuacion 7.5
dy
dt
= 1 e
t
(7.5)
7.1. INTRODUCCI

ON 69
m
k
c
Figura 7.1: Sistema masa-resorte-amortiguador
es una ecuacion diferencial porque en ella aparece la derivada dy/dt de la
funcion desconocida y = y(t), en el lado derecho de la ecuacion aparece
la variable independiente t. Las primitivas de 1 e
t
son las soluciones
a la ecuacion (7.5). Utilizando tecnicas de calculo de primitivas (curso de
matematicas V), se puede hallat y(t)
y(t) = t + e
t
+ C (7.6)
donde C es la constante de integracion. Todas las ecuaciones de la forma de
la ecuacion (7.6) son soluciones a la ecuacion diferencial (7.5), ver la gura
(7.2).
Un problema de valor inicial como el anterior, se puede especicar como
P.V.I.
_
dy
dt
, ecuacion diferencial;
y(t
0
) = y
0
, condicion inicial.
No todos los problemas de valor inicial se pueden resolver explicitamente,
con frecuencia es imposible hallar una formula que represente la solucion
y(t), o es suciente una aproximacion a la solucion y(t) en forma tabulada.
Por lo tanto, es necesario disponer de metodos que aproximen la solucion de
problemas que aparecen en la ciencia y la ingeniera. Lo que desea obtener es
un conjunto nito de puntos {(t
i
, y
i
)} que son aproximaciones a la solucion
y(t), o sea, y(t
i
) y
i
70 UNIDAD 7. ECUACIONES DIFERENCIALES PARCIALES
y
t
C=2
C=1
C=0
C=-1 C=-2
y
t
C=2
C=1
C=0
C=-1 C=-2
y
t
C=2
C=1
C=0
C=-1 C=-2
y
t
C=2
C=1
C=0
C=-1 C=-2
y
t
C=2
C=1
C=0
C=-1 C=-2
Figura 7.2: Familia de curvas
7.2. Metodos de un paso
En los metodos de un paso, se utiliza la informacion de un punto {(t
i
, y
i
)}
para obtener una aproximacion del siguiente punto {(t
i+1
, y
i+1
)}. La aprox-
imacion se puede obtener por medio de una aproximacion de la pendiente
( ) de la recta que pasa por los puntos {(t
i
, y
i
)} y {(t
i+1
, y
i+1
)}, como se
muestra en la gura 7.3. Se traza la recta con pendiente y que pasa por el
punto {(t
i
, y
i
)}. Si el valor de y de la recta cuando t = t
i
es y
i+1
, se puede
escribir la pendiente como
=
y
i+1
y
i
t
i+1
t
i
al resolver para y
i+1
y
i+1
= y
i
+ h (7.7)
El valor de y
i+1
es una aproximacion a la solucion y(t) cuando t = t
i+1
.
7.2.1. Metodo de Euler
Si la pendiente a la curva del punto (t
i
, y
i
) al punto (t
i+1
, y
(
t
i+1
)) se
aproxima con la pendiente en el punto (t
i
, y
i
) (ver gura 7.4, se obtiene la
formula de Euler
y
i+1
= y
i
+ f(t
i
, y
i
)h (7.8)
7.2. M

ETODOS DE UN PASO 71
y
t
t
0
y
0
t
1
y
1
y(t
1
)
Figura 7.3: Obtencion de una aproximacion en metodos de un paso
puesto que la pendiente f(t
i
, y
i
) es solo una aproximacion a la pendi-
ente promedio entre los puntos (t
i
, y
i
) y (t
i+1
, y
(
t
i+1
)) se tiene un error de
truncamiento. Este error se puede reducir tanto como se desee (al menos
teoricamente) reduciendo el valor del paso h, pero a cambio de un error de
redondeo mayor.
7.2.2. Metodo de Euler mejorado
Una forma de obtener una mejor aproximacion a la solucion de una
ecuacion diferncial, es utilizando una mejor aproximacion a la pendiente
promedio en el subintervalo de integracion. El metodo de Euler mejorado,
tambien conocido como metodo de Heun, trata de corregir esta situacion
utilizando un valor promedio de la derivada tomado en los dos extremos del
subintervalo, en lugar de la derivada tomada en un solo extermo.
El metodo de Heun consta de dos pasos (ver gura (7.5):
Predictor Se parte del punto (t
i
, y
i
) para calcular un valor aproximado de
y correspondiente a t
i
como se hizo en el metodo de Euler. Este valor
se denota como y
0
i+1
, que es un valor transitorio para calcular y
i+1
.
Este paso se conoce como el predictor.
Corrector Este paso trata de corregir la prediccion. En el nuevo punto
(x
i+1
, y
0
i+1
) se eval ua la derivada f(x
i+1
, y
0
i+1
), esta el la pendiente
72 UNIDAD 7. ECUACIONES DIFERENCIALES PARCIALES
y
t
t
i
y
i
t
i+1
y
i+1
(t
i+1
,y
i+1
)
= f(t
i
,y
i
)
y
t
t
i
y
i
t
i+1
y
i+1
(t
i+1
,y
i+1
)
= f(t
i
,y
i
)
Figura 7.4: Metodo de Euler
en el nal del subintervalo. Se calcula la media aritmetica de las dos
pendientes
=
f(x
i
, y
i
) + f(x
i+1
, y
0
i+1
2
(7.9)
Se utiliza la derivada promedio para calcular el nuevo valor de y c on
la ecuacion (7.7), que debera ser mas exacto que y
0
i+1
.
Este procedimiento se repita hasta llegar a xf.
7.2.3. Metodo de Runge-Kutta
Ejemplo: Estimar el valor de y(x = 1) para la EDO
dy
dx
= x y
con la condicion inicial y(0) = 2
Solucion
La EDO se puede expresar como:
y

= f(x, y) = x y (7.10)
Si se divide el intervalo [0, 1] en cuatro subintervalos, el paso es de h = 0,25.
Lo cual requiere de cuatro pasos en forma sucesiva para obtener la sucesion
7.2. M

ETODOS DE UN PASO 73
y
t
t
i
y
i
t
i+1
y
0
i+1
f(t
i
,y
i
)
f(t
i
,y
0
i+1
promedio
y
i+1
y
t
t
i
y
i
t
i+1
y
0
i+1
f(t
i
,y
i
)
f(t
i
,y
0
i+1
promedio
y
i+1
y
t
t
i
y
i
t
i+1
y
0
i+1
f(t
i
,y
i
)
f(t
i
,y
0
i+1
promedio
y
i+1
y
t
t
i
y
i
t
i+1
y
0
i+1
f(t
i
,y
i
)
f(t
i
,y
0
i+1
promedio
y
i+1
Figura 7.5: Metodo de Heun
de aproximaciones y(0,25), y(0,5), y(0,75), y(1).
Paso 1. con x = 0 y y(0) = 2, estimar el valor de y(0,25), sea, para
x + h = 0,25
Calcular los valores de las derivadas k
1
a k
4
, sustituyendo en la ecuacion
(7.2.3) los valores apropiados
k
1
se calcula con x = 0 y y = 2
k
1
= f(0, 2) = 0 2 = 2
k
2
se calcula con:
x +
1
2
h = 0 +
1
2
0,25 = 0,125
y
y +
1
2
k
1
h = 2 +
1
2
(2)0,25 = 1,75
de manera que:
k
2
= f(x +
1
2
h, y +
1
2
k
1
h) = f(0,125, 1,75) = 0,125 1,75 = 1,625
K3 se calcula con:
x +
1
2
h = 0 +
1
2
0,25 = 0,125
74 UNIDAD 7. ECUACIONES DIFERENCIALES PARCIALES
y +
1
2
k
2
h = 2 +
1
2
(1,625)0,25 = 1,7969
de manera que:
k
3
= f(x +
1
2
h, y +
1
2
k
2
h) = f(0,125, 1,7969) = 0,125 1,7969 = 1,6719
k
4
se calcula con:
x + h = 0 + 0,25 = 0,25
y
y + k
3
h = 2 + (1,625)0,25 = 1,7969
de manera que
k
4
= f(x + h, y + k
3
h) = f(0,25, 1,6719) = 0,25 1,6719 = 1,3320
La estimacion de la pendiente entre x = 0 y x = x + h = 0,5 es
=
1
6
(2 + 2(1,625) + 2(1,6719) + (1,3320)) = 1,6543
Utilizando la ecuacion (7.7) se obtiene el valor estimado de y para x = 0,25
y(0,25) = y(0) + h = 2 + (1,6543)0,25 = 1,5864
Paso 2. con x = 0,25 y y(0,25) = 1,5864, estimar el valor de y(0,5), o
sea, para x + h = 0,5
k
1
se calcula con x = 0,25 y y = 1,5864
k
1
= f(0,25, 1,5864) = 0,25 1,5864 = 1,3364
Los valores para calcular k
2
son
x+
1
2
h = 0,25+
1
2
0,25 = 0,375 y y+
1
2
k
1
h = 1,5864+
1
2
(1,3364)0,25 = 1,4194
de manera que
k
2
= f(x +
1
2
h, y +
1
2
k
1
h) = f(0,375, 1,4194) = 0,375 1,4194 = 1,0444
para calcular k
3
se usa
x+
1
2
h = 0,25+
1
2
0,25 = 0,375 y y+
1
2
k
2
h = 1,5864+
1
2
(1,0444)0,25 = 1,4559
7.2. M

ETODOS DE UN PASO 75
para obtener
k
3
= f(x +
1
2
h, y +
1
2
k
2
h) = f(0,375, 1,4559) = 0,375 1,1,4559 = 1,0809
para k
4
x + h = 0,25 + 0,25 = 0,5 y y + k
3
h = 1,5864 + (1,0809)0,25 = 1,3162
de manera que
k
4
= f(x + h, y + k
3
h) = f(0,5, 1,3162) = 0,5 1,3162 = 0,8162
La estimacion de la pendiente entre x = 0,25 y x = x + h = 0,5 es
=
1
6
(1,3364 + 2(1,0444) + 2(1,0809) + (0,8162)) = 1,0672
Utilizando la ecuacion (7.7) se obtiene el valor estimado de y para x = 0,5
y(0,5) = y(0,25) + h = 1,5864 + (1,0672)0,25 = 1,3196
El valor aproximado de y para x = 0,5 es y = 1,3196
Paso 3. Repitiendo el procedimiento con x = 0,5 y y(0,5) = 1,3196 se
obtienen los valores
k
1
= f(0,5, 1,3196) = 0,5 1,3196 = 0,8196
k
2
= f(0,625, 1,2172) = 0,625 1,2172 = 0,5922
k
3
= f(0,625, 1,2456) = 0,625 1,2456 = 0,6206
k
4
= f(x + h, y + k
3
h) = f(0,75, 1,1645) = 0,75 1,1645 = 0,4145
=
1
6
(0,8196 + 2(0,5902) + 2(0,6206) + (0,4145)) = 0,6100
y(0,75) = 1,3196 + (0,6100)0,25 = 1,1671
Repitiendo de nuevo
Paso 4. ahora con x = 0,75 y y(0,75) = 1,1671
k
1
= f(0,75, 1,1671) = 0,4171
k
2
= f(0,875, 1,1150) = 0,2400
k
3
= f(0,875, 1,1371) = 0,2621
k
4
= f(1,0, 1,1016) = 0,1016
= =
1
6
(0,4171 + 2(0,2400) + 2(0,2621) + (0,1016)) = 0,2538
y(1) = 1,1671 + (0,2538)0,25 = 1,1037
Los resultados se sumarizan en la tabla 7.1 y se muestran en la gura (7.6
76 UNIDAD 7. ECUACIONES DIFERENCIALES PARCIALES
i t y(t)
0 0.00 2
1 0.25 1.5864
2 0.50 1.3196
3 0.75 1.1671
4 1.00 1.1037
Tabla 7.1: Resultados de la solucion a una ecuacion diferencial por el metodo
de Runge-Kutta de 4
o
orden
1
1.2
1.4
1.6
1.8
2
0 0.2 0.4 0.6 0.8 1
1
1.2
1.4
1.6
1.8
2
0 0.2 0.4 0.6 0.8 1
Figura 7.6: Graca de la solucion a la ecuacion diferencial del ejemplo
7.2.4. Sistemas de ecuaciones diferenciales
A menudo se presentan ecuaciones diferenciales en las cuales aparecen
derivadas de alto orden, para resolver este tipo de ecuaciones, se puede
realizar una transformacion de la ecuacion diferencial de alto orden a un
sistema de ecuaciones diferenciales de primer orden y aplicar a este sistema
uno de los metodos estudiados anteriormente.
Suponer el sistema de dos ecuaciones diferenciales de primer orden
dx
dt
= f(t, x, y) con x(t
0
) = x
0
dy
dt
= g(t, x, y) con y(t
0
) = y
0
(7.11)
7.2. M

ETODOS DE UN PASO 77
Una solucion del sistema (7.11) es un par de funciones derivables x(t) y
y(t). Para obtener una solucion numerica del sistema (7.11) en un intervalo
dado t
0
t t
1
, se puede utilizar alguno de los metodos estudiados
anteriormente.
Ejemplo. Resolver el sistema de ecuaciones diferenciales
dx
dt
= 2x + 3y
dy
dt
= 2x + y
con condiciones iniciales x(0) = 2,7 y y(0) = 2,8 en el intervalos 0 t 1.
Solucion.
El sistema se puede escribir como un problema de valor inicial:
dx
dt
= f(t, x, y) = 2x + 3y x(0) = 2,7
dy
dt
= g(t, x, y) = 2x + y, y(0) = 2,8
Si se divide el intervalo en 10 subintervalos, se tiene un paso h = 0,1.
Para ilustrar el metodo de solucion de este tipo de sistema se utilizara el
metodo de heun, ya que da una precision regular y no requiere de muchos
calculos.
Con t = 0, x(0) = 2,7 y y(0) = 2,7
Se calculan las derivadas (pendientes) en el punto inicial (t = 0)
f
1
= 2(2,7) + 3(2,8) = 3 g
1
= 2(2,7) + 2,8 = 2,6
los predictores en x + h = 0 + 0,1 = 0,1
x
0
(0,1) = 2,7 + 3(0,1) = 2,4 y
0
(0,1) = 2,8 2,6(0,1) = 2,54
las derivadas en el el punto nal del subintervalo (t = 0,1)
f
2
= 2(2,4) + 3(2,54) = 2,82 g
2
= 2(2,4) + 2,54 = 2,26
las pendientes promedio

f
=
3 + 2,82
2
= 2,91
g
=
2,6 2,26
2
= 2,43
78 UNIDAD 7. ECUACIONES DIFERENCIALES PARCIALES
los correctores, o estimaciones en t = 0,1
x(0,1) = 2,7 + 2,91(0,1) = 2,409 y(0,1) = 2,8 2,43(0,1) = 2,557
Con t = 0,1, x(0,1) = 2,409 y y(0,1) = 2,557
Se calculan las derivadas (pendientes) en el punto inicial (t = 0,1)
f
1
= 2(2,409) + 3(2,557) = 2,853 g
1
= 2(2,409) + 2,557 = 2,261
los predictores en x + h = 0,1 + 0,1 = 0,2
x
0
(0,2) = 2,409+3(0,1) = 2,1237 y
0
(0,2) = 2,5572,261(0,1) = 2,3309
las derivadas en el el punto nal del subintervalo (t = 0,2)
f
2
= 2(2,1237)+3(2,3309) = 2,7453 g
2
= 2(2,1237)+2,3309 = 1,9165
las pendientes promedio

f
=
2,853 + 2,7453
2
= 2,79915
g
=
2,261 1,9165
2
= 2,08875
los correctores, o estimaciones en t = 0,2
x(0,1) = 2,409+2,79915(0,1) = 2,129085 y(0,1) = 2,5572,08875(0,1) = 2,348125
El proceso se repite hasa alcanzar el punto nal, cuando se obtiene la
estimaciones en t = 1, loos resultados se muestran en la tabla 7.2
Una ecuacion diferencial de orden n se puede convertir a un sistema
equivalente de n ecuaciones diferenciales de primer orden. Las derivadas de
orden superior se sustituyen por variables, el procedimiento se ilustra con
un ejemplo.
7.3. Metodos de pasos m ultiples
7.4. APLICACIONES A LA INGENIER

IA 79
i t x(t) y(t)
0 0 -2.7 2.8
1 0.1 -2.4090 2.5570
2 0.2 -2.1291 2.3481
3 0.3 -1.8513 2.1754
4 0.4 -1.5635 2.0433
5 0.5 -1.2495 1.9596
6 0.6 -0.8858 1.9367
7 0.7 -0.4391 1.9944
8 0.8 0.1392 2.1627
9 0.9 0.9202 2.4867
10 1.0 2.0081 3.0340
Tabla 7.2: Resultados de solucion a ejemplo de sistema de ecuaciones m ulti-
ples
7.4. Aplicaciones a la ingeniera
1. En un tanque perfectamente agitado se tiene 400 L de una salmuera en
la cual estan disueltos 25 kg de sal com un, en cierto momento se hace
llegar al tanque un gasto de 80 L/min de una salmuera que contiene
0.5 kg de sal com un por litro. Si se tiene un gasto de salida de 80
L/min determinar:
a) Que cantidad de sal hay en el tanque transcurridos 10 minutos?
b) Que cantidad de sal hay en el tanque transcurrido un tiempo
muy grande?
Problema tomado de Nieves y Dominguez 2002
Solucion:
a) El gasto de entrada y salida de salmuera es de 80 L/min, por lo
que el volumen en el tanque es constante. Si x(t) son los Kgs de
sal en el tanque despues de t minutos, la acumulacion de sal en
el tanque esta dada por dx/dt y por la ecuacion (7.12):
dx
dt
= masa de sal que entra - masa de sal que sale (7.12)
80 UNIDAD 7. ECUACIONES DIFERENCIALES PARCIALES
la masa de la sal que entra es (80 L/min)*(0.5 kg/L) = 40 kg/min
y la masa de la sal que sale es 80 L/min(sal en el tanque en kgs
/400 L), o sea, 80 L/min(x kgs/400 L) = 0.2x kgs/min. Susti-
tuyendo en la ecuacion (7.12) se tiene
dx
dt
= 40 0,2x
la condicion inicial x(0) es 25 kg de sal. Entonces tenemos un
problema de valor inicial con
P.V.I.
_

_
dx
dt
= 40 0,2x
x(0) = 25
x(10) =?
Resolver y gracar para diferentes valores de paso hasta obtener
una solucion satisfactoria.
Con el metodo de Heun y paso de 1 min se obtiene 175.9466
Con el metodo de Heun y paso de 0.5 min se obtiene 176.2311
La soluci on es 176.23 Kg de sal trancurridos 10 min.
b) La concentracion de sal en el agua que entra y en el agua del
tanque es diferente, puesto que el tanque esta drenando solucion,
es de esperarse que en alg un momento la concentracion de sal en
el tanque se estabilice. Para determinar el tiempo necesario, se
deben continuar los calculos del inciso anterior hasta que el valor
de la cantidad de sal en el tanque no vare, o lo haga en canti-
dades muy peque nas.
Con un valor de paso 0.5 min. se tienen los siguientes resultados:
t, min 20 30 40 50
x, kg 196.77 199.56 199.44 199.99
la cantidad de sal en un tiempo muy grande es de aprox-
imadamente 200 kg.

S-ar putea să vă placă și