Está en la página 1de 18

1

Ecuaciones Diferenciales En MATLAB-GUIDE


David Ruiz, Ariel Quishpe, Luis Quishpe , Milton Quimbita

Estudiantes de la ESPE-L

 • Modelado, simulación y prueba de prototipos


I. Resumen • Análisis de datos, exploración y visualización
Esta presentación en el simulador en MatLab se extiende • Graficación de datos con fines científicos o de ingeniería
específicamente a la resolución de las Ecuaciones • Desarrollo de aplicaciones que requieran de una interfaz
Diferenciales Ordinarias, de tal manera que la interfaz sea gráfica de usuario (GUI, Graphical User Interface).
amigable con el estudiante o el usuario, en esta programación
además de resolver y arrojar el resultado en forma general se En el ámbito académico y de investigación, es la herramienta
le adiciono el ingresar las condiciones iniciales de tal manera estándar para los cursos introductorios y avanzados de
que también tengamos la respuesta parcial del problema, matemáticas, ingeniería e investigación. En la industria
teniendo en cuenta que la gráfica también es muy importante. MATLAB es la herramienta usada para el análisis,
Para completar y hacer una herramienta completa y se investigación y desarrollo de nuevos productos tecnológicos.
selección múltiple se ha añadido la transformada de Laplace y La ventaja principal de MATLAB es el uso de familias de
su inversa adema de una graficadora aparte. comandos de áreas específicas llamadas toolboxes.
II. Abstract: Lo más importante para los usuarios de MATLAB es que los
toolboxes le permiten aprender y aplicar la teoría. Los
This presentation in the simulator in MatLab extends toolboxes son grupos de comandos de MATLAB (archivos M)
specifically to the resolution of the ordinary differential que extienden el ambiente de MATLAB para resolver
equations, in such a way that the interface is friendly with the problemas de áreas específicas de la ciencia e ingeniería. Por
student or the user, in this programming besides to solve and ejemplo, existen toolboxes para las áreas de Procesamiento
to throw the result in General form It is added to enter the Digital de Señales, Sistemas de Control, Redes Neuronales,
initial conditions in such a way that we also have the partial Lógica Difusa, Wavelets, etc.
answer of the problem, taking into account that the graph is
also very important. To complete and make a complete tool I.1 La ventana de comando.
and multiple selection has been added the Laplace transform La ventana de comando es la ventana principal, con la cual el
and its inverse adema of a plotter apart. usuario interactúa con MATLAB. Es la primera ventana que
III. Desarrollo: se abre al ejecutar MATLAB. Se utiliza para correr los
comandos, correr el editor de archivos M (MEDIT, presente
¿Qué es Matlab? en la barra de herramientas), ejecutar los toolboxes, etc.
MATLAB es un lenguaje de alto desempeño diseñado para La barra de herramientas proporciona un acceso fácil y rápido
realizar cálculos técnicos. MATLAB integra el cálculo, la a las operaciones más comunes. Al colocar el puntero del
visualización y la programación en un ambiente fácil de ratón sobre algún botón durante un par de segundos,
utilizar donde los problemas y las soluciones se expresan en
una notación matemática. MATLAB es un sistema interactivo
cuyo elemento básico de datos es el arreglo que no requiere de
dimensionamiento previo. Esto permite resolver muchos
problemas computacionales, específicamente aquellos que
involucren vectores y matrices, en un tiempo mucho menor al
requerido para escribir un programa en un lenguaje escalar no
interactivo tal como C o Fortran.
MATLAB se utiliza ampliamente en:
• Cálculos numéricos
• Desarrollo de algoritmos
2

MATLAB despliega un tooltip, el cual da el nombre del botón Las expresiones utilizan los operadores aritméticos comunes.
ha seleccionado. Los operadores aritméticos son los mismos que en cualquier
I.2 Comandos principales lenguaje de programación y se sigue un orden de evaluación
similar al que se utiliza en los demás lenguajes de
En la Tabla I.2 se enlistan los comandos más comunes de la programación.
plataforma de simulación MATLAB. Dentro de estos
comandos se encuentran aquellos que realizan búsquedas, la En la Tabla II.1 se muestran los operadores aritméticos más
ayuda en línea, desplegar las variables presentes en el espacio comunes en MATLAB.
de trabajo, entre otras.
II.1 Expresiones en MATLAB
MATLAB como cualquier lenguaje de programación
proporciona expresiones matemáticas, pero a diferencia de la
mayoría de ellos, las expresiones matemáticas que maneja
involucran matrices completas.
Las expresiones se dividen en:
• Números
• Variables
• Operadores
• Funciones
II.1.1 Números MATLAB
Utiliza una notación decimal convencional con punto decimal
opcional y el signo menos para indicar números negativos. La II.1.4 Funciones MATLAB
notación científica utiliza la letra e para especificar el factor de Proporciona un gran número de funciones matemáticas
escala en potencias de 10. Los números imaginarios utilizan simples y avanzadas. La gran mayoría de estas funciones
ya sea la i o la j como sufijo. acepta argumentos complejos. Las funciones más comunes,
Todos los números se almacenan internamente usando el como sqrt y sin son parte del núcleo de MATLAB y están
formato long especificado por el estándar en punto flotante programadas en bajo nivel para hacerlas más eficientes y no es
IEEE. Los números en punto flotante tienen una precisión posible acceder a su código. El resto de las funciones está
finita aproximadamente de 16 dígitos decimales y un rango programada en archivos M y su código está disponible para
finito aproximadamente de 10-308 a 10-308. revisiones o modificaciones.
Muchas funciones especiales proporcionan o requieren valores
de constantes útiles. MATLAB incorpora constantes
matemáticas y cierta simbología, la cual se muestra en la
Tabla II.2.

II.1.2 Variables MATLAB


A diferencia de la mayoría de los lenguajes de programación
no requiere de ningún tipo de declaraciones de tipo de datos
(entero, punto flotante, complejos, etc) ni de
dimensionamiento. Cuando MATLAB encuentra una nueva
variable, automáticamente crea la variable y reserva la
cantidad de localidades de memoria necesarias. Si la variable
ya existía dentro del espacio de trabajo actual, simplemente
cambia el contenido, si se requiere, o de ser necesario agrega
más localidades de memoria a la variable para contener más
datos.
Ejemplo. Definición de variables.
» Num = 25
Esta variable crea una matriz de 1 x 1 llamada Num y
almacena el valor de 25.
MATLAB es case sensitive, es decir distingue entre
mayúsculas y minúsculas; es decir A y a no son la misma
variable.
II.1.3 Operadores
3

II.1.5 MATLAB y la Estadística  Análisis de filtros digitales incluyendo respuesta en


Statistics Toolbox frecuencia, retardo de grupo, retardo de fase.
 Implementación de filtros, tanto directo como usando
técnicas en el dominio de la frecuencia basadas en la
Combina poderosos algoritmos estadísticos con interfaces FFT.
gráficas interactivas  Diseño de filtros IIR, incluyendo Butterworth,
Chebyschev tipo I, Chebyshebv tipo II y elíptico.
 Diseño de filtros FIR mediante el algorítmo óptimo
Las Statistics Toolbox le da un rango ancho de herramientas
de Parks-McClellan.
para realizar cálculos estadísticos. Proporciona una única
mezcla de facilidad gráfica de uso y programabilidad. Los  Procesamiento de la transformada rápida de Fourier
despliegues gráficos interactivos le permitieron aplicar FFT, incluyendo la transformación para potencias de
métodos estadísticos fácilmente y de forma consistente, dos y su inversa, y transformada para no potencias de
mientras el lenguaje de MATLAB le permite fácilmente crear dos.
los acostumbrados métodos estadísticos y de análisis. Esta
combinación le da la libertad para acceder las funciones bajo-
niveladas directamente como funciones de probabilidad y
ANOVA de la línea del orden, o para usar las interfaces
interactivas para aprender y experimentar con el toolbox
construir-en visualización y herramientas del análisis.

El toolbox es el ambiente ideal no rutina para el montaje


ejemplar. Las capacidades primarias incluyen: el análisis de la
regresión y diagnóstica con selección inconstante, modelado
no lineal, probabilidad y estimación de parámetros, análisis de
sensibilidad que usa los generadores de número de azar,
control del proceso estadístico, y plan de experimentos.

