Sunteți pe pagina 1din 258

PROGRAMACIN Y METODOS NUMRICOS

Los METODOS NUMERICOS constituyen tcnicas mediante las cuales es


posible formular problemas matemticos, de tal forma que pueden resolverse
utilizando operaciones aritmticas.
En la actualidad, las computadoras y los mtodos numricos ofrecen una
alternativa para los clculos complicados. Al usar la potencia de la
computadora se obtienen soluciones directamente, de esta manera se pueden
aproximar los clculos sin tener que recurrir a consideraciones de
simplificacin o tcnicas muy lentas.
Son herramientas poderosas para la solucin de problemas con gran nmero
de ecuaciones, manejan no linealidades y se pueden resolver geometras
complicadas comunes en la prctica de ingeniera
Los mtodos numricos son un medio para esforzar la comprensin de las
matemticas, ya que su funcin es convertir las matemticas superiores en
operaciones aritmticas bsicas, de esta manera se puede profundizar en los
temas que de otro modo resultaran oscuros.
Los mtodos numricos estn diseados para usarlos en las computadoras,
son ideales para tal propsito. Adems, son especialmente adecuados para
ilustrar el poder y las limitaciones de las computadoras.
Existen varios paquetes computacionales que son herramientas fundamentales
en la resolucin de problemas de ingeniera, debido a que pueden realizar
varios clculos en poco tiempo, a gran diferencia del tiempo que llevara
resolverlos de manera tradicional.
Algunos paquetes son: Fortran 90, C++ y Matlab, dichos programas facilitan
hallar una respuesta al problema, pero cabe mencionar que no sustituyen al
intelecto humano, porque sin la idea del modo de resolucin de determinado
conflicto, la paquetera se vuelve intil
La paquetera tiene como principal objetivo facilitar la tarea al usuario, las
capacidades de cada uno de los programas es diversa, pero tienen en comn
las siguientes capacidades:

Representacin de informacin sencilla ( declaracin de constantes,


variables y tipos)
Representacin de informacin ms compleja (estructuras de datos,
arreglos y registros)

Modelos matemticos (asignacin, reglas de prioridad y funciones


intrnsecas)
Entrada / salida de informacin
Representacin lgica (secuencia, seleccin y repeticin)
Programacin modular (funciones y subrutinas).
La programacin estructurada tiene como propsito principal facilitar la tarea
del programador, as como proporcionar un buen servicio de resolucin al
usuario.
La idea clave detrs de la programacin estructurada radica en que cualquier
algoritmo de clculo requiere tan solo de tres estructuras de control
fundamentales: secuencia, seleccin y repeticin, as como, el empleo de un
diagrama de flujo o pseudocdigo.
El modo de representar un programa es principalmente mediante un
DIAGRAMA DE FLUJO, el cul consiste en una serie de pasos que se
conectan entre s por medio de flechas y lneas de proceso, incluye
condicionantes y todas las instrucciones se encierran en bloques.
Existe otra manera de expresar las condiciones y los procesos, y sta es
mediante un PSEUDOCDIGO, ste constituye la conexin entre el diagrama
de flujo y el programa como tal.

PROGRAMACIN ESTRUCTURADA
EL creciente empleo de los computadores ha conducido a buscar un
abaratamiento del desarrollo des software, paralelo a la reduccin del costo del
hardware obtenido gracias a los avances tecnolgicos. Los altos costos del
mantenimiento de las aplicaciones en produccin normal tambin han urgido la
necesidad de mejorar la productividad del personal de programacin
En la dcada del sesenta salieron a la luz publica los principios de lo que ms
tarde se llamo Programacin Estructurada, posteriormente se libero el conjunto de
las llamadas "Tcnicas para mejoramiento de la productividad en programacin"
(en ingles Improved Programming Technologies, abreviado IPTs), siendo la
Programacin Estructurada una de ellas.
La programacin estructurada permite la escritura de programas fciles de leer y
modificar. En un programa estructurado el flujo lgico se gobierna por tres
estructuras de control bsicas: secuenciales, repetitivas y selectivas.

El diseo de un programa entraa la descomposicin del problema en mdulos


o partes independientes programacin modular , la programacin de cada
mdulo mediante mtodos estructurados programacin estructurada y su
unin posterior.
En la programacin modular un programa se divide en mdulos, cada uno de
los cuales ejecuta una nica actividad o tarea, y se codifican
independientemente de otros mdulos.
Cada uno de estos mdulos se analizan, codifican y "optimizan" por separado.
Cada programa contiene un mdulo llamado programa principal (mdulo
controlador) que controla todo lo que sucede.
Cuando es necesario, se transfiere el control a submdulos de modo que stos
puedan ejecutar sus funciones.
Los mdulos son independientes en el sentido en el que ningn mdulo puede
tener acceso directo a cualquier otro mdulo, excepto el mdulo al que llama y
sus propios submdulos
Se ha demostrado que un programa propio puede ser escrito utilizando
solamente tres tipos de estructuras de control: secuenciales, selectivas y
repetitivas.
Un programa es propio si posee un slo punto de entrada y uno de salida, si
existen caminos desde el inicio hasta el fin que se pueden seguir y que pasan
por todas las partes del programa, y si todas las instrucciones son ejecutables
sin que hayan bucles infinitos
Es utilizada para la roma de decisiones lgicas, en sta se analiza si cumple
una condicin, en caso de cumplirla o no, existen instrucciones para cada uno
de los casos.
Las estructuras mas reconocidas son IF, THEN, ELSE, y cada una de las
estructuras puede ser SIMPLES, SOBLES o MULTIPLES
SELECTIVA SIMPLE
Ejecuta una determinada accin cuando se cumple una determinada condicin.
La seleccin if then (si entonces) evala la condicin y si es verdadera
ejecuta la accin de lo contrario no har nada.

SELECTIVA DOBLE

Permite elegir entre dos opciones posibles en funcin del cumplimiento o no


de una determinada condicin. Si la condicin es verdadera, se ejecuta la
accin 1, si es falsa, se ejecuta la accin 2. La selectiva en pseudocdigo
es if then else.

SELECTIVA MLTIPLE

La estructura de seleccin mltiple (case en pseudocdigo) evaluar una


expresin que podr tomar n valores distintos 1, 2, 3, 4, ..n. Segn sea el
valor en la condicin, se realizar una de las n acciones

WHILE

La estructura repetitiva mientras es aquella en que el cuerpo del bucle se


repite mientras se cumple una determinada condicin.

Cuando se ejecuta esta instruccin, la primera cosa que sucede es que se


evala la condicin.

Si la expresin es verdadera, entonces se ejecuta el cuerpo del bucle. Este


proceso se repite una y otra vez mientras la condicin sea verdadera

DO WHILE

Se ejecuta hasta que se cumpla una condicin determinada que se


comprueba al final del bucle, esto permite que la iteracin se ejecute al
menos una vez antes de que la condicin sea evaluada

FOR

Se utilizan las estructuras for cuando se conocen con certeza el nmero de


veces que desea repetir un bucle, es decir, cuando es un nmero fijo de
veces.

VENTAJAS

Los programas son ms fciles de entender. Un programa estructurado


puede ser ledo en secuencia, de arriba hacia abajo, sin necesidad de estar
saltando de un sitio a otro en la lgica, lo cual es tpico de otros estilos de
programacin.

Reduccin de los costos de mantenimiento.

Programas ms sencillos y ms rpidos.


4

Aumento de la productividad del programador.

Reduccin del esfuerzo en las pruebas. El programa se puede tener listo


para produccin normal en un tiempo menor del tradicional; por otro lado, el
seguimiento de las fallas (debugging) se facilita debido a la lgica ms
visible, de tal forma que los errores se pueden detectar y corregir ms
fcilmente.

INTRODUCCIN
Proporcionar a los interesados los conocimientos bsicos para usar el entorno
de MATLAB y las facilidades para su programacin.
MATLAB (Matrix Laboratory) es un programa interactivo de uso general en
Ciencias e Ingeniera
La interaccin se realiza mediante instrucciones (comandos), y tambin
mediante funciones y programas(scripts).
La especificacin y asignacin de cada variable la realiza MATLAB en forma
dinmica y eficiente, por lo que no son necesarias las declaraciones de
variables de algunos lenguajes de computacin convencionales.
CARACTERSTICAS

Clculo numrico rpido y con alta precisin

Manejo simblico

Graficacin y visualizacin avanzada

Programacin mediante un lenguaje de alto nivel

Programacin estructurada y orientada a objetos

Soporte bsico para diseo de interfaz grfica

Extensa biblioteca de funciones

Aplicaciones especializadas para algunas ramas de ciencias e ingeniera


(toolboxes)

Operacin simple y eficiente

Interactivo
5

VENTANAS DE MATLAB

Command Window: Es la ventana de comandos para ejecucin de


instrucciones

Command History: Es el registro de los comandos que han sido


ingresados 3

Workspace: Contiene la descripcin de las variables usadas en cada


sesin.

Inicialmente, se sugiere dejar activa nicamente la ventana de comandos,


cerrando las otras ventanas con el botn x.

SISTEMA DE AYUDA

Adicionalmente, presionando el cono Help usted puede entrar al sistema


de ayuda de MATLAB organizado por contenido, ndice, bsqueda y
demostraciones.
>> help despliega temas de ayuda
>> help ops despliega comandos de un tema. Ej. lista de operadores
>> help exp uso de un comando especfico. Ej. funcin exponencial

PUNTO Y COMA. Cuando es tecleada al final de un comando, la salida o


resultado de dicho comando no ser visualizada.

PORCENTAJE. Si se teclea al inicio de una lnea, lo que sea escrito en


adelante ser tomado como un comentario, osea que la lnea no ser
ejecutada al dar enter.

Si es escrito en seguida de un texto, se puede escribir enseguida un


comando y ser ejecutado sin verse afectado por el comentario.

OPERACIONES BASICAS

SUMA(+)

RESTA(-)

PRODUCTO(*)

DIVISIN(/)

POTENCIA(^)

JERARQUA DE OPERACIONES
Al igual que de manera tradicional, matlab sigue una jerarqua de operaciones,
esto quiere decir que cuando se encuentra con varias operaciones, realizar
primero las potencias y las races, luego las multiplicaciones y divisiones y luego
sumas y restas. Sin embargo si existen signos de agrupacin, realizar primero lo
que se encuentre dentro del signo de agrupacin

FORMATO DE NMEROS
FORMAT SHORT. El nmero deber de ser mayor o igual a 0.001 o bien,
menor o igual que 1000
FORMAT LONG. Un punto fijo con 14 dgitos decimales; osea que el nmero
deber de ser mayor o igual que .001, adems de ser menor o igual que 100.
FORMAT SHORT E. Es para notacin cientfica con cuatro dgitos decimales.
FORMAT LONG E. Notacin cientfica con 15 dgitos decimales.
FORMAT SHORT G. Los 5 primeros dgitos fijos o en el punto flotante.
FORMAT LONG G. Los 15 primeros dgitos fijos o en el punto flotante.
FORMAT BANK. Formato con dos dgitos decimales.

10

OPERADOR DE ASIGNACIN

El operador de asignacin es el signo igual (=), y es utilizado para definir


variables. Entonces cuando se quiera definicr una variable se coloca el
nombre de la variable, en seguida, el signo igual y despus se coloca el
valor numrico o la expresin computable

VARIABLES

El nombre de las variables puede tener una longitud de 63 caracteres,


puede contener letras y dgitos, debe de ser empezado por una letra; y
recuerde que MATLAB es un programa que distingue entre maysculas y
minsculas

11

VARIABLES DEFINIDAS
Existen una serie de variables en MATLAB que ya estn establecidas, y que
pueden ahorrar el tiempo en el proceso de anlisis numrico.
ans: El valor de la ltima ejecucin
pi: Representa el valor de PI
eps: Representa la diferencia ms pequea entre dos nmeros(2^(-52))
inf: Representa el infinito
i: Expresa a un nmero imaginario y es equivalente a j.

12

NaN: Abreviatura de Not a Number.


COMANDOS TILES
clear: Borra todas las variables de la memoria
clear x y z: Borra solo las variables antes mencionadas
who: Muestra todas las variables almacenadas en la memoria
whos: Muestra todas las variables almacenadas, su longitud, clase, etc

13

POLINOMIOS
En Matlab un polinomio se representa como un vector. Para crear un polinomio en
Matlab simplemente introduzca cada coeficiente del polinomio en un vector en
orden descendente. Por ejemplo, digamos que tenemos el siguiente polinomio:
s4 + 3s3 15s2 2s + 9
Para introducirlo en Matlab basta con crear un vector de la siguiente manera:

si un polinomio no posee algn coeficiente es preciso introducir un cero en el lugar


apropiado del vector que lo representa.
EVALUAR UN POLINOMIO
Se puede evaluar el polinomio usando la funcin polyval. Por ejemplo para hallar
el valor del polinomio anterior en s=2,

14

OBTENER RACES

MULTIPLICACIN Y DIVISIN
El producto de dos polinomios se calcula realizando la convolucin de sus
coeficientes. Matlab dispone de a funcin conv para realizar esta tarea.

La funcin deconv devuelve el cociente y el resto. As, al dividir z entre y


obtendremos de nuevo x.

15

FICHEROS SCRIPT
Los ficheros scripts son usados si es que se necesita realizar alguna correccin
o cambio sobre algunos comandos previamente ejecutados, si se escribieran
en la ventana de comandos, stos se vuelven inapelables, lo que hace a esta
ventana muy poco interactiva.
Un fichero es una secuencia de comandos, denominado tambin programa
Cuando un fichero es ejecutado, MATLAB ejecuta los comandos en el orden de
aparicin.
Cuando un fichero produce una salida, la salida ser visualizada en la ventana
de comandos.
Los ficheros son convenientes porque pueden ser editados y pueden ser
ejecutados tantas veces sea requerido.
Es una secuencia de comandos, denominado programa
Si el fichero script proporciona una salida, sta ser visualizada en la ventana
de comandos
MENU FILENEWMFILE
Antes de ser ejecutado el programa deber de ser guardado
Puede ser ejecutado tecleando el nombre del programa en la ventana de
comandos o bien, directamente a travs del cono de run.

16

17

VARIABLES DEFINIDAS Y ASIGNADAS


La asignacin del valor a la variable forma parte del fichero, sin embargo si el
usuario desea darle otro valor a la variable tendr que hacerlo directamente
editando el script.
Otra herramienta es usar el comando input como parte del script; as este
comando har que s ele pida al usuario que introduzca cierto valor.

COMANDOS DE SALIDA
disp: Usado para visualizar un texto o el contenido de una variable sin mostrar
su nombre.
fprintf= Usado para visualizar salidas de programas , tanto textos, como datos;
tambin con este comando es posible comenzar una nueva lnea

18

IMPORTACIN Y EXPORTACIN DE DATOS


Los datos pueden ser exportados e importados hacia y desde Excel.
xlsread: Este comando importa los datos de una hoja de clculo de Excel a
una variable de tipo array. Si el fichero de Excel contiene ms de una hoja de
clculo, se deber de especificar la hoja de clculo a importar
PROGRAMACIN
IF-END
La estructura condicional if-end se ve de forma esquemtica, que muestra como
se introducen los comandos de un programa, y, adems, un diafragma de flujo
simblico que explica el funcionamiento de este tipo de sentencias. Cuando el
programa se ejecuta y alcanza la sentencia if, ste evala la expresin
19

condicional. Si la expresin resulta verdadera el programa sigue ejecutando las


sigientes instrucciones que sigue la sentencia if, hasta la sentencia end. Por el
contrario, si resulta falso el programa salta el bloque de instrucciones.

EJEMPLO
Un trabajador cobra un determinado salario por hora hasta 40 hrs
semanales. Adems, si hace dos horas extra, estas horas se pagan un 50%
ms. Deber escribir un programa script que calcule la paga semanal del
trabajador. El programa debe de pedir que el usuario meta el nmero de
horas trabajadas y el salario por hora.

20

TANQUES DE COMBUSTIBLE
Se desea saber el volmen mximo que se ha de depositar de combustible en
dicho tanque, se ha de introducir el volumen del tanque y de igual forma se
desea saber cul es el volumen exedente o si no hay exedente

21

22

IF-ELSE-END
Esta estructura proporciona el mecanismo necesario para ejecutar uno
entre dos grupos de comandos posible en funcin de la evaluacin de una
condicin lgica. Se trata pues, de discriminar entre dos opciones posibles

23

NIVEL DE DEPOSITO DE AGUA


Una torre para el almacenamiento de agua tiene una geometra muy particular la
parte inferior es un cilindro y la parte superior es un cono truncado invertido,
dentro de dicho depsito esta una boya que indica el nivel del tanque. Realice un
script donde se sepa el volumen del tanque desde la posicin de la boya

Para 0<h<19 el volumen es calculado como el volumen del cilindro.

Para 19<h<34 el volumen es calculado para un cono truncado

24

IF-ELSE-IF-ELSE-THEN
Esta estructura incluye dos sentencias condicionales, lo que hace posible ejecutar
uno de entre tres grupos de instrucciones diferentes. La sentencia if inicial con una
expresin condicional. Si la expresin es verdadera el programa ejecutar el
paquete uno de instrucciones de la sentencia if y el elseif, y posteriormente saltar
hasta el end. Si la condicin evaluada es falsa, la instruccin saltar hasta la
estructura elseif. Si la instruccin evaluada en elseif es verdadera se desarrolla el
paquete dos de instrucciones y saltar inmediatamente a end, sin embargo, si es
falsa se aplicar el else y se desarrolla un tercer grupo de instrucciones.

25

SENTENCIA SWITCH-CASE
Esta instruccin es un control del flujo de un programa. Esta sentencia proporciona
un mecanismo para escoger y ejecutar un grupo de instrucciones entre un grupo
de instrucciones.
switch expresin
Donde la expresin puede ser un escalar o una cadena. Normalmente consiste en
un valor al que se le ha asignado un valor escalar, aunque puede tambin ser una
expresin matemtica valuable.
A continuacin del comando switch hay uno o varios comandos de tipo case,
seguidos por valores que pueden ser escalares o cadenas. Cada comando case
est asociado a la serie de instrucciones que le proceden.
Despus del ltimo comando case puede haber, opcionalmente un comando
otherwise, seguido de igual forma una serie de isntrucciones.
Y al final un end.

26

El valor de la expresin switch se compara con cada uno de los valores del
comando case. Si se encuentra una coincidencia, entonces se ejecutan las
instrucciones que siguen a dicho comando case.
Si hay mas de una coincidencia se atiende a la primera que se encuentre
Si no se encuentran coincidencias se ejecutan las instrucciones del comando
otherwise si es que este ha sido declarado.
Si no hay otherwise no se ejecutar ninguna instruccin en caso de ninguna
coincidencia.
27

CONVERSIN DE UNIDADES DE ENERGA


Escribir un programa que convierta una cantidad de energa dada en otra unidad
de energa especificada por el usuario.

28

