Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Mérida, Venezuela
Mayo 2008
RESUMEN
RESUMEN
1. GENERALIDADES ……………………………………………………………1
1.1. Introducción ……………………………………………………………………2
Antecedentes ……………………………………………………………………3
1.2. Objetivos ……………….…………………………………………………...3
Objetivo General ..…………………………………………………...3
Objetivos Específicos …………………………………………….3
1.3. Esquema de Diseño …………………………………………………….3
2. IDENTIFICACIÓN DE SISTEMAS …………………………………………….4
2.1. Concepto de Sistema …………………………………………………………….4
Modelo de un Sistema ……………………………………………………..4
2.2. Clasificación de Modelos ……………………………………………………..6
2.3. Identificación de Sistemas ……………………………………………………..7
El Proceso de Identificación ……………………………………………………..8
Métodos de Identificación …………………………………………………….10
Estructura de los Modelos Lineales Discretos ……………………………. 10
2.4. Métodos para el Ajuste de Parámetros ……………………………………. 14
Método de Estimación por Mínimos Cuadrados (MC) ……………………..14
Propiedades del Método de Mínimos Cuadrados ……………………………..17
Criterios para la validación de la Estructura de los Modelos ……………..17
3. IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y
OCTAVE ……………………………………………………………………………20
3.1. Uso de Matlab en Identificación de Sistemas ……………………………..20
3.2. Uso de Octave en Identificación de Sistemas ……………………………..22
3.3. El Pendubot …………………………………………………………………….23
3.4. El Péndulo …………………………………………………………………….24
3.5. Identificación de un Sistema Discreto …………………………………….27
3.6. Experiencia con un Punto de Operación q op = 0 [rad ] ……………………..28
INDICE GENERAL
π
3.7. Experiencia con un punto de operación q op = [rad ] ………………………39
6
Con una entrada PRBS generada a partir de un valor de diferencial amplitud
DA=0.05 [Nm] y un diferencial de tiempo DT=0,15 [seg] ………………………39
CAPITULO 1
GENERALIDADES
1.1. Introducción
Antecedentes
1.2. Objetivos
Objetivo General
Construir una herramienta de software libre vía Internet que permita la identificación de
sistemas, es decir, modelos matemáticos de sistemas dinámicos controlados a partir de datos
experimentales de entrada/salida.
Objetivos Específicos
CAPITULO 2
IDENTIFICACIÓN DE SISTEMAS
Perturbación
e(t )
Entrada Salida
u (t ) Sistema Dinámico y (t )
Modelo de un Sistema
La primera operación que se debe realizar cuando se aborda un problema de control es la
obtención de un modelo matemático del proceso que se pretende controlar. El modelo debe
tratar de reproducir lo mejor posible las respuestas de un proceso y(t) ante una entrada u(t).
5
CAPITULO 2 IDENTIFICACIÓN DE SISTEMAS
Para poder aplicar la teoría de control se deben obtener modelos matemáticos (modelos en
variables de estado, en funciones de transferencia, etc.) que básicamente se generan de dos
formas:
El campo de aplicación del modelado teórico es muy restricto; en muchos casos la estructura
del modelo obtenido a partir del conocimiento físico posee un conjunto de parámetros
desconocidos, que sólo se pueden determinar experimentando sobre el sistema real. De ahí la
necesidad de recurrir a los métodos de identificación de sistemas.
Los modelos obtenidos mediante técnicas de identificación tienen las siguientes desventajas:
1. Su rango de validez suele ser limitado (sólo son aplicables a un determinado punto de
operación, un determinado tipo de entrada o un proceso concreto), es decir es válido solamente
para el sistema estudiado.
2. La identificación solo puede ser aplicada a sistemas existentes. En muchos casos los
parámetros identificados no tienen relación con magnitudes físicas.
6
CAPITULO 2 IDENTIFICACIÓN DE SISTEMAS
Los modelos pueden ser clasificados de otras maneras, como por ejemplo:
• Modelos Análogos, los cuales son basados en analogías entre procesos en diferentes
áreas. Por ejemplo un oscilador mecánico y uno eléctrico pueden ser descritos por la misma
ecuación diferencial lineal de segundo-orden, pero los coeficientes tendrán diferentes
interpretaciones físicas.
• Modelos Físicos, que son en su mayoría trabajos a escala, las unidades tienen las
mismas características esenciales que los modelos de los procesos.
El Proceso de Identificación
En términos generales, el proceso de identificación comprende los siguientes pasos:
1. Obtención de datos entrada - salida. Se debe excitar el sistema mediante la aplicación de
una señal de entrada y registrar la evolución de sus entradas y salidas durante un intervalo de
tiempo.
Los aspectos más importantes que deben considerarse para la elección de la entrada se pueden
resumir en [2]:
• Las señales binarias frecuentemente son convenientes para identificar sistemas lineales.
• Elegir el rango de frecuencia de entrada de manera que tenga la mayor parte de su
energía en las bandas de frecuencia que son importantes para el sistema, donde particione los
puntos del diagrama de Bode.
• Es una buena idea generar primero la secuencia de entrada en una manera off-line y
examinar sus características antes de aplicarlo al sistema.
2. Tratamiento previo de los datos capturados. Es necesario observar y reparar los datos
erróneos o innecesarios, eliminando tendencias a altas frecuencias.
3. Elección de la estructura del modelo. Se define el tipo de modelo a utilizar: lineal o no
lineal, discreto o continuo, es decir, hay que determinar la estructura deseada. Para ello se debe
tener un conocimiento previo del sistema (conocer la leyes físicas que rigen el proceso).
9
CAPITULO 2 IDENTIFICACIÓN DE SISTEMAS
Conocimiento Previo
Diseño del
Experimento
Acondicionamiento Selección
de Estructura del
Datos E/S Criterio de Ajuste de
modelo Parámetros
Validación
NO
OK?
SI
Métodos de Identificación
frecuencia y carece de memoria. G(q) y H(q) son funciones racionales del operador q , siendo
filtros de orden finito que modelizan la parte determinista y la parte estocástica
respectivamente.
Tanto G (q, θ ) como H (q, θ ) son funciones de transferencia con cocientes de polinomio del
tipo:
B (q ) b1 q − nk + b2 q − nk −1 + ... + bnb q − nk − nb +1
G ( q,θ ) = = (2.3.1)
F (q) 1 + f1 q −1 + ... + f nf q − nf
A partir del modelo (2.3) se puede definir una familia de modelos lineales discretos.
B(q) (2.3.3)
Resultando: y (t ) = u (t ) + e(t )
F (q)
∑
u B y
B(q ) C (q )
y (t ) = u (t ) + e(t ) (2.3.4)
F (q) D(q )
La siguiente figura representa el modelo Box- Jenkis:
C
D
y
u
∑
En este caso los polinomios F(q) y D(q) de la ecuación (2.3.1) y (2.3.2) son iguales a A(q),
esto quiere decir F(q)=D(q)=A(q),
donde:
Lo que resulta:
1 y
u B
∑ A
Los polinomios F(q), D(q), A(q) y C(q) de la ecuación (2.3.1) y (2.3.2) toman el valor de la
unidad, esto quiere decir: F(q)=D(q)=A(q) y C(q) = 1.
y
1
∑
u B
A
B(q) C (q)
Modelo Box-Jenkis A(q) = 1 y (t ) = u (t ) + e(t )
F (q) D(q)
(BJ)
Donde . denota la norma del vector. La solución al problema de optimización visto arriba
y (t ) = ϕ T (t )θ + ν (t ) (2.4.5)
siendo: y(t) es el valor de la salida en el instante t, ϕ (t ) es el vector regresor o información, y
θ es el vector de parámetros.
ϕ (t ) = [− y (t − 1) ... − y (t − na) u (t − nk − 1) ... u (t − nb − nk )]T (2.4.6)
y (1) = ϕ T (1)θˆ
y (2) = ϕ T (2)θˆ
. (2.4.7)
.
.
y ( N ) = ϕ T ( N )θˆ
Y = φθˆ
siendo: Y un vector de dimensión N, Y = [ y (1) y (2) ... (n)] y φ = [ϕ (1) ϕ (2) ... ϕ ( N )] .
T T
ε = Y − φθˆ (2.4.8)
con ε =( ε (1)... ε (N))T.
min
θˆ
1
2
[
V (θ ) = V (θˆ) = Y T Y − Y T φθ − θ T φ T Y + θ T φ T φθ . ] (2.4.9)
θˆ = (φ T φ ) −1 φ T Y (2.4.10)
La ecuación anterior se puede escribir como un producto de sumas finitas:
−1
⎡N ⎤ ⎡N ⎤
θˆ = ⎢∑ ϕ (t )ϕ (t ) T ⎥ ⎢∑ ϕ (t ) y (t )⎥ (2.4.11)
⎣ t =1 ⎦ ⎣ t =1 ⎦
de la cual, conocido el orden del modelo: na, nb y nk, es fácilmente calculable el valor de sus
parámetros.
Otro criterio propuesto por Akaike es Final Prediction Error Criterion (FPE):
N+P
FPE ( p) = V (θ ) (2.8)
N −P
Una propiedad atractiva, tanto del criterio de AIC como FPE, es que el orden del modelo se
determina como resultado de valor mínimo del criterio y no es necesario evaluarlo en función
de unos niveles de confianza como es el caso del método estadístico.
CAPITULO 3
IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO
MATLAB Y OCTAVE
suelen encontrarse almacenados en archivos ascii, que pueden ser cargados en el Workspace
de Matlab mediante la función load para el posterior trabajo con los mismos.
Los datos de entrada-salida, cargados en el toolbox, deben recibirse en una matriz de dos
columnas y N filas, siendo N el número de datos (muestras) de entrada-salida registrados. En
la primera columna deben aparecer las salidas en sucesivos periodos de muestreo y en la
segunda las correspondientes entradas.
Identificación Paramétrica
El Toolbox de Identificación (SIT) contiene una gran variedad de modelos paramétricos para
sistemas lineales. Todos ellos se ajustan a la siguiente estructura general:
B (q ) C (q)
A(q) y (t ) = u (t ) + e(t ) (3.1)
F (q) D(q)
donde u (t ) , y (t ) y e(t ) son la entrada, salida y ruido del sistema respectivamente, y A , B ,
C , D y F son polinomios función del operador desplazamiento (q ) .
El toolbox cuenta con un conjunto de funciones para realizar la estimación paramétrica:
ar Estimación de un modelo AR usando diversos criterios como adelante – atrás, el método
Validación de modelos
Los métodos de validación proporcionados por el Toolbox de Identificación se basan en la
simulación del modelo obtenido, y la comparación entre su salida y la respuesta real del
sistema. Los comandos disponibles son:
compare Compara la salida simulada/predicha con la salida real del sistema.
dlsim Simulación de un modelo.
pe Cálculo de errores de predicción de un modelo.
Predict Calcula en m pasos predicciones futuras del modelo.
resid Calcula y prueba los residuos asociados al modelo.
Octave no cuenta con un toolbox para identificación de sistemas, sin embargo para cumplir
uno de los objetivos del proyecto se realizó algunos scripts utilizando el método de mínimos
cuadrados para estimar un modelo de estructura ARX. Ver apéndice A el script arx2g.m. Para
23
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
obtener los datos de entrada y salida que se utilizarán en la estimación del modelo del sistema
Pendubot del Laboratorio de Sistemas de Control.
El SIT ofrece una técnica de identificación que se encuentra implementada con el comando
arx, se pudiera pensar porque no agrupar las carpetas que contiene este comando e
implementarlas en octave, sin embargo no es tan sencillo como se piensa ya que este llama a
su vez un conjunto de funciones propias de Matlab. El comando arx del SIT hace
aproximadamente unas 24 llamadas, de las cuales unas 12 llamadas son a comandos propios
de Matlab; es por esto que se hace imposible copiarlo e implementarlo en Octave. De allí la
necesidad de programar una rutina que permita hacer la identificación de un sistema utilizando
el método de mínimos cuadrados. Para esta identificación se utilizó la estructura ARX, ya que
es la recomendada en las bibliografías más importantes.
3.3. El Pendubot
Las articulaciones del Pendubot son de aluminio con 0,635cm de espesor cada una. La
articulación 1 posee 15,25cm de longitud y está acoplada directamente al eje de un motor de
corriente continua de 90V, de imán permanente controlado por corriente, mientras que la
articulación 2 es de 22,86cm de longitud. El motor es manejado a través de un servo
amplificador por modulación de ancho de pulsos (PWM) en modo de torque (o corriente) y
ajustado para una ganancia de 1V a la entrada equivalente a 1,2A de salida [8].
24
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
El Pendubot presenta una serie de características interesantes que pueden ser usadas en el
campo de la investigación y la educación. Se pueden implementar diversos métodos de control
tales como control lineal, control no lineal, control adaptativo y robusto, lógica difusa, control
inteligente, control híbrido y otros, así como desarrollar aplicaciones de identificación,
compensación de fricción, control de oscilación o trayectoria, control de balanceo, etc.
3.4. El Péndulo
Se denomina péndulo físico a cualquier péndulo real que no tiene toda la masa concentrada en
un punto. La figura 3.1 representa un cuerpo real que esta separado con un ángulo q de su
posición de equilibrio. La distancia del eje al centro de gravedad es L, el momento de inercia
de la articulación respecto a su centroide es I, la masa del péndulo m y cm el centro de masa.
El péndulo de estudio presenta fricción entre el eje de motor y los cojinetes del servomotor.
Un brazo robótico es afectado por fricción, por lo tanto el modelo de la dinámica del péndulo
considerando la fuerza de fricción presente en el sistema se representa como:
Donde F representa el modelo de fricción del sistema, cuya forma más simplificada se reduce
a la fricción viscosa y se expresa como F = αq& , que consiste en el término de
amortiguamiento o disposición de energía del sistema. La ecuación del péndulo con fricción se
expresa como:
(mL2 + I )q&& + αq& + mLg sin( q ) = τ (3.3)
A partir de (3.3) la ecuación dinámica del péndulo se puede escribir como:
θ 2 g sin( q1 ) αq 2 τ
f 2 (q1, q 2 , u ) = q& 2 = − − + .
θ1 θ1 θ1
Los puntos de equilibrio del sistema se obtienen al igualar a cero, simultáneamente las
ecuaciones diferenciales de primer orden (3.5) y considerar un par de alimentación al sistema
nulo τ = 0 , es decir:
f 1 (q1 , q 2 , u ) = 0, ⇒ q 2 = 0 (3.6)
f 2 (q1 , q 2 , u ) = 0, ⇒ sen(q1 ) = 0
q1 = q1op e igualar a cero las ecuaciones (3.6), parametrizando en función de q1op se tiene que:
q1op = q op (3.7)
q 2 op = 0
τ op = θ 2 gsen(q op )
26
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
La no linealidad presente en el modelo del sistema está dada por el término θ 2 gsen(q ) .
El análisis del sistema y el diseño de los algoritmos de control harán uso de una versión lineal
del modelo la cual está basada en la expansión de la serie de Taylor:
∂F ∂F
f 1 (q,τ ) = f 0 (q op ,τ op ) + q op ,τ op (q − q op ) + q op ,τ op (τ − τ op ) (3.8)
∂q ∂τ
estados, τ el control de entrada para el péndulo y q op y τ op los valores de equilibrio para los
⎡( q1 − q1op ) ⎤
donde x = ⎢ ⎥ ; u = ( τ τ op ) [ ]
⎢( q 2 − q 2 op )⎥
⎣ ⎦
La matriz A del sistema se obtiene al derivar las ecuaciones (3.6) respecto los estados y
evaluarla en q op y τ op .
⎡ ∂f 1 ∂f 1 ⎤
∂F ⎢ ∂q1 ∂q 2 ⎥
A= =⎢ q ,τ
∂f 2 ⎥⎥ op op
(3.10)
∂q ⎢ ∂f 2
⎢⎣ ∂q1 ∂q 2 ⎥⎦
La matriz B del sistema se obtiene al derivar las ecuaciones (3.6) respecto a la señal de
control y evaluarla en q op y τ op .
27
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
⎡ ∂f 1 ⎤
⎢ ∂τ ⎥
∂F ⎢ ⎥
B= =⎢ ⎥ q op ,τ op (3.11)
∂τ ⎢ ⎥
∂f
⎢ 2⎥
⎣ ∂τ ⎦
El sistema lineal resultante para (3.6) dado por (3.9) tiene la forma:
⎡ 0 ⎤
1 ⎡ 0 ⎤
x& = ⎢ θ 2 g cos( q1op ) α⎥ x+⎢ 1 ⎥u (3.12)
⎢− − ⎥ ⎢ ⎥
⎣ θ1 θ1 ⎦ ⎣ θ1 ⎦
Una vez conocido el modelo dinámico del péndulo se procede hacer la identificación del mismo.
Se realizará la identificación del sistema alrededor de dos puntos de operación. Los puntos de
operación fijados para realizar el trabajo experimental tienen como coordenadas de posición:
q1op = 0 [rad ] q 2 op = 0 (0 , 0)
π π
q op = [rad ] q 2 op = 0 ( , 0)
6 6
En el presente capítulo se hace una comparación de las diferentes experiencias realizadas con
el péndulo, haciendo uso del dSPACE sistema de supervisión y control conectada con el
software interactivo Cockpit y Trace se siguieron los pasos de la práctica Nro. 2 realizada
por González G. [8]. Se obtiene la respuesta temporal del sistema ante una señal de entrada
binaria pseudo aleaotoria (PRBS) para escalones de diferentes amplitudes 0.05, 0.1 y 0.2,
28
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
utilizando un diferencial de tiempo (DT) de 1 y 1/2 constante de tiempo para generar la señal
PRBS. .
Para cada una de estas experiencias se realiza la identificación del sistema usando una
estructura de modelo ARX mediante el método de mínimos cuadrados. La estimación de los
parámetros se realiza a través del comando arx del SIT haciendo uso del script realizado en
Octave (Ver apéndice A).
3.6. Experiencias en el punto de operación ( q op = 0 [rad ] , q 2 op = 0 )
Con una señal de entrada binaria pseudo aleatoria (PRBS) a partir de un valor de
diferencial amplitud DA=0.05 [Nm] y un diferencial de tiempo DT=0,15 [seg] (1/2 Cte de
tiempo).
La siguiente figura 3.1 muestra la señal de entrada PRBS y la salida del sistema generada a
partir de un DA=0,15 [seg] y un DT=0,15 [seg].
Figura 3.1 Señal de entrada PRBS DA=0,05 [Nm] y DT=0,15 [seg] y respuesta del sistema.
Salida del comando arx del SIT fijando los ordenes na=2; nb=2; nk=1.del modelo ARX.
Discrete-time IDPOLY model: A(q)y(t) = B(q)u(t) + e(t)
A(q) = 1 - 1.464 q^-1 + 0.622 q^-2
B(q) = 0.1696 q^-1 + 0.05183 q^-2
Estimated using ARX from data set datos
Loss function 8.34587e-007 and FPE 8.77114e-007
Sampling interval:0.01
29
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
a. ¿Qué tan bueno es el modelo? Una forma de hacerlo es simularlo y comparar la salida del
modelo con la salida medida. Utilizando el comando Compare del System Identification
Toolbox.
compare(zv,m1,'r')
Figura 3.2. Salida real del sistema y la salida estimada con el comando arx del SIT.
b. Comparación con el Script arx2g1.m realizado en Octave (Ver Apéndice A) para estimar
los parámetros del Modelo ARX utilizando el método mínimos cuadrados.
Tabla 2. Parámetros estimados por comando arx del SIT y Script realizado en Octave.
30
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Figura 3.3. Salida real y la Salida Estimada utilizando el Script arx2g1.m realizado en Octave.
31
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Con una señal de entrada PRBS a partir de un valor de diferencial amplitud DA=0.2
[Nm] y un diferencial de tiempo DT=0,15 [seg] (1/2 Cte de tiempo).
Figura 3.4. Señal de entrada PRBS, DA=0,2 [Nm] , DT=0,15 [seg] y respuesta del sistema
Salida del comando arx del SIT fijando los ordenes na=3; nb=2; nk=1.del modelo ARX.
compare(zv,m1,'r')
Figura 3.5. Salida real del sistema y la salida estimada con el comando arx del SIT.
b. Comparación con el Script realizado en Octave (Ver Apéndice A) para estimar los
parámetros del Modelo ARX utilizando el método mínimos cuadrados.
Parámetro Comando ARX de Script en Octave Porcentaje de
MATLAB Similitud
a1 -2.224 -2.199 98.87%
a2 1.694 1.647 97.22%
a3 -0.3877 -0.3618 93.32%
b1 0.1985 0.2087 95.11%
b2 -0.06994 -0.0780 89.66%
Tabla 3. Parámetros estimados por el comando arx del SIT y Script realizado en Octave.
33
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Figura 3.6. Salida real y la Salida Estimada utilizando el Script realizado en Octave.
Con una señal de entrada PRBS a partir de un valor de diferencial amplitud DA=0.1
[Nm] y un diferencial de tiempo DT=0,30 [seg] (1 Cte de tiempo).
Figura 3.7. Señal de entrada PRBS, DA=0,1 [Nm] y DT=0,30 [seg] y respuesta del sistema.
34
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Salida del comando arx del SIT fijando los ordenes na=3; nb=1; nk=1.del modelo ARX.
compare(zv,m1,'r')
Figura 3.8. Salida real del sistema y la salida estimada con el comando arx del SIT.
35
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Figura 3.9. Salida real y la Salida Estimada utilizando el Script realizado en Octave.
c. Comparación con el Script realizado en Octave (Ver Apéndice A) para estimar los
parámetros del Modelo ARX utilizando el método mínimos cuadrados.
Con una señal de entrada PRBS a partir de un diferencial amplitud DA=0.2 [Nm] y un
diferencial de tiempo DT=0,30 [seg] (1 Cte de tiempo).
Figura 3.10. Señal de entrada PRBS, DA=0,2 [Nm] , DT=0,30 [seg] y respuesta del sistema .
Salida del comando arx del SIT fijando los ordenes na=3; nb=1; nk=1.del modelo ARX.
compare(zv,m1,'r')
Figura 3.11. Salida real del sistema y la salida estimada con el comando arx de SIT.
b. Comparación con el Script realizado en Octave (Ver Apéndice A) para estimar los
parámetros del Modelo ARX utilizando el método mínimos cuadrados.
Parámetro Comando ARX de Script en Octave Porcentaje de
MATLAB Similitud
a1 -1.809 -1.744 96.41%
a2 1.128 1.018 97.22%
a3 -0.2103 -0.1586 90.25%
b1 0.1624 0.1779 91.29%
Tabla 5. Parámetros estimados por el comando arx del SIT y Script realizado en Octave
38
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Figura 3.12. Salida real y la Salida Estimada utilizando el Script realizado en Octave.
39
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
π
3.7. Experiencias en el punto de operación q1op = [rad ] , q 2 op = 0
6
Con una entrada PRBS a partir de un valor de diferencial amplitud DA=0.05 [Nm] y un
diferencial de tiempo DT=0,15 [seg] (1/2 Cte de tiempo).
Figura 3.13. Señal de entrada PRBS, DA=0,05 [Nm] , DT=0,15 [seg] y respuesta del sistema .
Salida del comando arx del SIT fijando los ordenes na=4; nb=3; nk=2.del modelo ARX.
Discrete-time IDPOLY model: A(q)y(t) = B(q)u(t) + e(t)
A(q) = 1 - 0.9653 q^-1 - 0.396 q^-2 - 0.04861 q^-3 + 0.4277 q^-4
B(q) = 0.0164 q^-2 + 0.009723 q^-3 + 0.003554 q^-4
Estimated using ARX from data set datos
Loss function 2.83833e-007 and FPE 2.86855e-007
Sampling interval:1
40
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Figura 3.14. Salida real del sistema y la salida estimada con el comando arx del SIT
b. Comparación con el Script realizado en Octave (Ver Apéndice A) para estimar los
parámetros del Modelo ARX utilizando el método mínimos cuadrados.
Parámetro Comando ARX de Script en Octave Porcentaje de
MATLAB Similitud
a1 -0.9653 -0.9876 97.74%
a2 -0.396 -0.364 91.97%
a3 -0.0486 -0.0409 84.16%
a4 0.4277 0.4104 95.95%
b1 0.0164 0.0160 97.56%
b2 0.0097 0.0095 97.39%
b3 0.0036 0.0041 87.80%
Tabla 6. Parámetros estimados por el comando arx del SIT y Script realizado en Octave
41
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Figura 3.15. Salida real y la Salida Estimada utilizando el Script realizado en Octave.
42
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Figura 3.16. Señal de entrada PRBS DA=0,2 [Nm] , DT=0,15 [seg] y respuesta del sistema
Salida del comando arx del SIT fijando los ordenes na=3; nb=1; nk=1.del modelo ARX.
Figura 3.17. Salida real del sistema y la salida estimada con el comando arx de SIT.
b. Comparación con el Script realizado en Octave (Ver Apéndice) para estimar los parámetros
del Modelo ARX utilizando el método mínimos cuadrados.
Parámetro Comando ARX de Script en Octave Porcentaje de
MATLAB Similitud
a1 - 1.427 -1.450 98.41%
a2 - 0.12 -0.07 58.33%
a3 0.5557 0.5318 95.69%
b1 0.0162 0.0168 96.43%
Tabla 7. Parámetros estimados por el comando arx del SIT y Script realizado en Octave
44
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Figura 3.18. Salida real y la Salida Estimada utilizando el Script realizado en Octave.
45
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Con una señal de entrada PRBS a partir de un valor de diferencial amplitud DA=0.1
[Nm] y un diferencial de tiempo DT=0,30 [seg] (1 Cte de tiempo).
Figura 3.19. Señal de entrada PRBS DA=0,1 [Nm] , DT=0,30 [seg] y respuesta del sistema .
Salida del comando arx del SIT fijando los ordenes na=3; nb=2; nk=1.del modelo ARX.
Discrete-time IDPOLY model: A(q)y(t) = B(q)u(t) + e(t)
A(q) = 1 - 1.334 q^-1 - 0.2839 q^-2 + 0.627 q^-3
B(q) = 0.003394 q^-1 + 0.01558 q^-2
Estimated using ARX from data set datos
Loss function 3.4775e-007 and FPE 3.5039e-007
Sampling interval:1
46
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Figura 3.20. Salida real del sistema y la salida estimada con el comando arx de SIT.
b. Comparación con el Script realizado en Octave (Ver Apéndice A) para estimar los
parámetros del Modelo ARX utilizando el método mínimos cuadrados.
Parámetro Comando ARX de Script en Octave Porcentaje de
MATLAB Similitud
a1 - 1.334 -1.338 99.70%
a2 - 0.2839 -0.2754 97.00%
a3 0.627 0.623 99.36%
b1 0.00334 0.0034 98,24%
b2 0.0156 0.0156 100%
Tabla 8. Parámetros estimados por el comando arx del SIT y Script realizado en Octave
47
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Figura 3.21. Salida real y la Salida Estimada utilizando el Script realizado en Octave.
Con una señal de entrada PRBS a partir de un valor de diferencial amplitud DA=0.2
[Nm] y un diferencial de tiempo DT=0,30 [seg] (1 Cte de tiempo).
Figura 3.22. Señal de entrada PRBS DA=0,2 [Nm] , DT=0,30 [seg] y respuesta del sistema
48
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Salida del comando arx del SIT fijando los ordenes na=3; nb=2; nk=1.del modelo ARX.
Discrete-time IDPOLY model: A(q)y(t) = B(q)u(t) + e(t)
A(q) = 1 - 1.99 q^-1 + 0.9949 q^-2
B(q) = 0.009968 q^-1
Estimated using ARX from data set pendulo5
Loss function 1.16393e-006 and FPE 1.16923e-006
Sampling interval:1
Figura 3.22. Salida real del sistema y la salida estimada con el comando arx de SIT.
49
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
b. Comparación con el Script realizado en Octave (Ver Apéndice A) para estimar los
parámetros del Modelo ARX utilizando el método mínimos cuadrados.
Figura 3.23. Salida real y la Salida Estimada utilizando el Script realizado en Octave
50
CAPITULO 3 IDENTIFICACIÓN DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
Análisis de Resultados
Con el fin de validar el modelo identificado por el script realizado en Octave, se comparara los
diferentes ordenes ante una misma señal de entrada, se utilizara el sistema excitado con una
señal de entrada PRBS de amplitud 0.05 [Nm] y un diferencial de amplitud 0,15 [seg],
alrededor del origen.
Función de Criterio de
na nb nk Ajuste
Perdida (FP) Akaike (AIC)
2 1 1 60.14% 3.9762e-005 4.35
2 2 1 76.16% 1.4672e-005 3.38
3 1 1 72.34% 1.9749e-005 4.67
3 2 1 73.04% 1.9046e-005 4.68
3 3 1 73.03% 1.9333e-005 4.66
4 1 1 66.16% 3.0005e-005 4.49
4 2 1 67.21% 2.8595e-005 4.49
4 3 1 66.81% 2.9749e-005 4.47
4 4 1 65.79% 3.2081e-005 4.43
Esta tabla anterior muestra que el modelo optimo es na=2, nb= 2, y nk=1; ya que el ajuste es
mayor, la función de perdida es menor y el criterio de Akaike es menor. Se dejo fijo el valor
de nk igual a 1 debido a que experimentalmente [8] se obtuvo que el sistema no presenta
retardo.
4
CAPITULO 3 IDENTIFICACION DE UN MODELO ARX UTILIZANDO MATLAB Y OCTAVE
CAPITULO 4
INTERFAZ WEB CON PHP Y OCTAVE
En este capítulo se presenta la interfaz realizada en PHP, como primer punto una introducción
a la identificación de sistemas, el proceso de identificación de sistemas, se conocerá el método
de estimación de parámetros mediante el uso de mínimos cuadrados, la estructura de modelos
lineales discretos y el caso particular de modelos ARX. Existe un enlace que permite ver el
vídeo de la captura de datos del Pendubot y se describirá el diseño del mismo.
Esta interfaz también permite a los usuarios descargar y ejecutar los scripts desarrollados en
Octave. Estos programas aplican el método de mínimos cuadrados para la estimación de
parámetros de los modelos. Permite que el usuario pueda identificar el péndulo ubicado en el
laboratorio de control, usando una estructura de modelo ARX, así como también se puede ver
π
cada una de las experiencias realizadas con el péndulo alrededor de q = (0,0) y q = ( ,0) ,
6
con distintas señales de entrada de tipo binaria pseudo aleatoria (PRBS).
El sistema permite la identificación del péndulo físico a distancia, de modo que cualquier
estudiante puede acceder a ello por medio de Internet aprovechando la interacción entre PHP y
Octave. Dicha interacción permite el diálogo entre el ordenador y el motor de cálculo de
Octave instalado en el servidor, convirtiendo así cualquier computador con conexión a Internet
en un potencial laboratorio. Dicho sistema es capaz de mostrar los resultados e imágenes de la
estimación de parámetros de un modelo ARX. Una característica importante es que cuenta con
un formulario, es decir una plantilla o página con espacios vacíos que admite introducir el
valor de orden del polinomio A(q) (na), orden del polinomio B(q) nb y nk, que es el retardo de
la entrada u (t ) con respecto a la salida y (t ) , realizando así la estimación de cada experiencia
según lo que el usuario desee.
decir se utiliza la misma plantilla de éste con mínimas modificaciones. La única modificación
es que se cargará un archivo de datos (de entrada y salida del péndulo) diferente para cada
caso de estudio.
4.1. Página de Inicio
La página de inicio permite leer una breve introducción sobre identificación de sistemas.
Seguidamente se muestra el script realizado en PHP y HTML y posteriormente se hace una
explicación del mismo.
?>
<html>
<head>
<title>Principal</title>
<link href="estilo.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
<!--
body {
background-color: #000000;
}
.Estilo1 {font-family: Verdana, Arial, Helvetica, sans-serif}
.Estilo2 {font-family: Verdana, Arial, Helvetica, sans-serif; font-
weight: bold; }
.Estilo3 {color: #0000CC}
--></style>
</head>
<body>
<!--Etiquetas table conforman la tabla principal del sitio -->
<table width="813" height="100%" border="0" align="center"
cellpadding="00" cellspacing="00" bgcolor="#FFFFFF">
<!-- Etiquetas tr y td representan las columnas y las filas-->
<tr><td height="150" colspan="3" valign="bottom">
<div align="center">
<?php include('banner.html'); ?>
</div> </td>
</tr><tr>
<td height="21" colspan="3" background="images/barraS.jpg">
<div align="right" class="fechaB">
<?= show_date();
?> </div>
</td> </tr>
<tr>
<td width="20%" valign="top">
<table width="171" border="0" align="center" cellpadding="0"
cellspacing="0">
<tr>
<td width="171" height="19" valign="top">
<?php include("menu.html");?> </td>
</tr><tr>
<td height="17" valign="top"><img src="images/inferiorM.gif"
width="171" height="15"></td> </tr>
</table>
</td> <td width="80%" colspan="2" valign="middle">
<table width="98%" height="100%" border="0" align="center"
cellpadding="0" cellspacing="5" >
<tr>
<td height="225" valign="top" bgcolor="#F3F3F3"><blockquote>
<br> <p class="Estilo2">Identificación de sistemas</p>
55
CAPITULO 4 INTERFAZ WEB CON PHP Y OCTAVE
Etiquetas style CSS las cuales contiene el estilo de la página: color de fondo, de letra, tipo..
etc.
<style type="text/css">
<table width="813" height="100%" border="0" align="center"
cellpadding="00" cellspacing="00" bgcolor="#FFFFFF"> Etiqueta table,
Conforma la tabla principal del sitio.
<?php include('banner.html'); Se inicia PHP y se incluye el archivo banner.html
que contiene el banner hecho en flash.
<?php include("menu.html"); Se abre PHP y carga el archivo menu.html que contiene
el menu del sitio.
<?php include('pie.html'); Carga el archivo pie.php que contiene el pie de pagina.
Después de conocer un poco sobre identificación de sistemas, hay un enlace que permite al
usuario ver el proceso de identificación, mostrando un esquema del mismo.
Esta página se hace siguiendo los mismos lineamientos explicados anteriormente.
57
CAPITULO 4 INTERFAZ WEB CON PHP Y OCTAVE
En esta página hay un vínculo hacia el método de mínimos cuadrados, el cual explica
resumida y detalladamente el principio del mismo. El enlace se hace de la siguiente manera:
<a href="minimo.php" class="Estilo3 Estilo5"> Crea el enlace o hipervínculo a
mínimo.php el cual contiene la página que explica el método de mínimos cuadrados (Ver
Figura 4.3).
58
CAPITULO 4 INTERFAZ WEB CON PHP Y OCTAVE
Luego se accede a una descripción del péndulo y una foto del Pendubot ubicado en el
Laboratorio de Sistemas de Control. El Pendubot es usado para realizar experiencias de
entrada/salida y a partir de estos datos hacer la identificación vía Internet. Se puede ver desde
aquí un video que muestra el proceso de captura de datos del Pendubot (Ver Figura 4.5). El
vídeo es descargado en la siguiente dirección http://es.youtube.com/watch?v=lvOI64HuYxQ.
60
CAPITULO 4 INTERFAZ WEB CON PHP Y OCTAVE
<embed src="http://www.youtube.com/v/lvOI64HuYxQ&hl&fmt=18=es"
type="application/x-shockwave-flash"wmode="transparent"width="499"
height="434"></embed>
</object></td>
</tr> <tr>
<td align="center" style="font-family:Verdana;"><strong>Obtencion
de datos del pendubot</strong></td>
</tr>
</table>
El comando table crea una tabla en el cual se muestra el vídeo, la etiqueta <embed> es la
que se utiliza para insertar archivos de vídeo. A través del atributo src hay que especificar la
ruta y el nombre del archivo de vídeo.
<paramname="movie" La forma más común de insertar un archivo de Flash.
La etiqueta <param> no necesita etiqueta de cierre, y ha de contener los atributos name y
value. El atributo name indica el nombre de la característica que va a ser definida, y value
indica su valor. Las animaciones Flash se reproducen de forma automática al cargarse la
página y su reproducción es continua.
La siguiente opción del menú accede a los ejemplos. Se muestran tres típicos ejemplos de
estimación de parámetros utilizando el método de mínimos cuadrados. Esta aplicación
ejecuta el script elaborado en Octave y retorna el resultado, que en este caso es una imagen de
tipo png. También se puede descargar el script.
62
CAPITULO 4 INTERFAZ WEB CON PHP Y OCTAVE
m2: yˆ = b0 + b1u
m3: yˆ = b0 + b1u + b2 u 2
Se estima la curva de regresión que mejor se ajusta a los datos, exponiendo que el modelo que
mejor se ajusta es el modelo 4, modelo de 3˚ orden, ya que la función de pérdida V (θˆ) es
menor con respecto a los otros modelos (Ver Figura 4.6).
El script ejemplo1.php es usado para generar la imagen (en este caso) o para mostrar a través
de una ventana lo que ha realizado Octave.
Para que la gráfica resultante del script realizado en Octave pueda ejecutarse es indispensable
colocar el siguiente comando en cada uno de los scripts elaborados en Octave:
__gnuplot_set__terminal png
Gnuplot soporta muchos recursos para diferentes gráficos. Gnuplot usa set__terminal para
generar la salida de un gráfico, en este caso la salida es una imagen de tipo PNG (Ver Figura
4.7).
64
CAPITULO 4 INTERFAZ WEB CON PHP Y OCTAVE
Se observa que el modelo que mejor se ajusta a los datos es el modelo 4, ya que presenta el
menor valor en la función de pérdida.
65
CAPITULO 4 INTERFAZ WEB CON PHP Y OCTAVE
¾ Datos Conocidos:
⎡a1 ⎤
θ = ⎢⎢a 2 ⎥⎥
b1
⎢⎣b2 ⎥⎦
Se realiza la estimación de dos maneras a través de ecuación normal del método de mínimos
cuadrados (ecuación 2.4.8) y mediante el gradiente es decir a partir de:
N N
V( θ ) = ∑ E 2 ( t ) = ∑ [ y(t) + a1 y(t - 1) + a 2 y(t - 2) - b1u(t - 1) - b2 u(t - 2)]
2
(4.3)
t =1 t =1
Desarrollando la ecuación (4.3) y realizando las derivadas parciales con respecto a cada uno de
los parámetros θ = ( a1 a2 b1 b2 ). Se obtiene un sistema de ecuaciones de la forma:
⎡ y(t - 1) 2 y(t - 1)y(t - 2) − y(t - 1)u(t - 1) - y(t - 1)u(t - 2)⎤ ⎡ â1 ⎤ ⎡ - y(t)y(t - 1)⎤
⎢ ⎥⎢ ⎥ ⎢ ⎥
⎢ y(t - 1)y(t - 2) y(t - 2) 2 - y(t - 2)u(t - 1) - y(t - 2)u(t - 2)⎥ ⎢â 2 ⎥ ⎢- y(t)y(t - 2)⎥
=
⎢− y(t - 1)u(t - 1) - y(t - 2)u(t - 1) u(t - 1) 2 u(t - 1)u(t - 2) ⎥ ⎢ b̂1 ⎥ ⎢ y(t)u(t - 1) ⎥
⎢ - y(t - 1)u(t - 2) u(t - 2) 2 ⎥ ⎢b̂ ⎥ ⎢ y(t)u(t - 1) ⎥
⎣ - y(t - 2)u(t - 2) u(t - 1)u(t - 2) ⎦⎣ 2 ⎦ ⎣ ⎦
A θˆ = B
Aθˆ = B ⇒ θˆ = A \ B
66
CAPITULO 4 INTERFAZ WEB CON PHP Y OCTAVE
En esta página se ejecuta el script realizado en Octave siguiendo los mismos comandos del
ejemplo anterior. Permitiéndole al usuario descargar el script en el caso que así lo desee.
Para descargar el script se editan las siguientes líneas de comando:
Ejemplo 3: Programa que estima los parámetros de dos sistemas, este ejemplo es tomado de
[2].
Los sistemas son simulados generando 1000 datos, con una entrada binaria pseudo aleatoria de
amplitud σ = 1. Se estima los parámetros mediante el método de mínimos cuadrados.
En este ejemplo se muestran los resultados gráficamente y se muestran los resultados de los
parámetros estimados. Para imprimir estos resultados en la ventana se edita el siguiente script
en PHP:
<?php
/*Programa que realiza la ejecución de GNU Octave a través de la
función passthru y retorna el resultado, en este caso una imagen de
tipo png.
Autor: Br.Maria Elena Noriega
Tutor: Prof.Pablo Lischinsky.
Realizado el 25/03/2008.*/
header("Content-type: text/html");/*Función que envia el resultado.*/
passthru('/usr/bin/octave --silent resul_ejerc3.m');/*Función que
ejecuta a GNU Octave.*/
?>
En este caso, el script retorna un resultado tipo texto es por esto que la función
header("Content-type: text/html"); indica que en la cabecera http se devuelve un
archivo de texto.
Igualmente se puede descarga el script hecho en Octave de la misma manera como fue
explicado en el ejemplo anterior.
68
CAPITULO 4 INTERFAZ WEB CON PHP Y OCTAVE
Siguiendo con las opciones de menú se localiza las experiencias con el péndulo alrededor de
un punto de operación 0. En esta página se puede observar las experiencias para cada valor
diferente de diferencial de amplitud (DA) y diferencial de tiempo (DT). Se puede ver
gráficamente el valor de DT y DA para una señal de entrada binaria pseudo aleatoria. Y se
puede hacer la identificación del péndulo usando una estructura de modelo ARX
introduciendo en un formulario diferentes valores de na, nb y nk, de forma análoga como lo
hace el SIT mediante el comando arx (Ver Figura 4.10).
69
CAPITULO 4 INTERFAZ WEB CON PHP Y OCTAVE
Figura 4.10: Interfaz gráfica para realizar las experiencias del péndulo alrededor de 0.
Para ver cada una de las experiencias se escriben las siguientes líneas de comando:
<a href="#"class="Estilo3"
onClick="ventana('ejercicios/4/43/verExpe/graf_ejemplo4_3.php')" >Ver
experiencia 3</a><a href="experiencia_3.php" class="Estilo3">
Luego de crear el vínculo con la etiqueta < a >< \a > con atributo href se muestra el
contenido que será visible en el navegador haciendo una llamada al evento con onClick
para cargar las experiencias entrada/salida que encuentra en el archivo graf_ejemplo4_3.php
(Ver Figura 4.11).
70
CAPITULO 4 INTERFAZ WEB CON PHP Y OCTAVE
Con este script se levanta la siguiente ventana que muestra las distintas experiencias:
Posteriormente, para identificar el modelo ARX utilizando cada una de las experiencias se
llena el formulario y se validan cada uno de los campos con la siguiente función, utilizando
javascript.
<script language='javascript'>
function validar(formX){ //Función validar que contiene las
condiciones de validar los campos
if(formX.na.value == ""){ //Condición si el campo esta vacío
alert("Ingrese Valor na");//Mensaje en caso de error
formX.na.focus(); // Colocamos el cursor en el elemento
formX.na.value = ""; //Limpiamos el campo
return false;//Retornamos false para que no se envíe el
formulario
}
if(isNaN(formX.na.value)){//Condición para saber si es numérico o no
alert("Solo se admiten datos numéricos");
formX.na.focus();
formX.na.value = "";
return false;
}
if(formX.na.value >6 || formX.na.value <=0){//Condición que evalúa el
rango de valor permitido
alert("Solo admite datos orden desde 1 hasta 6");
formX.na.focus();// Colocamos el cursor en el elemento
formX.na.value = "";//Limpiamos el campo
return false; //Retorna false para que no se envíe el
formulario
}
if(formX.nb.value == ""){
alert("Ingrese Valor nb");
formX.nb.focus();// Colocamos el cursor en el elemento
formX.nb.value = "";//Limpiamos el campo
return false; //Retorna false para que no se envíe el
formulario
}
if(isNaN(formX.nb.value)){
alert("Solo se admiten datos numéricos");
formX.nb.focus();// Coloca el cursor en el elemento
formX.nb.value = "";//Limpia el campo
return false; //Retorna false para que no se envíe el
formulario
}
if(formX.nb.value >6 || formX.nb.value <=0){
alert("Solo admite datos orden desde 1 hasta 6");
formX.nb.focus();// Coloca el cursor en el elemento
formX.nb.value = "";//Limpia el campo
return false; //Retorna false para que no se envíe el
formulario
}
72
CAPITULO 4 INTERFAZ WEB CON PHP Y OCTAVE
if(formX.nk.value == ""){
alert("Ingrese Valor nk");
formX.nk.focus();// Coloca el cursor en el elemento
formX.nk.value = "";//Limpia el campo
return false; //Retorna false para que no se envíe el
formulario
}
if(isNaN(formX.nk.value)){
alert("Solo se admiten datos numéricos");
formX.nk.focus();// Coloca el cursor en el elemento
formX.nk.value = "";//Limpia el campo
return false; //Retorna false para que no se envíe el
formulario
}
if(formX.nk.value >6 || formX.nk.value <=0){
alert("Solo admite datos orden desde 1 hasta 6");
formX.nk.focus();// Coloca el cursor en el elemento
formX.nk.value = "";//Limpia el campo
return false; //Retorna false para que no se envíe el
formulario
}
if(formX.nb.value > formX.na.value){
alert("El valor de nb no puede ser mayor que el de na");
formX.nb.focus();//Coloca el cursor en el elemento
formX.nb.value = "";//Limpia el campo
return false; //Retorna false para que no se envíe el
formulario
}
if(formX.nk.value > formX.nb.value){
alert("El valor de nb no puede ser mayor que el de na");
formX.nk.focus();//Coloca el cursor en el elemento
formX.nk.value = "";//Limpia el campo
return false; //Retorna false para que no se envíe el
formulario
}
Luego de validar cada uno de los campos se construye el formulario como sigue: (Ver Figura
4.12).
Figura 4.12: Formulario para realizar la estimación de parámetros de cada una de las
experiencias del Péndulo.
Figura 4.13: Interfaz gráfica resultante del script realizado en Octave para realizar la
identificación de la experiencia del péndulo.
En esta aplicación de igual forma se realiza la identificación del péndulo alrededor de π/6, con
los mismos eventos anteriormente mencionados, pero la misma no se muestra aquí pues no es
necesario dado que significaría mostrar prácticamente el mismo contenido ya mostrado.
75
CAPITULO 4 INTERFAZ WEB CON PHP Y OCTAVE
Finalmente la interfaz muestra la bibliografía manejada para llevar a cabo esta aplicación vía
Web (Ver Figura 4.14).
CAPITULO 5
CONCLUSIONES Y RECOMENDACIONES
La construcción de una herramienta de software libre vía Internet presenta el diseño de una
plataforma para la implementación de un laboratorio virtual interactivo. El sistema tiene la
ventaja de que el usuario puede disponer de esta herramienta las 24 horas del día, ya que es
accesible desde cualquier sitio con conexión a Internet.
BIBLIOGRAFÍA
[2] L. Ljung. System Identification. Theory for the user. Prentice Hall, 1994.
[6] W. Keith Nicholson. Álgebra lineal con aplicaciones. Mc Graww Hill. 2003.
[7] F. Gil, J. Tejedor, A. Yague, S. Alonzo y A. Gutiérrez. Creaciones de sitios web con PHP
4. Mc Graw Hill, 2001.
[9] Andy M. Ramírez. Uso de GNU Octave para simulación de Sistemas no Lineales.
Proyecto de grado en EISULA. Universidad de los Andes. Facultad de Ingeniería. Mérida
2006.
79
BIBLIOGRAFIA
[10] Yaneth Godoy. Cálculo numérico vía Web con PHP y GNU Octave: algunas aplicaciones
en sistemas de control. Proyecto de grado en EISULA. Universidad de los Andes. Facultad de
Ingeniería. Mérida 2006.
[11] Candelas, F., Sánchez J. Recursos didácticos basados en Internet para el apoyo a la
enseñanza de materias de área de ingeniería de sistemas y automática. España. 2005.
APÉNDICE A
Este apéndice contiene los scripts realizados en Octave.
Ejemplo1.m
#Programa que estima la recta de regresion que mejor se ajusta a
los datos, utlizando el metodo de #minimos cuadrados simple.El
modelo que mejor se ajusta a los datos es aquel cuya funcion de
#perdida sea minima.
#Autor: Br. Maria Elena Noriega R.
#Tutor: Prof. Pablo Lischinsky.
#Realizado el 28/03/2008.
#Datos de entrada y salida
u = [0 1 2 3 4 5 6]';
y = [1.2 1.9 2.4 3.7 4.9 6.1 7.8]';
figure;
plot(u,y,'ro',2)
hold on
grid
title('Comparación de los modelos aproximados por mínimos
cuadrados')
xlabel('u')
ylabel('y')
%Estimación de parámetros dado el Modelo 1
%y=b0;
fi = [ 1 1 1 1 1 1 1 ]';
%Ecuación normal del método de mínimos cuadrados
%teta = inv(fi'*fi)*fi'*y;
teta1=fi\y;
teta_vector= [teta1 teta1 teta1 teta1 teta1 teta1 teta1];
plot(u,teta_vector,'g-')
%Cálculo de la función de pérdida
v1=0;
for i=1:7
v1=(y(i) - fi(i,:)*teta1)^2+v1;
end
vt=v1/2;
%Estimación de parámetros dado el Modelo 2
% y = bo + b1 u
fi = [ 1 1 1 1 1 1 1 ;
0 1 2 3 4 5 6 ]';
81
APÉNDICE A
Ejemplo 2.m
#Programa que realiza la estimación de parámetros de un modelo de
la forma
# Y(t)+a1*Y(t-1)+a2*Y(t-2)=b1*U(t-1)+b2*U(t-2)
#utlizando el método de mínimos cuadrados resolviéndolo por la
ecuación normal y por la forma
#matricial
#Autor: Br. Maria Elena Noriega R.
#Tutor: Prof. Pablo Lischinsky.
#Realizado el 28/03/2008.
for i=3:1501
ym1(i,1)=-Teta1(1,1)*ym1(i-1)-Teta1(2,1)*ym1(i-
2)+Teta1(3,1)*u(i-1)+Teta1(4,1)*u(i-2);
end
%grafica comparativa de la salida real y la salida estimada
subplot(2,2,3)
plot(t,y,'r',t,ym1,'b')
grid
title('Salida Real y Salida Estimada');
%Calculo de la funcion de perdida
E1=abs(y-ym1);
V1=.5*(E1'*E1);
% b) Estimación de parámetros utilizando la Forma Matricial
%V(Teta)= Sumatoria(E^2)
a11=0;a12=0;a13=0;a14=0;
a21=0;a22=0;a23=0;a24=0;
a31=0;a32=0;a33=0;a34=0;
a41=0;a42=0;a43=0;a44=0;
b1=0;b2=0;b3=0;b4=0;
for i=3:1501
a11 = a11 + y(i-1)^2;
a12 = a12 + y(i-1)*y(i-2);
a13 = a13 - y(i-1)*u(i-1);
a14 = a14 - y(i-1)*u(i-2);
b1 = b1 - y(i)*y(i-1);
a21 = a21 + y(i-1)*y(i-2);
a22 = a22 + y(i-2)^2;
a23 = a23 - y(i-2)*u(i-1);
a24 = a24 - y(i-2)*u(i-2);
b2 = b2 - y(i)*y(i-2);
a31 = a31 - y(i-1)*u(i-1);
a32 = a32 - y(i-2)*u(i-1);
a33 = a33 + u(i-1)^2;
a34 = a34 + u(i-1)*u(i-2);
b3 = b3 + y(i)*u(i-1);
a41 = a41 - y(i-1)*u(i-2);
a42 = a42 - y(i-2)*u(i-2);
a43 = a43 + u(i-1)*u(i-2);
a44 = a44 + u(i-2)^2;
b4 = b4 + y(i)*u(i-2); end
A2=[a11 a12 a13 a14;a21 a22 a23 a24;a31 a32 a33 a34;a41 a42 a43
a44;];
B2=[b1;b2;b3;b4];
Teta2=A2\B2;
%Cálculo del y_estimado obtenido a través de la forma matricial
ym2(1,1)=y(1,1);
ym2(2,1)=y(2,1);
for i=3:1501
ym2(i,1)=-Teta2(1,1)*ym2(i-1)-Teta2(2,1)*ym2(i-
2)+Teta2(3,1)*u(i-1)+Teta2(4,1)*u(i-2);
84
APÉNDICE A
end
%Grafica comparativa de la salida real y la salida estimada
subplot(2,2,4)
plot(t,y,'r',t,ym2,'b')
grid
title('Salida real y Salida Estimada Forma Matricial');
%Calculo de la funcion de perdida
%V(Teta)= E'E
E2=abs(y-ym2);
V2=E2'*E2;
Ejemplo 3.m
#Programa que estima los parámetros de dos sistemas 1 y 2
respectivamente
#Se estimaran los parámetros para los dos sistemas
#Autor: Br. Maria Elena Noriega R.
#Tutor: Prof. Pablo Lischinsky.
#Realizado el 28/03/2008.
#La entrada sera una senal binaria pseudo aleotoria con una
amplitud de 1
u=idinput(1023,'prbs',[-1 1]);
n=size(u);
#Simulacion del sistema 1
q1=tf([1],[1 -0.8],1);
for i=1:n(1)
e(i) = randn(1);
end
T=1:n(1);
[y_ax1,x]=lsim(q1,u,T);
q2=tf([1 0],[1 -0.8],1);
e=e';
[y_ax2,x]=lsim(q2,e,T);
yt1=y_ax1+y_ax2;
subplot(2,2,1)
plot(u)
title('Entrada al Sistema')
subplot(2,2,2)
plot(yt1)
title('Salida del Modelo1')
#Simulacion del sistema 2
e=e';
yt2=y_ax1+e;
subplot(2,2,3)
plot(yt2)
title('Salida del Modelo2')
85
APÉNDICE A
4. Script realizado en Octave que ejecuta la estimación de parámetros para las experiencias
del péndulo.
arx2g.m
#ESTIMACION DE PARAMETROS UTILIZANDO MODELO ARX MEDIANTE EL METODO
DE MINIMOS CUADRADOS
#Autor: Br. Maria Elena Noriega R.
#Tutor: Prof. Pablo Lischinsky.
#Realizado el 28/03/2008.
warning("off");
load prbscincomedia
y=trace_y(2,:);
u=trace_y(1,:);
t=trace_x;
y=dtrend(y);
u=dtrend(u);
y=y';
u=u';
t=t';
86
APÉNDICE A
datos=[y,u];
n=size(y);
n=n(:,1);
subplot(2,2,1)
plot(t,u),grid;title('Entrada del Sistema U(t)'),xlabel('Tiempo
[seg]'),ylabel('Torque [N.m]');
title('Entrada del sistema')
subplot(2,2,2)
plot(t,y),grid,title('Datos Adquiridos Y(t)'),xlabel('Tiempo
[seg]'),ylabel('Posición [rad]');
title('Salida del sistema')
na=input('Introduce el valor de na:');
nb=input('Introduce el valor de nb:');
nk=input('Introduce el valor de nk:');
a11=0;
a12=0;
a13=0;
a14=0;
a15=0;
b11=0;
b12=0;
b13=0;
b14=0;
b15=0;
switch (na)
case (1)
for i=2:n
a11(i,1)=y(i-1);
end
case (2)
for i=2:n
a11(i,1)=y(i-1);
end
for i=3:n
a12(i,1)= y(i-2);
end
case (3)
for i=2:n
a11(i,1)=y(i-1);
end
for i=3:n
a12(i,1)= y(i-2);
end
for i=4:n
a13(i,1)= y(i-3);
end
case (4)
for i=2:n
a11(i,1)=y(i-1);
end
87
APÉNDICE A
for i=3:n
a12(i,1)=y(i-2);
end
for i=4:n
a13(i,1)= y(i-3);
end
for i=5:n
a14(i,1)= y(i-4);
end
case (5)
for i=2:n
a11(i,1)=y(i-1);
end
for i=3:n
a12(i,1)=y(i-2);
end
for i=4:n
a13(i,1)= y(i-3);
end
for i=5:n
a14(i,1)= y(i-4);
end
for i=6:n
a15(i,1)=y(i-5);
end
case (6)
for i=2:n
a11(i,1)=y(i-1);
end
for i=3:n
a12(i,1)=y(i-2);
end
for i=4:n
a13(i,1)= y(i-3);
end
for i=5:n
a14(i,1)= y(i-4);
end
for i=6:n
a15(i,1)=y(i-5);
end
for i=7:n
a16(i,1)=y(i-6);
end
otherwise
disp('solo hasta orden 6');
break;
end
switch (nb)
88
APÉNDICE A
case (1)
for i=nk+1:n
b11(i,1)=u(i-nk);
end
case(2)
for i=nk+1:n
b11(i,1)=u(i-nk);
end
for i=nk+nb:n
b12(i,1)=u(i-nk-nb+1);
end
case (3)
for i=nk+1:n
b11(i,1)=u(i-nk);
end
for i=nk+2:n
b12(i,1)= u(i-nk-1);
end
for i=nk+nb:n
b13(i,1)= u(i-nk-nb+1);
end
case (4)
for i=nk+1:n
b11(i,1)=u(i-nk);
end
for i=nk+2:n
b12(i,1)= u(i-nk-1);
end
for i=nk+3:n
b13(i,1)= u(i-nk-2);
end
for i=nk+nb:n
b14(i,1)=u(i-nk-nb+1);
end
case (5)
for i=nk+1:n
b11(i,1)=u(i-nk);
end
for i=nk+2:n
b12(i,1)= u(i-nk-1);
end
for i=nk+3:n
b13(i,1)= u(i-nk-2);
end
for i=nk+4:n
b14(i,1)=u(i-nk-3);
end
for i=nk+nb:n
b15(i,1)=u(i-nk-nb+1);
end
89
APÉNDICE A
case (6)
for i=nk+1:n
b11(i,1)=u(i-nk);
end
for i=nk+2:n
b12(i,1)= u(i-nk-1);
end
for i=nk+3:n
b13(i,1)= u(i-nk-2);
end
for i=nk+4:n
b14(i,1)=u(i-nk-3);
end
for i=nk+5:n
b15(i,1)=u(i-nk-4);
end
for i=nk+nb:n
b16(i,1)=u(i-nk-nb+1);
end
otherwise
disp('solo hasta orden 6');
end
a=0; b=0;
fi=zeros(n,na+nb);
if(na==1)
a=[a11];
else if (na==2)
a=[a11 a12];
else if (na==3)
a=[a11 a12 a13];
else if (na==4)
a=[a11 a12 a13 a14];
else if(na==5)
a=[a11 a12 a13 a14 a15];
else (na==6);
a=[a11 a12 a13 a14 a15 a16];
end end end end end
if(nb==1)
b=[b11];
else if (nb==2)
b=[b11 b12];
else if (nb==3)
b=[b11 b12 b13];
else if (nb==4)
b=[b11 b12 b13 b14];
else if(nb==5)
b=[b11 b12 b13 b14 b15];
else(nb==6);
b=[b11 b12 b13 b14 b15 b16];
end end end end end
90
APÉNDICE A
end
if(nb==2)
for i=3:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)+B(1,1)*u(i-
1)+B(1,2)*u(i-2);
end
end
if(nb==3)
for i=4:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)+B(1,1)*u(i-
1)+B(1,2)*u(i-2)+B(1,3)*u(i-3);
end
end
if(nb==4)
for i=5:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)+B(1,1)*u(i-
1)+B(1,2)*u(i-2)+B(1,3)*u(i-3)+B(1,4)*u(i-4);
end
end
if(nb==5)
for i=6:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)+B(1,1)*u(i-
1)+B(1,2)*u(i-2)+B(1,3)*u(i-3)+B(1,4)*u(i-4)+B(1,5)*u(i-5);
end
end
if(nb==6)
for i=7:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)+B(1,1)*u(i-
1)+B(1,2)*u(i-2)+B(1,3)*u(i-3)+B(1,4)*u(i-4)+B(1,5)*u(i-
5)+B(1,6)*u(i-6);
end
end
case(3)
if(nb==1)
for i=4:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-
3)+B(1,1)*u(i-1);
end
end
if(nb==2)
for i=4:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-
3)+B(1,1)*u(i-1)+B(1,2)*u(i-2);
end
end
if(nb==3)
for i=4:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-
3)+B(1,1)*u(i-1)+B(1,2)*u(i-2)+B(1,3)*u(i-3);
end
92
APÉNDICE A
end
if(nb==4)
for i=5:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-
3)+B(1,1)*u(i-1)+B(1,2)*u(i-2)+B(1,3)*u(i-3)+B(1,4)*u(i-4);
end
end
if(nb==5)
for i=6:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-
3)+B(1,1)*u(i-1)+B(1,2)*u(i-2)+B(1,3)*u(i-3)+B(1,4)*u(i-
4)+B(1,5)*u(i-5);
end
end
if(nb==6)
for i=7:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-
3)+B(1,1)*u(i-1)+B(1,2)*u(i-2)+B(1,3)*u(i-3)+B(1,4)*u(i-
4)+B(1,5)*u(i-5)+B(1,6)*u(i-6);
end
end
case(4)
if(nb==1)
for i=5:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)+B(1,1)*u(i-1);
end
end
if(nb==2)
for i=5:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)+B(1,1)*u(i-1)+B(1,2)*u(i-2);
end
end
if(nb==3)
for i=5:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)+B(1,1)*u(i-1)+B(1,2)*u(i-2)+B(1,3)*u(i-3);
end
end
if(nb==4)
for i=5:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)+B(1,1)*u(i-1)+B(1,2)*u(i-2)+B(1,3)*u(i-
3)+B(1,4)*u(i-4);
end
end
if(nb==5)
for i=6:n
93
APÉNDICE A
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)+B(1,1)*u(i-1)+B(1,2)*u(i-2)+B(1,3)*u(i-
3)+B(1,4)*u(i-4)+B(1,5)*u(i-5);
end
end
if(nb==6)
for i=7:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)+B(1,1)*u(i-1)+B(1,2)*u(i-2)+B(1,3)*u(i-
3)+B(1,4)*u(i-4)+B(1,5)*u(i-5)+B(1,6)*u(i-6);
end
end
case(5)
if(nb==1)
for i=6:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)-A(1,5)*ym1(i-5)+B(1,1)*u(i-1);
end
end
if(nb==2)
for i=6:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)-A(1,5)*ym1(i-5)+B(1,1)*u(i-1)+B(1,2)*u(i-2);
end
end
if(nb==3)
for i=6:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)-A(1,5)*ym1(i-5)+B(1,1)*u(i-1)+B(1,2)*u(i-
2)+B(1,3)*u(i-3);
end
end
if(nb==4)
for i=6:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)-A(1,5)*ym1(i-5)+B(1,1)*u(i-1)+B(1,2)*u(i-
2)+B(1,3)*u(i-3)+B(1,4)*u(i-4);
end
end
if(nb==5)
for i=6:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)-A(1,5)*ym1(i-5)+B(1,1)*u(i-1)+B(1,2)*u(i-
2)+B(1,3)*u(i-3)+B(1,4)*u(i-4)+B(1,5)*u(i-5);
end
end
if(nb==6)
for i=7:n
94
APÉNDICE A
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)-A(1,5)*ym1(i-5)+B(1,1)*u(i-1)+B(1,2)*u(i-
2)+B(1,3)*u(i-3)+B(1,4)*u(i-4)+B(1,5)*u(i-5)+B(1,6)*u(i-6);
end
end
case(6)
if(nb==1)
for i=7:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)-A(1,5)*ym1(i-5)-A(1,6)*ym1(i-6)+B(1,1)*u(i-1);
end
end
if(nb==2)
for i=7:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)-A(1,5)*ym1(i-5)-A(1,6)*ym1(i-6)+B(1,1)*u(i-
1)+B(1,2)*u(i-2);
end
end
if(nb==3)
for i=7:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)-A(1,5)*ym1(i-5)+B(1,1)-A(1,6)*ym1(i-6)*u(i-
1)+B(1,2)*u(i-2)+B(1,3)*u(i-3);
end
end
if(nb==4)
for i=7:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)-A(1,5)*ym1(i-5)-A(1,6)*ym1(i-6)+B(1,1)*u(i-
1)+B(1,2)*u(i-2)+B(1,3)*u(i-3)+B(1,4)*u(i-4);
end
end
if(nb==5)
for i=7:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)-A(1,5)*ym1(i-5)-A(1,6)*ym1(i-6)+B(1,1)*u(i-
1)+B(1,2)*u(i-2)+B(1,3)*u(i-3)+B(1,4)*u(i-4)+B(1,5)*u(i-5);
end
end
if(nb==6)
for i=7:n
ym1(i,1)=-A(1,1)*ym1(i-1)-A(1,2)*ym1(i-2)-A(1,3)*ym1(i-3)-
A(1,4)*ym1(i-4)-A(1,5)*ym1(i-5)-A(1,6)*ym1(i-6)+B(1,1)*u(i-
1)+B(1,2)*u(i-2)+B(1,3)*u(i-3)+B(1,4)*u(i-4)+B(1,5)*u(i-
5)+B(1,6)*u(i-6);
endend
otherwise
disp('solo hasta orden 6'); end
95
APÉNDICE A
3. Programa que valida los datos del formulario y se enlaza con .php ejecutando el script
para realizar la estimación de las diferentes experiencias.
Experiencia.php
/* Programa que valida los datos del formulario, crea el
formulario y hace el enlace que permite ejecutar el sript en
Octave para realizar la estimación de las diferentes experiencias
del Péndulo y descargar el script.
Autor: Br. Maria Elena Noriega R.
Tutor: Prof. Pablo Lischinsky.
Realizado el 28/03/2008.*/
if(formX.nb.value == ""){
alert("Ingrese Valor nb");
formX.nb.focus();
formX.nb.value = "";
return false;
}
if(isNaN(formX.nb.value)){
alert("Solo se admiten datos numericos");
formX.nb.focus();
formX.nb.value = "";
return false;
}
if(formX.nb.value >6 || formX.nb.value <=0){
alert("Solo admite datos orden desde 1 hasta 6");
formX.nb.focus();
formX.nb.value = "";
return false;
}
if(formX.nk.value == ""){
alert("Ingrese Valor nk");
formX.nk.focus();
formX.nk.value = "";
return false;
}
if(isNaN(formX.nk.value)){
alert("Solo se admiten datos numericos");
formX.nk.focus();
formX.nk.value = "";
return false;
}
if(formX.nk.value >6 || formX.nk.value <=0){
alert("Solo admite datos orden desde 1 hasta 6");
formX.nk.focus();
formX.nk.value = "";
return false;
}
if(formX.nb.value > formX.na.value){
alert("El valor de nb no puede ser mayor que el de na");
formX.nb.focus();
formX.nb.value = "";
return false;
}
if(formX.nk.value > formX.nb.value){
alert("El valor de nb no puede ser mayor que el de na");
formX.nk.focus();
formX.nk.value = "";
return false;
}
}
</script>
101
APÉNDICE B
<style type="text/css">
<!--
body {
background-color: #000000;
}
.Estilo1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 18px;
color: #FF6600;
}
.Estilo2 {font-family: Verdana, Arial, Helvetica, sans-serif}
.Estilo3 {color: #003399}
.Estilo4 {color: #0000CC}
.Estilo4 {font-family: Verdana, Arial, Helvetica, sans-serif;
color: #0000CC; }
.Estilo5 {font-size: 12px}
-->
</style>
</head>
<body>
<table width="813" height="100%" border="0" align="center"
cellpadding="00" cellspacing="00" bgcolor="#FFFFFF">
<tr>
<td height="150" colspan="3" valign="bottom">
<div align="center">
<?php include('banner.html');?>
</div> </td>
</tr> <tr>
<td height="21" colspan="3" background="images/barraS.jpg">
<div align="right" class="fechaB">
<?= show_date();?>
</div> </td>
</tr> <tr>
<td width="20%" valign="top">
<table width="147" border="0" align="center" cellpadding="0"
cellspacing="0">
<tr> <td width="147" height="19" valign="top">
<?php include("menu.html");
?></td></tr> <tr>
<td height="17" valign="top"><img
src="images/inferiorM.gif" width="171" height="15"></td>
</tr> </table>
</td> <td width="80%" colspan="2" valign="middle"><table
width="98%" height="100%" border="0" align="center"
cellpadding="0" cellspacing="5" >
<tr>
0[rad]</p>
<form name="datos" action="ejercicios/4/4-
1/generar_graf_4.php" method="post" onSubmit="javascript:return
validar(this)">
<span class="Estilo2">Introduzca los ordenes del
polinomio A (na), y polinomio B (nb) y el valor de nk del modelo
ARX. El valor de nb no debe ser mayor que el valor de na. </span>
<table width="64%" border="0" align="center">
<tr>
<td colspan="7" class="Estilo2 Estilo5"><div
align="justify"></div></td>
</tr> <tr>
<td width="32%" align="right"
bgcolor="#E1E1E1"><span class="Estilo2">na</span>:</td>
<td width="13%" bgcolor="#E1E1E1"><input id="na"
name="na" type="text" size="10"/></td>
<td width="33%" rowspan="2" align="center"
bgcolor="#E1E1E1" class="Estilo2"><input type="submit"
value="Enviar Valores" name="enviar" /></td>
</tr> <tr>
<td align="right" bgcolor="#E1E1E1"
class="Estilo2">nb:</td>
<td bgcolor="#E1E1E1"><input name="nb" type="text"
size="10"/></td>
</tr> <tr>
<td align="right" bgcolor="#E1E1E1"
class="Estilo2">nk:</td>
<td bgcolor="#E1E1E1"><input name="nk" type="text"
size="10"/></td>
<td align="center" bgcolor="#E1E1E1"
class="Estilo2"><a href="ejercicios/4/4-1/arx2g1.m"
target="_blank" class="Estilo3"> Descargar script</a></td> </tr>
</table> <p><span class="Estilo2">Los resultados se
expresaran de la siguiente manera:</span></p>
<p class="Estilo2">Teta es el valor de los parametros
estimados,fp=Sera la funcion de perdida <em>V</em>(<img
src="images/titaS.jpg" alt="" width="18" height="21">), AIC el
criterio
de información de Akaike y el ajuste que es el porcentaje de
variación de la silada real y la estimada.</p>
</form>
<p> </p>
<table width="637" border="0" cellpadding="0"
cellspacing="0">
<tr>
<td><span class="Estilo1 Estilo2"><a
href="ejemplosC2.php" class="Estilo4"></a></span></td>
<td><div align="right"></div></td>
</tr> </table></td>
</tr> </table>
103
APÉNDICE B
4. Programa que realiza el levantamiento de la página (en esta caso, una ventana) donde se
observará el resultado que arroja el programa que se esta ejecutando en el servidor.
ejemplo.php
<?php
/*Programa que realiza la ejecución de GNU Octave a través de la
función passthru y retorna el resultado, en este caso una imagen
de tipo png.
Autor: Br. Maria Elena Noriega R.
Tutor: Prof. Pablo Lischinsky.
Realizado el 01/03/2008.*/
header("Content-type: image/png");/*Función que retorna una imagen
de tipo png.*/
passthru('/usr/bin/octave --silent ejercicio1.m');/*Función que
ejecuta a GNU Octave.*/
?>
104
APÉNDICE B