Distribuciones de probabilidad. La Caja de Herramientas


Estadísticas ( Statistics TollBox ) apoya una colección de 20
distribuciones de probabilidad diferentes, incluso T, F, y
distribuciones del Chi-cuadrado, despliegues gráficos de
ataques, y se mantienen formas de calcular ataques mejores
todos los tipos de la distribución.

II.1.6 LIBRERIAS

Librería de Aplicaciones de MATLAB The MATLAB C Math Library


MATLAB tiene una gran colección de funciones para el
procesamiento de señal en el Signal Processing Toolbox. Este La MATLAB C Math Library proporciona al usuario la
incluye funciones para: capacidad computacional de MATLAB en una libreria en
formato objeto enlazable. El objetivo principal de la C Math
Library es soportar el desarrollo de aplicaciones 'stand alone'
4

utilizando MATLAB y su compilador. Puede ser utilizada


independientemente de MATLAB por programadores
avezados en lenguaje C que necesiten prestaciones
computacionales robustas y de alto rendimiento.
La MATLAB C Math Library proporciona una amplia gama
de funciones clásicas del programa MATLAB, proporcionadas
como librerías objeto, incluyendo básicamente las siguientes
categorías de funciones presentes en MATLAB y archivos M
compilados:

 Algebra lineal.
 Funciones matemáticas elementales y especializadas. II.1.7 Limitaciones del código compilado
 Operadores lógicos y aritméticos.
 Matrices elementales y manipulación de vectores.
Ciertas instrucciones, como load y eval, no estan soportadas
 Matrices especiales.
por el compilador de MATLAB . Este no puede generar
 Estadística básica y análisis de datos. código de los diagramas de bloques de SIMULINK. Los
 Polinomios e interpolación. toolboxes de MATLAB pueden incluir archivos MEX y otros
 Gestión de cadenas de caracteres. componentes que no son compilables.
 Entradas y Salidas.
 Gestión de memoria y errores.
SYMBOLIC MATH TOOLBOX

Utilización de MATLAB y de su compilador


El Toolbox de Matemática Simbólica, añade a MATLAB la
capacidad de realizar cálculos simbólicos basados en MAPLE
Para construir una aplicación del tipo 'stand alone' que V © soportando además (The Extended Symbolic Math
incorpore código originalmente desarrollado como archivos M Toolbox) las librerías especializadas, y los programas
de MATLAB, deberán de seguirse los pasos siguientes: realizados para este último. Entre otros, los principales tipos
de operaciones soportados son los siguientes:
 Utilizar el compilador de MATLAB para convertir
archivos M en C mediante la utilización de la  Algebra simbólica: Derivación, integración y
instrucción mcc -e (la cual es externa a MATLAB). simplificación de expresiones matemáticas.
 Compilar el código C fuente en código objeto  Algebra lineal exacta: Inversas, determinantes,
utilizando un compilador ANSI C. autovalores y formas canónicas de matrices
 Enlazar el código resultante con la MATLAB C Math simbólicas.
Library y con cualquier tipo de archivos y programas  Aritmética de precisión variable: Evaluación de
específicos que hayan sido previamente definidos por expresiones matemáticas con diversos grados de
el usuario. precisión.
 Resolución de ecuaciones: Resolución numérica y
simbólica de ecuaciones algebraicas y diferenciales.
Velocidad y Precisión
 Funciones matemáticas especiales: Evaluación de la
mayoría de las funciones utilizadas en matemáticas
Los algoritmos utilizados en la MATLAB C Math Library han aplicadas.
sido desarrollados por un grupo de renombrados expertos en
programación algorítmica de funciones de tipo matemático
(algebra lineal y cálculo numérico). Las funciones de álgebra II.1.8 Algunas de las áreas básicas que cubre este toolbox
lineal han sido obtenidas de las librerías mundialmente para MATLAB son las siguientes:
reconocidas LINPACK y EISPACK. La MATLAB C Math
Library contiene más de 300 funciones numéricas, lógicas y  Cálculo de un extremo local (máximo o mínimo) de
de utilidad. Todas estas funciones le permitirán operar en una función real f(x), en general multivariable y no
datos de tipo escalar, vectorial o matricial con la misma lineal, sin imponer ninguna restricción o condición a
facilidad sintáctica. la solución. Como caso particular, se incluye una
La librería MATLAB C Math Library cumple con la rutina especial para problemas de mínimos cuadrados
normativa estándar ANSI para compiladores C. Finalmente, la no lineales.
librería trabajará con aquellos enlazadores que vienen  Cálculo de un extremo local (máximo o mínimo) de
suministrad os con la mayoría de los compiladores ANSI C. una función real f(x), en general multivariable y no
lineal, condicionado a que la solución satisfaga
5

ciertas condiciones de desigualdad (g(x)<=0) y/o


igualdad (g(x)=0). Como vemos la interfase de usuario de MATLAB no es muy
 Problemas de aproximación a un conjunto de distinta a la de otras aplicaciones a las cuales estamos
objetivos. acostumbrados, pero la verdadera diferencia consiste en la
 Cálculo de soluciones de un sistema de ecuaciones utilidad que presta como aplicación para la investigación y el
continuas y, en general, no lineales. desarrollo de modelos matemáticos y estadísticos los cuales
 Solución de problemas min y max. son tratados de forma interactiva, y con superposición de
 Programación lineal. ventanas en un entorno de fácil comprensión e interpretación
 Programación cuadrática. de los datos arrojados como resultados de los distintos rangos
 Problemas de mínimos cuadrados no negativos. de calculo que se pueden proporcionar a cada modelo de tal
forma que podemos hacer estudios de comportamiento y tratar
de determinar como se comportará una determinada variable a
través de una serie de experimentación en tiempo real.

Las ventanas de despliegue grafico son muy similares, en las


II.1.9 Algunas de las áreas de cobertura de la NAG cuales el énfasis de la presentación se pone en la grafica
Foundation Toolbox son las siguientes: generada y no en el entorno de trabajo, es por esta razón que
puede parecer que el diseño de esta aplicación es escueto, pero
debemos recordar que como todo este tipo de aplicaciones su
 Ceros de polinomios desarrollo está orientado al logro de un objetivo especifico
 Raíces de una o más ecuaciones de tipo trascendental. como es el resolver modelos matemáticos.
 Suma de series..
 Ecuaciones diferenciales ordinarias.
 Ecuaciones diferenciales en derivadas parciales.
 Estadística no paramétrica. III. Operaciones con reducción a variable separable
 Análisis de series temporales.
 Rutinas de clasificación.
: Una ecuación diferencial ordinaria de primer orden de la
 Aproximación de funciones especiales. forma:
 Aproximación de curvas y superficies.
 Maximización y minimización de funciones. 𝑦´ = 𝐹 (𝑥, 𝑦 )
 Factorización de matrices. se dice de Variables Separables si es posible factorizar F (x, y)
 Valores y vectores propios. en la forma:
 Resolución de ecuaciones lineales simultáneas. 𝐹 (𝑥, 𝑦) = 𝑓 ( 𝑥 ) · 𝑔 ( 𝑦 )
 Ecuaciones lineales (LAPACK).
Una EDO de variables separables puede resolverse usando la
 Estadística básica. siguiente estrategia:
 Análisis de correlación y regresiones.
 Métodos multivariantes.
 Generación de números aleatorios. - Procedimiento: Variables Separables
- Entrada: Una EDO en la forma Y´ = F (x, y)
- Salida: La solución de la ED.

Paso I: Factorizar el segundo miembro.


Factorizar F (x, y) = f ( x ) · g ( y ),si tal factorización no es
posible, se concluye que la ED no es de variables separables y
el procedimiento no continuo.
Paso II: Separar las variables Hacer álgebra para poner
variables diferentes en lados diferentes:
y´ = F (x, y)
y´ = f (x) ∗ g y)
𝑑𝑦
= 𝑓(𝑥) ∗ 𝑔(𝑥)
𝑑𝑥
1 𝑑𝑦
= 𝑓(𝑥)
𝑔(𝑥) 𝑑𝑥
6

Paso III: Integrar Integrando la expresión anterior con if nargout