BUCLES
Los bucles o iteraciones son otros de los mtodos ms utilizados para controlar el
flujo de un programa. Es un bucle, la ejecucin de uno o varios comandos se
repite varias veces consecutivamente. Cada una de estas repeticiones se
denomina paso o iteracin. En cada paso se ejecutan grupos o instrucciones de
matlab. Matlab permite dos tipos de bucles, por un lado la instruccin for-end el
cual permite definir bucles donde el nmero de iteraciones queda definido al
comienzo de bucle. Por otro lado, en la estructura while-end el nmero de
iteraciones no se conoce a priori, ya que depende de que se cumpla o no la
condicin determinada. Independiente del nmero de iteraciones de uno u otro tipo
de bucle, y se sale de ellos con el uso de break.
FOR-END
En este tipo de bucles la ejecucin de una o mas instrucciones se repite un
numero fijo de veces.
La variable ndice del bucle puede tener cualquier nombre.
En el primer paso k toma el valor inicial de f, y el sistema ejecuta los comandos
que se encuentren entre las instrucciones for y end. Seguidamente el sistema
vuelve a la instruccin for para realizar el segundo paso. Ahora k toma el valor de
k=f+s, y los comandos que se encuentran entre las sentencias for y end se
ejecutan de nuevo para el valor de k. El proceso se repite hasta que se alcanza el
29

ltimo valor de t, por ejemplo k=1:2:9 las iteracione ser cuando k toma los valores
de 1,3,5,7,9 para cada una de las iteraciones.
El incremento s puede ser negativo.

Si el valor del incremento se omite, el incremento por default ser de la


unidad.
Si f=t, el bucle se ejecuta solo una vez.
Si f>t y s>0, o si f<t y s<0, el bucle no ser ejecutado.
Si los valores de k, s y t son tales que k tendr el valor ms alto posible y a la
vez sea menor que t. Si s es negativo, la ltima iteracin ser aquella en la que
k es el menor valor posible y a su vez mayor que t.
La variable k tambin puede tomar valores especficos. Para ellos se introduce
mediante un vector los valores que se deseen.
for k = [7, 9, -1, 3, 3, 5]

30

El valor de k no debe de ser redefinido dentro del propio bucle. Si se hace, el


bucle puede ser que no funcione como se esperaba.
Todos los comandos for de un programa deben tener su correspondiente
comando end para finalizarlos.
El valor de la variable ndice del bucle (k) no se visualiza automticamente. Sin
embargo es posible mediante el tecleado de k como un comando mas dentro
del bucle. A veces esto es til en determinadas circunstancias especialmente
para depurar el programa.
Cuando un bucle finaliza, la variable ndice del bucle toma el valor de la
asignacin en el ultimo paso o iteracin, es decir, el valor final indicado en la
propia declaracin del bucle.
SERIES NUMRICAS
Utilizar un bucle de tipo for-end, en un fichero script, para la suma de los
primeros n trminos de la serie numrica. Ejecute el fichero script para n=4.

31

VECTORES
MATLAB es una herramienta sumamente til debido a que se pueden generar
vectores (arrays) unidimensionales, bidimensionales; con la opcin de
manipularlos

32

NOMBRE VARIABLE = [ELEMENTOS]


Vector Fila: Los elementos deben colocarse separados por una coma o un
espacio.
Vector Columna: Los elementos debern de ser colocados entre dos corchetes
y debern de ser separados por punto y coma o bien por un enter.
AO

1984

1986

1988

1990

POBLACIN

127

130

136

145

En un vector con distancia o espacio constante, la diferencia entre los


elementos es siempre la misma.
NOMBRE VARIABLE = [m:q:n]

33

ARRAY BIDIMENSIONAL

Tambin es llamado matriz, distribuye los nmeros en columnas y filas. Las


matrices se usan ara almacenar informacin como si fuera una tabla. Las matrices
juegan un papel muy importante en algebra lineal y sumamente importantes para
modelizar y resolver problemas.
NOMBRE VARIABLE = [ELEMENTOS DE LA PRIMERA FILA; ELEMENTOS DE
LA SEGUNDA FILA; ELEMNTOS DE LA TERCERA FILA]

34

SUMA Y RESTA
Sobre un mismo rengln se define los vectores que se deseen sumar o restar,
debern de ser separados por punto y coma. A continuacin deber de escribirse
un tercer vector el cul ser igualado a la suma o resta de los vectores antes
mencionados.

35

MULTIPLICACIN
Afortunadamente MATLAB sigue las reglas fundamentales del lgebra cuando se
ha de manipular vectores, y el caso de producto no es la excepcin.

36

OTRAS FUNCIONES
mean(A)

Valor medio de los elementos de un vector

C = max (A)

El mayor valor de los elementos del vector A

min (A)

El mayor valor de los elementos del vector A

sum(A)

Calcula la sumatoria de los elementos del vector A

sort(A)

Devuelve el vector ordenado ascendentemente

median(A)

Devuelve el elemento mediana de un vector

37

std(A)

Devuelve la desviacin Standard del vector A

DOS PUNTOS EN ARAYS


Los dos puntos son utilizados para acceder a un rango de elementos dentro de un
vector o una matriz.
Va(:) Se refiere a todos los elementos del vector va (ya sea vector fila o columna).
Va(m:n) Se refiere a todos los elementos comprendidos entre las posiciones m y n
del vector va.

38

A(:,n) Se refiere a los elementos de la columna n de la matriz A.


A(n,:) Se refiere a los elementos de la fila n de la matriz A
A(:,m:n) Se refiere a los elementos entre las columnas n y m de la matriz A
A(m:n,:) Se refiere a los elementos entre las filas m y n de la matriz A.
A(m:n,p:q)Se refiere a los elementos de la fila m a la n y a los de la columna
p a la q de la matriz A.

39

ADICIN DE ELEMENTOS A UN VECTOR


40

Se pueden aadir elementos nuevos a un vector existente mediante una


asignacin de estos elementos, por ejemplo si un vector tiene 4 elementos,
ste puede crecer de tamao asignando nuevos nmeros a las posiciones 5, 6,
etc
Si un vector tiene en general, n elementos y se le asigna un nuevo valor en la
posicin n+2 o mayor, matlab asigna ceros a los elementos que hay entre el
ltimo elemento del vector original y el nuevo elemento aadido.

ADICIN DE ELEMENTOS A UNA MATRIZ

41

A una matraz existente tambin es posible aadirle nuevos valores, ya sean


filas o columnas, pero se deber de tener cuidado en que los nuevos valores
coincidan para el nmero de elementos ya que filas y columnas deben coincidir
con los valores de la matriz original

FUNCIN

DESCRIPCIN

length(A)

Devuelve el numero de elementos de A

size(A)

Devuelve un vector fila [m,n], donde m


y n representan el tamao del array

42

reshape(A, m, n)

Reordenar una matriz A

diag(v)

Si v es un vector, se crea una matriz


con los elementos de v en la diagonal

diag(A)

Se crea un vector a partir de una matriz

OPERACIONES CON VECTORES


Las matrices y vectores son variables que tienen nombres.
Se sugiere que se utilicen letras maysculas para matrices y letras minsculas
para vectores y escalares
43

Las matrices se definen o introducen por filas; los elementos de una misma fila
estn separados por espacios o comas, mientras que las filas estn separadas por
enter o por caracteres punto y coma.
Es posible definir un vector fila x en la forma siguiente
>> x=[10 20 30] % vector fila
x=
10 20 30
Para definir un vector columna los nmeros estn separados por intros o puntos
y coma (;)
>>y=[11; 12; 13] % vector columna
y=
11
12
13

Por ejemplo, el siguiente comando define una matriz A de dimensin (33):


>> A=[1 2 3; 4 5 6; 7 8 9]
A=
123
456
789
Una vez definida la matriz a se puede hallar su MATRIZ TRASPUESTA.
El apstrofo (') es el smbolo de transposicin matricial. Para calcular A
(traspuesta de A).
>> A
ans =
44

147
258
369
Como el resultado de la operacin no ha sido asignado a ninguna otra matriz, se
utiliza ans (de answer), que contiene el resultado de la ltima operacin.
sta puede ser utilizada como operando en la siguiente expresin que se
introduzca.
Aunque las matrices se introducen por filas, se almacenan por columnas, lo cual
tiene su importancia se puede acceder a cualquier elemento de una matriz con un
slo subndice.
Por ejemplo, si A es una matriz (33) se obtiene el mismo valor escribiendo A(1,2)
que escribiendo A(4).
>> A=[1 4 -3; 2 1 5; -2 5 3]
A=
1 4 -3
215
-2 5 3
Invertir una matriz.
Se calcular la inversa de A y el resultado se asignar a B. Para ello basta hacer
uso de la funcin inv( )
B=inv(A)
B=
0.1803 0.2213 -0.1885
0.1311 0.0246 0.0902
-0.0984 0.1066 0.0574
OPERADORES ARITMTICOS
Los operadores matriciales son:

45

adicin o suma

sustraccin o resta

multiplicacin

'

traspuesta

potenciacin

divisin-izquierda

divisin-derecha

.*

producto elemento a elemento

./ y .\
.^

divisin elemento a elemento

elevar a una potencia elemento a elemento

APLICACIONES DE VECTORES EN MATLAB

SISTEMA EQUIVALEMNTE DE FUERZAS: Se aplican tres fuerzas a un soporte,


tal como se muestra en la figura inferior. Determine la fuerza total aplicada al
soporte.

SOLUCIN: Una fuerza puede ser considerada como un vector que desde el
punto de vista fsico, posee un mdulo y una direccin. En un sistema de
coordenadas cartesianas un vector bidimensional F puede ser expresado como:

46

Donde F es el mdulo de la fuerza, y A es el ngulo relativo al eje x. Fx y Fy son


los coponentes de F en las direcciones de los ejes x e y respectivamente, e i y j
son los vectores unitarios en esas direcciones.
Si Fx y Fy son conocidas, entonces F y A pueden ser calculados de la siguiente
forma:

SOLUCIN CON MATLAB: Cada una de las fuerzas es representada como un


vector con dos elementos. El primer elemento es la componente x del vector, y el
segundo elemento es la componente y.
Se determina el vector fuerza equivalente sumando los vectores independientes.
Se determina el mdulo y la direccin de la fuerza equivalente.

47

SISTEMA DE ECUACIONES:
Matlab es una herramienta muy sencilla de usar para la resolucin de sistemas de
ecuaciones lineales, y se pueden resolver mediante el uso de operadores array
que se estimen oportunos para resolver dicho sistema.
4x 2y + 6z = 8
2x + 8y + 2z = 4
6x + 10y + 3z = 0
SOLUCIN CON MATLAB:
Se debe de usar las tan mencionadas reglas del lgebra lineal, el sistema de
ecuaciones anterior se puede representar de una forma matricial: AX=B o tambin
de la forma XC=D

48

As se muestra el valor de x=-1.8049, y=0.2927 y z=2.6341

EXPERIMENTO DE FRICCIN
El coeficiente de friccin puede ser calculado experimentalmente midiendo la
fuerza F requerida para mover la masa m. A partir de estos parmetros, el
coeficiente de friccin se puede calcular de la siguiente forma:
49

U=F/mg, cuando la gravedad es de 9.81m/s^2


En la tabla siguiente se presentan los resultados de un experimento, en el cul se
midi la fuerza F. Determine el coeficiente de friccin de cada uno de los
experimentos, as como el valor medio de los experimentos realizados. La masa
se encuentra expresada en kilogramos, y la fuerza en Newtons.
Exp.

Masa

10

20

50

Fuerza

12.5

23.5

30

61

118

294

SOLUCIN EN MATLAB

ERROR ABSOLUTO Y RELATIVO

50

51

52

OTRO CASO: Supongase que se tiene que medir la longitud de un puente y la de


un remache, y se obtiene 9999 y 9 cm, respectivamente. Si los valores verdaderos
son 10000 y 10 cm, calcule el error verdadero, y el error relativo porcentual
verdadero en cada caso.

53

54

55

DERIVACIN

El clculo simblico diferencial, o el clculo de las derivadas se llevan a cabo


usando el comando diff.
diff(S,var)
S puede ser una expresin simbolica completa.

56

En el comando diff(S), si la expresin contiene una sola variable simblica, el


clculo se lleva a cabo con respecto a esa variable, si el clculo ha de realizarse
sobre varias variables, se deber especificar la variable que ha de ser
considerada.
Si se desea realizar derivadas de orden superior para eso hay que usar seguido
de la simblica el nmero de derivada.
EJEMPLO
SE HA DE DEFINIR SIMBOLICAMENTE LAS VARIABLES
ENSEGUIDA SE DEFINE UNA FUNCIN
SE USA EL COMANDO diff.
APARECE LA DERIVADA

PARA DERIVAR CUALQUIER FUNCIN


57

VAMOS A REALIZAR UN SCRIPT QUE PIDA QUE SE INTRODUZCA UNA


FUNCIN CUALQUIERA Y QUE SE DESEE DERIVAR.

58

EJEMPLO INTEGRAL
En el siguiente ejemplo queremos efectuar la primera derivada y la segunda
derivada de una funcin, as como recrear sus grficos y realizar modificaciones
sobre ellos para poder apreciar, como podr notar se realiz una curva arrelada ya
entonces estamos aplicando varios conocimientos en matlab

59

60

FUNCIONES CON ARRAYS

VALOR MEDIO
Cuando A es un vector, se aplica mean(A) para que se retorne el valor medio de
este array.

VALOR MXIMO
A es un vector, C se encargar de poseer el valor mximo del vector A, en cambio
si A es una matriz, C contendr un vector fila que represente el valor mximo.

61

VALOR MNIMO
A es un vector, C se encargar de poseer el valor mnimo del vector A, en cambio
si A es una matriz, C contendr un vector fila que represente el valor minimo

62

SUMA DE ELEMENTOS
Sum(A) quiere decir la suma numrica de los elementos del vector A.

ORDEN ASCENDENTE
Sort(A) devuelve el vector A pero ordenando sus elementos de manera
ascendente sus valores

MEDIANA
Median(A) devuelve el valor de la mediana de los elementos del vector A.

63

PRODUCTO ESCALAR
Dot(a,b) calcula el producto escalar de dos vectores, Los vectores pueden ser de
tipo fila o columna

64

PRODUCTO CRUZADO
Cross(a,b) es la funcion que se encarga de hacer el producto cruz de dos
vectores, ambos tendrn que tener mismo numero de elementos

GRFICOS
MALLA

65

GRAFICA DE SUPERFICIE

66

GRAFICO DE MALLA CON CORTINA

GRAFICA DE MALLA CON CONTORNO

67

GRAFICA DE SUPERFICIE CON ALUMBRADO

68

GRAFICO DE CASCADA

69

GRAFICA DE CONTORNOS 3D

70

GRAFICO DE CONTORNO 2D

71

ESFERA

CILINDRO
72

BARRA 3D

73

LINEAS VERTICALES 3 D

74

GRAFICO DE DISPERSIN 2 D

75

GRAFICO DE SUPERFICIE CON ALUMBRADO

76

INTEGRACIN NUMRICA
Es una opcin matemtica para resolver problemas en diferentes campos, pero
comnmente la integracin se usa para calcular velocidades, volmenes y de
reas. La aplicacin de matlab en este tema es de mucha importancia puesto as
como existen muchas funciones a integrar sencillas existen otras q son bastante
complejas.
Cabe destacar que el fundamento de la integracin de manera general dividiendo
una seccin debajo de una curva para poder calcular el rea total debajo de la
curva; as aplicamos los comandos quad y quadl son usados para la integraciones
de funciones; en cambio trapz es usado para funciones q vienen expresadas en
forma de puntos a integrar.
QUAD
La sintaxis del comando quad, basado en el mtodo adaptativo de integracin de
simpson, es la siguiente:
q=quad(funcion,a,b)
q nos expresa el valor de la integral, funcin, la funcin que ser integrada, y a,b
son los lmites de integracin para la funcin.
La funcin se puede introducir como cadena o como el nombre de una funcin
definida por el usuario o de una funcin el lnea, al igual que el comando fzero.

77

La funcin f(x) se debe escribir para un argumento x que permita realizar


operaciones elemento a elemento, d forma que se pueda calcular el valor de la
funcin para cada uno de los elementos de x.
Debe de estarse seguro que no existen asntotas entre el rango limitante para la
integracin de la funcin.
El comando quad calcula la integral con un error absoluto menor que 1x10E-6, sin
embargo este parmetro puede ser modificado mediante el uso de tol:
q=quad(funcion,a,b,tol)
Donde tol es elparmetro que define el error mximo tolerado.
QUADL
La sintaxis que compone al comando quadl es la siguiente:
q=quadl(funcion,a,b)
La diferencia del comando antes mencionado y el presente es que el presente es
seguido por el mtodo adaptativo de lobatto, y es mucho ms preciso.
EJEMPLO
Primero se ha de crear un m file donde se exprese la funcin que se ha de desear
integrar, porsteriormente se utilizar el comando quad y se hace referencia al m
file donde se encuentra la funcin, se menciona los intervalos, y si se desea el
nivel de tolerancia

78

QUADLS EJEMPLO
Primero se ha de crear un m file donde se exprese la funcin que se ha de desear
integrar, porsteriormente se utilizar el comando quadl y se hace referencia al m
file donde se encuentra la funcin, se menciona los intervalos, y si se desea el
nivel de tolerancia

79

QUADV
Primero se ha de crear un m file donde se exprese la funcin que se ha de desear
integrar, porsteriormente se utilizar el comando quadl y se hace referencia al m
file donde se encuentra la funcin, se menciona los intervalos, y si se desea el
nivel de tolerancia

80

EJEMPLO DE APLICACIN

81

SIMPSON

SCRIPT INTEGRACIN MLTIPLE


function varargout = intmultiples(varargin)
% INTMULTIPLES M-file for intmultiples.fig
%
INTMULTIPLES, by itself, creates a new INTMULTIPLES or raises the
existing
%
singleton*.
%
%
H = INTMULTIPLES returns the handle to a new INTMULTIPLES or the
handle to
%
the existing singleton*.
%
%
INTMULTIPLES('CALLBACK',hObject,eventData,handles,...) calls the local
%
function named CALLBACK in INTMULTIPLES.M with the given input
arguments.
82

%
%
INTMULTIPLES('Property','Value',...) creates a new INTMULTIPLES or raises
the
%
existing singleton*. Starting from the left, property value pairs are
%
applied to the GUI before intmultiples_OpeningFunction gets called. An
%
unrecognized property name or invalid value makes property application
%
stop. All inputs are passed to intmultiples_OpeningFcn via varargin.
%
%
*See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
%
instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help intmultiples
% Last Modified by GUIDE v2.5 25-Feb-2009 22:55:19
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @intmultiples_OpeningFcn, ...
'gui_OutputFcn', @intmultiples_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before intmultiples is made visible.
function intmultiples_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to intmultiples (see VARARGIN)
% Choose default command line output for intmultiples
handles.output = hObject;
83

% Update handles structure


guidata(hObject, handles);
% UIWAIT makes intmultiples wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = intmultiples_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;

function edit1_Callback(hObject, eventdata, handles)


% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
%
str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit2_Callback(hObject, eventdata, handles)


% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
84

% Hints: get(hObject,'String') returns contents of edit2 as text


%
str2double(get(hObject,'String')) returns contents of edit2 as a double
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit3_Callback(hObject, eventdata, handles)


% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit3 as text
%
str2double(get(hObject,'String')) returns contents of edit3 as a double
% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit4_Callback(hObject, eventdata, handles)


% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
85

% Hints: get(hObject,'String') returns contents of edit4 as text


%
str2double(get(hObject,'String')) returns contents of edit4 as a double
% --- Executes during object creation, after setting all properties.
function edit4_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit5_Callback(hObject, eventdata, handles)


% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit5 as text
%
str2double(get(hObject,'String')) returns contents of edit5 as a double
% --- Executes during object creation, after setting all properties.
function edit5_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit6_Callback(hObject, eventdata, handles)


% hObject handle to edit6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
86

% Hints: get(hObject,'String') returns contents of edit6 as text


%
str2double(get(hObject,'String')) returns contents of edit6 as a double
% --- Executes during object creation, after setting all properties.
function edit6_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- 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)
f=inline(get(handles.edit1,'string'),'x','y');
g1=inline(get(handles.edit2,'string'));
g2=inline(get(handles.edit3,'string'));
a=str2double(get(handles.edit4,'string'));
b=str2double(get(handles.edit5,'string'));
h=(b-a)/2;
x0=a;
s=0;
for i=1:3
h2=(g2(x0)-g1(x0))/2;
w(i)=(h2/3)*(f((x0),g1(x0))+4*f(x0,g1(x0)+h2)+f(x0,g2(x0)));
x0=x0+h;
end
I=(h/3)*(w(1)+4*w(2)+w(3));
set(handles.edit6,'string',I);
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
close
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
87

