Documente Academic
Documente Profesional
Documente Cultură
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.
SELECTIVA DOBLE
SELECTIVA MLTIPLE
WHILE
DO WHILE
FOR
VENTAJAS
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
Manejo simblico
Interactivo
5
VENTANAS DE MATLAB
SISTEMA DE AYUDA
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
VARIABLES
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
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:
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.
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
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
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
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
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.
30
31
VECTORES
MATLAB es una herramienta sumamente til debido a que se pueden generar
vectores (arrays) unidimensionales, bidimensionales; con la opcin de
manipularlos
32
1984
1986
1988
1990
POBLACIN
127
130
136
145
33
ARRAY BIDIMENSIONAL
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)
C = max (A)
min (A)
sum(A)
sort(A)
median(A)
37
std(A)
38
39
41
FUNCIN
DESCRIPCIN
length(A)
size(A)
42
reshape(A, m, n)
diag(v)
diag(A)
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
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
.*
./ y .\
.^
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
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
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
Masa
10
20
50
Fuerza
12.5
23.5
30
61
118
294
SOLUCIN EN MATLAB
50
51
52
53
54
55
DERIVACIN
56
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
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
67
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
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
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
%
%
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
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
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
POLYFIT
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)
.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
linear
spline
pchip
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..
99
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.
101
102
PUNTO FIJO
f(x)=0
x=g(x) ,
103
y ejecutar la iteracin
x(k+1)=g(x(k))
104
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
donde
para i=j, o
para
y
.
Considerando el sistema Ax=b, con la condicin de que
, 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
los vectores propios ui, i= 1,..., n, los cuales son linealmente independientes,
entonces podemos escribir el error inicial
107
(***)
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.
109
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);
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
113
Despus,
Por ltimo.
Si el sistema fuera incompatible, entonces nos encontraramos con una fila como
esta:
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
%| 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.
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
% -------------------------------------------------------------------118
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
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:
+ 1
es una
Se escoge h (x) de manera que g'(r)=0 (r es la raz buscada). Dado que g'(r) es:
Entonces:
121
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
end
set(handles.edit5,'string',x1);
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
estos
valores
de
introducidos
en
la
ecuacin
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
a21
c3
a31
a32
cs
as1
as2
as,s 1
b1
b2
bs 1
bs
129
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.
131
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:
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):
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
varargout{1} = handles.output;
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
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
140
La funcin que estamos buscando es una funcin polinmica L(x) de grado k con
es un polinomio y es de grado k.
2.
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
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
144
145
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
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)
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
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
153
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
(CH3)3COH + NaCl
CH3OH + NaCl
dx
k ( x)( x)
dt
157
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
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)
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
150 x
90k (t ) c
60 x
_ (9)
ln
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
150 x
0.02268(t ) 0.916
60 x
ln
ln
150 x
60 x
1.3696 ln
x 29.323 g
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
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
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
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
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
175
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
183
185
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 )
v(t ) 50 2(t )
186
dy
3y
10
dt 50 2(t )
(2)
Expresando la condicin de frontera inicialconcentracin de sal inicial
y (0) 10 (3)
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
1.5
(t 25)
(t 25)1.5
y 4(t 25)
c
(t 25)1.5
(5)
10 4(0 25)
c
(0 25)1.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
conc.
y (t )
v(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
dy
3y
10
dt
50 2(t )
y'
3y
10
50 2(t )
194
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
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
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
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
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
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
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
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 :
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
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
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
216
217
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:
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)
8x
100
8x
100
(3)
dx 2 y 8 x
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)
2y
100
6y
100
2y 6y
100 100
(7)
dy 8 x 8 y
dy 8 x 8 y
dt 100 100
dx 2 y 8 x
dt 100 100
-------------------------
221
y'
2x 2 y
25 25 (9)
x'
y 2x
50 25 (10)
2 y 25
x y '
25 2 (11)
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
x0=5 kg
y0=2kg
223
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
225
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
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
%
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
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
VISTA EN MATLAB
239
240
241
242
243
244
245
246
247
248
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.
253
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)
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
258