respecto a x obtenemos: [varargout{1:nargout}] =
gui_mainfcn(gui_State, varargin{:});
1 𝑑𝑦 else
∫ 𝑑𝑥 = ∫ 𝑓(𝑥) 𝑑𝑥
𝑔(𝑥) 𝑑𝑥 gui_mainfcn(gui_State, varargin{:});
end
varargout{1} = handles.output;
o simplemente: set(handles.selec,'visible','on')
set(handles.ilaplace,'visible','on')
1 set(handles.ecuaciones,'visible','on')
∫ 𝑑𝑦 = ∫ 𝑓(𝑥) 𝑑𝑥 + 𝑐
𝑔(𝑥) set(handles.graficas,'visible','on')
set(handles.laplace,'visible','on')
Paso IV: Despejar y Opcional
set(handles.y3,'visible','off')
Debido a que y representa la función incógnita a determinar, set(handles.y2,'visible','off')
lo ideal es determinarla por completo, es decir tener como set(handles.y1,'visible','off')
solución una expresión de la forma: set(handles.y,'visible','off')
set(handles.x,'visible','off')
Y = Expresión en x set(handles.yiv,'visible','off')
En caso que este despeje sea posible, se dice que la solución set(handles.yiii,'visible','off')
set(handles.yii,'visible','off')
está dada en forma explícita, en caso contrario (cuando no fue
set(handles.yi,'visible','off')
posible despejar y) se dice que la solución está dada en forma set(handles.y0,'visible','off')
implícita. set(handles.uno,'visible','off')
set(handles.dos,'visible','off')
set(handles.tres,'visible','off')
Ejemplo: Resolver la Ecuacion Diderencial set(handles.cuatro,'visible','off')
𝒅𝒚 𝟐𝒙 set(handles.igual,'visible','off')
=− set(handles.orden,'visible','off')
𝒅𝒙 𝒚 set(handles.ordened,'visible','off')
Primero revisamos si la ED es de variables separables: set(handles.c,'visible','off')
set(handles.ci,'visible','off')
𝑑𝑦 2𝑥 1 set(handles.ci1,'visible','off')
=− = (−2𝑥) ( ) = 𝑓(𝑥) ∗ 𝑔(𝑥)
𝑑𝑥 𝑦 𝑦 set(handles.ci2,'visible','off')
set(handles.ci3,'visible','off')
Separando las variables:
set(handles.ci4,'visible','off')
𝑦 𝑑𝑦 = −2𝑥 𝑑𝑥 set(handles.cci1,'visible','off')
set(handles.cci2,'visible','off')
Integrado tenemos:
set(handles.cci3,'visible','off')
set(handles.cci4,'visible','off')
∫ 𝑦 𝑑𝑦 = ∫ −2𝑥 𝑑𝑥 set(handles.a,'visible','off')
set(handles.b,'visible','off')
1 2 set(handles.ab,'visible','off')
𝑦 = −𝑥 2 + 𝑐
2 set(handles.res,'visible','off')
set(handles.resultado,'visible','off')
set(handles.boton1,'visible','off')
1
La expresión 𝑦 2 = −𝑥 2 + 𝑐 presentauna familia de set(handles.boton2,'visible','off')
2
soluciones: una solucion para cada constante c. set(handles.boton3,'visible','off')
set(handles.boton4,'visible','off')
Usando Nuestra Interfaz, exiviremos nuestro codigo de set(handles.res2,'visible','off')
programación: set(handles.resultado2,'visible','off')
set(handles.lap,'visible','off')
function varargout = deber(varargin)
set(handles.lapl,'visible','off')
gui_Singleton = 1;
set(handles.tdlp,'visible','off')
gui_State = struct('gui_Name',
set(handles.tidlp,'visible','off')
mfilename, ...
set(handles.graf,'visible','off')
'gui_Singleton',
set(handles.ed,'visible','off')
gui_Singleton, ...
set(handles.atras,'visible','off')
'gui_OpeningFcn',
set(handles.plot,'visible','off')
@deber_OpeningFcn, ...
set(handles.seno,'visible','off')
'gui_OutputFcn',
set(handles.cos,'visible','off')
@deber_OutputFcn, ...
set(handles.tan,'visible','off')
'gui_LayoutFcn', [] , ...
set(handles.sec,'visible','off')
'gui_Callback', []);
set(handles.grafec,'visible','off')
if nargin && ischar(varargin{1})
set(handles.int,'visible','off')
gui_State.gui_Callback =
set(handles.yigual,'visible','off')
str2func(varargin{1});
set(handles.borrar,'visible','off')
end
set(handles.flap,'visible','off')
7

set(handles.filap,'visible','off') set(handles.borrar,'visible','on')
set(handles.graficax,'visible','off') set(handles.flap,'visible','on')
set(handles.axes2,'visible','off')

% --- Executes on button press in laplace. % Hint: get(hObject,'Value') returns toggle


function laplace_Callback(hObject, eventdata, state of laplace
handles)
% hObject handle to laplace (see GCBO)
% eventdata reserved - to be defined in a % --- Executes on button press in ilaplace.
future version of MATLAB function ilaplace_Callback(hObject, eventdata,
% handles structure with handles and user handles)
data (see GUIDATA) set(handles.ilaplace,'value',0)
set(handles.laplace,'value',0) set(handles.resultado2,'string',' ')
set(handles.resultado2,'string',' ') set(handles.lapl,'string',' ')
set(handles.lapl,'string',' ') set(handles.selec,'visible','off')
set(handles.selec,'visible','off') set(handles.ilaplace,'visible','off')
set(handles.ilaplace,'visible','off') set(handles.ecuaciones,'visible','off')
set(handles.ecuaciones,'visible','off') set(handles.graficax,'visible','off')
set(handles.graficas,'visible','off') set(handles.axes2,'visible','off')
set(handles.laplace,'visible','off') set(handles.graficas,'visible','off')
set(handles.y3,'visible','off') set(handles.laplace,'visible','off')
set(handles.graficax,'visible','off') set(handles.y3,'visible','off')
set(handles.axes2,'visible','off') set(handles.y2,'visible','off')
set(handles.y2,'visible','off') set(handles.y1,'visible','off')
set(handles.y1,'visible','off') set(handles.y,'visible','off')
set(handles.y,'visible','off') set(handles.x,'visible','off')
set(handles.x,'visible','off') set(handles.yiv,'visible','off')
set(handles.yiv,'visible','off') set(handles.yiii,'visible','off')
set(handles.yiii,'visible','off') set(handles.yii,'visible','off')
set(handles.yii,'visible','off') set(handles.yi,'visible','off')
set(handles.yi,'visible','off') set(handles.y0,'visible','off')
set(handles.y0,'visible','off') set(handles.uno,'visible','off')
set(handles.uno,'visible','off') set(handles.dos,'visible','off')
set(handles.dos,'visible','off') set(handles.tres,'visible','off')
set(handles.tres,'visible','off') set(handles.cuatro,'visible','off')
set(handles.cuatro,'visible','off') set(handles.igual,'visible','off')
set(handles.igual,'visible','off') set(handles.orden,'visible','off')
set(handles.orden,'visible','off') set(handles.ordened,'visible','off')
set(handles.ordened,'visible','off') set(handles.c,'visible','off')
set(handles.c,'visible','off') set(handles.ci,'visible','off')
set(handles.ci,'visible','off') set(handles.ci1,'visible','off')
set(handles.ci1,'visible','off') set(handles.ci2,'visible','off')
set(handles.ci2,'visible','off') set(handles.ci3,'visible','off')
set(handles.ci3,'visible','off') set(handles.ci4,'visible','off')
set(handles.ci4,'visible','off') set(handles.cci1,'visible','off')
set(handles.cci1,'visible','off') set(handles.cci2,'visible','off')
set(handles.cci2,'visible','off') set(handles.cci3,'visible','off')
set(handles.cci3,'visible','off') set(handles.cci4,'visible','off')
set(handles.cci4,'visible','off') set(handles.a,'visible','off')
set(handles.a,'visible','off') set(handles.b,'visible','off')
set(handles.b,'visible','off') set(handles.ab,'visible','off')
set(handles.ab,'visible','off') set(handles.res,'visible','off')
set(handles.res,'visible','off') set(handles.resultado,'visible','off')
set(handles.resultado,'visible','off') set(handles.res2,'visible','on')
set(handles.res2,'visible','on') set(handles.resultado2,'visible','on')
set(handles.resultado2,'visible','on') set(handles.boton1,'visible','off')
set(handles.boton1,'visible','off') set(handles.boton2,'visible','off')
set(handles.boton2,'visible','on') set(handles.boton3,'visible','on')
set(handles.boton3,'visible','off') set(handles.boton4,'visible','off')
set(handles.boton4,'visible','off') set(handles.lap,'visible','on')
set(handles.lap,'visible','on') set(handles.lapl,'visible','on')
set(handles.lapl,'visible','on') set(handles.ed,'visible','off')
set(handles.ed,'visible','off') set(handles.tdlp,'visible','off')
set(handles.tidlp,'visible','off') set(handles.graf,'visible','off')
set(handles.tdlp,'visible','on') set(handles.tidlp,'visible','on')
set(handles.graf,'visible','off') set(handles.atras,'visible','on')
set(handles.atras,'visible','on') set(handles.borrar,'visible','on')
8