% hObject handle to pushbutton3 (see GCBO)


% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
f=get(handles.edit1,'string');
f1=inline(f,'x','y');
ezmesh(f1);
grid on
VISTA DEL PROGRAMA

BISECCIN
El Mtodo de Biseccion, conocido tambin como de corte binario, de particin en
dos intervalos iguales o mtodo de Bolzano, es un mtodo de bsqueda
incremental donde el intervalo se divide siempre en dos. Si la funcin cambia de
signo sobre un intervalo, se evala el valor de la funcin en el punto medio. La
posicin de la raz se determina situndola en el punto medio del subintervalo
dentro del cual ocurre un cambi de signo. El proceso se repite hasta obtener una
mejor aproximacin.

88

Paso 1: Escjanse los valores iniciales xl y xu de forma tal que la funcin


cambie de signo sobre el intervalo. Esto se puede verificar asegurndose
de que f(xl)f(xu) < 0.
Paso 2: La primera aproximacin a la raz xr se determina como:
Paso 3: Realice las siguientes ecuaciones y determinece en que subinteralo
cae la raz:

a. si f(xl)f(xr)<0, entonces la raz se encuentra dentro del primer


subintervalo. Por lo tanto, resulvase xu=xr y contine en el paso 4.

b. si f(xl)f(xr)>0, entonces la raz se encuentra dentro del segundo


subintervalo. Por lo tanto, resulvase xl=xr, y contine en el paso 4.

c. si f(xl)f(xr)=0, entonces la raz es igual a xr y se terminan los clculos.

Paso 4: Calclese una nueva aproximacin a la raz mediante:

Paso 5: Decdase si la nueva aproximacin estn exacta como se desea. Si


es as, entonces los clculos terminan, de otra manera se regresa al paso
3.
function x = biseccion(fun,a,b,tol)

% Aproxima por el mtodo de la biseccin una raz de la ecuacin fun(x)=0


disp('Mtodo de la biseccin');
u=feval(fun,a); v=feval(fun,b); n=1; if sign(u)==sign(v)
cambiar de signo en (a,b)');

disp('Error la funcin debe

break;
end
while ((b-a)*0.5>tol)
c=(b+a)/2; w=feval(fun,c);
disp(['n=', num2str(n)]);
disp(['c=', num2str(c)]);
disp(['f(c)=', num2str(w)]);if sign(u)==sign(w) a = c; u=w;else
b=c; v=w;
End
n=n+1;end;x=c

89

EJEMPLO
Se desea encontrar la raz de una ecuacin propuesta por un fsico, se desea
saber su raz por el mtodo de biseccin.

90

91

92

93

CURVAS DE AJUSTE

El clculo de curvas de ajuste, tambin llamado anlisis de regresin, es el


proceso mediante el cual se ajusta una funcin un conjunto de datos
representados por puntos.

Esta funcin puede ser utilizada posteriormente como modelo matemtico


para los datos. Como hay diferentes tipos de funciones, el clculo del ajuste
de las curvas puede llegar a ser complejo.

POLYFIT

Se pueden emplear polinomios para realizar ajustes sobre los puntos de


dos formas distintas, en una de ellas el polinomio pasa por todos los puntos
dados, y en la otra no necesariamente para por todos los puntos, pero
ofrece en general una buena aproximacin

POLINOMIOS QUE PASAN POR TODOS LOS PUNTOS

Cuando se tienen n puntos de tipo (xi,yi), es posible encontrar un polinomio


de grado n-1 que pase por todos los puntos. Por ejemplo si tenemos dos
puntos es posible escribir una ecuacin lineal de la forma y=mx+b que pase
por estos dos puntos. Si lo que tenemos es tres puntos, la ecuacin tendra
la forma de una ecuacin cuadrtica.
an 1 x n 1 an 2 x n 2 ... a1 x a0 Generalizando para n puntos tendramos un
polinomio de tipo:

El Coeficiente de los polinomios se obtendr sustituyendo cada punto en la


expresin general anterior, resolviendo posteriormente las n ecuaciones
resultantes.

Potencia

p = polyfit(log(x),log(y),1)

Exponencial

p = polyfit(x,log(y),1)
p = polyfit(x,log10(y),1)

Logartmica

p = polyfit(log(x),y,1)

94

Recproca

p = polyfit(x,1./y,1)

CURVAS DE AJUSTE PARA UNA SERIE DE PUNTOS

Encontrar una funcin w=f(t) donde t es la variable independiente y w la


dependiente, que mejor ajuste los datos que se muestran a continuacin:
0

.5

1.5

2.5

3.5

4.5

95

4.83

3.70

3.15

2.41

1.83

1.49

1.21

0.96

0.73

0.64

Solucin:
Se presentarn en primer lugar los datos en escalas lineales en ambos ejes. La
figura muestra que una funcin lineal de mejor ajuste porque los puntos no siguen
una lnea recta, tambin se excluye la funcin logartmica debido a que t = 0 y lo
mismo sucede con la funcin exponencial.

96

97

INTERPOLACIN
Cuando solo se tienen dos puntos conocidos, estos se pueden unir mediante una
lnea recta. Es decir se puede hacer uso de la ecuacin de la recta para estimar
diferentes puntos entre los dichos dos conocidos.
Cuanto mayor sea el punto de nmeros conocidos, mayor ser el grado del
polinomio necesario para hacer que pase por dichos puntos. Sin embargo dicho
polinomio debe ofrecer buenas aproximaciones a los puntos conocidos.
La forma mas sencilla de interpolacin es la llamada interpolacin segmentaria
lineal, consiste en unir todos los puntos adyacentes conocidos mediante una recta.
Es la ecuacin que pasa por todos los puntos adyacentes.
La recta que pasa por dichos puntos tiene pendiente constante pero la pendiente
cambia en cada uno de los puntos. Se puede obtener una curva de interpolacin
mas suave si se usan polinomios cuadrticos o cbicos, as se le llama a la
interpolacin segmentaria cuadrtica y cbica.
COMANDO
En MATLAB las interpolaciones unidimensionales se realizan mediante la funcin
interpl, as se muestra la sintaxis:
yi=interpl(x,y,xi,metodo)
Donde yi es el valor a interpolar, x es un vector con las coordenadas horizontales
de los puntos de entrada, y y es un vector con las coordenadas verticales de los
puntos de entrada, xi es la coordenada horizontal del punto interpolado, y la
palabra mtodo es tecleado en forma de cadena, lo cual es opcional
El vector x debe de ser montono, osea que los valores deben de ir en forma
descendente o ascendente, no en desorden.
Xi puede ser un escalar o un vector, dependiendo de uno u otro caso, yi ser
escalar o vector para los siguientes valores interpolados
Mtodo puede tener varios valores, como lo es:
nearest

Devuelve el valor del punto mas cercano interpolado

linear

Utiliza la interpolacin segmentaria lineal

spline

Utiliza la interpolacin segmentaria cbica


98

pchip

Interpolacin de Hermite cbica

Cuando se utilizan los mtodos nearest y linear, xi debe estar dentro del dominio
de x, por el contrario si se usa el mtodo spline o chip xi puede ser un valor que se
encuentre fuera de los valores de x, osea que se lleva a cabo una extrapolacin.
El mtodo spline puede producir grandes errores si los datos de entrada no son
uniformes, es decir que el espaciado no esta constante.
Las especificaciones del mtodo de interpolacin si no se especifica el usado por
efecto es el linear.
Introduzca los valores de x y y que son los siguientes..

Introduzca el valor a ser interpolado, y escriba tres mtodos de


interpolacin antes mencionados

99

SCRIPT PARA INTERPOLACIN LINEAL


function varargout = interplineal(varargin)
% INTERPLINEAL Application M-file for interplineal.fig
% FIG = INTERPLINEAL launch interplineal GUI.
% INTERPLINEAL('callback_name', ...) invoke the named callback.
% Last Modified by GUIDE v2.5 25-Feb-2009 23:28:09
if nargin == 0 % LAUNCH GUI
fig = openfig(mfilename,'reuse');
% Generate a structure of handles to pass to callbacks, and store it.
handles = guihandles(fig);
guidata(fig, handles);
if nargout > 0
varargout{1} = fig;
end
elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
try
if (nargout)
[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
else
feval(varargin{:}); % FEVAL switchyard
end
100

catch
disp(lasterr);
end
end
%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and
%| sets objects' callback properties to call them through the FEVAL
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback. You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks. Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.

% -------------------------------------------------------------------function varargout = edit1_Callback(h, eventdata, handles, varargin)

101

% -------------------------------------------------------------------function varargout = edit2_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit3_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit4_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = togglebutton1_Callback(h, eventdata, handles, varargin)


close
% -------------------------------------------------------------------function varargout = togglebutton2_Callback(h, eventdata, handles, varargin)
untitled
% -------------------------------------------------------------------function varargout = togglebutton3_Callback(h, eventdata, handles, varargin)
a=str2num(get(handles.edit1,'string'));
b=str2num(get(handles.edit2,'string'));
x=str2double(get(handles.edit3,'string'));
n=length(a);
for i=1:n-1
if x>=a(i) & x<=a(i+1)
y = b(i)+(((x-a(i))*(b(i+1)-b(i)))/(a(i+1)-a(i)));
i=n;
end
end
set(handles.edit4,'string',y);

102

% -------------------------------------------------------------------function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)


y=get(handles.edit4,'string');
y=inline(y);
ezplot(y), grid on
% --- Executes on button press in togglebutton4.
function togglebutton4_Callback(hObject, eventdata, handles)
close
% hObject handle to togglebutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of togglebutton4
VISTA DEL PROGRAMA

PUNTO FIJO

El mtodo de la iteracin de punto fijo para resolver una ecuacin no lineal

f(x)=0

pasa por transformarla en una equivalente,

x=g(x) ,
103

y ejecutar la iteracin

x(k+1)=g(x(k))

a partir de un cierto x(0) hasta que se satisfaga el criterio de parada elegido o se


alcance el nmero de iteraciones mximo admitido.

Observaciones: la ejecucin se detiene tan pronto como |x(k+1)x(k)| se hace


menor que el valor de tolerancia o se alcance el nmero mximo de iteraciones
admisibles maxiter.
Para llamar la funcin g tenemos dos opciones:

Si g fue definida por medio de inline o '@g', basta incluir su nombre en el


argumento de puntofijo.

104

Si g fue definida por medio de un fichero .m o es una funcin ya


implementada en Matlab, debemos utilizar '@g' (por ejemplo, @cos) en el
argumento de puntofijo.

En esta prctica usaremos la funcin puntofijo para estudiar la convergencia de la


iteracin de punto fijo.

GAUSS-SIEDEL
El Mtodo de Gauss-Seidel Es una tcnica utilizada para resolver sistemas de
ecuaciones lineales. El mtodo es llamado de esa manera en honor a los
matemticos alemanes Carl Friedrich Gauss y Philipp Ludwig von Seidel. El
mtodo es similar al mtodo de Jacobi. Es un mtodo indirecto, lo que significa
que se parte de una aproximacin inicial y se repite el proceso hasta llegar a una
solucin con un margen de error tan pequeo como se quiera. Buscamos la
solucin a un sistema de ecuaciones lineales, en notacin matricial:
105

El mtodo de iteracin Gauss-Seidel es

donde
para i=j, o

para

Esto es tambin que :


Si
definimos

y
.
Considerando el sistema Ax=b, con la condicin de que

, i= 1, ..., n.

Entonces podemos escribir la frmula de iteracin del mtodo


, i=1,...,n(*)

La diferencia entre este mtodo y el de Jacobi es que, en este ltimo, las mejoras
a las aproximaciones no se utilizan hasta completar las iteraciones
TEOREMA
Suponga una matriz A R(n,n) es una matriz no singular cumple la condicin de
106

Entonces el mtodo de Gauss-Seidel converge a una solucin del sistema de


ecuaciones Ax=b, y la convergencia es por lo menos tan rpida como la
convergencia del mtodo de Jacobi.
Para ver los casos en que converge el mtodo primero mostraremos que se puede
escribir de la siguiente forma:
(**)
(el trmino

es la aproximacin obtenida despus de la k-sima iteracin) este

modo de escribir la iteracin es la forma general de un mtodo iterativo


estacionario.
Primeramente debemos demostrar que el problema lineal que queremos resolver
se puede representar en la forma (**), para este motivo debemos escribir de
escribir la matriz A como la suma de una matriz triangular inferior, una diagonal y
una triangular superior A=D(L+I+U), D=diag( ). Haciendo los despejes
necesarios escribimos el mtodo de esta forma

por lo tanto B=-(L+I)^(-1) U.


Ahora podemos ver que la relacin entre los errores, el cul se puede calcular al
substraer x=Bx+c de (**)

Supongamos ahora que

, i= 1, ..., n, son los valores propios que corresponden a

los vectores propios ui, i= 1,..., n, los cuales son linealmente independientes,
entonces podemos escribir el error inicial

107

(***)

Por lo tanto la iteracin converge si y slo si | i|<1, i= 1, ..., n. De este hecho se


desprende el siguiente teorema:
TEOREMA
Una condicin suficiente y necesaria para que un mtodo iterativo estacionario
converge para una aproximacin arbitraria x^{(0)} es que

donde (B) es el radio espectral de B.


SCRIPT.
function varargout = gausseidel(varargin)
% GAUSSEIDEL Application M-file for gausseidel.fig
% FIG = GAUSSEIDEL launch gausseidel GUI.
% GAUSSEIDEL('callback_name', ...) invoke the named callback.
% Last Modified by GUIDE v2.0 23-Apr-2008 19:25:39
if nargin == 0 % LAUNCH GUI
fig = openfig(mfilename,'reuse');
% Generate a structure of handles to pass to callbacks, and store it.
handles = guihandles(fig);
guidata(fig, handles);
if nargout > 0
varargout{1} = fig;
end
elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
try
if (nargout)
[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
else
feval(varargin{:}); % FEVAL switchyard
end
catch
108

disp(lasterr);
end
end
%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and
%| sets objects' callback properties to call them through the FEVAL
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback. You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks. Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.

% -------------------------------------------------------------------function varargout = edit1_Callback(h, eventdata, handles, varargin)

109

% -------------------------------------------------------------------function varargout = edit2_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit3_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit4_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit5_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)


maxite=str2double(get(handles.edit1,'string'));
v=str2num(get(handles.edit2,'string'));
a=str2num(get(handles.edit3,'string'));
b=str2num(get(handles.edit4,'string'));
[n,n]=size(a);
cad1='';
for k=1:maxite
for i=1:n
x(i)=v(i);
end
for i=1:n
s=0;
for j=1:n
if j~=i
s=s+a(i,j)*x(j);
end
end
v(i)=(b(i)-s)/a(i,i);
x(i)=v(i);
110

end
for t=1:n
cad2=sprintf('x%d=%10.8f ',t,x(t));
cad1=[cad1,cad2];
end
cad2=sprintf('\n',t);
cad1=[cad1,cad2];
end
set(handles.edit5,'string',cad1);

% -------------------------------------------------------------------function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)

untitled
% -------------------------------------------------------------------function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)
close
VISTA DEL PROGRAMA

111

GAUSS-JORDAN
En la matemtica, la eliminacin Gaussiana o eliminacin de Gauss-Jordan,
llamada as debido a Carl Friedrich Gauss y Wilhelm Jordan, es un algoritmo del
lgebra lineal para determinar las soluciones de un sistema de ecuaciones
lineales, encontrar matrices e inversas. Un sistema de ecuaciones se resuelve por
el mtodo de Gauss cuando se obtienen sus soluciones mediante la reduccin del
sistema dado a otro equivalente en el que cada ecuacin tiene una incgnita
menos que la anterior. Cuando se aplica este proceso, la matriz resultante se
conoce como: "forma escalonada"
El mtodo fue presentado por el matemtico Carl Friedrich Gauss, pero se conoca
anteriormente en un importante libro matemtico chino llamado Jiuzhang suanshu
o Nueve captulos del arte matemtico.
Supongamos que es necesario encontrar los nmeros x, y, z, que satisfacen
simultneamente estas ecuaciones
2x + y z = 8,
3x y + 2z = 11,
2x + y + 2z = 3

112

Esto es llamado un sistema lineal de ecuaciones. El objetivo es reducir el sistema


a otro equivalente, que tenga las mismas soluciones. Las operaciones (llamadas
elementales) son estas:

Multiplicar una ecuacin por un escalar no nulo.

Intercambiar de posicin dos ecuaciones

Sumar a una ecuacin un mltiplo de otra.

Estas operaciones pueden representarse con matrices elementales que se usan


tambin en otros procedimientos como la factorizacin LU o la diagonalizacin por
congruencia de una matriz simtrica.
En nuestro ejemplo, eliminamos x de la segunda ecuacin sumando 3/2 veces la
primera ecuacin a la segunda y despus sumamos la primera ecuacin a la
tercera. El resultado es:
,
,

Ahora eliminamos y de la primera ecuacin sumando -2 veces la segunda


ecuacin a la primera, y sumamos -4 veces la segunda ecuacin a la tercera para
eliminar y.
2x 2z = 6,
,
z=1
Finalmente eliminamos z de la primera ecuacin sumando -2 veces la tercera
ecuacin a la primera, y sumando 1/2 veces la tercera ecuacin a la segunda para
eliminar z.
2x = 4,
,
z=1
Despejando, podemos ver las soluciones: x = 2, y = 3 y z = 1.

113

Para clarificar los pasos (y es en realidad lo que las computadoras manejan), se


trabaja con la matriz aumentada. Podemos ver los 3 pasos en su notacin
matricial:
Primero:

Despus,

Por ltimo.

Si el sistema fuera incompatible, entonces nos encontraramos con una fila como
esta:

Que representa la ecuacin: 0x + 0y + 0z = 1, es decir, 0 = 1 que no tiene solucin.


Forma escalonada y escalonada reducida [editar]
Dos formas especiales de matrices son la escalonada y la escalonada reducida.
Una matriz puede tener las siguientes propiedades:
1. Todos las filas cero estn en la parte inferior de la matriz.
2. El elemento delantero de cada fila no cero (pivote) estn a la derecha del
elemento delantero de la fila anterior (esto supone que todos los elementos
debajo de un pivote son cero).
Si una matriz A cumple con esas propiedades, se dice escalonada. Adems,
cumpliendo estas otras condiciones, la matriz es escalonada reducida.
114

1. Los pivotes son 1.


2. Todos los elementos por encima de los pivotes son nulos.
Cuando una matriz representa a un sistema de ecuaciones situaciones como tener
una columna de ceros parece imposible ya que correspondera a una variable que
nunca habra aparecido. Sin embargo esta situacin puede presentarse
(imaginemos la ecuacin de un plano en el espacio en la que no aparece alguna
de las componentes, por ejemplo y+z=0). As la matriz

tambin es una matriz escalonada.