set(handles.filap,'visible','on') set(handles.cci2,'visible','off')
set(handles.cci3,'visible','off')
% Hint: get(hObject,'Value') returns toggle set(handles.cci4,'visible','off')
state of ilaplace set(handles.a,'visible','off')
set(handles.b,'visible','off')
set(handles.ab,'visible','off')
% --- Executes on button press in ecuaciones. set(handles.res,'visible','off')
function ecuaciones_Callback(hObject, set(handles.resultado,'visible','off')
eventdata, handles) set(handles.res2,'visible','off')
set(handles.ecuaciones,'value',0) set(handles.resultado2,'visible','off')
set(handles.atras,'visible','on') set(handles.boton1,'visible','off')
set(handles.resultado2,'string',' ') set(handles.boton2,'visible','off')
set(handles.lapl,'string',' ') set(handles.boton3,'visible','off')
set(handles.ordened,'visible','on') set(handles.boton4,'visible','off')
set(handles.orden,'visible','on') set(handles.lap,'visible','off')
set(handles.selec,'visible','off') set(handles.lapl,'visible','off')
set(handles.graficax,'visible','on') set(handles.ed,'visible','off')
set(handles.axes2,'visible','on') set(handles.tidlp,'visible','off')
set(handles.ilaplace,'visible','off') set(handles.graf,'visible','on')
set(handles.ecuaciones,'visible','off') set(handles.tdlp,'visible','off')
set(handles.graficas,'visible','off') set(handles.atras,'visible','on')
set(handles.laplace,'visible','off') set(handles.plot,'visible','on')
set(handles.tdlp,'visible','off') set(handles.seno,'visible','on')
set(handles.tidlp,'visible','off') set(handles.cos,'visible','on')
set(handles.graf,'visible','off') set(handles.tan,'visible','on')
set(handles.ed,'visible','on') set(handles.sec,'visible','on')
set(handles.borrar,'visible','on') set(handles.grafec,'visible','on')

% Hint: get(hObject,'Value') returns toggle


state of ecuaciones
function edit1_Callback(hObject, eventdata,
handles)
% --- Executes on button press in graficas. function edit1_CreateFcn(hObject, eventdata,
function graficas_Callback(hObject, eventdata, handles)
handles) % See ISPC and COMPUTER.
set(handles.graficas,'value',0) if ispc &&
set(handles.selec,'visible','off') isequal(get(hObject,'BackgroundColor'),
set(handles.ilaplace,'visible','off') get(0,'defaultUicontrolBackgroundColor'))
set(handles.ecuaciones,'visible','off') set(hObject,'BackgroundColor','white');
set(handles.graficas,'visible','off') end
set(handles.laplace,'visible','off')
set(handles.y3,'visible','off')
set(handles.graficax,'visible','off')
set(handles.axes2,'visible','off') function uno_Callback(hObject, eventdata,
set(handles.y2,'visible','off') handles)
set(handles.y1,'visible','off') function uno_CreateFcn(hObject, eventdata,
set(handles.y,'visible','off') handles)
set(handles.x,'visible','off') if ispc &&
set(handles.yiv,'visible','off') isequal(get(hObject,'BackgroundColor'),
set(handles.yiii,'visible','off') get(0,'defaultUicontrolBackgroundColor'))
set(handles.yii,'visible','off') set(hObject,'BackgroundColor','white');
set(handles.yi,'visible','off') end
set(handles.y0,'visible','off')
set(handles.uno,'visible','off')
set(handles.dos,'visible','off')
set(handles.tres,'visible','off') function y3_Callback(hObject, eventdata,
set(handles.cuatro,'visible','off') handles)
set(handles.igual,'visible','off') function y3_CreateFcn(hObject, eventdata,
set(handles.orden,'visible','off') handles)
set(handles.ordened,'visible','off') % hObject handle to y3 (see GCBO)
set(handles.c,'visible','off') % eventdata reserved - to be defined in a
set(handles.ci,'visible','off') future version of MATLAB
set(handles.ci1,'visible','off') % handles empty - handles not created until
set(handles.ci2,'visible','off') after all CreateFcns called
set(handles.ci3,'visible','off')
set(handles.ci4,'visible','off') % Hint: edit controls usually have a white
set(handles.cci1,'visible','off') background on Windows.
9

% See ISPC and COMPUTER.