Una vez que la matriz del sistema se ha transformado hasta obtener una matriz
escalonada reducida es muy fcil discutirlo (es decir, determinar cuntas
soluciones tiene):
1. Cuando aparece un pivote en la columna de los trminos independientes el
sistema es incompatible (no tiene ninguna solucin).
2. En otro caso el sistema es compatible. Si adems el nmero de pivotes
coincide con el nmero de incgnitas el sistema es compatible determinado
(tiene una nica solucin). Cuando el nmero de pivotes es menor que el
nmero de incgnitas el sistema es indeterminado (tiene infinitas soluciones
que dependen de tantos parmetros como indique la diferencia entre el
nmero de incgnitas y el nmero de pivotes).

SCRIPT
function varargout = gaussjordan(varargin)
% GAUSSJORDAN Application M-file for gaussjordan.fig
% FIG = GAUSSJORDAN launch gaussjordan GUI.
% GAUSSJORDAN('callback_name', ...) invoke the named callback.
% Last Modified by GUIDE v2.0 22-Apr-2008 21:31:51
if nargin == 0 % LAUNCH GUI
fig = openfig(mfilename,'reuse');
115

% Generate a structure of handles to pass to callbacks, and store it.


handles = guihandles(fig);
guidata(fig, handles);
if nargout > 0
varargout{1} = fig;
end
elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
try
if (nargout)
[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
else
feval(varargin{:}); % FEVAL switchyard
end
catch
disp(lasterr);
end
end
%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and
%| sets objects' callback properties to call them through the FEVAL
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback. You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks. Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
116

%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.

% -------------------------------------------------------------------function varargout = edit1_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit2_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)


A=str2num(get(handles.edit1,'string'));
[m,n]=size(A);
for i=1:m
divisor=A(i,i);
for j=i:n
A(i,j)=A(i,j)/divisor;
end
for k=1:m
if i~=k
pivote = A(k,i);
for j=i:n
A(k,j)=A(k,j)- pivote*A(i,j);
end
end
end
end
for i=1:m
x(i)=A(i,n);
117

end
x=x';
t=1:m;
t=t';
cadena='';
for t=1:m
cad=sprintf('x%d=%6.2f',t,x(t));
cadena=[cadena;cad];
end
set(handles.edit2,'string',cadena);
% -------------------------------------------------------------------function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
untitled
% -------------------------------------------------------------------function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)
close

% -------------------------------------------------------------------function varargout = edit3_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit4_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit5_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit6_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------118

function varargout = edit7_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit8_Callback(h, eventdata, handles, varargin)


VISTA DEL PROGRAMA

NEWTON-RAPHSON
La idea de este mtodo es la siguiente: se comienza con un valor razonablemente
cercano al cero (denominado punto de arranque), entonces se reemplaza la
funcin por la recta tangente en ese valor, se iguala a cero y se despeja
(fcilmente, por ser una ecuacin lineal). Este cero ser, generalmente, una
aproximacin mejor a la raz de la funcin. Luego, se aplican tantas iteraciones
como se deseen.
Supngase f : [a, b] -> R funcin derivable definida en el intervalo real [a, b].
Empezamos con un valor inicial x0 y definimos para cada nmero natural n

Donde f ' denota la derivada de f.

119

Tres son las formas principales por las que tradicionalmente se ha obtenido el
algoritmo de Newton-Raphson.
La primera de ellas es una simple interpretacin geomtrica. En efecto, atendiendo
al desarrollo geomtrico del mtodo de la secante, podra pensarse en que si los
puntos de iteracin estn lo suficientemente cerca (a una distancia infinitesimal),
entonces la secante se sustituye por la tangente a la curva en el punto. As pues,
si por un punto de iteracin trazamos la tangente a la curva, por extensin con el
mtodo de la secante, el nuevo punto de iteracin se tomar como la abcisa en el
origen de la tangente (punto de corte de la tangente con el eje X). Esto es
equivalente a linealizar la funcin, es decir, f se reemplaza por una recta tal que
contiene al punto (x0, f (x0)) y cuya pendiente coincide con la derivada de la funcin
en el punto, f'(x0). La nueva aproximacin a la raz, x1, se logra la interseccin de la
funcin linear con el eje X de ordenadas. Matemticamente:

Ilustracin de una iteracin del mtodo de Newton (la funcin f se demuestra en


azul y la lnea de la tangente est en rojo). Vemos que xn + 1 es una aproximacin
mejor que xn para la raz x de la funcin f.
En la ilustracin adjunta del mtodo de Newton se puede ver que xn
mejor aproximacin que xn para el cero (x) de la funcin f.

+ 1

es una

Una forma alternativa de obtener el algoritmo es desarrollando la funcin f (x) en


serie de Taylor, para un entorno del punto xn:

Si se trunca el desarrollo a partir del trmino de grado 2, y evaluamos en xn + 1:


120

Si adems se acepta que xn + 1 tiende a la raz, se ha de cumplir que f(xn + 1) = 0,


luego, sustituyendo en la expresin anterior, obtenemos el algoritmo.
Finalmente, hay que indicar que el mtodo de Newton-Raphson puede
interpretarse como un mtodo de iteracin de punto fijo. As, dada la ecuacin f(x)
= 0, se puede considerar el siguiente mtodo de iteracin de punto fijo:

Se escoge h (x) de manera que g'(r)=0 (r es la raz buscada). Dado que g'(r) es:

Entonces:

Como h (x) no tiene que ser nica, se escoge de la forma ms sencilla:

Por tanto, imponiendo subndices:

Expresin que coincide con la del algoritmo de Newton-Raphson


El orden de convergencia de este mtodo es, por lo menos, cuadrtico. Sin
embargo, si la raz buscada es de multiplicidad algebraica mayor a uno (i.e, una
raz doble, triple,...), el mtodo de Newton-Raphson pierde su convergencia
cuadrtica y pasa a ser lineal de constante asinttica de convergencia 1-1/m, con
m la multiplicidad de la raz.
Existen numerosas formas de evitar este problema, como pudieran ser los
mtodos de aceleracin de la convergencia tipo de Aitken o el mtodo de
Steffensen. Derivados de Newton-Raphson destacan el mtodo de RalstonRabinowitz, que restaura la convergencia cuadrtica sin ms que modificar el
algoritmo a:

121

Evidentemente, este mtodo exige conocer de antemano la multiplicidad de la


raz, lo cual no siempre es posible. Por ello tambin se puede modificar el
algoritmo tomando una funcin auxiliar g (x)=f (x)/f'(x), resultando:

Su principal desventaja en este caso sera lo costoso que pudiera ser hallar g (x) y
g'(x) si f (x) no es fcilmente derivable.
Por otro lado, la convergencia del mtodo se demuestra cuadrtica para el caso
ms habitual en base a tratar el mtodo como uno de punto fijo: si g'(r)=0, y g' '(r)
es distinto de 0, entonces la convergencia es cuadrtica. Sin embargo, est sujeto
a las particularidades de stos mtodos.
Ntese de todas formas que el mtodo de Newton-Raphson es un mtodo abierto:
la convergencia no est garantizada por un teorema de convergencia global como
podra estarlo en los mtodos de falsa posicin o de biseccin. As, es necesario
partir de una aproximacin inicial prxima a la raz buscada para que el mtodo
converja y cumpla el teorema de convergencia local.
SCRIPT
function varargout = newtonraphson(varargin)
% NEWTONRAPHSON Application M-file for newtonraphson.fig
% FIG = NEWTONRAPHSON launch newtonraphson GUI.
% NEWTONRAPHSON('callback_name', ...) invoke the named callback.
% Last Modified by GUIDE v2.5 25-Feb-2009 23:20:44
if nargin == 0 % LAUNCH GUI
fig = openfig(mfilename,'reuse');
% Generate a structure of handles to pass to callbacks, and store it.
handles = guihandles(fig);
guidata(fig, handles);
if nargout > 0
varargout{1} = fig;
end
elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
122

try
if (nargout)
[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
else
feval(varargin{:}); % FEVAL switchyard
end
catch
disp(lasterr);
end
end
%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and
%| sets objects' callback properties to call them through the FEVAL
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback. You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks. Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.
123

% -------------------------------------------------------------------function varargout = edit1_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit2_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit3_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit4_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit5_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)


f=get(handles.edit1,'string');
g=get(handles.edit2,'string');
f=inline(f);
g=inline(g);
x=str2double(get(handles.edit3,'string'));
E=str2double(get(handles.edit4,'string'));
x1=x-f(x)/g(x);
while abs (x1-x)>E
x=x1;
x1=x-f(x)/g(x);
124

end
set(handles.edit5,'string',x1);

% -------------------------------------------------------------------function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)


f=get(handles.edit1,'string');
f=inline(f);
ezplot(f), grid on

% -------------------------------------------------------------------function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)


untitled
% -------------------------------------------------------------------function varargout = pushbutton4_Callback(h, eventdata, handles, varargin)
close
% -------------------------------------------------------------------function varargout = pushbutton6_Callback(h, eventdata, handles, varargin)
g=get(handles.edit2,'string');
g=inline(g);
ezplot(g), grid on
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
close
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
VISTA DEL PROGRAMA

125

RUNGE-KUTTA
El mtodo de Runge-Kutta es un mtodo genrico de resolucin numrica de
ecuaciones diferenciales. Este conjunto de mtodos fue inicialmente desarrollado
alrededor del ao 1900 por los matemticos C. Runge y M. W. Kutta.
Se trata de un mtodo por etapas que tiene la siguiente expresin genrica:
,

donde:
i = 1,...,e

con aij,bi,ci constantes propias del esquema numrico. Los esquemas Runge-Kutta
pueden ser explcitos o implcitos dependiendo de las constantes aij del esquema.
Si esta matriz es triangular inferior con todos los elementos de la diagonal principal
iguales a cero; es decir, aij = 0 para j = i,...,e, los esquemas son explcitos.

126

Ejemplo: Esquema Runge-Kutta de dos etapas, una en t = tn y otra en t = tn + tn. F


(u, t) en la primera etapa es:
Fn = k1 = F(un;tn)
y para estimar F (u, t) en t = tn + tn usamos un esquema Euler
Fn + 1 = k2 = F(un + tnk1;tn + tn)
Con

estos

valores

de

introducidos

en

la

ecuacin

nos queda la expresin:

Las constantes propias de este esquema son: b1 = b2 = 1 / 2;a21 = 1;c2 = 1.

Existen variantes del mtodo de Runge-Kutta clsico, tambin llamado RungeKutta explcito, tales como la versin implcita del procedimiento o las parejas de
mtodos Runge-Kutta (o mtodos Runge-Kutta-Fehlberg).
Este ltimo consiste en ir aproximando la solucin de la ecuacin mediante dos
algoritmos Runge-Kutta de rdenes diferentes, para as mantener el error acotado
y hacer una buena eleccin de paso.
Mtodos de Runge-Kutta Los Runge-Kutta no es slo un mtodo sino una
importante familia de mtodos iterativos tanto implcitos como explcitos para
aproximar las soluciones de ecuaciones diferenciales ordinarias (E.D.Os), estas
tcnicas fueron desarrolladas alrededor de 1900 por los matematicos alemanes
Carl David Tolm Runge y Martin Wilhelm Kutta.
El clsico mtodo Runge-Kutta de cuarto orden
Un miembro de la familia de los mtodos Runge-Kutta es usado tan comnmente
que a menudo es referenciado como RK4 o como el mtodo Runge-Kutta.
Definamos un problema de valor inicial como:
127

Entonces el mtodo RK4 para este problema esta dado por la siguiente ecuacin:
Donde

As, el siguiente valor (yn+1) es determinado por el presente valor (yn) 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 tn + h/2 usando el mtodo de Euler
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:

128

El mtodo RK4 es un mtodo de cuarto orden lo cual significa que el error por
paso es del orden de h5, mientras que el error total acumulado tiene el orden h4.
Mtodos de Runge-Kutta Explcitos
La familia de los mtodos Runge-Kutta explcitos esta dado por la generalizacin
del mtodo RK4 mencionado antes, esta dado por:
Donde

Para especificar un mtodo en particular , se necesita proveer un valor entero s


(nmero de etapas), y los coeficientes a ij (para 1 j < i s), bi (para i = 1, 2, ..., s)
and ci (para i = 2, 3, ..., s). Esos valores usualmente son organizados en una tabla
conocida como Butcher tableau o arreglo de Butcher (por John C. Butcher):
0
c2

a21

c3

a31

a32

cs

as1

as2

as,s 1

b1

b2

bs 1

bs
129

El mtodo Runge-Kuta es consistente si

Tambin existen requerimientos adicionales si queremos que el mtodo tenga


cierto orden p, significando esto que el error de truncamiento es O (hp+1). Eso
puede ser derivado de la definicin de error de truncamiento, por ejemplo, un
mtodo de dos etapas tiene grado 2 si b1 + b2 = 1, b2c2 = 1/2, y b2 a21 = 1/2.
Obtenido de "http://es.wikipedia.org/wiki/M%C3%A9todo_de_Runge-Kutta"
SCRIPT.
Efunction varargout = rungekutta(varargin)
% RUNGEKUTTA Application M-file for rungekutta.fig
% FIG = RUNGEKUTTA launch rungekutta GUI.
% RUNGEKUTTA('callback_name', ...) invoke the named callback.
% Last Modified by GUIDE v2.5 26-Feb-2009 00:34:12
if nargin == 0 % LAUNCH GUI
fig = openfig(mfilename,'reuse');
% Generate a structure of handles to pass to callbacks, and store it.
handles = guihandles(fig);
guidata(fig, handles);
if nargout > 0
varargout{1} = fig;
end
elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
try
if (nargout)
[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
else
feval(varargin{:}); % FEVAL switchyard
end
catch
disp(lasterr);
130

end
end
%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and
%| sets objects' callback properties to call them through the FEVAL
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback. You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks. Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.

% -------------------------------------------------------------------function varargout = edit1_Callback(h, eventdata, handles, varargin)

131

% -------------------------------------------------------------------function varargout = edit2_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit3_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit4_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit5_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit6_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)


f1=get(handles.edit1,'string');
f=inline(f1,'x','y');
a=str2double(get(handles.edit2,'string'));
b=str2double(get(handles.edit3,'string'));
n=str2double(get(handles.edit4,'string'));
y0=str2double(get(handles.edit5,'string'));
x0=a;
h=(b-a)/n;
for i=1:n
k1=f(x0,y0);
k2=f(x0+h/2,y0+(h/2)*k1);
k3=f(x0+h/2,y0+(h/2)*k2);
k4=f(x0+h,y0+h*k3);
y1=y0+h*(k1+2*k2+2*k3+k4)/6;
x1=x0+h;
132

x0=x1;
y0=y1;
end
set (handles.edit6,'string',y1);
% -------------------------------------------------------------------function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
set(handles.edit1,'string','');
set(handles.edit2,'string','');
set(handles.edit3,'string','');
set(handles.edit4,'string','');
set(handles.edit5,'string','');
set(handles.edit6,'string','');
% -------------------------------------------------------------------function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)
untitled
% -------------------------------------------------------------------function varargout = pushbutton4_Callback(h, eventdata, handles, varargin)
close
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
f1=get(handles.edit1,'string');
f=inline(f1,'x','y');
ezmesh(f);
grid on
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
close
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

133

REGRESIN POLINOMIAL
En estadstica, la regresin no lineal es un problema de inferencia para un modelo
tipo:

basado en datos multidimensionales x,y, donde f es alguna funcin no lineal


respecto a algunos parmetros desconocidos . Como mnimo, se pretende
obtener los valores de los parmetros asociados con la mejor curva de ajuste
(habitualmente, con el mtodo de los mnimos cuadrados). Con el fin de
determinar si el modelo es adecuado, puede ser necesario utilizar conceptos de
inferencia estadstica tales como intervalos de confianza para los parmetros as
como pruebas de bondad de ajuste.
El objetivo de la regresin no lineal se puede clarificar al considerar el caso de la
regresin polinomial, la cual es mejor no tratar como un caso de regresin no
lineal. Cuando la funcin f toma la forma:
f(x) = ax2 + bx + c
la funcin f es no lineal en funcin de x pero lineal en funcin de los parmetros
desconocidos a, b, yc. Este es el sentido del trmino "lineal" en el contexto de la
regresin estadstica. Los procedimientos computacionales para la regresin
polinomial son procedimientos de regresin lineal (mltiple), en este caso con dos
variables predictoras x y x2. Sin embargo, en ocasiones se sugiere que la
regresin no lineal es necesaria para ajustar polinomios. Las consecuencias
practicas de esta mala interpretacin conducen a que un procedimiento de
134

optimizacin no lineal sea usado cuando en realidad hay una solucin disponible
en trminos de regresin lineal. Paquetes (software) estadsticos consideran, por
lo general, ms alternativas de regresin lineal que de regresin no lineal en sus
procedimientos.
Linealizacin
Algunos problemas de regresin no lineal pueden linealizarse mediante una
transformacin en la formulacin del modelo. Por ejemplo, consideremos el
problema de regresin no lineal (ignorando el trmino de error):

Aplicando logaritmos a ambos lados de la ecuacin, se obtiene:

lo cual sugiere una estimacin de los parmetros desconocidos a travs de un


modelo de regresin lineal de ln(y) con respecto a x, un calculo que no requiere
procedimientos de optimizacin iterativa. De todas formas, la linealizacin debe
usarse con cuidado ya que la influencia de los datos en el modelo cambia, as
como la estructura del error del modelo y la interpretacin e inferencia de los
resultados. Estos pueden ser resultados no muy convenientes.
Hay que distinguir entre la "linealizacin" usada en los prrafos anteriores y la
"linealizacin local" que se adopta para algoritmos clsicos como el de GaussNewton. De igual forma, la metodologa de modelos lineales generalizados no use
linealizacin para la estimacin de parmetros.
Mnimos cuadrados ordinarios y ponderados
La mejor curva de ajuste se considera como aquella que minimiza la suma de las
desviaciones (residuales) al cuadrado (SRC). Este es la aproximacin por el
mtodo de mnimos cuadrados (MMC). Sin embargo, en aquellos casos donde se
tienen diferentes varianzas de error para diferentes errores, es necesario
minimizar la suma de los residuales al cuadrado ponderados (SRCP) (mtodo de
mnimos cuadrados ponderados). En la practica, la varianza puede depender del
valor promedio ajustado. As que los pesos son recalculados para cada iteracin
en un algoritmo de mnimos cuadrados ponderados iterativo.
En general, no hay una expresin de forma cerrada para los parmetros de mejor
ajuste, como sucede en el caso de la regresin lineal. Mtodos numricos de
optimizacin son aplicados con el fin de determinar los parmetros de mejor
ajuste. Otra vez, en contraste con la regresin lineal, podra haber varios mximos
135

locales de la funcin a ser optimizada. En la prctica, se suponen algunos valores


iniciales los cuales junto con el algoritmo de optimizacin conducen a encontrar el
mximo global.
Estimacin de los parmetros usando Mtodos de Monte Carlo
Si el error de cada observacin es conocido, entonces la precisin y confiabilidad
de los parmetros puede ser estimada mediante simulacin de Monte Carlo. Cada
observacin es aleatorizada de acuerdo a su media y su desviacin estndar. Con
el nuevo conjunto de datos, una nueva curva es ajustada y las estimaciones de los
parmetros registradas. Las observaciones son entonces aleatorizadas y nuevos
valores de los parmetros son obtenidos. Al final, varios conjuntos de parmetros
son generados y su media y desviacin estndar pueden ser calculados.

SCRIPT
function varargout = regrspolinomial(varargin)
%regrspolinomial M-file for regrspolinomial.fig
%
regrspolinomial, by itself, creates a new regrspolinomial or raises the existing
%
singleton*.
%
%
H = regrspolinomial returns the handle to a new regrspolinomial or the handle
to
%
the existing singleton*.
%
%
regrspolinomial('Property','Value',...) creates a new regrspolinomial using the
%
given property value pairs. Unrecognized properties are passed via
%
varargin to regrspolinomial_OpeningFcn. This calling syntax produces a
%
warning when there is an existing singleton*.
%
%
regrspolinomial('CALLBACK') and regrspolinomial('CALLBACK',hObject,...)
call the
%
local function named CALLBACK in regrspolinomial.M with the given input
%
arguments.
%
%
*See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
%
instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help regrspolinomial
% Last Modified by GUIDE v2.5 26-Feb-2009 00:02:31

136

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @regrspolinomial_OpeningFcn, ...
'gui_OutputFcn', @regrspolinomial_OutputFcn, ...
'gui_LayoutFcn', [], ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before regrspolinomial is made visible.
function regrspolinomial_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin unrecognized PropertyName/PropertyValue pairs from the
%
command line (see VARARGIN)
% Choose default command line output for regrspolinomial
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes regrspolinomial wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = regrspolinomial_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
137

varargout{1} = handles.output;

function edit1_Callback(hObject, eventdata, handles)


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

function edit2_Callback(hObject, eventdata, handles)


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

function edit3_Callback(hObject, eventdata, handles)


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

function edit4_Callback(hObject, eventdata, handles)


% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit4 as text
%
str2double(get(hObject,'String')) returns contents of edit4 as a double
% --- 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)
138

global a x y
x=str2num(get(handles.edit1,'string'));
y=str2num(get(handles.edit2,'string'));
m=length(x);%tamao del vector x
n=str2num(get(handles.edit3,'string'));%grado del polinomio
for j=1:n+1
for k=1:n+1
s1=0;
for i=1:m
s1=s1+(x(i)^(j+k-2));
end
A(j,k)=s1;
end
end
for j=1:n+1
s2=0;
for i=1:m
s2=s2+(y(i)*(x(i)^(j-1)));
end
B(j)=s2;
end
B=B';
a=inv(A)*B;
a=a';
set(handles.edit4,'string',num2str(a));
global a x y
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global a x y %%"x","y" son los puntos y "a" los coeficientes
a=fliplr(a); %%cambia de orden
b=min(x):0.1:max(x);% intervalo para el grafico del polinomio
p=polyval(a,b);
plot(x,y,'or',b,p),grid on
xlabel('Coordenadas X');
ylabel('Coordenadas Y');
title('REGRESION POLINOMIAL');
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
close
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
139

% handles

structure with handles and user data (see GUIDATA)

VISTA DEL PROGRAMA

POLINOMIO DE LAGRANGE
En anlisis numrico, el polinomio de Lagrange, llamado as en honor a JosephLouis de Lagrange, es el polinomio que interpola un conjunto de puntos dado en la
forma de Lagrange. Fue descubierto por Edward Waring en 1779 y redescubierto
ms tarde por Leonhard Euler en 1783.
Dado que existe un nico polinomio interpolador para un determinado conjunto de
puntos, resulta algo confuso llamar a este polinomio el polinomio interpolador de
Lagrange. Un nombre ms conciso es interpolacin polinmica en la forma de
Lagrange.
Dado un conjunto de k + 1 puntos

donde todos los xj se asumen distintos, el polinomio interpolador en la forma de


Lagrange es la combinacin lineal

140

de bases polinmicas de Lagrange

La funcin que estamos buscando es una funcin polinmica L(x) de grado k con

El polinomio en la forma de Lagrange es una solucin al problema de


interpolacin:
Como puede verse fcilmente
1.

es un polinomio y es de grado k.

2.

As, la funcin L(x) es un polinomio de grado k y

El problema de interpolacin puede tener tan solo una solucin, pues la diferencia
entre dos tales soluciones, sera otro polinomio de grado k a lo sumo, con k+1
ceros.
Por lo tanto, L(x) es el nico polinomio interpolador.
SCRIPT
function varargout = pollagrange(varargin)
% POLLAGRANGE Application M-file for pollagrange.fig
% FIG = POLLAGRANGE launch pollagrange GUI.
% POLLAGRANGE('callback_name', ...) invoke the named callback.
% Last Modified by GUIDE v2.0 22-Apr-2008 20:25:43
141

if nargin == 0 % LAUNCH GUI


fig = openfig(mfilename,'reuse');
% Generate a structure of handles to pass to callbacks, and store it.
handles = guihandles(fig);
guidata(fig, handles);
if nargout > 0
varargout{1} = fig;
end
elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
try
if (nargout)
[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
else
feval(varargin{:}); % FEVAL switchyard
end
catch
disp(lasterr);
end
end
%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and
%| sets objects' callback properties to call them through the FEVAL
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
142

%| the figure's application data using GUIDATA. A copy of the structure


%| is passed to each callback. You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks. Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.

% -------------------------------------------------------------------function varargout = edit1_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit2_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit3_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit4_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)


x=str2num(get(handles.edit1,'string'));
n=length(x);
f1=get(handles.edit2,'string');
f=inline(f1);
143

xx=str2double(get(handles.edit3,'string'));
s=0;
for k=1:n
Num=1;
Den=1;
for i=1:n
if k ~=i;
Num=Num*(xx-x(i));
Den=Den*(x(k)-x(i));
end
La=Num/Den;
end
s=s+La*f(x(k));
end
set(handles.edit4,'string',s);
% -------------------------------------------------------------------function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
untitled

% -------------------------------------------------------------------function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)


close
VISTA DEL PROGRAMA

144

PROBLEMAS INTEGRALES DE LA INGENIERA

DESINTEGRACIN DE NCLEOS RADIACTIVOS


PROBLEMA: La rapidez con la que desintegran ncleos radiactivos es
proporcional al nmero de ncleos presentes en una muestra dada la mitad del
nmero original de ncleos experimentado la desintegracin en un periodo de
1500 aos. qu porcentaje de ncleos de ncleos originales contina despus de
4500 aos?, En cuntos aos quedarn tan solo un dcimo de los ncleos
originales?
FUNDAMENTO TERICO: El ncleo de un tomo consiste en combinaciones de
protones y neutrones, Muchas de estas combinaciones de protones y neutrones

145

son inestables, es decir, los tomos se desintegran o transmutan en tomos de


otra sustancia. Se dice que tales ncleos son radiactivos. Por ejemplo, con el
tiempo el radio altamente radiactivo, Ra-226, transmuta en el gas radiactivo radn,
Rn-222. Para modelar el fenmeno de desintegracin radiactiva, se supone que la
rapidez dA/dt a la que se desintegran los ncleos de una sustancia es proporcional
a la cantidad A(t) de la sustancia restante en el tiempo t:
dA
A
dt
dA
kA
dt

SOLUCIN:
1. Plantear la razn de cambio del nmero de ncleos con respecto al
tiempo

dA
A
dt
2. Como la tasa de cambio es proporcional a A, expresar dicha
proporcionalidad mediante el uso de una constante llamada k

dA
kA
dt
3. Como se trata de un decrecimiento radiactivo acompaaremos a la
constante k con un signo negativo, el cual expresa el decrecimiento de los
ncleos con respecto al tiempo

146

dA
kA
dt
(1)
4. El mtodo de resolucin de la ecuacin (1) ser mediante variables
separables
dA
kA
dt
dA kAdt
dA
kdt
A

dA
k dt
A

5. Ya la solucin de dicha ecuacin (1) es

ln A kt c (2)
6. Las variables desconocidas para las cuales deberemos hallar solucin y
obtener la ecuacin de decaimiento radiactivo son k y c
7. Tomando en cuenta el punto 6 usaremos condiciones iniciales implcitas en
el problema
Cuando

t=0

Cuando t=1500

A=A0 (3)
;

A= A0/2 (4)

8. Sustituyendo condiciones de (3) en la ecuacin (2)

147

ln A kt c
ln( A0 ) k (0) c
c ln( A0 )
9. Sustituyendo el valor de c en ecuacin (2)
ln A kt ln( A0 ) (5)
10. Sustituyendo condiciones de (4) en ecuacin (5)
ln A kt ln( A0 )
A0
k (1500) ln( A0 )
2

ln

k .000462
11. Sustituyendo el valor de k en la ecuacin (2)
ln A .000462t ln( A0 ) (6)
12. La ecuacin (6) ya es el la ecuacin de decaimiento radiactivo, ahora se
procede a la resolucin de la primera interrogante

Cuando t=4500

% de ncleos=?

% de ncleos=(100*A/A0)

148

ln A .000462t ln( A0 )
ln A 2.079 ln( A0 )
A .125055( A0 )
% nucleos

100 * .125055( A0 )
A0

% ncleos 12.5055
13. Resolviendo segunda premisa
Cuando t=?

A=.1A0
ln A .000462t ln( A0 )
t

ln( 0.1A0 ) ln( A0 )


.000462

t 4983.9504aos
14. Graficando la ecuacin de decaimiento radiactivo
Se propone A0=10000 ncleos
A0
(ncleos)

t (aos)

A
(ncleos)

9995.3810
7

9976.9266
6

10000

10

9953.9065
6

10000

15

9930.9395

10000
10000

149

7
20

9908.0255
8

25

9885.1644
5

30

9862.3560
8

35

9839.6003
3

40

9816.8970
8

45

9794.2462
2

10000

50

9771.6476
2

10000

100

9548.5097
3

200

9117.4038
1

300

8705.7618
9

400

8312.7052
1

500

7937.3946
6

100

9548.5097
3

1500

5000.7359
6

10000

2000

3969.2814
9

10000

2500

3150.5753

10000
10000
10000
10000
10000
10000

10000
10000
10000
10000
10000
10000

150

7
3000

2500.7360
1

3500

1984.9328
7

4000

1575.5195
6

4500

1250.5520
5

5000

992.61251
8

6000

625.36806
1

10000

8000

248.22618
7

10000

9000

156.38804
3

10000

10000

98.527961

10000
10000
10000
10000
10000
10000

SOLUCIN EN MATLAB
function varargout = euler(varargin)
% EULER Application M-file for euler.fig
% FIG = EULER launch euler GUI.
% EULER('callback_name', ...) invoke the named callback.
% Last Modified by GUIDE v2.5 26-Feb-2009 00:30:42
if nargin == 0 % LAUNCH GUI
fig = openfig(mfilename,'reuse');
% Generate a structure of handles to pass to callbacks, and store it.
handles = guihandles(fig);
guidata(fig, handles);
if nargout > 0
151

varargout{1} = fig;
end
elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
try
if (nargout)
[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
else
feval(varargin{:}); % FEVAL switchyard
end
catch
disp(lasterr);
end
end
%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and
%| sets objects' callback properties to call them through the FEVAL
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback. You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks. Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
152

%| property in the inspector. By default, GUIDE sets the property to:


%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.

% -------------------------------------------------------------------function varargout = edit1_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit2_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit3_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit4_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit5_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit6_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit7_Callback(h, eventdata, handles, varargin)

153

% -------------------------------------------------------------------function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)


f1=get(handles.edit1,'string'); f=inline(f1,'x','y');
x0=str2double(get(handles.edit2,'string'));
y0=str2double(get(handles.edit3,'string'));
n=str2double(get(handles.edit4,'string'));
b=str2double(get(handles.edit5,'string'));
h=(b-x0)/n;
for i=1:n
y0=y0+h*f(x0,y0);
x0=x0+h;
end
set(handles.edit6,'string',y0);
% -------------------------------------------------------------------function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
f1=get(handles.edit1,'string');
f=inline(f1,'x','y');
ezmesh(f);
grid on
% -------------------------------------------------------------------function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)
set(handles.edit1,'string','');
set(handles.edit2,'string','');
set(handles.edit3,'string','');
set(handles.edit4,'string','');
set(handles.edit5,'string','');
set(handles.edit6,'string','');
set(handles.edit7,'string','');
% -------------------------------------------------------------------function varargout = pushbutton4_Callback(h, eventdata, handles, varargin)
untitled
% -------------------------------------------------------------------function varargout = pushbutton5_Callback(h, eventdata, handles, varargin)

154