if ispc &&
isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) function tres_Callback(hObject, eventdata,
set(hObject,'BackgroundColor','white'); handles)
end function tres_CreateFcn(hObject, eventdata,
handles)
if ispc &&
isequal(get(hObject,'BackgroundColor'),
function dos_Callback(hObject, eventdata, get(0,'defaultUicontrolBackgroundColor'))
handles) set(hObject,'BackgroundColor','white');
function dos_CreateFcn(hObject, eventdata, end
handles)
if ispc &&
isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) function cuatro_Callback(hObject, eventdata,
set(hObject,'BackgroundColor','white'); handles)
end function cuatro_CreateFcn(hObject, eventdata,
handles)
if ispc &&
isequal(get(hObject,'BackgroundColor'),
function y2_Callback(hObject, eventdata, get(0,'defaultUicontrolBackgroundColor'))
handles) set(hObject,'BackgroundColor','white');
function y2_CreateFcn(hObject, eventdata, end
handles)
if ispc &&
isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) function edit13_Callback(hObject, eventdata,
set(hObject,'BackgroundColor','white'); handles)
end function edit13_CreateFcn(hObject, eventdata,
handles)
if ispc &&
isequal(get(hObject,'BackgroundColor'),
function y1_Callback(hObject, eventdata, get(0,'defaultUicontrolBackgroundColor'))
handles) set(hObject,'BackgroundColor','white');
function y1_CreateFcn(hObject, eventdata, end
handles)
if ispc &&
isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor')) function edit14_Callback(hObject, eventdata,
set(hObject,'BackgroundColor','white'); handles)
end
if ispc &&
isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
function y_Callback(hObject, eventdata, set(hObject,'BackgroundColor','white');
handles) end
function y_CreateFcn(hObject, eventdata,
handles)
if ispc &&
isequal(get(hObject,'BackgroundColor'), function edit15_Callback(hObject, eventdata,
get(0,'defaultUicontrolBackgroundColor')) handles)
set(hObject,'BackgroundColor','white'); function edit15_CreateFcn(hObject,
end if ispc &&
isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
function x_Callback(hObject, eventdata, end
handles)

function x_CreateFcn(hObject, eventdata,


handles) function edit16_Callback(hObject, eventdata,
if ispc && handles)
isequal(get(hObject,'BackgroundColor'), function edit16_CreateFcn(hObject, eventdata,
get(0,'defaultUicontrolBackgroundColor')) handles)
set(hObject,'BackgroundColor','white'); isequal(get(hObject,'BackgroundColor'),
end get(0,'defaultUicontrolBackgroundColor'))
10

set(hObject,'BackgroundColor','white');
end opcion=str2double(get(handles.ordened,'string'
)); % orden de la ecuacion
switch opcion
case 1 % orden=1
function edit17_Callback(hObject, eventdata, set(handles.selec,'visible','off')
handles) set(handles.ilaplace,'visible','off')
function edit17_CreateFcn(hObject, eventdata, set(handles.ecuaciones,'visible','off')
handles) set(handles.graficas,'visible','off')
if ispc && set(handles.laplace,'visible','off')
isequal(get(hObject,'BackgroundColor'), set(handles.y3,'visible','off')
get(0,'defaultUicontrolBackgroundColor')) set(handles.y2,'visible','off')
set(hObject,'BackgroundColor','white'); set(handles.y1,'visible','off')
end set(handles.y,'visible','on')
set(handles.x,'visible','on')
set(handles.yiv,'visible','off')
set(handles.yiii,'visible','off')
function edit18_Callback(hObject, eventdata, set(handles.yii,'visible','off')
handles) set(handles.yi,'visible','off')
function edit18_CreateFcn(hObject, eventdata, set(handles.y0,'visible','on')
handles) set(handles.uno,'visible','off')
if ispc && set(handles.dos,'visible','off')
isequal(get(hObject,'BackgroundColor'), set(handles.tres,'visible','off')
get(0,'defaultUicontrolBackgroundColor')) set(handles.cuatro,'visible','on')
set(hObject,'BackgroundColor','white'); set(handles.igual,'visible','on')
end set(handles.ci,'visible','on')
set(handles.ci,'visible','on')
set(handles.ci1,'visible','on')
set(handles.ci2,'visible','off')
function edit19_Callback(hObject, eventdata, set(handles.ci3,'visible','off')
handles) set(handles.ci4,'visible','off')
function edit19_CreateFcn(hObject, eventdata, set(handles.cci1,'visible','on')
handles) set(handles.cci2,'visible','off')
if ispc && set(handles.cci3,'visible','off')
isequal(get(hObject,'BackgroundColor'), set(handles.cci4,'visible','off')
get(0,'defaultUicontrolBackgroundColor')) set(handles.a,'visible','on')
set(hObject,'BackgroundColor','white'); set(handles.b,'visible','off')
end set(handles.ab,'visible','off')
set(handles.res,'visible','on')
set(handles.resultado,'visible','on')
set(handles.boton1,'visible','on')
function edit20_Callback(hObject, eventdata, set(handles.boton2,'visible','off')
handles) set(handles.boton3,'visible','off')
function edit20_CreateFcn(hObject, eventdata, set(handles.boton4,'visible','off')
handles) case 2 %orden= 2
if ispc && set(handles.selec,'visible','off')
isequal(get(hObject,'BackgroundColor'), set(handles.ilaplace,'visible','off')
get(0,'defaultUicontrolBackgroundColor')) set(handles.ecuaciones,'visible','off')
set(hObject,'BackgroundColor','white'); set(handles.graficas,'visible','off')
end set(handles.laplace,'visible','off')
set(handles.y3,'visible','off')
set(handles.y2,'visible','off')
set(handles.y1,'visible','on')
function edit21_Callback(hObject, eventdata, set(handles.y,'visible','on')
handles) set(handles.x,'visible','on')
function edit21_CreateFcn(hObject, eventdata, set(handles.yiv,'visible','off')
handles) set(handles.yiii,'visible','off')
if ispc && set(handles.yii,'visible','off')
isequal(get(hObject,'BackgroundColor'), set(handles.yi,'visible','on')
get(0,'defaultUicontrolBackgroundColor')) set(handles.y0,'visible','on')
set(hObject,'BackgroundColor','white'); set(handles.uno,'visible','off')
end set(handles.dos,'visible','off')
set(handles.tres,'visible','on')
set(handles.cuatro,'visible','on')
set(handles.igual,'visible','on')
function ordened_Callback(hObject, eventdata, set(handles.c,'visible','on')
handles) set(handles.ci,'visible','on')
11

set(handles.ci1,'visible','on') set(handles.y,'visible','on')
set(handles.ci2,'visible','on') set(handles.x,'visible','on')
set(handles.ci3,'visible','off') set(handles.yiv,'visible','on')
set(handles.ci4,'visible','off') set(handles.yiii,'visible','on')
set(handles.cci1,'visible','on') set(handles.yii,'visible','on')
set(handles.cci2,'visible','on') set(handles.yi,'visible','on')
set(handles.cci3,'visible','off') set(handles.y0,'visible','on')
set(handles.cci4,'visible','off') set(handles.uno,'visible','on')
set(handles.a,'visible','off') set(handles.dos,'visible','on')
set(handles.b,'visible','on') set(handles.tres,'visible','on')
set(handles.ab,'visible','off') set(handles.cuatro,'visible','on')
set(handles.res,'visible','on') set(handles.igual,'visible','on')
set(handles.resultado,'visible','on') set(handles.ci,'visible','on')
set(handles.boton1,'visible','on') set(handles.ci1,'visible','on')
set(handles.boton2,'visible','off') set(handles.ci2,'visible','on')
set(handles.boton3,'visible','off') set(handles.ci3,'visible','on')
set(handles.boton4,'visible','off') set(handles.ci4,'visible','on')
case 3 set(handles.cci1,'visible','on')
set(handles.selec,'visible','off') set(handles.cci2,'visible','on')
set(handles.ilaplace,'visible','off') set(handles.cci3,'visible','on')
set(handles.ecuaciones,'visible','off') set(handles.cci4,'visible','on')
set(handles.graficas,'visible','off') set(handles.a,'visible','off')
set(handles.laplace,'visible','off') set(handles.b,'visible','off')
set(handles.y3,'visible','off') set(handles.ab,'visible','off')
set(handles.y2,'visible','on') set(handles.res,'visible','on')
set(handles.y1,'visible','on') set(handles.resultado,'visible','on')
set(handles.y,'visible','on') set(handles.boton1,'visible','on')
set(handles.x,'visible','on') set(handles.boton2,'visible','off')
set(handles.yiv,'visible','off') set(handles.boton3,'visible','off')
set(handles.yiii,'visible','off') set(handles.boton4,'visible','off')
set(handles.yii,'visible','on') end
set(handles.yi,'visible','on')
set(handles.y0,'visible','on') function ordened_CreateFcn(hObject, eventdata,
set(handles.uno,'visible','off') handles)
set(handles.dos,'visible','on') if ispc &&
set(handles.tres,'visible','on') isequal(get(hObject,'BackgroundColor'),
set(handles.cuatro,'visible','on') get(0,'defaultUicontrolBackgroundColor'))
set(handles.igual,'visible','on') set(hObject,'BackgroundColor','white');
set(handles.c,'visible','on') end
set(handles.ci,'visible','on')
set(handles.ci1,'visible','on')
set(handles.ci2,'visible','on')
set(handles.ci3,'visible','on') function cci1_Callback(hObject, eventdata,
set(handles.ci4,'visible','off') handles)
set(handles.cci1,'visible','on') function cci1_CreateFcn(hObject, eventdata,
set(handles.cci2,'visible','on') handles)
set(handles.cci3,'visible','on') if ispc &&
set(handles.cci4,'visible','off') isequal(get(hObject,'BackgroundColor'),
set(handles.a,'visible','off') get(0,'defaultUicontrolBackgroundColor'))
set(handles.b,'visible','off') set(hObject,'BackgroundColor','white');
set(handles.ab,'visible','on') end
set(handles.res,'visible','on')
set(handles.resultado,'visible','on')
set(handles.boton1,'visible','on')
function cci2_Callback(hObject, eventdata,
set(handles.boton2,'visible','off') handles)
set(handles.boton3,'visible','off') function cci2_CreateFcn(hObject, eventdata,
set(handles.boton4,'visible','off') handles)
case 4 if ispc &&
set(handles.selec,'visible','off') isequal(get(hObject,'BackgroundColor'),
set(handles.ilaplace,'visible','off') get(0,'defaultUicontrolBackgroundColor'))
set(handles.ecuaciones,'visible','off') set(hObject,'BackgroundColor','white');
set(handles.graficas,'visible','off') end
set(handles.laplace,'visible','off')
set(handles.y3,'visible','on')
set(handles.y2,'visible','on')
set(handles.y1,'visible','on')
12

function cci3_Callback(hObject, eventdata, E=Y2+ct*Y1+at*Y-btt;


handles) Y=solve(E,Y)
function cci3_CreateFcn(hObject, eventdata, y=ilaplace(Y,s,t)
handles) set(handles.resultado,'String',char(y))
if ispc &&
isequal(get(hObject,'BackgroundColor'), case 3 %orden=3
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); syms t s Y;
end at=get(handles.y,'string');
bt=get(handles.x,'string');
ct=get(handles.y1,'string');
dt=get(handles.y2,'string');
function cci4_Callback(hObject, eventdata, t0=get(handles.cci1,'string');
handles) t1=get(handles.cci2,'string');
function cci4_CreateFcn(hObject, eventdata, t2=get(handles.cci3,'string');
handles) btt=laplace(bt,t,s);
if ispc && d3y=diff(sym('Y(t)'),3);
isequal(get(hObject,'BackgroundColor'), Y3=laplace(d3y,t,s)
get(0,'defaultUicontrolBackgroundColor')) d2y=diff(sym('Y(t)'),2);
set(hObject,'BackgroundColor','white'); Y2=laplace(d2y,t,s)
end d1y=diff(sym('Y(t)'),1);
Y1=laplace(d1y,t,s)
Y1=s*Y-t0;
% --- Executes on button press in boton1. Y2=s*Y1-t1;
function boton1_Callback(hObject, eventdata, Y3=s*Y2-t2;
handles) E=Y3+dt*Y2+ct*Y1+at*Y-btt;
% hObject handle to boton1 (see GCBO) Y=solve(E,Y)
% eventdata reserved - to be defined in a y=ilaplace(Y,s,t)
future version of MATLAB set(handles.resultado,'String',char(y))
% handles structure with handles and user
data (see GUIDATA) case 4
%Declaramos las variables
opcion=str2double(get(handles.ordened,'string' syms t s Y;
)); % orden de la ecuacion at=get(handles.y,'string');
switch opcion bt=get(handles.x,'string');
case 1 %orden de la ecuacion=1 ct=get(handles.y1,'string');
dt=get(handles.y2,'string');
syms t s Y; et=get(handles.y3,'string');
at=get(handles.y,'string'); t0=get(handles.cci1,'string');
bt=get(handles.x,'string'); t1=get(handles.cci2,'string');
t0=get(handles.cci1,'string'); t2=get(handles.cci3,'string');
btt=laplace(bt,t,s); t3=get(handles.cci4,'string');
btt=laplace(bt,t,s);
d1y=diff(sym('Y(t)'),1); d4y=diff(sym('Y(t)'),4);
Y1=laplace(d1y,t,s) Y4=laplace(d4y,t,s)
Y1=s*Y-t0; d3y=diff(sym('Y(t)'),3);
E=Y1+at*Y-btt; Y3=laplace(d3y,t,s)
Y=solve(E,Y) d2y=diff(sym('Y(t)'),2);
y=ilaplace(Y,s,t) Y2=laplace(d2y,t,s)
set(handles.resultado,'String',char(y)) d1y=diff(sym('Y(t)'),1);
Y1=laplace(d1y,t,s)
Y1=s*Y-t0;
case 2 %orden= 2 Y2=s*Y1-t1;
Y3=s*Y2-t2;
syms t s Y; Y4=s*Y3-t3;
at=get(handles.y,'string'); E=Y4-et*Y3+dt*Y2+ct*Y1+at*Y-btt;
bt=get(handles.x,'string'); Y=solve(E,Y)
ct=get(handles.y1,'string'); y=ilaplace(Y,s,t)
t0=get(handles.cci1,'string'); set(handles.resultado,'String',char(y))
t1=get(handles.cci2,'string');
btt=laplace(bt,t,s); end
d2y=diff(sym('Y(t)'),2);
Y2=laplace(d2y,t,s) function resultado_Callback(hObject,
d1y=diff(sym('Y(t)'),1); eventdata, handles)
Y1=laplace(d1y,t,s) function resultado_CreateFcn(hObject,
Y1=s*Y-t0; eventdata, handles)
Y2=s*Y1-t1;
13

if ispc && function pushbutton5_Callback(hObject,


isequal(get(hObject,'BackgroundColor'), eventdata, handles)
get(0,'defaultUicontrolBackgroundColor')) % hObject handle to pushbutton5 (see GCBO)
set(hObject,'BackgroundColor','white'); % eventdata reserved - to be defined in a
end future version of MATLAB
% handles structure with handles and user
data (see GUIDATA)
% --- Executes on button press in boton2.
function boton2_Callback(hObject, eventdata,
handles) % --- Executes on button press in atras.
%Ingreso la funcion function atras_Callback(hObject, eventdata,
f=get(handles.lapl,'string') handles)
syms s % hObject handle to atras (see GCBO)
%Aplicar la TL % eventdata reserved - to be defined in a
sol=laplace(f,s) future version of MATLAB
set(handles.resultado2,'String',char(sol)) % handles structure with handles and user
function boton3_Callback(hObject, eventdata, data (see GUIDATA)
handles) set(handles.selec,'visible','on')
syms t set(handles.ilaplace,'visible','on')
%Ingresar la función set(handles.ecuaciones,'visible','on')
f=get(handles.lapl,'string') set(handles.graficas,'visible','on')
%til set(handles.laplace,'visible','on')
sol=ilaplace(f,t) set(handles.y3,'visible','off')
set(handles.y2,'visible','off')
set(handles.resultado2,'string',char(sol)) set(handles.y1,'visible','off')
set(handles.y,'visible','off')
% --- Executes on button press in boton4. set(handles.x,'visible','off')
function boton4_Callback(hObject, eventdata, set(handles.yiv,'visible','off')
handles) set(handles.yiii,'visible','off')
% hObject handle to boton4 (see GCBO) set(handles.yii,'visible','off')
% eventdata reserved - to be defined in a set(handles.yi,'visible','off')
future version of MATLAB set(handles.y0,'visible','off')
% handles structure with handles and user set(handles.uno,'visible','off')
data (see GUIDATA) set(handles.dos,'visible','off')
set(handles.tres,'visible','off')
x=0:0.005:10; set(handles.cuatro,'visible','off')
w=get(handles.int,'string'); set(handles.igual,'visible','off')
y=eval(w); set(handles.orden,'visible','off')
plot(x,y); grid set(handles.ordened,'visible','off')
set(handles.c,'visible','off')
set(handles.ci,'visible','off')
set(handles.ci1,'visible','off')
function lapl_Callback(hObject, eventdata, set(handles.ci2,'visible','off')
handles) set(handles.ci3,'visible','off')
function lapl_CreateFcn(hObject, eventdata, set(handles.ci4,'visible','off')
handles) set(handles.cci1,'visible','off')
if ispc && set(handles.cci2,'visible','off')
isequal(get(hObject,'BackgroundColor'), set(handles.cci3,'visible','off')
get(0,'defaultUicontrolBackgroundColor')) set(handles.cci4,'visible','off')
set(hObject,'BackgroundColor','white'); set(handles.a,'visible','off')
end set(handles.b,'visible','off')
set(handles.ab,'visible','off')
set(handles.res,'visible','off')
set(handles.resultado,'visible','off')
function resultado2_Callback(hObject, set(handles.boton1,'visible','off')
eventdata, handles) set(handles.boton2,'visible','off')
function resultado2_CreateFcn(hObject, set(handles.boton3,'visible','off')
eventdata, handles) set(handles.boton4,'visible','off')
if ispc && set(handles.res2,'visible','off')
isequal(get(hObject,'BackgroundColor'), set(handles.resultado2,'visible','off')
get(0,'defaultUicontrolBackgroundColor')) set(handles.lap,'visible','off')
set(hObject,'BackgroundColor','white'); set(handles.lapl,'visible','off')
end set(handles.tdlp,'visible','off')
set(handles.tidlp,'visible','off')
set(handles.graf,'visible','off')
% --- Executes on button press in pushbutton5. set(handles.ed,'visible','off')
set(handles.atras,'visible','on')
14

set(handles.seno,'visible','off') if op==1
set(handles.cos,'visible','off') x=0:0.05:10;
set(handles.grafec,'visible','off') y=cos(x)
set(handles.int,'visible','off') plot(x,y); grid
set(handles.tan,'visible','off') end
set(handles.sec,'visible','off') % Hint: get(hObject,'Value') returns toggle
set(handles.atras,'visible','off') state of cos
set(handles.yigual,'visible','off')
set(handles.ordened,'string',' ')
set(handles.lapl,'string',' ') % --- Executes on button press in tan.
set(handles.y3,'string',' ') function tan_Callback(hObject, eventdata,
set(handles.y2,'string',' ') handles)
set(handles.y1,'string',' ') % hObject handle to tan (see GCBO)
set(handles.y,'string',' ') % eventdata reserved - to be defined in a
set(handles.x,'string',' ') future version of MATLAB
set(handles.cci1,'string',' ') % handles structure with handles and user
set(handles.cci2,'string',' ') data (see GUIDATA)
set(handles.cci3,'string',' ') set(handles.seno,'value',0)
set(handles.cci4,'string',' ') set(handles.cos,'value',0)
set(handles.resultado,'string',' ') set(handles.grafec,'value',0)
set(handles.yigual,'visible','off') set(handles.sec,'value',0)
set(handles.flap,'visible','off') op=get(handles.tan,'value');
set(handles.graficax,'visible','off') if op==1
set(handles.filap,'visible','off') x=0:0.2:10;
set(handles.borrar,'visible','off') y=tan(x)
set(handles.axes2,'visible','off') plot(x,y); grid
x=0 end
y=x % Hint: get(hObject,'Value') returns toggle
plot(x,y) state of tan
set(handles.plot,'visible','off')
% --- Executes on button press in salir.
function salir_Callback(hObject, eventdata, % --- Executes on button press in sec.
handles) function sec_Callback(hObject, eventdata,
% hObject handle to salir (see GCBO) handles)
% eventdata reserved - to be defined in a % hObject handle to sec (see GCBO)
future version of MATLAB % eventdata reserved - to be defined in a
% handles structure with handles and user future version of MATLAB
data (see GUIDATA) % handles structure with handles and user
close(deber) data (see GUIDATA)
set(handles.cos,'value',0)
set(handles.tan,'value',0)
% --- If Enable == 'on', executes on mouse set(handles.seno,'value',0)
press in 5 pixel border. set(handles.grafec,'value',0)
% --- Otherwise, executes on mouse press in 5 op=get(handles.sec,'value');
pixel border or over boton1. if op==1
function boton1_ButtonDownFcn(hObject, x=0:0.2:10;
eventdata, handles) y=sec(x);
function seno_Callback(hObject, eventdata, plot(x,y); grid
handles) end
set(handles.cos,'value',0) % Hint: get(hObject,'Value') returns toggle
set(handles.tan,'value',0) state of sec
set(handles.sec,'value',0)
set(handles.grafec,'value',0)
op=get(handles.seno,'value'); % --- Executes on button press in grafec.
if op==1 function grafec_Callback(hObject, eventdata,
x=0:0.05:10; handles)
y=sin(x) % hObject handle to grafec (see GCBO)
plot(x,y); grid % eventdata reserved - to be defined in a
end future version of MATLAB
% handles structure with handles and user
function cos_Callback(hObject, eventdata, data (see GUIDATA)
handles) set(handles.int,'visible','on')
set(handles.seno,'value',0) set(handles.boton4,'visible','on')
set(handles.tan,'value',0) set(handles.yigual,'visible','on')
set(handles.sec,'value',0) set(handles.borrar,'visible','on')
set(handles.grafec,'value',0) set(handles.cos,'value',0)
op=get(handles.cos,'value'); set(handles.tan,'value',0)
15

set(handles.seno,'value',0)
set(handles.sec,'value',0)

% Hint: get(hObject,'Value') returns toggle


state of grafec

function int_Callback(hObject, eventdata,


handles)
creation, after setting all properties.
function int_CreateFcn(hObject, eventdata,
handles)
if ispc &&
isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in borrar.


function borrar_Callback(hObject, eventdata,
handles)
set(handles.ordened,'string',' ')
set(handles.lapl,'string',' ')
set(handles.y3,'string',' ')
set(handles.y2,'string',' ')
set(handles.y1,'string',' ')
set(handles.y,'string',' ')
set(handles.x,'string',' ')
set(handles.cci1,'string',' ')
set(handles.cci2,'string',' ')
set(handles.cci3,'string',' ')
set(handles.cci4,'string',' ')
set(handles.resultado,'string',' ')
set(handles.resultado2,'string',' ') IV.ANÁLISIS DE VOZ
set(handles.int,'string',' ')

El análisis de voz propiamente no es funcional pues el modelo


que corresponde a la modulación interactiva y las distintas
% --- Executes during object creation, after frecuencias que aunque estan sometias a un rango especifico
setting all properties.
varian en un numero infinito, por esta razón el estudio se
function plot_CreateFcn(hObject, eventdata,
handles) refiera a la acustica en si como un modo de generar modelos
simples los cuales se van acoplando a las necesidades de la
% --- Executes on button press in graficax. investigación en la cual es requerido, y es así como muchas de
function graficax_Callback(hObject, eventdata, estas investigaciones han aportado soluciones efectivas para el
handles) desarrollo de mejores programas de reconocimiento de voz.
d=get(handles.resultado,'string');
syms x y;
ezplot(handles.axes2,d,[-10,20]); Introducción a modelos físicos

¿Cuál es la causa de que la presión de aire fluyendo a través de


un tubo hueco produzca ondas de presión en el aire del
exterior que conocemos como notas? Con modelos físicos se
intenta describir matemáticamente la acústica de los
instrumentos tradicionales y implementar digitalmente los
algoritmos para poder reproducir estos fenómenos.

En la actualidad se ha desarrollado suficientamente la


tecnología para que se puedan manipular estos modelos al
mismo nivel que los originales acústicos en tiempo real, y por
eso han sido objeto de mucho interés comercial. Pero, por
supuesto, la imitación nunca puede ser mejor que el original,
16

así que todavía la intención principal es descubrir la naturaleza efectivamente mediante componentes digitales como líneas de
de los instrumentos. retardo, unidades de acoplo y filtros.

Al contrario de la síntesis tradicional de muestras, se gobierna El excitador al ser no lineal es más dificil de modelar que el
un modelo físico por la interfaz entre el ejecutante y el resonador. Además existen diferentes tipos que implican
instrumento.Variables como la presión de aire y la diferentes conjuntos de ecuaciones, pero hay buenos modelos
embocadura para instrumentos de viento y la presión del arco para estos también. Para mantener una nota constante el
y posición del dedo para los de cuerdas fijan qué oscilaciones excitador tiene que proprocionar exactamente la misma
afectan al medio resonante, que como consecuencia emite energía que desaparece en el resonador; un cambio en la
ondas sonoras a su entorno. Con ello se ha perdido la energía proporcionada da un cambio correspondiente en la
generalidad de la síntesis muestreada y la posibilidad de influir potencia sonora. Cada resonador tiene límites superior e
la señal directamente, a cambio de un control del modelo más inferior que determinan qué suministro de energía resulta en
amigable al usuario, intuitivo y tradicional. un sonido conteniendo la frecuencia fundamental de la nota
deseada.
Los modelos físicos requieren menos capacidad de datos que
la síntesis muestreada si hay algoritmos efectivos, pero los Diferentes opciones para desarrollos posteriores
gastos elevados se encuentran al desarrollar estos algoritmos
que es necesario adaptar a medida para cada tipo de
instrumento que tiene distintos fenómenos acústicos. En principio esta línea de investigación no tenía un fin
comercial, sino que era un intento de entender la acústica de
los instrumentos acústicos. Hoy día los algoritmos resultantes
Así como la síntesis de muestras ha contribuído a clasificar los son tan efectivos, la capacidad de cálculo tan elevada y la
distintos instrumentos por su timbre, los modelos físicos han interfaz al ejercitante tan buena que también es un método de
contribuido a refinar la clasificación por sus cualidades físicas. producir instrumentos musicales comerciales. En esta tarea,
Los dos grupos principales son instrumentos de cuerdas e hay ángulos diferentes de acometer los problemas. En un
instrumentos de viento, ambos subdivididos en varios grupos. extremo está el físico que analiza los mecanismos de
generación, en el otro está el diseñador de instrumentos que
desea buenos resultados en la calidad del sonido.
Para modelar un instrumento se divide en dos partes
funcionales: el excitador y el resonador. El excitador se puede
simular como una señal entrada no lineal para el resonador, el Uno de los problemas básicos y hasta ahora no resueltos es el
cuál se puede modelar como una función transferencia lineal de los pequeños márgenes, que son tan importantes. Un
que produce la señal salida audible. Los dos se unen con cambio minúsculo de p.ej. la presión de arco o la embocadura
realimentación. produce cambios bastante audibles, y aún es un misterio qué
separa un violín bueno y uno excelente. Hay que bajar a un
nivel muy detallado que en cualquier otro contexto
La teoría más aplicada para el resonador de modelos físicos es electroacústico se podría pasar por alto, lo cual es un gran
la denominada ³teoría de guía de ondas². Se basa en la desafío para el futuro.
solución analítica de la ecuación de la propagación de ondas
en el material. La ecuación es adecuada para cualquier guía de
ondas unidimensional, tanto cuerdas como tubos huecos: Lo más importante será siempre centrarse en los aspectos
musicales aunque las matemáticas sean bastante interesantes
de por sí.
Ky² = Eÿ

¿Por qué?
Para cuerdas:
K = tensión de la cuerda
La ventaja de la acústica musical es la posibilidad de utilizar el
E = densidad de masa lineal excelente oído humano como mecanismo de control para las
y = desplazamiento de la cuerda teorías deducidas, que también son aplicables para objetivos
ÿ = aceleración de la cuerda no musicales. Por eso los modelos físicos pueden utilizar la
realidad como su hipótesis verificativa.
y² = curvatura de la cuerda

La finalidad será llegar un día a conocer los fenómenos


Además hay que modelar las pérdidas de energía debido a la acústicos de los instrumentos tan bien que se logre mejorar y/o
resistencia del aire, la rigidez, la fricción interno etc., que hace construir nuevos instrumentos acústicos, y poder modelar
apagarse al sonido. Se puede implementar todo eso muy instrumentos ficticios inspirados en los tradicionales pero que
no necesariamente se puedan construir en la realidad.
17

-Solución numérica de ecuaciones diferenciales ordinarias.


También hay un gran interés comercial por estos modelos, ya
que son buenas copias de los instrumentos tradicionales, pero Estadística y análisis de Fourier
mucho más flexibles. Se pueden presentar facilidades como
auriculares, MIDI, salida de jack, secuenciador, varios
instrumentos parecidos en el mismo modelo, y formatos -Convolución 1-D y 2-D.
pequeños y ligeros. -Filtros digitales 1-D y 2-D.
-Transformadas de Fourier 1-D y 2-D y su inversa.
V. FUNCIONES ESPECIALES -Coeficientes de correlación y matrices de covarianza.
-Deconvolución.
LISTA PARCIAL DE FUNCIONES -Magnitudes y ángulos de fase.
-Funciones max, min, sum, mean y otras funciones de
Funciones matemáticas estadística básica.

Funcionales especiales y elementales Operaciones algebráicas y lógicas

-Funciones gamma, beta y elípticas. -Suma, resta, multiplicación, división y potencias de matrices.
-Transformación de sistemas de coordenadas. -Matrix traspuesta.
-Matriz identidad y otras matrices elementales. -Operadores lógicos AND, OR, NOT y XOR.
-Matrices de Hilbert, Toeplitz, Vandermonde, Hadamard, etc.
-Partes reales, imaginarias y complejas conjugadas. Utilidades
-Funciones trigonométricas y de potencias.
-Gestión y mantenimiento de errores.
Algebra lineal numérica -Conversión de tipos de datos Fortran.
-Funciones de fecha y hora.
-Valores propios y descomposición de matrices. -Clasificación de matrices.
-Funciones generales de evaluación de matrices. -Conversión de números a cadenas y viceversa.
-Determinantes, normas, rangos, etc.
-Matrices inversas y factorización de matrices. VI. Conclusiones
-Matriz exponencial, logarítmica y raíces cuadradas.
En conclusión, vemos que Matlab nos sirve de mucho:
Polinomios e interpolación
-El cual contiene diferentes comandos con los cuales podemos
-Interpolación 1-D y 2-D. realizar diferentes funciones. Sabiendo utilizar los comandos
adecuados, pudimos aprender a modelar de una manera
-Construcción polinomial. práctica y clara la función de transferencia de cualquier
-Interpolación por splines cúbicos. sistema.
-Diferenciación de polinomios.
-Evaluación de polinomios. -De aprendieron algunas herramientas en Matlab para
-Multiplicación y división de polinomios. utilizarlas en los intervalos de la gráfica.
-Residuos de polinomios y residuos. -Se aprendió en esta práctica a graficar tres funciones en una
sola gráfica, con sus intervalos, puntos de la función.

Métodos numéricos no lineales


La importancia de esta práctica, es que además de anexar una
lista de comandos en un lenguaje de instrucciones se busca en
-Búsqueda de ceros en funciones de una única variable. general el entendimiento del proceso, las funciones que
-Minimización de funciones de una o más variables. ejercen los comandos introducidos por el usuario, tienen una
función determinada, lo que se busca es facilitar estos
-Resolución numérica de integrales.
18

procesos que requieren que se resuelvan a papel y lápiz, pero En la actualidad estudia en la Universidad de las Fuerzas
con solo entender lo que se necesita realizar, podemos lograr Armadas Espe-Latacunga, en Segundo Semestre de la carrera
estos cálculos utilizando de manera esencial la ' de ingeniería en Electrónica y Automatización.
herramienta Matlab.
Luis Quishpe nació en Quito-
VII. Bibliografías Ecuador, 22 de noviembre de
1998.
1. https://www.academia.edu/16487217/Introduccion_y
_conclusion_de_matlab Estudio en la primaria en la
2. https://la.mathworks.com/campaigns/products/trials.h escuela Unidad Educativa Pedro
tml?s_eid=ppc_51960033056&q=matlab&gclid=Cjw Luis Calero ubicada en San Isidro
KCAiA0O7fBRASEiwAYI9QAisWkWgXQaYrq_A del Inca ciudad de Quito–
SSsKvQrAwBODK6E1nCliorGhWpea3AHPRmAtip Ecuador en el año 2008, en el
RoCLVIQAvD_BwE secundario estudio en la Unidad
3. https://www.mathworks.com/products/matlab.html Educativa Pedro Luis Calero (solo
4. https://la.mathworks.com/ 8vo de Básica) ubicado en San
5. https://warwick.ac.uk/services/its/servicessupport/sof Isidro del Inca ciudad de Quito– Ecuador en el año 2009 y en
tware/list/matlab/ el Instituto Tecnológico Superior Central Técnico ubicado en
6. http://webs.ucm.es/centros/cont/descargas/documento los Sauces ciudad de Quito-Ecuador en el año 2016.
11541.pdf En la actualidad estudia en la Universidad de las Fuerzas
7. http://personales.upv.es/jbenitez/data/matlab.pdf Armadas Espe-Latacunga, en Segundo Semestre de la carrera
8. https://sergioyansen.wordpress.com/tag/ecuaciones- de ingeniería en Electrónica y Automatización.
diferenciales-reducibles-a-variables-separables/
9. https://es.slideshare.net/LGEBRALINEALECUACI
ON/ecuaciones-diferenciales-de-variables-separables-
y-ecuaciones-diferenciales-reducibles-a-variables-
separables
10. https://matematicasies.com/Ecuaciones-
Diferenciales-Reducibles-a-Variables

David Ruiz nació en Salcedo


Ecuador, el 4 de abril del 2000.
Estudio en la primaria en la
escuela Madison High School
Ubicada en Salcedo – Ecuador en
el año 2010, en el secundario
estudio en el colegio técnico
Ramon Barba Naranjo ubicada en
Latacunga-Ecuador en el año
2016.
En la actualidad estudia en la Universidad de las Fuerzas
Armadas Espe-Latacunga, en Segundo Semestre de la carrera
de ingeniería en Electrónica y Automatización.

Ariel Quishpe nació en Quito-


Ecuador, 7 de noviembre de 1998.
Estudio en la primaria en la
escuela San Vicente ubicada en la
vicentina ciudad de Quito–
Ecuador en el año 2008, en el
secundario estudio en el colegio
Juan Montalvo ubicado en la
Gasca ciudad de Quito-Ecuador en
el año 2016.

También podría gustarte