close
% -------------------------------------------------------------------function varargout = pushbutton6_Callback(h, eventdata, handles, varargin)
f1=get(handles.edit1,'string'); f=inline(f1,'x','y');
x(1)=str2double(get(handles.edit2,'string'));
y(1)=str2double(get(handles.edit3,'string'));
n=str2double(get(handles.edit4,'string'));
b=str2double(get(handles.edit5,'string'));
h=(b-x(1))/n;
%for i=1:n
% y(i+1)=y(i)+h*f(x(i),y(i));
% x(i+1)=x(i)+h;
%end
%y=[x',y'];
%set(handles.edit7,'string',num2str(y));
cad1=sprintf('Iter. x %d. %8.4f

%8.4f\n',1,x(1),y(1));

for i=1:n
y(i+1)=y(i)+h*f(x(i),y(i));
x(i+1)=x(i)+h;
cad2=sprintf('%d. %8.4f
%8.4f\n',i+1,x(i+1),y(i+1));
cad1=[cad1,cad2];
end
set(handles.edit7,'string',cad1);
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
close
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

155

CONCLUSIONES: El decaimiento radiactivo es un fenmeno que puede ser


modelado a travs de ecuaciones diferenciales y que puede ser resuelto de
manera muy simple, dicho fenmeno nos explica el cmo los ncleos radiactivos
se transforman o dejan de ser determinado ncleo para ser uno diferente, ste
cambia con respecto al tiempo, es una razn de cambio de una variable con
respecto al tempo. Dicha curva tendr un comportamiento exponencial y semeja a
muchos otros fenmenos como es el crecimiento poblacional.
REACCIN QUMICA

FUNDAMENTO TERICO: En qumica pocas reacciones siguen el modelo de


decaimiento radiactivo, si las molculas de la sustancia A se descomponen en
molculas mas pequeas, es una suposicin natural que la velocidad a la que
toma lugar esta descomposicin sea proporcional a la cantidad de la primera
sustancia que no ha experimentado conversin; es decir x(t) es la cantidad de la
156

sustancia A que permanece en algn tiempo, entonces dx/dt=kx, donde k es una


constante negativa puesto que x est disminuyendo. Un ejemplo de reaccin
qumica de primer orden es la conversin de cloruro de t-butilo, (CH 3)3CCl, en
alcohol t-butlico, (CH3)3COH:
(CH3)3CCl + NaOH

(CH3)3COH + NaCl

Solo la concentracin de cloruro de t-butilo controla la rapidez de reaccin pero en


la reaccin:
CH3Cl + NaOH

CH3OH + NaCl

Se consume una molcula de hidrxido de sodio, por cada molcula de cloruro de


metilo y, por lo tanto se forma una molcula de alcohol y una de cloruro de sodio.
En este caso la velocidad a la que procede la reaccin es proporcional al producto
de las concentraciones sobrantes de reactivos. Para describir en general esta
segunda reaccin, suponga una molcula de la sustancia A se combina con una
molcula de la sustancia B para formar una sola molcula de C. Si x presenta la
cantidad de sustancia C formada en el tiempo t, y si alfa y beta son cantidades de
las dos sustancias A y B en t=0, quiere decir las iniciales, las cantidades
instantneas de A y B no convertidas en la sustancia C son alfa x y beta x, por
lo tanto la rapidez de la formacin de C se encuentra modelada por la siguiente
ecuacin diferencial:

dx
k ( x)( x)
dt

157

PROBLEMA 1: Dos sustancias A y B se combinan para formar C. La rapidez, o


velocidad, de la reaccin es proporcional al producto de las cantidades
instantneas de A y B que no se transforman en C. Al inicio, hay 40 g de A y 50 g
de B, y por cada gramo de B se emplean dos gramos de A. Se observa que en 5
minutos se forman 10g de C. Cunto se forma de C en 20 minutos?

SOLUCIN POR MEDIO DE ECUACIONES DIFERENCIALES:


La reaccin qumica tiene la siguiente ecuacin qumica
A+ B

Usando el modelo para reaccin qumica

dx
k ( x)( x)
dt
_ (1)
Se escriben relaciones y cantidades de reactivo, se sabe que por cada gramo de
la sustancia B, se emplean dos gramos de A
a = 2 b _ (2)
a + b = x _ (3)
Sustituyendo la ec. 2 en la ec. 3
2b+b=x
b = x / 3 _(4)

158

Volviendo a sustituir ec. 2 en ec. 3


a + (a / 2) = x
a = (2x) / 3 _(5)
Se introducen los valores iniciales de alfa = 60 y beta = 50 en ec.1

dx
k (40 ax)(50 bx)
dt
_ (6)
El valor de a y b se introduce en la ec. 6

dx
2
1
k (40 x)(50 x)
dt
3
3 _ (7)
Se factoriza la ec. 7 de tal forma que quede de una manera ms sencilla

dx
k (60 x)(150 x)
dt
_ (8)
La ec. 8 es una ecuacin diferencial que se resolver mediante sep. de variables y
frac parciales
dx
kdt
(60 x)(150 x)

159

dx
A
B

(60 x)(150 x) (60 x) (150 x)


dx
(150 x) A (60 x) B

(60 x)(150 x)
(60 x)(150 x)
150 A Ax 60 B Bx
x( A B) 150 A 60 B
Para dar solucin deberemos averiguar el valor de A y de B, as conformamos un
sistema de ecuaciones
A B 0
150 A 60 B 1
A

1
90

1
90

Sustituir los valores de A y de B y se resuelve la ec. 8

150 x
90k (t ) c
60 x
_ (9)

ln

Planteando condiciones de frontera 1 y 2


t = 0 min

x = 0 g _(10)

t = 5 min

x = 10 g _(11)

Sustituyendo 10 en ec. 9
160

150 0
90k (0) c
60 0

ln

ln( 2.5) c
c 0.916
Sustituyendo 11 en ec. 9, as como c
150 10
90k (5) 0.916
60 10

ln

ln( 2.8) 0.916


k
450
k 0.000252
As sustituyendo c y k en el modelo obtenemos

150 x
0.02268(t ) 0.916
60 x

ln

Ahora contestando la incgnita, que es cunto se forma en el tiempo de 20


minutos
150 x
0.02268(20) 0.916
60 x

ln

150 x
60 x

1.3696 ln

x 29.323 g

Se forman 29.323 gramos de producto al transcurrir 20 minutos de la reaccin.

161

Tabla 1 y Grfico 1.
t(min)

x(g)
0

2.1818441
1
3
4.2810985
2
4
6.2764319
3
9
8.1748983
4
3
9.9829302
5
7
11.706406
6
3
13.350709
7
4
14.920777
8
7
9

16.42115

17.856005
10
5
29.322820
20
4
37.129692
30
9
42.664437
40
5
46.701933
50
3

162

49.708928
60
5

SOLUCIN POR MEDIO DE MTODOS NUMRICOS:


dy
kdt
(60 y )(150 y )
y ' k (60 y )(150 y )
y ' 0.000252(60 y )(150 y )
y ' 0.000252(9000 210 y y 2 )
y ' 2.268 0.0529 y 0.000252 y 2
f(x, y) 2.268 0.0529 y 0.000252 y 2
y n 1 y n hy '

h es cualquier valor entre 1 y 0, entre ms pequeo sea h, mejor ser la


aproximacin hacia el resultado.
El nmero de operaciones que se han de realizar es hasta que x sea igual a los 25
minutos, osea en incrementos de 0.25.
Tabla 2. Mtodo Euler.
h

0.25

0.25

y
0.25

0.567

0.5 1.1265216
163

8
2

1.6787033
0.75
8

2.2236800
1
6

2.7615834
1.25
2

3.2925419
1.5
3

3.8166810
1.75
4

4.3341231
2
6

0.25

4.8449878
2.25
1

0.25

2.5 5.3493917

0.25

10

2.75 5.8474488

11

6.3392704
3
3

0.25

12

6.8249653
3.25
2

0.25

13

3.5 7.3046397

14

7.7783973
3.75
8

15

8.2463397
4
9

16

8.7085660
4.25
8

0.25

17

9.1651731
4.5
6

0.25

18

4.75 9.6162557

0.25
0.25
0.25
0.25
0.25
0.25

0.25

0.25
0.25
0.25

164

7
19

10.061906
5
5

0.25

20

10.502216
5.25
1

0.25

21

5.5 10.937273

22

11.367163
5.75
8

23

11.791973
6
5

0.25

24

12.211784
6.25
8

0.25

25

6.5 12.626679

26

13.036735
6.75
4

27

13.442031
7
9

28

13.842644
7.25
4

29

14.238647
7.5
4

30

14.630113
7.75
8

31

15.017115
8
1

32

15.399721
8.25
1

33

15.778000
8.5
4

34

16.152019
8.75
9

0.25

0.25
0.25

0.25
0.25
0.25
0.25
0.25
0.25
0.25
0.25
0.25

165

35

16.521845
9
3

36

16.887541
9.25
1

37

17.249170
9.5
3

38

17.606794
9.75
6

39

17.960474
10
7

40

18.310269
10.25
9

41

18.656238
10.5
4

0.25

42

18.998437
10.75
1

0.25

43

11 19.336922

0.25

44

11.25 19.671748

45

20.002968
11.5
7

46

20.330636
11.75
9

47

20.654804
12
3

48

20.975521
12.25
7

49

21.292838
12.5
7

0.25

50

21.606804
12.75
1

0.25

51

13 21.917465

0.25
0.25
0.25
0.25
0.25
0.25
0.25

0.25
0.25
0.25
0.25
0.25

166

9
52

22.224871
13.25
1

0.25

53

22.529065
13.5
7

0.25

54

13.75 22.830095

55

23.128003
14
4

56

23.422834
14.25
6

0.25

57

23.714631
14.5
2

0.25

58

0.25

0.25
0.25

14.75

24.003435
4

59

24.289288
15
4

60

24.572230
15.25
6

61

24.852301
15.5
9

62

25.129541
15.75
3

63

25.403987
16
3

64

25.675677
16.25
4

65

25.944648
16.5
7

0.25

66

26.210937
16.75
6

0.25

67

17 26.474579

0.25
0.25
0.25
0.25
0.25
0.25
0.25

167

8
68

26.735610
17.25
4

69

26.994063
17.5
9

70

27.249974
17.75
2

71

27.503374
18
6

72

27.754297
18.25
9

73

28.002776
18.5
3

0.25

74

28.248841
18.75
4

0.25

75

0.25
0.25
0.25
0.25
0.25
0.25

19

28.492524
3

76

28.733855
19.25
5

0.25

77

28.972865
19.5
3

0.25

78

19.75 29.209583

79

29.444037
20
9

0.25

0.25

SOLUCIN EN MATLAB
function varargout = euler(varargin)
% EULER Application M-file for euler.fig
% FIG = EULER launch euler GUI.
% EULER('callback_name', ...) invoke the named callback.
% Last Modified by GUIDE v2.5 26-Feb-2009 00:30:42
168

if nargin == 0 % LAUNCH GUI


fig = openfig(mfilename,'reuse');
% Generate a structure of handles to pass to callbacks, and store it.
handles = guihandles(fig);
guidata(fig, handles);
if nargout > 0
varargout{1} = fig;
end
elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
try
if (nargout)
[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
else
feval(varargin{:}); % FEVAL switchyard
end
catch
disp(lasterr);
end
end
%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and
%| sets objects' callback properties to call them through the FEVAL
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
169

%| is passed to each callback. You can store additional information in


%| this structure at GUI startup, and you can change the structure
%| during callbacks. Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.

% -------------------------------------------------------------------function varargout = edit1_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit2_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit3_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit4_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit5_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit6_Callback(h, eventdata, handles, varargin)


170

% -------------------------------------------------------------------function varargout = edit7_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)


f1=get(handles.edit1,'string'); f=inline(f1,'x','y');
x0=str2double(get(handles.edit2,'string'));
y0=str2double(get(handles.edit3,'string'));
n=str2double(get(handles.edit4,'string'));
b=str2double(get(handles.edit5,'string'));
h=(b-x0)/n;
for i=1:n
y0=y0+h*f(x0,y0);
x0=x0+h;
end
set(handles.edit6,'string',y0);
% -------------------------------------------------------------------function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
f1=get(handles.edit1,'string');
f=inline(f1,'x','y');
ezmesh(f);
grid on
% -------------------------------------------------------------------function varargout = pushbutton3_Callback(h, eventdata, handles, varargin)
set(handles.edit1,'string','');
set(handles.edit2,'string','');
set(handles.edit3,'string','');
set(handles.edit4,'string','');
set(handles.edit5,'string','');
set(handles.edit6,'string','');
set(handles.edit7,'string','');
% -------------------------------------------------------------------171

function varargout = pushbutton4_Callback(h, eventdata, handles, varargin)


untitled
% -------------------------------------------------------------------function varargout = pushbutton5_Callback(h, eventdata, handles, varargin)

close
% -------------------------------------------------------------------function varargout = pushbutton6_Callback(h, eventdata, handles, varargin)
f1=get(handles.edit1,'string'); f=inline(f1,'x','y');
x(1)=str2double(get(handles.edit2,'string'));
y(1)=str2double(get(handles.edit3,'string'));
n=str2double(get(handles.edit4,'string'));
b=str2double(get(handles.edit5,'string'));
h=(b-x(1))/n;
%for i=1:n
% y(i+1)=y(i)+h*f(x(i),y(i));
% x(i+1)=x(i)+h;
%end
%y=[x',y'];
%set(handles.edit7,'string',num2str(y));
cad1=sprintf('Iter. x %d. %8.4f

%8.4f\n',1,x(1),y(1));

for i=1:n
y(i+1)=y(i)+h*f(x(i),y(i));
x(i+1)=x(i)+h;
cad2=sprintf('%d. %8.4f
%8.4f\n',i+1,x(i+1),y(i+1));
cad1=[cad1,cad2];
end
set(handles.edit7,'string',cad1);
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
close
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

172

Al tiempo de 20 minutos habr 29.44 g de producto


MEZCLADO EN UN TANQUE
FUNDAMENTO TERICO: Un problema para el que e sistema de un
compartimiento proporciona una representacin til es la mezcla de fluidos en un
tanque. Sea x(t) la cantidad de una sustancia en un tanque en el instante t. Para
usar el modelo de anlisis de compartimiento, debemos determinar las razones
con las que esta sustancia entra y sale del tanque. En los problemas de mezclas,
con frecuencia se tiene la razn con la que entra al tanque un fluido que contiene
a la sustancia, junto con la concentracin de la sustancia en ese fluido. Por lo
tanto, al multiplicar la razn de flujo por la concentracin, se obtiene la razn de
entrada de la sustancia.
En general, la razn de salida de la sustancia es ms difcil de determinar. Si nos
dan varazn de salida de la mezcla de los fluidos en el tanque.
173

PROBLEMA 2. Un tanque inicialmente contiene 50 galones de agua pura, en el


tiempo t=0, una salmuera que contiene 2 lb de sal disuelta por galn, entra al
tanque a una razn de 3 galones por minuto, la mezcla se mantiene uniforme
agitndola despus de estar bien agitada sale con la misma rapidez. Qu
cantidad de sal se encuentra en el tanque en el tiempo t? y Qu cantidad de sal
hay en el tanque a los 25 minutos?
SOLUCIN POR MEDIO DE ECUACIONES DIFERENCIALES:
Expresemos la variacin de las libras de x con respecto al tiempo

dx
ES
dt
_ (1)
En este caso el volumen se mantiene constante
V=cte
La entrada es de 3 galones por minuto y a su vez, cada galn contiene 2lb de
sal
2lb 3 gal

gal min

6lb
min

La salida es de 3 galones por minuto, con x libras de sal diluidas

174

xlb 3 gal

50 gal min

0.06 xlb
min

Sustituyendo E y S en la ec. 1

dx
6 0.06 x
dt
_ (2)
Solucionando la ec. 2

d 0.06t

e x 6e 0.06t
dt

0.06t

x 6 *16.66 * e 0.06t c

x 100 ce 0.06t _(3)

Condicin de frontera para averiguar el valor de c


t=0 x=2
Sustituyendo lo anterior en la ec. 3
2 100 ce 0.06( 0)
2 100 c
c 98.0

Sustituyendo el valor de c en la ec. 3

175

x 100 98e 0.06t _ modelo de mezclado en un tanque

Ahora se requiere saber qu cantidad de sal hay a los 25 minutos


x 100 98e 0.06( 25)
x 78.1332

La cantidad de sal es de 78.13 lb por galn

SOLUCIN POR MEDIO DE MTODOS NUMRICOS:


Definamos la funcin, y la derivada de la funcin, el mtodo a seguir es el mtodo
de euler, con el cual es una expresin numrica la cual usamos hasta que x, sea
igual al tiempo que queremos saber las lb de sal por galn de agua.
dy
6 0.06 y
dt
y ' 6 0.06 y

h es cualquier valor entre 1 y 0, entre ms pequeo sea h, mejor ser la


aproximacin hacia el resultado.
f(x, y) 6 0.06 y
y n 1 y n hy '
El nmero de operaciones que se han de realizar es hasta que x sea igual a los 25
minutos, osea en incrementos de 0.25.
Tabla 3. Mtodo numrico.
176

0.25

0.25

3.47

0.25

0.5

4.91795

6.3441807
0.75
5

7.7490180
1
4

0.25

9.1327827
1.25
7

0.25

1.5 10.495791

11.838354
1.75
2

13.160778
2
8

14.463367
2.25
2

15.746416
2.5
7

10

17.010220
2.75
4

11

18.255067
3
1

12

19.481241
3.25
1

13

20.689022
3.5
5

14

21.878687
3.75
1

0.25

15

23.050506
4
8

0.25

16

4.25 24.204749

0.25
0.25

0.25
0.25
0.25
0.25
0.25
0.25
0.25
0.25
0.25

177

2
0.25

17

4.5 25.341678

18

26.461552
4.75
8

19

27.564629
5
5

20

28.651160
5.25
1

21

29.721392
5.5
7

0.25

22

30.775571
5.75
8

0.25

23

0.25
0.25
0.25
0.25

31.813938
2

24

32.836729
6.25
1

25

33.844178
6.5
2

26

34.836515
6.75
5

27

35.813967
7
8

28

36.776758
7.25
3

29

37.725106
7.5
9

30

38.659230
7.75
3

0.25

31

39.579341
8
9

0.25

32

8.25 40.485651

0.25
0.25
0.25
0.25
0.25
0.25
0.25

178

7
0.25

33

8.5 41.378367

34

42.257691
8.75
4

35

43.123826
9
1

36

43.976968
9.25
7

37

44.817314
9.5
2

0.25

38

45.645054
9.75
4

0.25

39

0.25
0.25
0.25
0.25

10

46.460378
6

40

47.263472
10.25
9

0.25

41

48.054520
10.5
9

0.25

42

10.75 48.833703

43

49.601197
11
5

44

50.357179
11.25
5

45

51.101821
11.5
8

46

51.835294
11.75
5

47

52.557765
12
1

48

53.269398
12.25
6

0.25

0.25
0.25
0.25
0.25
0.25
0.25

179

49

53.970357
12.5
6

50

54.660802
12.75
3

51

55.340890
13
2

52

56.010776
13.25
9

0.25

53

56.670615
13.5
2

0.25

54

13.75 57.320556

55

57.960747
14
7

0.25

56

58.591336
14.25
4

0.25

57

0.25
0.25
0.25
0.25

0.25

14.5

59.212466
4

58

59.824279
14.75
4

59

60.426915
15
2

60

61.020511
15.25
5

61

61.605203
15.5
8

62

62.181125
15.75
8

63

62.748408
16
9

0.25

64

63.307182
16.25
7

0.25

65

16.5 63.857575

0.25
0.25
0.25
0.25
0.25
0.25

180

66

64.399711
16.75
4

0.25

67

64.933715
17
7

0.25

68

0.25

17.25

65.45971

69

65.977814
17.5
3

70

66.488147
17.75
1

71

66.990824
18
9

72

67.485962
18.25
5

0.25

73

67.973673
18.5
1

0.25

74

18.75 68.454068

0.25

75

19 68.927257

0.25

76

69.393348
19.25
1

0.25

77

0.25
0.25
0.25
0.25

19.5

69.852447
9

78

70.304661
19.75
2

79

70.750091
20
3

80

71.188839
20.25
9

0.25

81

71.621007
20.5
3

0.25

82

20.75 72.046692

0.25
0.25
0.25

181

2
83

72.465991
21
8

84

72.879001
21.25
9

85

73.285816
21.5
9

86

73.686529
21.75
6

87

74.081231
22
7

0.25

88

74.470013
22.25
2

0.25

89

22.5 74.852963

0.25

90

75.230168
22.75
6

0.25

91

23 75.601716

92

75.967690
23.25
3

93

76.328174
23.5
9

94

76.683252
23.75
3

95

77.033003
24
5

96

77.377508
24.25
5

97

77.716845
24.5
9

98

78.051093
24.75
2

0.25
0.25
0.25
0.25
0.25

0.25
0.25
0.25
0.25
0.25
0.25
0.25

182

0.25

99

78.380326
25
8

Al tiempo de 25 minutos 79.38 lb de sal por galn de agua

183

CONCLUSIONES: Las ecuaciones diferenciales son un arma muy poderosa, pero


puede a llegar a ser complicada para la resolucin de un problema,
lamentablemente el mtodo de euler no nos proporciona una gran seguridad en el
184

mtodo ni un modelo que puede ser empleado a cualquier valor de x, adems el


nmero de operaciones ser muy grande entre mayor sea el tiempo. Por ejemplo
entre mayor sea el valor de h, mayor ser el margen de error. Sin embargo ambos
mtodos nos ofrecen una buena aproximacin a la solucin real del problema.
MEZCLADO DE TANQUES CON CONCENTRACIN INICIAL
PROBLEMA 1: Un tanque contiene inicialmente 50 galones de salmuera en donde
se ha disuelto 10 libras de sal, salmuera que contiene 2 lb de sal disuelta por
galn entra al tanque a una razn de 5 galones por minuto. La mezcla se mantiene
uniforme y la mezcla ya agitada sale a un gasto de 3 galones por minuto.
Qu cantidad de sal hay en el tanque en cualquier tiempo?
Qu cantidad de sal hay a los 5,10,15,20 minutos?
Obtenga el perfil de concentraciones?
FUNDAMENTO TERICO: Un problema para el que e sistema de un
compartimiento proporciona una representacin til es la mezcla de fluidos en un
tanque. Sea x(t) la cantidad de una sustancia en un tanque en el instante t. Para
usar el modelo de anlisis de compartimiento, debemos determinar las razones
con las que esta sustancia entra y sale del tanque. En los problemas de mezclas,
con frecuencia se tiene la razn con la que entra al tanque un fluido que contiene
a la sustancia, junto con la concentracin de la sustancia en ese fluido. Por lo
tanto, al multiplicar la razn de flujo por la concentracin, se obtiene la razn de
entrada de la sustancia.

185

En general, la razn de salida de la sustancia es ms difcil de determinar. Si nos


dan varazn de salida de la mezcla de los fluidos en el tanque.
SOLUCIN POR MEDIO DE ECUACIONES DIFERENCIALES:
Datos:
V0=50 galones
S0=10lb
Expresando la entrada de sal por unidad de tiempo

10lb
5 gal

( 2lb)
min
IN= min
Expresando la salida de sal por unidad de tiempo

3 ylb
3 gal

( ylb )
min
OUT= min
La incgnita es la funcin y(t) 50 es el volumen inicial del tanque y 2(t) quiere
decir que se acumulan 2 galones por unidad de tiempo, esto se sac a conclusin
de que entran 5 gal y salen 2 gal.
v(t ) 50 2(t )

La concentracin del tanque se expresa


y (t )
y (t )

v(t ) 50 2(t )

186

La variacin de la sal es expresada como la ganancia de sal menos la prdida de


sal
dy
3y
5( 2)
dt
50 2(t ) (1)
Reordenando la ecuacin 1

dy
3y

10
dt 50 2(t )
(2)
Expresando la condicin de frontera inicialconcentracin de sal inicial
y (0) 10 (3)

P(t) es el coeficiente terminal lineal


3y
En y es 50 2(t )
Por ende el factor integrante
3y

I e

502 (t )

I e1.5(ln(t 25))
I (t 25)1.5 (4)
Multiplicando ec. (4) por la ec. (2) y despejando

187

(t 25)1.5

dy
3y
(t 25)1.5
(t 25)1.510
dt
50 2(t )

dy
(t 25)1.5 y 10(t 25)1.5
dt
(t 25)1.5 y

10(t 25)1.51
c
1.5 1

(t 25)1.5 y 4(t 25) 2.5 c


y

4(t 25)1.5 (t 25)


c

1.5
(t 25)
(t 25)1.5

y 4(t 25)

c
(t 25)1.5

(5)

Aplicando ec. (3) en (5)

10 4(0 25)

c
(0 25)1.5

(10 100) * (25)1.5 c


c 11250

Sustituyendo el valor de c en ec. (5)

y 4(t 25)

11250
(t 25)1.5 PERFIL DE LB

SAL
11250
(t 25)1.5
50 2(t )
PERFIL CONCENTRACIONES

4(t 25)
CONC

libras de
188

sal
0

10
19.142056

9
27.812462

6
36.069637

1
43.963015

4
51.534680

3
58.820656

5
65.851943

1
72.655344

6
79.254144

6
85.668655

10

1
91.916666

11
12

7
98.013821
189

4
103.97392
13

1
109.80918

14

15 115.53047
121.14744
16

3
126.66874

17

6
132.10211

18

8
137.45451

19

20

142.7322
147.94082

21

6
153.08550

22

7
158.17088

23

3
163.20116

24

6
168.18019

25

5
190

Para el perfil de concentraciones de sal

conc.

y (t )
v(t )

Tabulando y graficando la conc. de sal vs tiempo


CONC.
t

LB SAL
0

V(gal) (lb/gal)
10

50

0.2

52

0.36811648

54

0.5150456

56

0.64410066

58

0.75798302

60

0.85891134

62

0.94872027

64

1.02893661

8 72.655344

66

1.10083855

19.142056
1

9
27.812462

6
36.069637

1
43.963015

4
51.534680

3
58.820656

5
65.851943

191

6
79.254144
9

68

1.16550213

70

1.22383793

72

1.27662037

74

1.3245111

76

1.36807791

78

1.40781008

5 115.53047

80

1.44413088

82

1.47740785

84

1.50796126

86

1.53607114

88

1.56198313

142.7322

90

1.58591334

1 85.668655
0

1 91.916666
1

1 98.013821
2

1 103.97392
3

1 109.80918
4
1

1 121.14744
6

1 126.66874
7

1 132.10211
8

1 137.45451
9
2
0

192

2 147.94082
1

92

1.60805246

94

1.62856923

96

1.64761336

98

1.66531802

100

1.68180195

2 153.08550
2

2 158.17088
3

2 163.20116
4

2 168.18019
5

Si t=5min
TIEMP
O

LB SAL

V(ga

CONC.

l)

(lb/gal)

51.53468
5

03

0.858911
60

34

V(ga

CONC.

l)

(lb/gal)

t=10min
TIEMP
O

LB SAL
85.66865

10

51

1.223837
70

93

193

t=15min
TIEMP
O

LB SAL

V(ga

CONC.

l)

(lb/gal)

115.5304
15

1.444130
80

88

V(gal

CONC.

(lb/gal)

t=20min
TIEMP
O

LB SAL
142.732

20

1.585913
90

34

SOLUCIN POR MEDIO DE MTODOS NUMRICOS:


Definamos la funcin, y la derivada de la funcin, el mtodo a seguir es el mtodo
de euler, con el cual es una expresin numrica la cual usamos hasta que x, sea
igual al tiempo que queremos saber las lb de sal por galn de agua.

dy
3y

10
dt
50 2(t )
y'

3y
10
50 2(t )

194

h es cualquier valor entre 1 y 0, entre ms pequeo sea h, mejor ser la


aproximacin hacia el resultado.

f(t, y)

3y
10
50 2(t )

y n1 y n hy '
El nmero de operaciones que se han de realizar es hasta que t sea igual a los
5,10,15,20 minutos, osea en incrementos de 0.25.
h

n
0.25

t (min)
0

y'n

0.25

Yn (lb sal)
9.4

12.35

9.2735294 14.668382
0.25

0.5

9.1455311 16.954765
0.25

0.75

9.0218404 19.210225
0.25

8.9022728 21.435793
0.25

1.25

5
23.632456

0.25

1.5 8.7866532

8.6748155 25.801160
0.25

1.75

8.5666021 27.942811
0.25

195

30.058277
0.25

2.25 8.4618636

8.3604576 32.148391
0.25

2.5

8.2622491 34.213953
0.25

10

2.75

8.1671096 36.255731
0.25

11

8.0749169 38.274460
0.25

12

3.25

7.9855547 40.270849
0.25

13

3.5

7.8989122 42.245577
0.25

14

3.75

7.8148839 44.199298
0.25

15

7.7333693 46.132640
0.25

16

4.25

7.6542725 48.046208
0.25

17

4.5

7.5775020 49.940584
0.25

18

4.75

7.5029707 51.816326
0.25

19

0.25

20

5.25 7.4305953 53.673975


196

7.3602962 55.514049
0.25

21

5.5

7.2919975 57.337049
0.25

22

5.75

7.2256266 59.143455
0.25

23

7.1611141 60.933734
0.25

24

6.25

3
62.708332

0.25

25

6.5 7.0983936

7
64.467683

0.25

26

6.75 7.0374016

6.9780773 66.212202
0.25

27

6.9203626 67.942293
0.25

28

7.25

6.8642018 69.658343
0.25

29

7.5

6.8095415
0.25

30

7.75

2 71.360729
73.049811

0.25

31

8 6.7563305

6.7045197 74.725941
0.25

32

8.25

5
197

6.6540623 76.389457
0.25

33

8.5

6.6049130 78.040685
0.25

34

8.75

6.5570285 79.679942
0.25

35

6.5103674 81.307534
0.25

36

9.25

6.4648898 82.923756
0.25

37

9.5

6.4205572 84.528896
0.25

38

9.75

6.3773330 86.123229
0.25

39

10

6.3351817 87.707024
0.25

40

10.25

6.2940693 89.280542
0.25

41

10.5

6.2539632
0.25

42

10.75

7 90.844033
6.2148319

0.25

43

11

6 92.397741
93.941902

0.25

44

0.25

45

11.25 6.1766452

11.5 6.1393738 95.476745


198

6.1029899 97.002493
0.25

46

11.75

6.0674664 98.519359
0.25

47

12

6.0327774 100.02755
0.25

48

12.25

5.9988978 101.52727
0.25

49

0.25

50

12.5

12.75 5.9658035 103.01873


104.50209

0.25

51

13 5.9334712

5.9018785 105.97756
0.25

52

13.25

5.8710038 107.44531
0.25

53

13.5

8
108.90552

0.25

54

13.75 5.8408264

5.8113259 110.35835
0.25

55

14

5.7824832 111.80397
0.25

56

14.25

5.7542793 113.24254
0.25

57

0.25

58

14.5

14.75 5.7266963 114.67422


199

5.6997167
0.25

59

15

2 116.09915
117.51748

0.25

60

15.25 5.6733236

5.6475007 118.92935
0.25

61

15.5

5.6222322 120.33491
0.25

62

15.75

5.5975031
0.25

63

16

4 121.73429
5.5732985 123.12761

0.25

64

16.25

5.5496042 124.51501
0.25

65

16.5

5.5264066 125.89661
0.25

66

16.75

5.5036922
0.25

67

17

4 127.27254
5.4814482 128.64290

0.25

68

17.25

5.4596622 130.00781
0.25

69

17.5

5.4383221 131.36739
0.25

70

17.75

9
200

5.4174163 132.72175
0.25

71

18

5.3969334 134.07098
0.25

72

18.25

5.3768625 135.41520
0.25

73

18.5

5.3571930
0.25

74

18.75

136.7545

5.3379147 138.08897
0.25

75

19

5.3190176 139.41873
0.25

76

19.25

5.3004921 140.74385
0.25

77

19.5

5.2823288 142.06443
0.25

78

19.75

5.2645187 143.38056
0.25

79

20

201

Perfil de concentraciones
Conc. (lb
h
0.25

t
0

y'n
0.25

Yn (lb sal)
9.4

12.35

v(gal)

sal/gal)

50.5

0.24455446

51

0.28761534

51.5

0.32921874

52

0.36942741

52.5

0.40830083

53

0.44589541

53.5

0.48226468

9.2735294 14.668382
0.25

0.5

9.1455311 16.954765
0.25

0.75

9.0218404 19.210225
0.25

8.9022728 21.435793
0.25

1.25

5
23.632456

0.25

0.25

1.5 8.7866532

8.6748155

25.801160

1.75

202

0.25

8.5666021

27.942811

54

0.51745947

54.5

0.55152802

55

0.58451621

55.5

0.61646764

56

0.64742377

56.5

0.67742408

57

0.70650612

57.5

0.73470569

58

0.76205686

58.5

0.78859214

59

0.81434252

59.5

0.83933755

5 7.5029707 51.816326

60

0.86360545

30.058277
0.25

2.25 8.4618636

8.3604576 32.148391
0.25

2.5

8.2622491 34.213953
0.25

10

2.75

8.1671096 36.255731
0.25

11

8.0749169 38.274460
0.25

12

3.25

7.9855547 40.270849
0.25

13

3.5

7.8989122 42.245577
0.25

14

3.75

7.8148839 44.199298
0.25

15

7.7333693 46.132640
0.25

16

4.25

7.6542725 48.046208
0.25

17

4.5

7.5775020 49.940584
0.25

18

0.25

19

4.75

203

7.4305953 53.673975
0.25

20

5.25

60.5

0.88717315

61

0.91006639

61.5

0.93230974

62

0.95392671

62.5

0.97493975

63

0.99537036

63.5

1.0152391

64

1.03456566

64.5

1.05336889

65

1.07166682

2 71.360729

65.5

1.08947678

66

1.10681533

7.3602962 55.514049
0.25

21

5.5

7.2919975 57.337049
0.25

22

5.75

7.2256266 59.143455
0.25

23

7.1611141 60.933734
0.25

24

6.25

3
62.708332

0.25

25

6.5 7.0983936

7
64.467683

0.25

26

6.75 7.0374016

6.9780773 66.212202
0.25

27

6.9203626 67.942293
0.25

28

7.25

6.8642018 69.658343
0.25

29

7.5

6
6.8095415

0.25

30

7.75

73.049811
0.25

31

8 6.7563305

204

6.7045197 74.725941
0.25

32

8.25

66.5

1.12369837

67

1.14014115

67.5

1.1561583

68

1.17176386

68.5

1.1869713

69

1.20179358

69.5

1.21624311

70

1.23033185

70.5

1.24407127

71

1.25747243

7 90.844033

71.5

1.27054592

6 92.397741

72

1.28330196

11.25 6.1766452 93.941902

72.5

1.29575038

6.6540623 76.389457
0.25

33

8.5

6.6049130 78.040685
0.25

34

8.75

6.5570285 79.679942
0.25

35

6.5103674 81.307534
0.25

36

9.25

6.4648898 82.923756
0.25

37

9.5

6.4205572 84.528896
0.25

38

9.75

6.3773330 86.123229
0.25

39

10

6.3351817 87.707024
0.25

40

10.25

6.2940693 89.280542
0.25

41

10.5

7
6.2539632

0.25

42

10.75

6.2148319
0.25

43

0.25

44

11

205

3
6.1393738 95.476745
0.25

45

11.5

73

1.30790063

73.5

1.31976181

74

1.3313427

74.5

1.34265173

75

1.35369705

12.75 5.9658035 103.01873

75.5

1.36448648

76

1.3750276

76.5

1.38532767

77

1.39539374

77.5

1.40523258

78

1.41485072

6.1029899 97.002493
0.25

46

11.75

6.0674664 98.519359
0.25

47

12

6.0327774 100.02755
0.25

48

12.25

5.9988978 101.52727
0.25

49

0.25

50

12.5

104.50209
0.25

51

13 5.9334712

5.9018785 105.97756
0.25

52

13.25

5.8710038 107.44531
0.25

53

13.5

8
108.90552

0.25

0.25

54

55

0.25

56

0.25

57

13.75 5.8408264

5.8113259

110.35835

5.7824832

111.80397

78.5

1.42425448

14.5 5.7542793

113.24254

79

1.43344996

14

14.25

206

0.25

58

14.75

5.7266963

114.67422

79.5

1.44244303

116.09915

80

1.45123937

80.5

1.45984448

81

1.46826365

81.5

1.47650201

4 121.73429

82

1.48456451

82.5

1.49245593

83

1.50018091

83.5

1.50774392

4 127.27254

84

1.51514929

84.5

1.52240121

85

1.52950374

5.6997167
0.25

59

15

117.51748
0.25

0.25

60

61

15.25 5.6733236

5.6475007

118.92935

15.5

5.6222322 120.33491
0.25

62

15.75

9
5.5975031

0.25

63

16

5.5732985 123.12761
0.25

64

16.25

5.5496042 124.51501
0.25

65

16.5

5.5264066 125.89661
0.25

66

16.75

2
5.5036922

0.25

67

17

5.4814482 128.64290
0.25

68

17.25

5.4596622 130.00781
0.25

69

17.5

207

5.4383221 131.36739
0.25

70

17.75

85.5

1.5364608

86

1.54327619

86.5

1.54995359

87

1.55649657

136.7545

87.5

1.56290857

88

1.56919294

88.5

1.57535292

89

1.58139164

89.5

1.58731216

90

1.59311742

5.4174163 132.72175
0.25

71

18

5.3969334 134.07098
0.25

72

18.25

5.3768625 135.41520
0.25

73

18.5

5
5.3571930

0.25

74

18.75

5.3379147 138.08897
0.25

75

19

5.3190176 139.41873
0.25

76

19.25

5.3004921 140.74385
0.25

77

19.5

5.2823288 142.06443
0.25

78

19.75

5.2645187 143.38056
0.25

79

20

208

ERROR DEL MTODO DE EULER:


En el campo de la ingeniera y ciencias, existen infinidad de fenmenos que
requieren representarse mediante modelos matemticos. Desafortunadamente, la
gran mayora de estos modelos no tiene una solucin exacta no es fcil el
hallarla. Es estos casos es en donde los mtodos numricos proporcionan una
solucin aproximada al problema original. Un mtodo numrico es aquel que
obtiene nmeros que se aproximan a los que se obtendran aplicando la solucin
analtica de un problema.
Errores inherentes
Los errores inherentes son aquellos que tienen los datos de entrada de un
problema, y son debidos principalmente a que se obtienen experimentalmente,
debindose tanto al instrumento de medicin, como a las condiciones de
realizacin del experimento. Por ejemplo, s el experimento es a temperatura
constante y no se logra esto mas que en forma aproximada. Tambin pueden
209

deberse a que se obtengan de clculos previos. Por ejemplo el valor calculado es


el de un nmero irracional como

Errores de truncamiento
Los errores de truncamiento se originan por el hecho de aproximar la solucin
analtica de un problema, por medio de un mtodo numrico. Por ejemplo al
evaluar la funcin exponencial por medio de la serie de Taylor, se tiene que
calcular el valor de la siguiente serie infinita :

Ante la imposibilidad de tomar todos los trminos de la serie, se requiere truncar


despus de cierto nmero de trminos. Esto nos introduce ciertamente un error,
que es el error de truncamiento. Este es independiente de la manera de realizar
los clculos. Solo depende del mtodo numrico empleado.
Errores de redondeo
Los errores de redondeo, se originan al realizar los clculos que todo mtodo
numrico o analtico requieren y son debidos a la imposibilidad de tomar todas las
cifras que resultan de operaciones aritmticas como los productos y los cocientes,
teniendo que retener en cada operacin el nmero de cifras que permita el
instrumento de clculo que se este utilizando. Por ejemplo al calcular el valor de

210

tenemos que quedarnos solo con la mayor cantidad de cifras 3, que maneje
nuestro instrumento de calculo.
Los errores anteriores tambin suelen denominarse como las fuentes de error.
Debido a que un valor aproximado Xa se tiene cierta desviacin d e la solucin
verdadera, es importante medir el error cometido al utilizar una aproximacin en
lugar del valor exacto. Existen dos tipos de errores:
-

Relativo

Absoluto

ERROR RELATIVO Y ABSOLUTO EN LAS CONCENTRACIONES:

E a | x xa |
t(min Conc. (lb sal/gal)
)

EULER

Er

| x xa | E a

| x|
|x|

CONC.(lb/gal)
EC.DIFERENCIALES

Ea

Er
0.0035611

0.36942741

0.36811648

0.00131093

0.51745947

0.5150456

0.00241387

0.0046867

211

1
3

0.64742377

0.64410066

0.00332311

0.0051593
0.0053745

0.76205686

0.75798302

0.00407384

8
0.0054651

0.86360545

0.85891134

0.00469411

9
0.0054878

0.95392671

0.94872027

0.00520644

6
0.0054707

1.03456566

1.02893661

0.00562905

1.10681533

1.10083855

0.00597678

0.0054293
0.0053725

1.17176386

1.16550213

0.00626173

6
0.0053061

10

1.23033185

1.22383793

0.00649392

9
0.0052338

11

1.28330196

1.27662037

0.00668159

1
0.0051578

12

1.3313427

1.3245111

0.0068316

3
0.0050798

13

1.3750276

1.36807791

0.00694969

9
0.0050011

14

1.41485072

1.40781008

0.00704064

3
0.0049223

15

1.45123937

1.44413088

0.00710849

3
212

0.0048440
16

1.48456451

1.47740785

0.00715666

7
0.0047667

17

1.51514929

1.50796126

0.00718803

2
0.0046905

18

1.54327619

1.53607114

0.00720505

7
0.0046158

19

1.56919294

1.56198313

0.00720981

1
0.0045425

20

1.59311742

1.58591334

0.00720408

213

ERROR RELATIVO Y ABSOLUTO EN LAS LIBRAS DE SAL EN EL TANQUE


LB SAL

Yn (lb sal)

EC.DIFERENCI

EULER

ALES

Ea

Er

0.06816 0.003561
1

19.210225

19.142057

84

18

0.13034 0.004686
2

27.942811

27.812463

86

0.18609 0.005159
3

36.255731

36.069637

41

0.23628 0.005374
4

44.199298

43.963015

27

58

0.28164 0.005465
5

51.816327

51.53468

65

18

0.32279 0.005487
6

59.143456

58.820657

93

86

0.36025 0.005470
7

66.212202

65.851943

93

75

0.39446 0.005429
8

73.049812

72.655345

29

0.42579 0.005372
9

79.679943

79.254145

1
0

79

56

0.45457 0.005306
86.123229

85.668655

43

19

214

1
1

0.48107 0.005233
92.397741

91.916667

1
2

98.51936

98.013821

85

104.5021

103.97392

110.35836

109.80919 0.54917

116.09915

115.53047 0.56868

121.73429

121.14744

127.27254

126.66875

132.72175

132.10212

72

58

0.63446 0.004615
138.08898

137.45452

2
0

07

0.61963 0.004690

1
9

0.60379 0.004766

1
8

34

0.58684 0.004844

1
7

13
0.004922

1
6

89
0.005001

1
5

83

0.52817 0.005079

1
4

81

0.50553 0.005157

1
3

43

0.64836 0.004542
143.38057

142.7322

55

215

CONCLUSIONES: Las ecuaciones diferenciales son un arma muy poderosa, pero


puede a llegar a ser complicada para la resolucin de un problema,
lamentablemente el mtodo de euler no nos proporciona una gran seguridad en el
mtodo ni un modelo que puede ser empleado a cualquier valor de x, adems el
nmero de operaciones ser muy grande entre mayor sea el tiempo. Por ejemplo
entre mayor sea el valor de h, mayor ser el margen de error. Sin embargo ambos
mtodos nos ofrecen una buena aproximacin a la solucin real del problema. Se
nota que los errores son pequeos, sin embargo si hablamos de una operacin
industrial estas pequeas variaciones al escalarlas podra ser una gran variante.

216

217

PROBLEMAS DE MEZCLADO DE TANQUES INTERCONECTADOS


FUNDAMENTO TERICO:
Es muy comn en la industria hacer uso de tanques interconectados para
concentrar una solucin. Un problema para el que e sistema de un compartimiento
proporciona una representacin til es la mezcla de fluidos en un tanque. Sea x(t)
la cantidad de una sustancia en un tanque en el instante t. Para usar el modelo de
anlisis de compartimiento, debemos determinar las razones con las que esta
sustancia entra y sale del tanque. En los problemas de mezclas, con frecuencia se
tiene la razn con la que entra al tanque un fluido que contiene a la sustancia,
junto con la concentracin de la sustancia en ese fluido. Por lo tanto, al multiplicar
la razn de flujo por la concentracin, se obtiene la razn de entrada de la
sustancia.
En general, la razn de salida de la sustancia es ms difcil de determinar. Si nos
dan varazn de salida de la mezcla de los fluidos en el tanque.
PROBLEMA: El tanque x inicialmente contiene 100 L de salmuera en los que se
encuentran disueltos 5 kilogramos de sal, y en el tanque y que inicialmente

218

contiene 100 L de salmuera en los que se han disuelto 2 kilogramos de sal, a partir
de t=0
a). Fluye agua hacia el tanque x a razn de 6L/min.
b). La salmuera fluye del tanque x al tanque y a razn de 8L/min.
c). La salmuera se bombea del tanque y al tanque x a razn de 2L/min.
d). La salmuera fluye del tanque y , sale del sistema a razn de 6L/min.
DIAGRAMA:

SOLUCIN POR MEDIO DE ECUACIONES DIFERENCIALES:


Realizando un balance en el separador X
A+ C=B
Sabemos que

dx
ES
dt
(1)
Basndonos en el balance general en x, sabemos que E es igual a
219

E AC
A

0kg
min

2y
100

2y
100

(2)

Basndonos en el balance general en x, sabemos que S es igual a


SB
B

8x
100

8x
100

(3)

Sustituyendo ecuaciones (2) y (3) en ecuacin (1)

dx 2 y 8 x

dt 100 100 (4)


Realizando un balance en el separador Y
B=C+D
Sabemos que

dy
ES
dt
(5)
Basndonos en el balance general en y, sabemos que E es igual a
220

EB
B

8x
100

8x
100

(6)

Basndonos en el balance general en Y, sabemos que S es igual a


S CD
C

2y
100

6y
100

2y 6y

100 100

(7)

Sustituyendo ecuaciones (6) y (7) en ecuacin (5)

dy 8 x 8 y

dt 100 100 (8)


Las ec. (4) y (8) conforman un sistemas de ecuaciones diferenciales

dy 8 x 8 y

dt 100 100
dx 2 y 8 x

dt 100 100
-------------------------

221

As daremos una forma simplificada al sistema

y'

2x 2 y

25 25 (9)

x'

y 2x

50 25 (10)

Despejando x de la ec. (9)

2 y 25

x y '
25 2 (11)

Sustituyendo ec. (11) en ec. (10)

25
' 1y 2 25 y '

y ' y

y

2
1 50 25 2
(12)
Simplificando ec. (12)

25 y ' '
3
2 y '
y 0
2
50
(13)
Resolviendo ec. Diferencial (13)
25m 2
3
2m
0
2
50
r1 .04
r2 .12
Planteando una solucin general

222

y (t ) C1e t *0.04 C 2 e .012*t


y (t ) .5C1e t*0.04 .5C 2 e .012*t (14)
Evaluando ec. (14) cuando t=0
y (0) C1 C 2 y 0
x(0) .5C1 .5C 2 x 0 (15)
Planteando valores de frontera iniciales
T=0

x0=5 kg

y0=2kg

Evaluando las condiciones de frontera en ecuaciones (15)


2 C1 C 2
5 .5C1 .5C 2

El anterior es un sistema de ecuaciones que se resuelve con ayuda de la texas


C1 6
C 2 4

Sustituyendo C1 y C2 en ec.(14) y (15)

x(t ) 3 * e 0.04*t 2 * e 0.12*t


y (t ) 6 * e 0.04*t 4 * e 0.12*t Soluciones particulares para el tanque X y Y en
cualquier tiempo t.

223

Bosquejaremos la cantidad de sal en cada tanque en diferentes tiempos en tabla


1
Tabla 1. Mtodo. Ecuaciones diferenciales.
t(min)

x(kg sal)

y(kg sal)

4.656209
41

2.217054
76

4.342605
16

2.392186
42

4.0561145
3
1

2.530817
07

3.793998
83

2.637728
92

3.553816
3

2.717137
75

3.333388
95

2.772757
96

3.130773
19

2.807860
23

2.944233
85

2.825322
63

2.772221
03

2.827675
88

10

2.613349
59

2.817143
54

11

2.466380
91

2.795677
51

12

2.330206
75

2.764989
6

13

2.203834

2.726579
224

85

37

14

2.086376
21

2.681758
93

15

1.977033
75

2.631674
79

16

1.875092
26

2.577327
3

17

1.779909
45

2.519587
79

18

1.690908
05

2.459213
8

19

1.607568
73

2.396862
54

20

1.529423
82

2.333102
84

21

1.456051
79

2.268425
63

22

1.387072
26

2.203253
36

23

1.322141
63

2.137948
18

24

1.260949
14

2.072819
31

25

1.203213
4

2.008129
46

Bosquejo grfico 1 de sal en tanques X y Y por minuto


Grfico 1

225

SOLUCIN POR MEDIO DE MTODOS NUMRICOS:

dy 8 x 8 y

dt 100 100
dx 2 y 8 x

dt 100 100
La metodologa a seguir es dar resolucin a cada una de las ecuaciones por
medio del uso de mtodos numricos, el mtodo elegido fue el mtodo de euler,
que se aplicar a cada una de las ecuaciones.

y n 1 y n hy '
h es cualquier valor entre 1 y 0, entre ms pequeo sea h, mejor ser la
aproximacin hacia el resultado.
El nmero de operaciones que se han de realizar es hasta que t sea igual a los 25
minutos, osea en incrementos de 0.25.
226

Tabla 2. Mtodo de euler


MI

y'n

yn

x'n

xn

0.5

0.5

0.5

0.24

2.12

-0.36

4.82

0.5

0.216

2.228

-0.34104

4.64948

0.5

0.5

0.5

0.5

0.5

0.5

0.5
0.5

0.5
0.5

1.5 0.1937184
0.1729512
2
2
0.1536046
2.5
4

3 0.1355905

3.5

0.1188259
7

0.1032331
4
9

4.5

0.088739

2.3248592

0.3254612 4.48674939
2
2

2.4113348
1

0.3107132 4.33139276
6
4

2.4881371
3

0.2967486 4.18301842
8
5

2.5559323
8

0.2835228 4.04125701
3
2

2.6153453
6

0.2709936 3.90576018
5
5

2.6669619
6

0.2591215 3.77619939
8
7

2.7113314
5

0.2478693 3.65226473
2
6

0.0752746
5
6

2.7489687
3.53366383
9 -0.2372018
4

5.5 0.0627756

0.2270859 3.42012084
7
7

0.0511811

2.7803565
9
2.8059471

3.31137548
227

0.5

0.5

0.5

0.5

0.0404342
6.5
7
0.0304814
7
3
0.0212723
7.5
1
0.0127596
8
6

0.5

0.0048990
8.5
9

0.5

0.0023510
9
8

0.5

0.0090300
9.5
3

0.5

0.0151745
10
1

0.5

0.0208190
10.5
5

0.5

0.0259960
11
7

0.2174907
2

2.8261642
9

0.2083867 3.20718210
5
8

2.841405

0.1997464 3.10730887
7
4

2.8520411
6

0.1915438
9

2.8584209
9

0.1837545 2.91965966
3
3

2.8608705
4

0.1763553 2.83148198
6
2

2.8596949
9

0.1693246 2.74681965
6
3

2.8551799
8

0.1626419 2.66549866
7
6

2.8475927
3

0.1562880 2.58735464
4
7

2.8371832

0.1502447 2.51223229
1
3

2.8241851
7

0.1444948 2.43998485
8
3

3.01153693

228

0.5

0.0307360
11.5
3

2.8088171
6

0.1390224
5 2.37047363

0.5

0.0350674
12
8

2.7912834
1

0.1338122 2.30356751
2
9

0.5

0.0390172
12.5
7

2.7717747
8

0.1288499 2.23914256
1
6

0.5

0.0426105
13
8

2.7504694
9

0.1241220 2.17708155
2
9

0.5

0.0458710
13.5
3

2.7275339
7

0.1196158
5

0.5

0.0488208
14
3

2.7031235
6

0.1153194 2.05961392
2
6

0.5

0.0514807
14.5
7

2.6773831
- 2.00400320
7 0.11122145
1

0.5

15 0.0538704

2.6504479
1.95034755
7 -0.1073113
3

0.5

0.0560080
15.5
3

2.6224439
6

0.1035789
3 1.89855809

0.5

0.0579108
16
7

2.5934885
2

0.1000148 1.84855065
8
2

0.5

0.0595950
16.5
3

2.5636910
1

0.0966102 1.80024553
3
6

2.11727363
6

229

0.5

0.0610756
17
4

0.5

0.0623668
17.5
8

0.5

0.0634820
18
4

2.5331531
9

0.0933565 1.75356724
8
6

2.5019697
5

0.0902459 1.70844425
8
4

2.4702287
3

0.0872709 1.66480877
7
1

2.4380119
3

0.0844244 1.62259653
6
9

2.4053953
2

0.0816998 1.58174663
2
1

2.3724493
7

0.0790907
4 1.54220126

2.3392394
5

0.0765913 1.50390560
1
4

2.3058260
9

0.0741959
3 1.46680764

0.5

18.5 0.0644336

0.5

0.0652332
19
3

0.5

0.0658918
19.5
9

0.5

0.0664198
20
5

0.5

0.0668267
20.5
1

0.5

0.0671214
21
8

2.2722653
1.43085798
5 -0.0718993
8

0.5

0.0673125
21.5
9

2.2386090
6

0.0696964 1.39600975
6
9

0.5

0.0674079
22
4

2.2049050
9

0.0675826
8 1.36221842

0.5

22.5

0.0674149

2.1711976

- 1.32944165
0.0655535
230

0.5

0.0673404
23
8

0.5

0.0671910
23.5
5

2.1039318
1.26677301
6 -0.0617325
5

0.5

0.0669727
24
1

2.0704455

0.0599329 1.23680654
3
9

0.5

0.0666911
2

2.0370999
5

0.0582025 1.20770528
3
7

2.0039241
6

0.0565379 1.17943631
4
7

0.5

24.5

0.0663515
25
7

2.1375273
8

0.0636047 1.29763926
9
7

T=25

SOLUCIN UNO EN MATLAB


function varargout = ecdiferencial(varargin)
% ecdiferencial M-file for ecdiferencial.fig
%
ecdiferencial, by itself, creates a new ecdiferencial or raises the existing
%
singleton*.
%
%
H = ecdiferencial returns the handle to a new ecdiferencial or the handle to
%
the existing singleton*.
%
%
ecdiferencial('CALLBACK',hObject,eventData,handles,...) calls the local
%
function named CALLBACK in ecdiferencial.M with the given input
arguments.
%
%
ecdiferencial('Property','Value',...) creates a new ecdiferencial or raises the
%
existing singleton*. Starting from the left, property value pairs are
%
applied to the GUI before ecdiferencial_OpeningFunction gets called. An
%
unrecognized property name or invalid value makes property application
%
stop. All inputs are passed to ecdiferencial_OpeningFcn via varargin.
%
%
*See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
231

%
instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Copyright 2002-2003 The MathWorks, Inc.
% Edit the above text to modify the response to help ecdiferencial
% Last Modified by GUIDE v2.5 24-Apr-2007 21:16:46
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @ecdiferencial_OpeningFcn, ...
'gui_OutputFcn', @ecdiferencial_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before ecdiferencial is made visible.
function ecdiferencial_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to ecdiferencial (see VARARGIN)
% Choose default command line output for ecdiferencial
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes ecdiferencial wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
232

function varargout = ecdiferencial_OutputFcn(hObject, eventdata, handles)


% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
%
str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit2_Callback(hObject, eventdata, handles)


% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit2 as text
%
str2double(get(hObject,'String')) returns contents of edit2 as a double
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
233

% Hint: edit controls usually have a white background on Windows.


%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit3_Callback(hObject, eventdata, handles)


% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit3 as text
%
str2double(get(hObject,'String')) returns contents of edit3 as a double
% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit4_Callback(hObject, eventdata, handles)


% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit4 as text
%
str2double(get(hObject,'String')) returns contents of edit4 as a double
% --- Executes during object creation, after setting all properties.
function edit4_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
234

% Hint: edit controls usually have a white background on Windows.


%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit5_Callback(hObject, eventdata, handles)


% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit5 as text
%
str2double(get(hObject,'String')) returns contents of edit5 as a double
% --- Executes during object creation, after setting all properties.
function edit5_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit6_Callback(hObject, eventdata, handles)


% hObject handle to edit6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit6 as text
%
str2double(get(hObject,'String')) returns contents of edit6 as a double
% --- Executes during object creation, after setting all properties.
function edit6_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
235

% Hint: edit controls usually have a white background on Windows.


%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- 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');
f=inline(f1,'x','y1','y2');
% Se pone 'x' en vez de 'x0', porque la variable x es simbolica por lo
% tanto no se altera si ponemos un 0,1,etc al costado de x.
% Tambien podemos poner 'x0' en vez de 'x'.
f2=get(handles.edit2,'string');
g=inline(f2,'x','y1','y2');
x0=str2double(get(handles.edit3,'string'));
b=str2double(get(handles.edit4,'string'));
y1=str2double(get(handles.edit5,'string'));
y2=str2double(get(handles.edit6,'string'));
n=str2double(get(handles.edit9,'string'));
h=(b-x0)/n
% h=0.5
%Sirve para que repita lo que esta dentro de for hasta n(iteraciones),
%n es tambien los subintervalos.
for i=1:n
K1=f(x0,y1,y2);
R1=g(x0,y1,y2);
K2=f(x0+h/2,y1+h/2*K1,y2+h/2*R1);
R2=g(x0+h/2,y1+h/2*K1,y2+h/2*R1);
K3=f(x0+h/2,y1+h/2*K2,y2+h/2*R2);
R3=g(x0+h/2,y1+h/2*K2,y2+h/2*R2);
K4=f(x0+h,y1+h*K3,y2+h*R3);
R4=g(x0+h,y1+h*K3,y2+h*R3);
y3=y1+(h/6)*(K1+2*K2+2*K3+K4)
y4=y2+(h/6)*(R1+2*R2+2*R3+R4)
x1=x0+h;
x0=x1;
y1=y3
y2=y4
236

end
set(handles.edit7,'string',y3);
set(handles.edit8,'string',y4);
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
close
function edit7_Callback(hObject, eventdata, handles)
% hObject handle to edit7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit7 as text
%
str2double(get(hObject,'String')) returns contents of edit7 as a double
% --- Executes during object creation, after setting all properties.
function edit7_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit8_Callback(hObject, eventdata, handles)


% hObject handle to edit8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit8 as text
%
str2double(get(hObject,'String')) returns contents of edit8 as a double
% --- Executes during object creation, after setting all properties.
function edit8_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
237

% Hint: edit controls usually have a white background on Windows.


%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit9_Callback(hObject, eventdata, handles)


% hObject handle to edit9 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit9 as text
%
str2double(get(hObject,'String')) returns contents of edit9 as a double
% --- Executes during object creation, after setting all properties.
function edit9_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit9 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes during object creation, after setting all properties.


function figure1_CreateFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% --- Executes during object deletion, before destroying properties.
function figure1_DeleteFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
238

VISTA EN MATLAB

239

240

241

242

243

244

245

246

247

248

CONCLUSIONES: Las ecuaciones diferenciales son un arma muy poderosa, pero


puede a llegar a ser complicada para la resolucin de un problema,
lamentablemente el mtodo de euler no nos proporciona una gran seguridad en el
mtodo ni un modelo que puede ser empleado a cualquier valor de x, adems el
nmero de operaciones ser muy grande entre mayor sea el tiempo. Por ejemplo
entre mayor sea el valor de h, mayor ser el margen de error. Sin embargo ambos
mtodos nos ofrecen una buena aproximacin a la solucin real del problema.
ECUACIONES DIFERENCIALES DE ORDEN SUPERIOR

249

250

251

SCRIPT
function varargout = ecordensup(varargin)
% ECORDENSUP Application M-file for ecordensup.fig
% FIG = ECORDENSUP launch ecordensup GUI.
% ECORDENSUP('callback_name', ...) invoke the named callback.
% Last Modified by GUIDE v2.0 30-Jan-2001 10:51:44
if nargin == 0 % LAUNCH GUI
fig = openfig(mfilename,'reuse');
% Generate a structure of handles to pass to callbacks, and store it.
handles = guihandles(fig);
guidata(fig, handles);
if nargout > 0
varargout{1} = fig;
end
elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
try
if (nargout)
[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
else
feval(varargin{:}); % FEVAL switchyard
252

end
catch
disp(lasterr);
end
end
%| ABOUT CALLBACKS:
%| GUIDE automatically appends subfunction prototypes to this file, and
%| sets objects' callback properties to call them through the FEVAL
%| switchyard above. This comment describes that mechanism.
%|
%| Each callback subfunction declaration has the following form:
%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)
%|
%| The subfunction name is composed using the object's Tag and the
%| callback type separated by '_', e.g. 'slider2_Callback',
%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.
%|
%| H is the callback object's handle (obtained using GCBO).
%|
%| EVENTDATA is empty, but reserved for future use.
%|
%| HANDLES is a structure containing handles of components in GUI using
%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This
%| structure is created at GUI startup using GUIHANDLES and stored in
%| the figure's application data using GUIDATA. A copy of the structure
%| is passed to each callback. You can store additional information in
%| this structure at GUI startup, and you can change the structure
%| during callbacks. Call guidata(h, handles) after changing your
%| copy to replace the stored original so that subsequent callbacks see
%| the updates. Type "help guihandles" and "help guidata" for more
%| information.
%|
%| VARARGIN contains any extra arguments you have passed to the
%| callback. Specify the extra arguments by editing the callback
%| property in the inspector. By default, GUIDE sets the property to:
%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))
%| Add any extra arguments after the last argument, before the final
%| closing parenthesis.

% -------------------------------------------------------------------function varargout = edit1_Callback(h, eventdata, handles, varargin)

253

% -------------------------------------------------------------------function varargout = edit2_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit3_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit4_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)


f1=inline('u2','x','u1','u2');
f2=inline(get(handles.edit1,'string'),'x','u1','u2');
a=str2num(get(handles.edit2,'string'));
b=str2double(get(handles.edit3,'string'));
u1=str2double(get(handles.edit4,'string'));
u2=str2double(get(handles.edit5,'string'));
n=str2double(get(handles.edit6,'string'));
h=(b-a)/n;
x=a;
for i=1:n
k11=f1(x,u1,u2);
k12=f2(x,u1,u2);
k21=f1(x+h/2,u1+(h/2)*k11,u2+(h/2)*k12);
k22=f2(x+h/2,u1+(h/2)*k11,u2+(h/2)*k12);
k31=f1(x+h/2,u1+(h/2)*k21,u2+(h/2)*k22);
k32=f2(x+h/2,u1+(h/2)*k21,u2+(h/2)*k22);
k41=f1(x+h,u1+h*k31,u2+h*k32);
k42=f2(x+h,u1+h*k31,u2+h*k32);
u1=u1+(h/6)*(k11+2*k21+2*k31+k41);
254

u2=u2+(h/6)*(k12+2*k22+2*k32+k42);
end
set(handles.edit7,'string',u1);
set(handles.edit8,'string',u2);
% -------------------------------------------------------------------function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)
close
% -------------------------------------------------------------------function varargout = edit5_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit6_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit7_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = edit8_Callback(h, eventdata, handles, varargin)

% -------------------------------------------------------------------function varargout = Untitled_1_Callback(h, eventdata, handles, varargin)


VISTA DEL PROGRAMA

255

256

INDICE
Programacin y Mtodos Numricos
Programacin Estructurada
Selectiva Simple
Selectiva Doble
Selectiva Mltiple
While
Do While
For
Introduccin
Ventanas de Matlab
Sistema de ayuda
Signos
Operaciones Bsicas
Jerarqua de Operaciones
Formato de Nmeros
Operadores de Asignacin
Variables
Comandos

1
2

Polinomios
Ficheros Script
Programacin
Vectores
Error Absoluto y Relativo
Derivacin
Funciones con Arrays
Grficos
Integracin
Biseccin
Curvas de ajuste
Interpolacin
Punto Fijo
Gauss-Seidel
Gauss-Jordan
Newton-Raphson
Runge-Kutta
Regresin Polinomial
Polinomio de Lagrange
PROBLEMAS INTEGRALES
Desintegracin Radicativa
Reaccin Qumica
Mezclado
Mezclado con concentracin inicial
Tanques Interconectados

14
16
19
32
51
56
60
65
77
88
94
98
103
105
111
118
125
133
139
144

257

UNIVERSIDAD AUTNOMA DEL ESTADO


DE MXICO
FACULTAD DE QUMICA

MANUAL DE PROGRAMACIN EN MATLAB


ALUMNAS:
CORIA AGUILAR MARA GUADALUPE
GOMEZ DE LA CORTINA PICHARDO MA. SARA
GUTIRREZ ESPNDOLA MONTSERRAT CECILIA
GRUPO:66
MAYO 2009

258

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