miércoles, 10 de junio de 2009

Maple

Maple

Maple es un programa matemático de propósito general capaz de realizar cálculos simbólicos, algebraicos y de álgebra computacional. Fue desarrollado originalmente en 1981 por el Grupo de Cálculo Simbólico en la Universidad de Waterloo en Waterloo, Ontario, Canadá.
Introducción
Maple es un lenguaje de programación interpretado. Las expresiones simbólicas son almacenadas en memoria como grafos dirigidos sin ciclos (ver
Grafos, Teoría de Grafos)
Desde
1988 ha sido mejorado y vendido comercialmente por Waterloo Maple Inc. (también conocida como Maplesoft), una compañía canadiense con sede en Waterloo, Ontario. La última versión es Maple 13.
Origen del nombre
Su nombre no es una abreviatura ni un acrónimo, sino que se debe a que Maple fue hecho en
Canadá, cuya bandera tiene una hoja de arce (maple en inglés).
Código de ejemplo en Maple
Las siguientes líneas de código calculan la solución exacta de una ecuación lineal diferencial ordinaria:
Sujeto a las condiciones iniciales:
dsolve( {diff(y(x),x, x) - 3*y(x) = x, y(0)=0, D(y)(0)=2}, y(x) );
Raíz cuadrada del número 2 hasta 20 cifras decimales:
> sqrt(2) = evalf (sqrt(2), 21);
Simplificación de fracciones:
> simplify (35/42 - 5/30);
Solución de
ecuaciones cuadráticas:
> solve (3*x^2 + b*x = 7, x);
Solución de ecuaciones
diferenciales simbólicas:
> f:= x -> tan(x)*sqrt(x):
> D(f)(x);
Funciones
integrales, solución simbólica, y solución numérica:
> Int (sin(x)^2, x);
> value (%);
> int (sin(x)^2, x = 0..Pi/2);
Evaluación de ecuaciones diferenciales lineales en forma simbólica y numérica:
> DGL:= diff (y(x),x, x) - 3*y(x) = x:
> DGL;
> dsolve ({DGL, y(0)=1, D(y)(0)=2}, y(x));
Historial de Versiones
Maple 13: Abril,
2009
Maple 12: Junio,
2008
Maple 11: Febrero,
2007
Maple 10: Mayo,
2005
Maple 9.5: Abril,
2004
Maple 9: Junio,
2003
Maple 8: Abril,
2002
Maple 7: Julio,
2001
Maple 6: Diciembre,
1999
Maple V R5: Noviembre,
1997
Maple V R4: Enero,
1996
Maple V R3: Marzo],
1994
Maple V R2: Noviembre
1992
Maple V: Agosto,
1990
Maple 4.3: Marzo,
1989
Maple 4.2: Diciembre,
1987
Maple 4.1: Mayo,
1987
Maple 4.0: Abril,
1986
Maple 3.3: Marzo,
1985 (primera versión disponible públicamente)
Maple 3.2: Abril,
1984
Maple 3.1: Octubre,
1983
Maple 3.0: Mayo,
1983
Maple 2.2: Diciembre,
1982
Maple 2.15: Agosto,
1982
Maple 2.1: Junio,
1982
Maple 2.0: Mayo,
1982
Maple 1.1: Enero,
1982
Maple 1.0: Enero,
1982
Desde 1994,
MathCad ha incluido un motor de álgebra derivado de Maple, Núcleo Mathsoft de Maple MKN por sus siglas en inglés (MKN, Mathsoft Kernel Maple).
Versiones disponibles
Maplesoft vende Maple tanto en versiones profesionales como de estudiantes. (en
EE. UU. desde US$99 para estudiantes, hasta US$1995 en versiones profesionales)
Desde la versión 6 y más recientes, las versiones para estudiantes no tienen limitaciones en poder de cómputo, pero sí vienen con menos documentación impresa. La situación es bastante similar para el programa
Mathematica.
En versiones anteriores a la 6, la versión de estudiante tenía las siguientes limitaciones:
Un máximo de uso de 100 dígitos en
punto flotante para cálculos
Un tamaño máximo de 8.000 para cualquier objeto algebraico (8.000 en objetos o largo de palabras máquina)
Un máximo de 3 para los arreglos
vectoriales (arrays)

MATLAB

MATLAB

(abreviatura de MATrix LABoratory, "laboratorio de matrices") es un software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M). Está disponible para las plataformas Unix, Windows y Apple Mac OS X.
Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware. El paquete MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, a saber, Simulink (plataforma de simulación multidominio) y GUIDE (editor de interfaces de usuario - GUI). Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes); y las de Simulink con los paquetes de bloques (blocksets).
Es un software muy usado en universidades y centros de investigación y desarrollo. En los últimos años ha aumentado el número de prestaciones, como la de programar directamente
procesadores digitales de señal o crear código VHDL.
Historia
Fue creado por The MathWorks en
1984, surgiendo la primera versión con la idea de emplear paquetes de subrutinas escritas en Fortran en los cursos de álgebra lineal y análisis numérico, sin necesidad de escribir programas en dicho lenguaje. El lenguaje de programación M fue creado en 1970 para proporcionar un sencillo acceso al software de matrices LINPACK y EISPACK sin tener que usar Fortran.
En 2004, se estimaba que MATLAB era empleado por más de un millón de personas en ámbitos académicos y empresariales.
[2]
Sintaxis
MATLAB es un programa de cálculo numérico orientado a matrices. Por tanto, será más eficiente si se diseñan los algoritmos en términos de matrices y vectores.
Ejemplos
Hello World
Éste es el tradicional programa
Hello World hecho con el lenguaje de MATLAB:>> disp('Hola mundo'); % Muestra el mensaje.Hola mundo
Diseño de filtros digitales
En este ejemplo se diseña un
filtro digital paso bajo de Butterworth y se muestra el módulo de su espectro:close all
% Cierra todas las ventanas.clear all % Borra todas las variables del espacio de trabajo.clc % Limpia la pantalla. Fc=200; % Frecuencia de corte.Fm=1000; % Frecuencia de muestreo.BT=100; % Banda de transición.Rs=40; % Ganancias.rs=10^(-Rs/20);Rp=2;rp=(10^(Rp/20)-1)/(10^(Rp/20)+1); [n1b,wn1]=buttord(2*Fc/Fm,2*(Fc+BT)/Fm,Rp,Rs); % Orden del filtro (función buttord).[B1,A1]=butter(n1b,wn1); % Coeficientes del filtro (función butter).h1=freqz(B1,A1); % Respuesta en frecuencia (función freqz).plot(abs(h1)) % Representación de la respuesta.
Cajas de herramientas y Paquetes de bloques
Las funcionalidades de Matlab se agrupan en más de 35 cajas de herramientas y paquetes de bloques (para Simulink), clasificadas en las siguientes categorías:


MATLAB (Cajas de herramientas)
Simulink
Matemáticas y Optimización
Modelado de punto fijo
Estadística y Análisis de datos
Modelado basado en eventos
Diseño de sistemas de control y análisis
Modelado físico
Procesado de señal y comunicaciones
Gráficos de simulación
Procesado de imagen
Diseño de sistemas de control y análisis
Pruebas y medidas
Procesado de señal y comunicaciones
Biología computacional
Generación de código
Modelado y análisis financiero
Prototipos de control rápido y SW/HW HIL
Desarrollo de aplicaciones
Tarjetas integradas
Informes y conexión a bases de datos
Verificación, validación y comprobación
Limitaciones y alternativas
Durante mucho tiempo hubo críticas porque MATLAB es un producto propietario de The Mathworks, ya que los usuarios están sujetos a un vendor lock-in. Recientemente se ha proporcionado una herramienta adicional llamada MATLAB Builder bajo la sección de herramientas Application Deployment para utilizar funciones MATLAB como archivos de biblioteca que pueden ser usados con ambientes de construcción de aplicación .NET o Java. Pero la desventaja es que el computador donde la aplicación tiene que ser utilizada necesita MCR(MATLAB Component Runtime) para que los archivos MATLAB funcionen correctamente. MCR puede ser distribuido libremente con archivos de biblioteca generados por el compilador MATLAB.

LabVIEW
GNU Octave
SAS
Scilab
Mathcad
SciPy & Numerical Python
Lenguaje R
Álgebra computacional:
Véase
Anexo:Programas de álgebra computacional
Llamar funciones C y Fortran
MATLAB puede llamar funciones y subrutinas escritas en C o Fortran. Se crea una función envoltorio que permite que sean pasados y devueltos tipos de datos de MATLAB. Los archivos objeto dinámicamente cargables creados compilando esas funciones se denominan "MEX-files", aunque la extensión de nombre de archivo depende del sistema operativo y del procesador.function [fa,dfa]=funcion_y_derivada(x)fa=0;n=1;h=1;dfa=0;while (n <= (10*(x-(1/2))^2) + 10) fa=fa+(((-x^2)^n)/factorial(2*n)); h=h/2; dfa=dfa+(((((-(x+h)^2)^n)/factorial(2*n))-(((-x^2)^n)/factorial(2*n)))/h); n=n+1;endfunction v=aproxima_derivada2(funci,a)syms x;i=1;h=1;v(i)=(subs(funci,a+h)+subs(funci,a-h)-(2*subs(funci,a)))/(h^2);error=1;while(error>1e-10) h=h/2; i=i+1; v(i)=(subs(funci,a+h)+subs(funci,a-h)-(2*subs(funci,a)))/(h^2); error= abs(v(i)-v(i-1));end
¿Qué es MATLAB?
MATLAB = 'MATrix LABoratory' (
LABORATORIO DE MATRICES).
MATLAB es un medio computacional técnico, con un gran
desempeño para el cálculo numérico computacional y de visualización.
MATLAB integra
análisis numérico, matrices, procesamiento de señales y gráficas, todo esto en un ambiente donde los problemas y soluciones son expresados tal como se escriben matemáticamente.
Escrito inicialmente como auxiliar en la
programación de cálculo con matrices.
MATLAB fue escrito originalmente en fortran, actualmente está escrito en
lenguaje C.
MATLAB es un
lenguaje de programación amigable al usuario con características más avanzadas y mucho más fáciles de usar que los lenguajes de programación como basic, pascal o C.
Actualmente van en la versión 5.2.
MATLAB cuenta con paquetes de
funciones especializadas llamadas toolboxes.

Toolboxes de MATLAB


Control system Toolbox, Robust Control Toolbox
Frequency Domain System Identification Toolbox
Fuzzy Logic Toolbox
Higher Order Spectral Analisys Toolbox
Image Processing Toolbox
Model Predective Control Toolbox
Mu Analisis and Synthesis Toolbox
NAG Foundation Toolbox
Neural Network Toolbox
Nonlinear Control Design Toolbox
Optimization Toolbox
Quantitative Feedback Theory Toolbox
Signal Processing Toolbox
SIMULINK, SIMULINK Real Time Workshop
Spline Toolbox
Statistics Toolbox
Symbolic Math Toolbox
System Identification Toolbox.
Inicio de MATLAB
MATLAB se inicia directamente desde
Windows.
Al invocarse MATLAB aparecerá la pantalla de
comandos, algunas sugerencias y el símbolo >> , el cual indica la entrada de instrucciones para ser evaluadas.
>>
>> Comando o instrucción a evaluar <>
Para hacer la suma de dos números, escribimos :
>> 5 + 5 <> Presionamos la tecla entrar.
ans =
10
El resultado es desplegado y se guarda en la variable ans (answer).
NOTA : En este tutorial el símbolo >> desaparecerá, y será reemplazado por un par de corchetes con la instrucción dentro de ellos. [ 5 + 5 ]. La instrucción aparecerá en
color verde.
Para
poder ver ejecutarse la instrucción, debemos ponernos en el renglón donde está la instrucción o marcarla con el ratón y presionar al mismo tiempo las teclas.

Otra forma de evaluar una instrucción, es poner el apuntador del ratón entre los corchetes de la instrucción y presionar el botón derecho del ratón; aparecerá un menú del cual se tiene que escoger evaluar celda.
Hagamos la prueba con el renglón inmediato.
5 + 5 Presionar
La respuesta es desplegada en color azul y entre corchetes.
Help
El comando help proporciona una lista de todos los tópicos que MATLAB puede proporcionar ayuda.
help
help 'comando' proporciona ayuda sobre el comando especificado.
help sqrt
proporciona ayuda sobre la instrucción sqrt. Ejemplo:
» help sqrt
SQRT Square root.
SQRT(X) is the square root of the elements of X. Complex
results are produced if X is not positive.
See also SQRTM
¿Cómo funciona MATLAB?
MATLAB puede almacenar
información en variables tales como :
a = 100 " para evaluar la celda "
Cada vez que capturamos información en MATLAB y presionamos ésta es desplegada inmediatamente ( letras en color azul ), pero si ponemos un punto y coma al final de la instrucción MATLAB omite el desplegado de información.
Por ejemplo :
b = 50 ;
Si se quiere saber el valor de alguna variable capturada sólo se tiene que poner el nombre de la variable y y MATLAB lo despliega. Estas variables residen en el espacio de trabajo de MATLAB.
b
Las variables son sensibles a las mayúsculas, por lo que las siguientes variables son diferentes :
Variable = 1
variable = 1
Las variables pueden contener hasta 19 caracteres. Éstas deben empezar con una letra, seguida por cualquier número de letras, dígitos o guiones de subrayado.
Los caracteres de puntuación no son permitidos en las variables.
Cuando se trabaja con muchas variables estas son difícil de recodar.
El comando who
muestra un desplegado de todas aquellas variables que se han estado utilizando.
who
whos Muestra las variables con información adicional.
Caracteres especiales
[ ] Son usados para formar
vectores y matrices [ 1 2 3 ; 4 5 6 ]
( ) Usados para expresiones
matemáticas. sqrt(2)
= Usado para hacer asignaciones. x = 5
' Transpuesta de una
matriz A'
Usado para separar
texto 'texto'
. Punto decimal 3.1415
... Al final de una línea indican que continua 2,3,4,5,6 ....
en el siguiente renglón. 7,8,9,10 ]
, Para separar elementos [1,2,3,4]
; Para separar filas en las matrices. [ 1 2; 3 4]
Para evitar que se despliegue la información capturada. [3] ;
% Para hacer comentarios % este
programa,etc.
! Para ejecutar un comando del
Ms-dos !dir
Operaciones básicas
SUMA
C = a + b
RESTA
d = a - b
MULTIPLICACION
e = a * b
DIVISION
F = a / b
F = a \ b
POTENCIA
a ^ 2
Como este último cálculo no tenía variable asignada, la respuesta se guarda en la variable ans (answer ).
Borrado de variables.
Para borrar el valor de una variable simplemente ponemos
clear a Borra la variable " a "
a Checar que este borrada.
clear a b c Borra las variables " a ", " b " y " c "
" CLEAR " Borra todas las variables y no se pueden recuperar.
Funciones trigonométricas
sin ( 0.5) Seno de (0.5)
Así mismo
COS ( X ) TAN ( X )
ASIN ( X ) ACOS ( X ) ATAN ( X ) Inversa
SINH ( X ) COSH ( X ) TANH ( X ) Hiperbólica
ASINH ( X ) ACOSH ( X ) ATANH ( X ) Inversa- Hiperbólica
ATAN2 ( X,Y ) Inversa de la tangente en los cuatro cuadrantes.
LOGARITMOS
log (0.5) Logaritmo natural
LOG10 ( X ) Logaritmo decimal.
Funciones matemáticas especiales.
abs ( -3) Valor absoluto o magnitud de un número complejo
ceil ( 123.123123) Redondea hacia más infinito
FLOOR ( X ) Redondea hacia menos infinito
FIX ( X ) Redondea hacia cero
ROUND ( X ) Redondea hacia el entero más próximo
imag ( 30 - 5j ) Parte imaginaria de un número complejo
REAL ( X ) Parte real de un número complejo
ANGLE ( X ) Angulo de un número complejo
CONJ ( X ) Complejo conjugado
sign ( -5) Función signo : Devuelve el signo del argumento
(1 si es positivo, -1 si es negativo )
exp ( 1 ) Exponencial : e ( x )
REM ( X,Y ) Resto después de la división ( x / y)
sqrt (2) Raíz cuadrada
Operaciones Lógicas
En MATLAB se pueden hacer
operaciones lógicas, por ejemplo.
1 <>
Como 1 es menor que 2, la respuesta es cierta por lo que obtenemos un 1.
1 <>
Obtenemos un 0, porque 1 no es menor que 1.
Como se puede observar las únicas respuestas posibles con las operaciones lógicas son :
Cierto = 1 y Falso = 0.
Operadores relaciónales :
> Mayor que
< Menor que
>= Mayor o igual a
<= Menor o igual a
== Igual a
~= No igual a
Existen tres operadores lógicos : AND &
OR
NOT ~
Para que la operación AND sea verdadera las dos relaciones deben ser verdaderas.
Recordemos AND = 0 0 0 Falso
0 1 0 Falso
1 0 0 Falso
1 1 1 Verdadero
( 1 <>Verdadero.
( 1 <>Falso.
Para la operación OR : 0 0 0
0 1 1
1 0 1
1 1 1
( 1 <>Verdadero.
Para la operación NOT : ~ 0 1
~ 1 0
~ ( 2 <>Verdadero.
La variable NaN (Not a Number)
Cuando en un
lenguaje de programación como basic, pascal o C, se da una situación que el programa no pueda manejar, como una división como 0/0 el programa se detiene, marcando un error.
Cuando en MATLAB se presenta una situación similar el programa no se detiene, sólo da una pequeña advertencia de que se presentó una división entre cero. Y el resultado es un NaN, que es una variable interna no es un número).
0 / 0
Ejemplo: defina a=[1 2 0] y b=[1 2 0] ahora pida la división elemento a elemento (comando "./")
a ./ b
Solución de
ecuaciones de segundo grado.
MATLAB se puede resolver fácilmente ecuaciones del tipo ax² + bx + c = 0, haciéndolo como si fuera una sola instrucción. La förmula para resolver una ecuación de segundo grado de este tipo es :
Si tenemos los siguientes
valores :
a = 1, b = 2, c = 3
Escribimos la formula para x1 :
x1 = ( -b + sqrt ( b ^ 2 - 4 * a * c )) / 2 * a
Para x2 :
x2 = ( -b - sqrt ( b ^ 2 - 4 * a * c )) / 2 * a
Podemos hacer la comprobación para x1.
a * x1^ 2 + b * x1 + c Comprobación x1
Arreglos (Arrays) ó Vectores.
Si se desea calcular el seno de " 0 a 1 " con incrementos de 0.25, se pueden capturar
los valores y después mandar llamar el seno de la función.
Seno de 0 a 1 con incrementos de 0.25
x = [ 0, 0.25, 0.5, 0.75, 1 ]
Se pueden omitir las comas cuando se capturan los números.
Con los números capturados, se obtiene el seno de la variable x escribiendo simplemente :
sin (x)
MATLAB opera en radianes, donde 2P = 360 grados.
Ahora se requiere obtener el coseno de cero a uno con incrementos de 0.01; lo que equivale a capturar 101 elementos.
Para evitar capturarlos a mano, MATLAB nos permite crear un vector de la siguiente manera :
Variable = ( Valor inicial : Con incrementos de : Valor final )
R = (0 : 0.01 : 1)
COS ( R ) Ahora se puede obtener el coseno de la variable R.
Hagamos el siguiente vector :
Y = ( 0 : 1 : 10)
Si queremos saber cual es el cuarto elemento del vector ponemos :
Y (4)
Si nos interesan los elementos 5 al 10 :
Y( 5 : 10 )
Otras opciones son :
Y( 1 : 2 : 9) Toma los elementos del 1 al 9 con incrementos de 2
Y([ 1, 3, 7,10]) Toma los elementos 1, 3, 7 y 10 del array
Modificaciones de los arreglos
Si el noveno elemento del array debió ser el número 20 en vez de 8, corregimos de la siguiente manera :
Y(9) = 20
Otra forma de hacer arreglos, es con linspace :
Linspace ( Valor inicial , Valor final , Número de elementos )
Regresando al ejemplo del coseno de 0 a 1 con incremento de 0.01 escribimos :
Note el uso de comas (#, #, #)
Z = linspace(0 , 10, 101)
Linspace describe una relación lineal de espaciado entre sus elementos.
Logspace describe una relación de espaciado " logarítmica ".
Logspace ( Primer exponente , Último exponente , Cantidad de valores )
Logspace (0 , 2 , 10 )
Hemos creamos un arreglo que comienza en 10 0 y termina en 10 2, conteniendo 10 valores.
Otra forma de crear arreglos es :
x1 = 1 : 5 Arreglo de 1 a 5, con incremento de 1
x2 = 10 : 5 : 100 Arreglo de 10 a 100, con incrementos de 5.
Si se quiere concatenar x1 y x2
C = [ x1 x2 ]
Matemáticas con arreglos.
a = 1 : 6 Define un vector de seis elementos con incrementos de 1
b = 1 : 2 : 12 Vector de seis elementos con incremento de 2
Arreglos con escalares
Se le puede sumar o multiplicar un número a todo el arreglo, por ejemplo
a + 10 Suma de un escalar con un arreglo
a * 10 Multiplicación de un escalar con un arreglo
Operaciones con arreglos
Para hacer la suma de los arreglos a y b, solamente escribimos :
a + b La respuesta se guarda en ans :
Se pueden hacer operaciones como :
Z = 100 - 2 * a + b
La multiplicación de arreglos se hace con ( . * ), ya que cuando se utiliza el asterisco sin punto indica multiplicación matricial, y además provoca un error.
Z = a .* b
La división también lleva un punto antes del signo, porque sino se utiliza el punto nos referimos a la división matricial que es muy diferente.
Z = a ./ b
La siguiente operación obtiene el cuadrado del arreglo " a ".
Z = a .^ 2
Orientación de arreglos
Si separamos cada elemento del arreglo con punto y coma tenemos un arreglo de una sola columna :
a = [ 1; 2; 3; 4; 5; 6 ]
Es necesario usar los corchetes, porque si no los usamos obtenemos el último valor que capturamos :
d = 1 ; 2; 30 ; 40 ; 50 ; 600 ; 1000
Para crear una columna con 20 elementos hacemos lo siguiente :
d = ( 1 : 1 : 20 )
y trasponemos el renglón a columna, es decir buscamos la transpuesta. ( ' )
e = d'
¿ Que pasa si hacemos lo siguiente : ?
e'
Matrices
Se utiliza el punto y coma ( ; ) hacer una matriz.
Para formar la matriz 1 2 3
3 2 1
2 1 3
Escribimos :
A = [ 1 2 3; 3 2 1; 2 1 3 ]
Ecuaciones Simultáneas
Con MATLAB se pueden resolver
sistemas de ecuaciones simultáneas fácilmente.
Por ejemplo para resolver el siguiente
sistema de ecuaciones.
2x + 0y + 5z = 100
3x + 5y + 9z = 251
1x + 5y + 7z = 301
Capturamos los valores de x, y, z ; formando una matriz.
A = [ 2 0 5; 3 5 9; 1 5 7]
Después capturamos el valor al cual están igualadas las ecuaciones en otra matriz.
b = [ 100 ; 251; 301 ]
Una forma de solucionar las ecuaciones es obteniendo el inverso de la matriz, es decir : A -1 ( menos uno )
El asterisco indica multiplicación matricial.
c = inv (A)* b
Otra forma de resolverlo, es utilizando la división matricial.
c = A \ b
Es también posible obtener la determinante de una matriz.
det ( A )
Operaciones con Matrices
Definamos las siguientes matrices ' g ' y ' h '.
g = [ 1 2 3; 4 5 6; 7 8 9]
h = [ 1 0 2 ; 11 2 3 ; 3 5 12 ]
La suma de las matrices g y h se muestra enseguida :
k = g + h
k = g * h Multiplicación de dos matrices.
[L, U ] = lu (k) Calcula la factorización LU de la matriz cuadrada k
[d,e]= qr (k) Calcula la factorización QR de la matriz k.
Calcula la descomposición en valores singulares de la matriz k.
rank(k) Devuelve el rango de la matriz k.
cond(k) Devuelve el número de condición de la matriz k.
Modificación de las matrices.
A = [ 1 2 3; 4 5 7; 7 8 9 ]
Si nos equivocamos al capturar la matriz, por ejemplo si el número 7 del segundo renglón, tercer columna debió ser 6 en vez de 7, tendríamos que capturar de nuevo la matriz.
Pero con MATLAB es posible modificarla de la siguiente manera :
A(2,3)= 6 Variable ( renglón, columna)= nuevo valor
Si tenemos la matriz
identidad de 4 x 4 :
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
A = [ 1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1]
Pero por algún error la matriz identidad debió de haber sido de 5 x 5.
¿ Hay que capturar de nuevo la matriz ?. La respuesta es no.
A(5,5) = 1
Agregamos un 1 en el renglón 5 columna 5, y como este no existían previamente, las columnas y renglones se completan agregando ceros.
¿ Que pasa ahora si queremos sólo una matriz identidad de 3 x 3 y tenemos capturada una de 5 x 5.
Podemos utilizar :
Matriz ("Renglón" inicio : Fin , "Columna" inicio : Fin )
B = A ( 1 : 3, 1: 3)
Ahora si queremos que la matriz identidad sea : 0 0 1
0 1 0
1 0 0
C = B ( 3 : -1 : 1 , 1 : 3 )
Poner dos puntos ( : ) indica que se deben tomar todas las columnas
(1 : 5). Esto es valido también para los renglones.
C = A ( : , [ 1 3 5 ] )
Toma todos los renglones, pero sólo toma las columnas 1, 3 y 5.
Si creamos las siguientes matrices A y B :
A = [ 1 2 3 4 5; 1 2 3 4 5; 1 2 3 4 5; 1 2 3 4 5 ]
B = [ 6 7 8; 6 7 8; 6 7 8; 6 7 8 ]
Podemos construir una matriz C uniendo las dos anteriores
c = [ A B ]
A partir de la matriz A queremos tomar las columnas 1, 2 y 5, y de la matriz B queremos tomar las columnas 1 y 3, para formar una matriz D.
D = [ A(:,[ 1 2 5]) B(:, [ 1 3])]
D( :,1)=[] Elimina la columna número uno.
Matrices especiales
ones(2) Hace una matriz de unos, de 2 x 2.
zeros(5,4) Hace una matriz de ceros, de 5 x 4.
rand(3) Hace una matriz de 3 x 3,
eye(4) Hace una matriz identidad de 4 x 4.
Gráficas
En MATLAB se pueden crear gráficas tan simples como :
D = [ 1 2 3 5 4 7 6 8 9 8 6 3 1 3];plot (D)
o se pueden crear gráficas tan complejas como :
cplxroot(3,10) Superficie de una raíz cubica.
Como se vió en el primer ejemplo es posible gráficar una serie de puntos y MATLAB automáticamente ajusta los ejes donde se gráfica.
Por ejemplo, para gráficar la función seno se pueden crear un rango de valores
x = 0 : 0.1 : 20; x = vector de cero a veinte con incrementos de 0.1
y = sin(x); Seno del vector (x)
plot (x,y) Gráfica del seno
z = cos(x); Coseno del vector anterior
plot (x,z) Gráfica del coseno de x.
plot ( x,y,x,z) Gráfica del seno y coseno en la misma pantalla
plot (x,z,'*') Gráfica del coseno con los signos ' * '
Hace la gráfica en azul, y los signos ' + ', intercambiando los ejes.
plot ( z, x,'b+')
Como se ve es posible gráficar en Matlab con símbolos y además escoger el color, tal como se muestra en la tabla inferior.
Símbolo
Color
Símbolo
Estilo de línea
y
amarillo
.
punto
m
magenta
o
circulo
c
cían
x
equis
r
rojo
+
más
g
verde
*
asterisco
b
azul
-
menos
w
blanco
:
dos puntos
k
negro
- .
menos punto


- -
menos menos
Es posible agregar un cuadriculado a la gráfica, para tener más precisión, con el comando.
grid
Se pueden agregar títulos a las gráficas y etiquetas en los ejes con los comandos siguientes.
title(' Gráfica del coseno de x')
Para ponerle etiquetas a los ejes se puede utilizar los comandos
ylabel ('etiqueta')
xlabel('etiqueta')
axis off Desaparece los ejes.
Subplot
El comando subplot nos permite desplegar en pantalla varias gráficas.
subplot(m,n,a)
'm' y 'n' son una matriz que representa las cantidades de gráficas que se van desplegar; 'a' indicaría el lugar que ocuparía la gráfica en el subplot.
Hagamos la gráfica de los siguientes puntos. La desplegaremos en cuatro puntos diferentes en pantalla para ver las características de subplot.
a=[ 1 ,2 ,3 9 ,8 ,7 ,4, 5, 6, 8, 7, 5];
plot (a)
Vamos hacer una matriz de 2 x 2 para gráficar, cuatro posibles ventanas o gráficas. Y queremos que la primera gráfica ocupe el lugar (1,1) de la matriz. entonces escribimos.
subplot(2,2,1) ,plot(a)
subplot(2,2,2) , plot(a)
subplot(2,2,4), plot(a)
CLF borra todos los objetos de la gráfica.
CLF RESET Borra todo lo que hay en la gráfica y resetea todas las propiedades de la figura.
clf
Gráficas en tres dimensiones.
El comando plot se puede extender a 3 dimensiones con el comando plot3 .
El siguiente ejemplo hace una gráfica de una espiral en tres dimensiones.
t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
zlabel ('etiqueta')
Se utiliza para dar etiquetas al eje z, en las gráficas en tres dimensiones.
Gráficos de malla y superficie.
z = peaks(10)
El comando peaks crea un conjunto de valores que al ser gráficados, se ven de la siguiente manera.
plot(z)
Se tomará como base la gráfica anterior para demostrar algunas funciones de graficación en tres dimensiones.
mesh(z)
contour(z,10)
surf(z)
Es posible cambiar el sentido de orientación de las gráficas con el comando view(x,y)
view(0,0)
view(90,0)
Gráficas en el plano complejo
Ahora vamos a crear un conjunto de valores para gráficar en el plano complejo, en tres dimensiones.
z= cplxgrid(5)
cplxmap(z,z)
cplxmap(z,z.^z)
cplxroot(2,10) Raíz cuadrada
Se pueden crear
gráficos en coordenadas polares con el comando Polar (t,r,s) donde t es el vector en ángulos en radianes, r es el radio del vector y s es la cadena de caracteres que describe , color, símbolo del estilo del línea.
t=0:0.1:2*pi;
r = sin(2*t).*cos(2*t);
polar(t,r)
gtext( ‘ texto ’ )
Se utiliza para colocar texto en una gráfica, con la ayuda del
mouse. Simplemente se ejecuta el comando y con el mouse se selecciona la coordenada deseada y se presiona el botón derecho del mouse, quedando fijo el texto en la pantalla.
Copiar una gráfica
Cuando se quiera realizar algún reporte formal en un
procesador de palabras como en este caso Word, es posible copiar las gráficas hechas en Matlab por medio de la orden copy to bitmap.
El
procedimiento sería :
· En Matlab, en el menú de la ventana principal de la gráfica, se escoge el menú ‘edit’ y de este se escoge copy to ‘bitmap’;
· Se minimiza Matlab y se pasa al procesador de palabras escogido
· Se localiza la posición en la cual estará la gráfica, y del menú edit se escoge ‘paste o pegar’.
La gráfica aparecerá en el procesador de palabras.
Existe un pequeño inconveniente ya que la gráfica aparecerá sobre un fondo de color negro que Matlab tiene por default, si se imprime este documento obviamente la gráfica aparecerá sobre un fondo negro lo cual hará que la
impresora gaste tinta en exceso.
Para remediar esto se puede cambiar el color de fondo de las gráficas a blanco con el comando.
Whitebg
después se hace procedimiento mencionado anteriormente.
Imprimir una gráfica.
Se puede imprimir una gráfica directamente desde el menú de la ventana de la gráfica, seleccionando la opción print.
Otros comandos
· What :Listado de todos los
archivos *.m en el directorio actual
· dir : Lista todos los archivos en el directorio actual
· type nombre_archivo : Lista el programa, (
Programas con terminación *.M).
· Which nombre_archivo : Da el path en el cual esta el
archivo.
Se pueden utilizar comandos de
Unix tales como Ls, pwd.
Como hacer un programa en MATLAB
Es posible realizar un programa en Matlab tal como se hace en otros lenguajes como el basic, pascal o
el lenguaje C. Es necesario utilizar un editor para escribir el código.
· Para cargar un editor, se puede hacer desde la ventana options, escogiendo editor preference, y cargando el editor que se desee utilizar.
· Para escribir código, requerimos crear un archivo *.M. Para esto necesitamos abrir new M.file en la ventana file.
· Ahora escribimos el código y salvamos el archivo utilizando la terminación archivo.M.
· Se puede correr el programa desde Matlab simplemente escribiendo el nombre del archivo que fue creado.
· Es posible abrir programas con la terminación *.M desde Matlab, en el menú file, open M.file.
Bucles For
Tal como en otros programas de programación en Matlab es posible crear programas con
estructura con ciclos for.
For x = Número incial : número final
Instrucción
End.
for x = 1 : 10
x = x + 1
end
También se pueden hacer operaciones como la siguiente :
matriz = [ 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4]
for x = matriz
x = n(1)*n(2)*n(3)*n(4)
end
Bucles while
While permite que ciertas instrucciones sean repetidas un número indefinido de veces bajo el control de una condición
lógica.
Por ejemplo, ¿ Cual es primer entero n para el cual n! (factorial) es un número de 100 dígitos ?.
n = 1;
while prod(1:n)<1.e100,n=n+1;end>
n
IF ELSE END
Se pueden utilizar
estructuras como:
If expresión (verdadero)
acción
End.
If expresión (verdadero)
acción 1
else (Falso)
acción 2
End.
If expresión (verdadero)
acción 1
elseif expresión (verdadero)
acción 2
. . .
else (Falso)
acción "n"
End
Análisis de datos.
En Matlab podemos hacer análisis de datos estadísticamente o probabilisticamente. Entre estos análisis están cálculos de medias, máximos, mínimos, desviaciones estándar, etc.
Inventemos un conjunto de datos, los cuales podremos análizar.
x =[ 9 1 ;23 34; 16 28 ;12 33 ;5 7; 9 4 ;12 34 ;5 14 ;43 6 ;3 6 ;12 9; 2 30 ;3 2; 2 4]
plot (x) La representación gráfica de los puntos anteriores.
A continuación se hace una análisis de los datos presentados, habrá dos respuestas porque tenemos dos columnas.
media=mean(x) Obtención de la media
max(x) El máximo de los valores.
min(x) El mínimo de los todos los valores
std(x) La desviación estándar
hist(x) Histograma.
Interpolación
Matlab tiene varios comandos que nos permiten hacer interpolaciones, uno de los
métodos es por medio de mínimos cuadrados.
Mínimos cuadrados
Se crean varios puntos.
x = [ 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1 ];
y =[ 0.09 .12 .24 .27 .4 .45 .61 .67 .71 .63 .59];
se muestra los puntos a los cuales se les va a interpolar
plot (x,y,'*')
Se utiliza una aproximación de segundo orden, porque la función es no lineal.
n=2 ; Segundo orden.
p=polyfit(x,y,n) Crea los elementos del polinomio que hará la interpolación.
El polinomio es del tipo ax2 + bx + c = 0
f=linspace(0, 1, 100); Formamos una serie de puntos para gráficar.
z=polyval(p,f); Evaluación polinomial.
plot(x,y,'*',x,y,f,z,':') Hacemos la gráfica de la interpolación.
Podemos ver que la interpolación es pobre. Ahora tratemos de hacerla con un polinomio de quinto grado, el procedimiento es el mismo que el anterior.
n = 5 ;
p = polyfit(x,y,n)
z = polyval(p,f);
plot(x,y,'*',x,y,f,z,':')
Otra forma de interpolar, es con el comando interp1.
g=interp1(x,y,f)
Se puede observar en la gráfica resultante, que parece como una aproximación lineal entre cada punto.
plot(x,y,'*',f,g)
Para una aproximación más suave es recomendable usar el comando spline, que hace una interpolación tipo cubic spline.
g=spline(x,y,f)
plot(x,y,'*',f,g)
Polinomios
MATLAB puede sacar ls raíces de un polinomio. Para capturar el polinomio de abajo, solamente ponemos el valor de cada variable, respetando su lugar. Como no hay termino x1 ,de todos modos se captura como cero.
X3 + 5x2 - 2
p = [1 5 0 -2]
Para sacar las raíces escribimos.
r=roots(p)
Tips de memoria.
Para obtener la máxima
velocidad en Matlab debemos tratar de vectorizar los algoritmos, por ejemplo :
a = 0
for a = 0:.0.1:10
a = a + 1;
y(a)=sin(t)
end
La versión vectorizada sería :
t= 0:0.01:10;
y = sin(t)
El primer ejemplo en MATLAB toma aproximadamente 15 segundos, mientras que el segundo toma sólo 0.6 segundos.
Se recomienda ver los
tutoriales propios de MATLAB como el intro, expo, el manual de MATLAB y otros libros de consulta.

SPICE

SPICE

(Programa de simulación con énfasis en circuitos integrados). Fue desarrollado por la Universidad de California, Berkeley en 1975 por Donald Pederson.
Es un
estándar internacional cuyo objetivo es simular circuitos electrónicos analógicos compuestos por resistencias, condensadores, diodos, transistores, etc. Para ello hay que describir los componentes, describir el circuito y luego elegir el tipo de simulación (temporal, en frecuencia, en continua, parámetrico, Monte Carlo...).
Historia
Spice fue desarrollado en el laboratorio de investigación electrónica (
Electronics Research Laboratory) de la Universidad de California, Berkeley por Larry Nagel bajo la dirección de su asesor de investigación Donald Pederson. SPICE1 fue derivado del programa CANCER (acrónicmo de Computer Analysis of Nonlinear Circuits, Excluding Radiation) un rastro del liberalismo de la Universidad de Berkeley de los años 60.
Hasta ese momento varios simuladores de circuitos eléctricos habían sido desarrollados por el departamento de defensa de los
Estados Unidos, entidad que requería evaluar la radiación de un circuito. Cuando el director original del proyecto, el profesor Rohrer, abandono Berkeley, el profesor Pederson tomo el puesto de director. Éste nuevo director consiguió que el programa fuera reescrito de su antecesor CANCER, el cuál era un programa con licencia de propietario, para poder poner esta nueva versión del programa bajo dominio público.
SPICE1 tuvo su primera presentación en una conferencia de
1973. Fue programado en FORTRAN y usaba la técnica de análisis de nodos para construir el sistema de ecuaciones del circuito. Ésta técnica de análisis tenía inconvenientes al representar inductacinas, fuentes de tensión sin referencia y fuentes controladas. Esta versión del programa contaba con pocos elementos; usaba un paso fijo para los análisis transitorios.
En el año
1975 apareció la versión SPICE2, con la cual se popularizó su uso. Esta versión del programa también estaba compilada en FORTRAN, tenía más elementos, análisis transitorio con paso variable, usaba las técnicas de integración trapezoidal o integración de Gear, conseguía las ecuaciones de los circuitos por una técnica modificada del tradicional análisis de nodos, la que permitía resolver los inconvenientes de su versión anterior y usaba una innovación del programa FORTRAN que permitía controlar la memoria. Este último adelanto fue desarrollado por el estudiante de posgrado Ellis Coheb.
La última versión de SPICE en
FORTRAN fue la versión 2G.6 en 1983. La siguiente versión, SPICE3, fue desarrollada en lenguaje C por Thomas Quarless y como director A. Richard en el año de 1989. La versión SPICE3 usaba la misma sintaxis que sus antecesoras y tenia una interfaz gráfica X Window.
Como un programa de
código abierto, SPICE fue ampliamente usado. El código de SPICE fue distribuido desde sus comienzos bajo un costo por la Universidad de Berkeley, el cual retribuía el costo de las cintas magnéticas. El programa tenía la restricción de no poderse distribuir en países que no eran considerados amigos por los Estados Unidos. Actualmente el programa está cubierto por la licencia BSD.
SPICE promovió y sirvió de base para otros programas de simulación en las universidades y la industria. La primera versión comercial del SPICE fue ISPICE. La versión comercial más destacada de SPICE incluía HSPICE y PSPICE. Las versiones académicas de SPICE incluían XSPICE, desarrollada en el
Instituto Tecnológico de Georgia, versión en la que se agregaron códigos de análisis analógicos y digitales y Cider que permitía simular dispositivos semiconductores.
Características del programa
Análisis SPICE realiza
Dispositivos y componentes
Fuentes
Resistencias
El modelo de resistencias en Spice corresponde al modelo clásico de la teoría de circuitos más el modelo de variación del valor de éste dispositivo por efecto de la temperatura.
La sintaxis para incluir éste elemento es la siguiente:
Inductancias
Inductancias mutuas
Si por una bobina fluye una corriente que varía en el tiempo, se produce un flujo magnético y por ende un voltaje en esta. Si acercamos otra bobina observamos que las líneas de flujo inciden de manera que recíprocamente en esta se induce un voltaje y si existe trayectoria posible, también existirá una corriente. El voltaje que se induce en la segunda bobina es proporcional al cambio de la corriente de la primera bobina.
Condensadores
Es un dispositivo con la capacidad de acumular cargas eléctricas dentro de si, muy utilizado en circuitos.
Dispositivos semiconductores
Líneas de transmisión (parámetros distribuidos)


Ejemplos
La forma de modelar una señal cuadrada es Vnodo Nodo 0 PULSE (V1 V2 TD TR TF PW PER) con:
V1: Valor inicial
V2: Valor final
TD: Latencia inicial del pulso
TR: Tiempo de subida
TF: Tiempo de bajada.
PW: Ancho del pulso
PER: Periodo del pulso.
Una de las formas de modelar un
transistor MOS es MNúmero nD nG nS nB tipo W= L= PD= AD= PS= AS= con:
Mnúmero: identifica al transistor
nD: número nodo drenador
nG: número nodo puerta
nS: número nodo surtidor
nB: número nodo substrato
tipo: NMOS / PMOS
W: anchura del canal
L: longitud del canal
PD / PS: perímetros del drenador / surtidor
AD / AS: área del drenador / surtidor
Uniendo varios de estos dispositivos por medio de los nodos se describe el circuito completo que luego será empleado para la simulación.
Programas para ordenador
Software no libre
PSpice/OrCAD
HSpice (para estaciones de trabajo)
MicroCad
Dr. Spice
Proteus
Intusoft
Spice-It!
SIMetrix Intro
TopSPICE
NG-spice (next generation spice)
[1] (GPL)
Spice Opus
[2]
LTSPICE (freeware)

Software libre
ASCO tool
GEDA [3] (GPL)
MacSpice
Qucs [4]
TclSpice

domingo, 7 de junio de 2009

¿Qué es un Sistema?

sistema es un conjunto de "elementos" relacionados entre sí, de forma tal que un cambio en un elemento afecta al conjunto de todos ellos. Los elementos relacionados directa o indirectamente con el problema, y sólo estos, formarán el sistema que vamos a estudiar.
Características de los sistemas
Un sistema es un conjunto de objetos unidos por alguna forma de interacción o
Interdependencia. Cualquier conjunto de partes unidas entre sí puede ser considerado un sistema, desde que las relaciones entre las partes y el comportamiento del todo sea el foco de atención. Un conjunto de partes que se atraen mutuamente (como el sistema solar), o un grupo de personas en una organización, una red industrial, un circuito eléctrico, un computador o un ser vivo pueden ser visualizados como sistemas.
Realmente, es difícil decir dónde comienza y dónde termina determinado sistema. Los límites (fronteras) entre el sistema y su ambiente admiten cierta arbitrariedad. El propio universo parece estar formado de múltiples sistema que se compenetran. Es posible pasar de un sistema a otro que lo abarca, como también pasar a una versión menor contenida en él.
De la definición de Bertalanffy, según la cual el sistema es un conjunto de unidades recíprocamente relacionadas, se deducen dos conceptos: el propósito(u objetivo) y el de globalizo(o totalidad. Esos dos conceptos reflejan dos características básicas en un sistema. Las demás características dadas a continuación son derivan de estos dos conceptos.

a) Propósito u objetivo:Todo sistema tiene uno o algunos propósitos u objetivos. Las unidades o elementos (u Objetos. , como también las relaciones, definen una distribución que trata siempre de alcanzar un objetivo.
b)Globalismo o totalidad: todo sistema tiene una naturaleza orgánica, por la cual una acción que produzca cambio en una de las unidades del sistema, con mucha probabilidad producirá cambios en todas las otras unidades de éste. En otros términos, cualquier estimulación en cualquier unidad del sistema afectará todas las demás unidades, debido a la relación existente entre ellas. El efecto total de esos cambios o alteraciones se presentará como un ajuste del todo al sistema. El sistema siempre reaccionará globalmente a cualquier estímulo producido en cualquier parte o unidad. Existe una relación de causa y efecto entre las diferentes partes del sistema. Así, el Sistema sufre cambios y el ajuste sistemático es continuo. De los cambios y de los ajustes continuos del sistema se derivan dos fenómenos el de la entropía y el de la homeostasia.
c)Entropía:Es la tendencia que los sistemas tienen al desgaste, a la desintegración, para el relajamiento de los estándares y para un aumento de la aleatoriedad. A medida que la entropía aumenta, los sistemas se descomponen en estados más simples. La segunda ley de la termodinámica explica que la entropía en los sistemas aumenta con el correr del tiempo, como ya se vio en el capítulo sobre cibernética.
A medida que aumenta la información, disminuye la entropía, pues la información es la base de la configuración y del orden. Si por falta de comunicación o por ignorancia, los estándares de autoridad, las funciones, la jerarquía, etc. de una organización formal pasan a ser gradualmente abandonados, la entropía aumenta y la organización se va reduciendo a formas gradualmente más simples y rudimentarias de individuos y de grupos. De ahí el concepto de negentropía o sea, la información como medio o instrumento de ordenación del sistema.
d) Homeostasis:Es el equilibrio dinámico entre las partes del sistema. Los sistemas tienen una tendencia adaptarse con el fin de alcanzar un equilibrio interno frente a los cambios externos del medio ambiente.
La definición de un sistema depende del interés de la persona que pretenda analizarlo. Una organización, por ejemplo, podrá ser entendida como un sistema o subsistema, o más aun un supersistema, dependiendo del análisis que se quiera hacer: que el sistema
Tenga un grado de autonomía mayor que el subsistema y menor que el supersistema.
Por lo tanto, es una cuestión de enfoque. Así, un departamento puede ser visualizado como un sistema, compuesto de vario subsistemas(secciones o sectores) e integrado en un supersistema(la empresa), como también puede ser visualizado como un subsistema compuesto por otros subsistemas(secciones o sectores), perteneciendo a un sistema
(La empresa), que está integrado en un supersistema (el mercado o la comunidad. Todo depende de la forma como se enfoque.
El sistema totales aquel representado por todos los componentes y relaciones necesarios para la realización de un objetivo, dado un cierto número de restricciones. El objetivo del sistema total define la finalidad para la cual fueron ordenados todos los componentes y relaciones del sistema, mientras que las restricciones del sistema son las limitaciones introducidas en su operación que definen los límites (fronteras) del sistema y posibilitan explicar las condiciones bajo las cuales debe operar
El término sistema es generalmente empleado en el sentido de sistema total.
Los componentes necesarios para la operación de un sistema total son llamados subsistemas, los que, a su vez, están formados por la reunión de nuevo subsistemas más detallados. Así, tanto la jerarquía de los sistemas como el número de los subsistemas dependen de la complejidad intrínseca del sistema total.
Los sistemas pueden operar simultáneamente en serie o en paralelo.
No hay sistemas fuera de un medio específico (ambiente): los sistemas existen en un medio y son condicionados por él.
Medio (ambiente) es el conjunto de todos los objetos que, dentro de un límite específico pueden tener alguna influencia sobre la operación del Sistema.
Los límites (fronteras) son la condición ambiental dentro de la cual el sistema debe operar.


Tipos de sistemas

Existe una gran variedad de sistema y una amplia gama de tipologías para clasificarlos, de acuerdo con ciertas características básicas.
En cuanto a su constitución, los sistemas pueden ser físicos o abstractos:
a) Sistemas físicos o concretos, cuando están compuestos por equipos, por maquinaria y por objetos y cosas reales. Pueden ser descritos en términos cuantitativos de desempeño.
b)Sistemas abstractos, cuando están compuestos por conceptos, planes, hipótesis e ideas. Aquí, los símbolos representan atributos y objetos, que muchas veces sólo existen en el pensamiento de las personas.
En realidad, en ciertos casos, el sistema físico (hardware)opera en consonancia con el sistema abstracto(software).
Es el ejemplo de una escuela con sus salones de clases, pupitres, tableros, iluminación, etc.
(sistema físico)para desarrollar un programa de educación(sistema abstracto);o un centro de procesamiento de datos, en el que el equipo y los circuitos procesan programas de instrucciones al computador.

En cuanto a su naturaleza, los sistemas pueden ser cerrados o abiertos:
a)Sistemas cerrados: Son los sistemas que no presentan intercambio con el medio ambiente que los rodea, pues son herméticos a cualquier influencia ambiental. Así, los sistemas cerrados no reciben ninguna influencia del ambiente, y por otro lado tampoco influencian al ambiente.
No reciben ningún recurso externo y nada producen la acepción exacta del término. Los autores han dado el nombre de sistema cerrado a aquellos sistemas cuyo comportamiento es totalmente determinístico y programado y que operan con muy pequeño intercambio de materia y energía con el medio ambiente. El término también es utilizado para los sistemas completamente estructurados, donde los elementos y relaciones se combinan de una manera peculiar y rígida produciendo una salida invariable. Son los llamados sistemas mecánicos, como las máquinas.
b)Sistemas abiertos: son los sistemas que presentan relaciones de intercambio con el ambiente, a través de entradas y salidas. Los sistemas abiertos intercambian materia y energía regularmente con el medio ambiente. Son eminentemente adaptativos, esto es, para sobrevivir deben reajustarse constantemente a las condiciones del medio.

Mantienen un juego recíproco con las fuerzas del ambiente y la calidad de su estructura es óptima cuando el conjunto de elementos del sistema se organiza, aproximándose a una operación adaptativa. La adaptabilidad es un continuo proceso de aprendizaje y de auto-organización.
Los sistemas abiertos no pueden vivir aislados. Los sistemas cerrados-esto es, los sistemas que están aislados de su medio ambiente- cumplen el segundo principio de la termodinámica que dice que "una cierta cantidad, llamada entropía, tiende a aumentar a un máximo".
La conclusión es que existe una "tendencia general de los eventos en la naturaleza física en dirección a un estado de máximo desorden". Sin embargo, un sistema abierto "mantiene así mismo, un continuo flujo de entrada y salida, un mantenimiento y sustentación de los componentes, no estando a lo largo de su vida en un estado de equilibrio químico y termodinámico, obtenido a través de un estado firme llamado homeostasis".

¿Qué es una señal?

• Una señal es una función de una o más variables físicas que contiene información acerca del comportamiento o la naturaleza de algún fenómeno.

• Es una función que contiene información sobre el estado ó comportamiento de un sistema físico.
Según el rango de variabilidad de la variable independiente, la señal puede ser:

1) Continua en el tiempo f(t), t Î [a,b]

2) Discreta en el tiempo: f(t) Î{to,t1,...,tn}

Según el rango de variabilidad de la amplitud, la señal puede ser:

1) Continua en amplitud
2) Discreta en amplitud


Ejemplos de aplicaciones de señales:

• Los voltajes en circuitos eléctricos
• Nuestra voz
• El índice Dow Jones semanal
• Ingeniería Biomédica
• Telecomunicaciones
• Acústica, Sonar, Radar
• Física Nuclear
• Proceso Digital de Imágenes


Tipos de señales

Señales Continuas y Discretas

Una señal x(t) es una señal continua si está definida para todo el tiempo t. Una señal discreta es una secuencia de números, denotada comúnmente como x[n], donde n es un número entero. Una señal discreta se puede obtener al muestrear una señal continua.

Descripción de señales en el dominio del tiempo


Valor Medio (en un intervalo T)
Valor Medio temporal
Valor Medio Cuadrático
Varianza

SEÑALES CONTINUAS

Por una señal continua entenderemos una función continua de una o varias dimensiones. Ejemplos de distintos tipos de señales podemos encontrar en los muy diversos aparatos de medida asociados al estudio de la física, química, biología, medicina, etc. Así por ejemplo, los distintos tipos de electro gramas que son usados en medicina son señales unidimensionales, ya que se representan por una o varias curvas en función del tiempo. Sin embargo, los distintos tipos de radiografías son señales bidimensionales y los resultados de la tomografía axial computerizada y la resonancia nuclear magnética son señales tridimensionales.
Haciendo uso del lenguaje matemático podemos decir que toda señal es una función matemática que toma un valor en cada punto del espacio en el que esta definida. Los resultados matemáticos sobre la aproximación de funciones, nos permiten expresar que cualquier función continua y periódica definida sobre una región finita del espacio puede ser aproximada por una suma infinita de términos, en donde cada término tiene una contribución a la formación de la señal que es independiente y ortogonal a cualquier otro término del desarrollo.

Existen distintas posibilidades a la hora de construir este tipo de aproximaciones, pero por distintos motivos la más usada ha sido aquella en que los términos tienen una significación como señales ondulatorias puras. Es decir, cada término es la contribución de una determinada frecuencia/longitud de onda a la formación de la señal. Así pues toda señal puede ser analizada desde dos puntos de vista, como una función continua sobre un espacio de valores de medida o como una función definida sobre un espacio de frecuencias. En esta lección estudiaremos las propiedades de cada una de estas representaciones y la relación existente entre ellas.

Una señal continua o señal en el tiempo-discreto es una señal que puede expresarse como una función cuyo dominio se encuentra en el conjunto de los números reales, y normalmente es el tiempo. La función del tiempo no tiene que ser necesariamente una función continua.
La señal es definida sobre un dominio que puede ser o no finito, sobre el cual a cada posible valor del dominio le corresponde un único valor de la señal. La continuidad de la variable del tiempo implica que el valor de la señal puede precisarse para cualquier punto arbitrario del tiempo perteneciente al dominio.

En muchas disciplinas se establece por convención que una señal continua debe tener siempre valores finitos, lo que tiene sentido sobre todo en el caso de las señales físicas.
Para algunos propósitos, las singularidades infinitas son aceptables siempre que la señal sea integrable sobre un intervalo finito. Por ejemplo, la señal definida por t − 1 no es integrable en el intervalo temporal ( − 1,1), mientras que t − 2 sí lo es.
Una señal analógica es continua por naturaleza. Las señales discretas utilizadas en el procesamiento digital de señales, pueden obtenerse mediante el muestreo y la cuantización de señales continuas.
Una señal continua también puede definirse sobre una variable independiente diferente al tiempo. Una de ellas es el espacio, y es particularmente útil en el procesamiento de imágenes, donde se utilizan dos dimensiones espaciales.

SEÑALES DISCRETAS.

• Las señales discretas se caracterizan por estar definidas solamente para un conjunto numerable de valores de la variable independiente.
• Se representan matemáticamente por secuencias numéricas.
• En la práctica suelen provenir de un muestreo periódico de una señal analógica

Las señales digitales se obtienen a partir de la cuantización de las señales discretas resultantes del muestreo de las señales analógicas.

Señales Analógicas y Digitales

Si una señal continua x(t) puede tomar cualquier valor en un intervalo continuo, entonces esa señal recibe el nombre de señal analógica. Si una señal discreta x[n] puede tomar únicamente un número finito de valores distintos, recibe el nombre de señal digital.


Señales Reales y Complejas

Una señal x(t) es real si sus valores son números reales, y una señal x(t) es compleja si sus valores son números complejos, es decir: x(t) = x1(t) + jx2(t).


Señales Determinísticas y Aleatorias

Las señales determinísticas son aquellas cuyos valores están completamente especificados en cualquier tiempo dado y por lo tanto, pueden modelarse como funciones del tiempo t. Las señales aleatorias son aquellas que toman valores aleatorios (al azar) en cualquier tiempo dado y deben ser caracterizadas estadísticamente.

Señales Pares e Impares

Una señal es par si se cumple que x(-t) = x(t) para todo t. Es impar si x(-t) = -x(t) para todo t. Cualquier señal puede ser expresada como una suma de dos señales, una de las cuales es par y la otra impar:
x(t) = xe(t) + xo(t)

donde

xe(t) = 0.5{x(t) + x(-t)}
xo(t) = 0.5{x(t) - x(-t)}


Señales Periódicas y No Periódicas

Una señal continua es periódica con periodo T si existe un valor positivo T tal que

x(t + T) = x(t) para todo t

Cualquier señal que no sea periódica se llama no periódica o aperiódica. El valor más pequeño de T que satisface esta ecuación se llama periodo fundamental.

El recíproco del periodo fundamental es la frecuencia fundamental, se mide en Hertz (ciclos por segundo) y describe qué tan seguido la señal periódica se repite.

La frecuencia angular, medida en radianes por segundo, se define como

Una señal discreta x[n] es periódica si satisface la condición:

x[n] = x[n + N] para todos los enteros n

donde N es un número entero. El valor más pequeño de N que satisface esta ecuación se llama periodo fundamental. La frecuencia angular fundamental, medida en radianes, se define por

Señales de Energía y Potencia

Señales de Energía:

Son señales que tienen energía finita, por lo que son limitadas en tiempo.
Se define la energía como : E = S x(n) 2


Se dice que una señal es de energía, si y sólo si la energía total de la señal satisface la condición

0 < E < ∞ Señales de Potencia: Se describen en términos de potencia las señales Periódicas, o Aleatorias estacionarias o no limitadas en t. Se define la potencia como Se dice que una señal es de potencia, si y sólo si la potencia promedio de la señal satisface la condición 0 < P < ∞ Para el caso continuo: Para el caso discreto:

Clasificación de Señales Junto con las clasificaciones de señales mostradas a continuación, es importante entender la Clasificación de Sistemas. Tiempo Continuo vs. Tiempo Discreto Como el nombre lo sugiere, esta clasificación se puede establecer, después de saber si el eje del tiempo (eje de las abscisas) es discreto o continuo (figura 1). Una señal continua en el tiempo tendrá un valor para todos los números reales que existen en el eje del tiempo. En contraste a esto, una señal discreta en el tiempo es comúnmente creada utilizando el Teorema de Muestreo para discretizar una señal continua, de esta manera la señal nada mas tendrá valores en los espacios que tienen una separación igual y son creados en el eje del tiempo. Figura 1 Análogo vs. Digital La diferencia entre lo análogo y lo digital es muy similar a la diferencia entre el tiempo continuo y el tiempo discreto. Sin embargo, en este caso, la diferencia es con respecto al valor de la función (eje de las ordenadas) (figura 2). Análogo corresponde al eje y continuo, mientras lo digital corresponde al eje y discreto. Un ejemplo de una señal digital es una secuencia binaria, donde la función solo tiene valores de cero o uno. Figura 2 Periódico vs. Aperiódico Señales periódicas se repiten con un periodo T, mientras las señales aperiódicas o no periódicas no se repitenPodemos definir una función periódica mediante la siguiente expresión matemática, donde t puede ser cualquier número y T es una constante positiva: El periodo, es el valor más pequeño de T que permita la validación de la ecuación 1. (a) Una señal periódica con periodo T0 (b) Una señal Aperiódica Causal vs. Anticausal vs. Nocausal Las señales causales son señales que tienen valor de cero en el tiempo negativo, y las señales anticausales tienen valor cero en el tiempo positivo. Las señales nocausales son señales con valor de cero en el tiempo positivo y negativo(figura 4). (a) Una señal causal (b) Una señal anticausal (c) Una señal nocausal Par vs. Impar Una señal par es cualquier señal f(t) que satisface f(t) f(−t). las señales pares se pueden detectar fácilmente por que son simétricas en el eje vertical. Una señal impar, es una señal f que satisface f(t) =−(f(−t)) (a) Una señal par (b) Una señal impar Usando las definiciones de par e impar, podemos demostrar que cualquier señal se puede escribir como una combinación de una señal par e impar. Cada señal tiene una descomposición par-impar. Para demostrar esto, no tenemos más que examinar una ecuación. f(t) = ½ (f(t) +f(−t)) + 1/2 (f(t) −f(−t)) Al multiplicar y sumar esta expresión, demostramos que lo explicado anteriormente es cierto. También se puede observar que f(t) +f(−t) satisface a una función par, y que f(t) −f(−t) satisface a una función impar . Ejemplo 1 (a) Esta señal será descompuesta usando la descomposición Par-Impar (b) Parte Par: e(t) = 1/2 (f(t) +f(−t)) (c) Parte Impar: o(t) = 1/2 (f(t) −f(−t)) (d) Revisa: e(t) +o(t) =f(t) Determinístico vs. Aleatorio Una señal determinística es una señal en la cual cada valor está fijo y puede ser determinado por una expresión matemática, regla, o tabla. Los valores futuros de esta señal pueden ser calculados usando sus valores anteriores teniendo una confianza completa en los resultados. Una señal aleatoria, tiene mucha fluctuación respecto a su comportamiento. Los valores futuros de una señal aleatoria no se pueden predecir con exactitud, solo se pueden basar en los promedios de conjuntos de señales con características similares (a) Señal Determinística

Tamaño finito vs. Tamaño infinito

Como el nombre lo implica, las señales se pueden caracterizar dependiendo de su tamaño el cual puede ser infinito o finito. Casi todas las señales finitas se utilizan cuando se tiene una señal discreta o se tiene una secuencia de valores. En términos matemáticos, f(t) es una señal de tamaño finito si tiene un valor que no sea cero en un intervalo finito t1<f(t) <t2 donde t1>−∞ y t2<∞. Se puede ver un ejemplo en figura 9. De igual manera, una señal de tamaño infinito f(t), es definida con valores no-cero para todos los números reales: ∞≤f(t) ≤−∞.
Señal sinusoidal
Se muestra el espectro de una señal sinusoidal muestreada, y se varía la frecuencia de la señal para identificar las réplicas espectrales.

En el panel superior se representan las formas de ondas temporales de la señal continua y de la señal muestreada, y en panel inferior el espectro de la señal muestreada. La frecuencia de muestreo es fs = 5 kHz, y el eje frecuencia del panel inferior tiene una escala de 1 kHz por división: está centrado en 0 Hz, el margen izquierdo corresponde a ―5 kHz, y el margen derecho a +5 kHz.


Muestreo

El muestreo consiste en el proceso de conversión de señales contínuas a señales discretas en el tiempo. Este proceso se realizada midiendo la señal en momentos periódicos del tiempo.
El número de muestras por segundo se conoce en inglés como el bit-rate.
Si el bit-rate es lo suficientemente alto, la señal muestreada contendrá la misma información que la señal original. Respecto a esto, el criterio de Nyquist asegura que para que la señal muestreada contenga la misma información que la contínua, la separación mínima entre dos instantes de muestreo debe ser 1/(2 W) , siendo W el ancho de banda de la señal. Dicho de otra forma, que la frecuencia de muestreo debe ser mayor o igual que 2 W.

Otro concepto básico relacionado con la codificación de la voz es la cuantificación
Cuantificación

La cuantificación es la conversión de una señal discreta en el tiempo evaluada de forma contínua a una señal discreta en el tiempo discrétamente evaluada. El valor de cada muestra de la señal se representa como un valor elegido de entre un conjunto finito de posibles valores.
Se conoce como error de cuantificación (o ruido), a la diferencia entre la señal de entrada (sin cuantificar) y la señal de salida (ya cuantificada), interesa que el ruido sea lo más bajo posible. Para conseguir esto, se pueden usar distintas técnicas de cuantificación:
· Cuantificación uniforme
· Cuantificación logarítmica
· Cuantificación no uniforme
· Cuantificación vectorial

Cuantificación uniforme

En los cuantificadores uniformes (o lineales) la distancia entre los niveles de reconstrucción es siempre la misma, como se observa en la siguiente figura:
No hacen ninguna suposición acerca de la naturaleza de la señal a cuantificar, de ahí que no proporcionen los mejores resultados. Sin embargo, tienen como ventaja que son los más fáciles y menos costosos de implementar.
En la siguiente figura se ve un ejemplo de cuantificación uniforme:

Cuantificación logarítmica

Las señales de voz pueden tener un rango dinámico superior a los 60 dB, por lo que para conseguir una alta calidad de voz se deben usar un elevado número de niveles de reconstrucción. Sin embargo, interesa que la resolución del cuantificador sea mayor en las partes de la señal de menor amplitud que en las de mayor amplitud. Por tanto, en la cuantificación lineal se desperdician niveles de reconstrucción y, consecuentemente, ancho de banda. Esto se puede mejorar incrementando la distancia entre los niveles de reconstrucción conforme aumenta la amplitud de la señal.
Un método sencillo para conseguir esto es haciendo pasar la señal por un compresor logarítmico antes de la cuantificación. Esta señal comprimida puede ser cuantificada uniformemente. A la salida del sistema, la señal pasa por un expansor, que realiza la función inversa al compresor. A esta técnica se le llama compresión. Su principal ventaja es que es muy fácil de implementar y funciona razonáblemente bien con señales distintas a la de la voz.
Para llevar a cabo la compresión existen dos funciones muy utilizadas: Ley-A (utilizada principalmente en Europa) y ley-µ(utilizada en EEUU).
Ley-A :
Ley-µ :

En la mayoría de los sistemas telefónicos, A se fija a 87.56 y µ a 255.
La siguiente figura muestra la gráfica de la ley-µ para distintos valores de µ:
Cuantificación no uniforme

El problema de la cuantificación uniforme es que conforme aumenta la amplitud de la señal, también aumenta el error. Este problema lo resuelve el cuantificador logarítmico de forma parcial. Sin embargo, si conocemos la función de la distribución de probabilidad, podemos ajustar los niveles de recontrucción a la distribución de forma que se minimice el error cuadrático medio. Esto significa que la mayoría de los niveles de reconstrucción se den en la vecindad de las entradas más frecuentes y, consecuentemente, se minimice el error (ruido).
La siguiente figura representa la cuantificación no uniforme:
En la práctica, se puede usar una estimación de la distribución para diseñar los cuantificadores. Esta estimación se puede obtener a partir de los datos a cuantificar de forma iterativa.
Cuantificación vectorial

En los métodos anteriores, cada muestra se cuantificaba independientemente a las muestras vecinas. Sin embargo, la teoría demuestra que ésta no es la mejor forma de cuantificar los datos de entrada. Resulta más eficiente cuantificar los datos en bloques de N muestras. El proceso es sencillamente una extensión de los anteriores métodos escalares descritos anteriormente. En este tipo de cuantificación, el bloque de N muestras se trata como un vector N-dimensional.
En la siguiente figura vemos un ejemplo de cuantificación vectorial (VQ) en dos dimensiones:
El plano XY está dividido en seis regiones distintas. El vector de entrada (con dos componentes) se reemplaza se reemplaza por el centroide i (representa todos los vectores de una determinada región i) de la región a la que pertenece.
La cuantificación vectorial ofrece mejores resultados que la cuantificación escalar, sin embargo, es más sensible a los errores de transmisión y lleva consigo una mayor complejidad computacional.
En el siguiente apartado encontrará la clasificación general de los codificadores de voz.

Clasificación de los codificadores de voz
Los codificadores de voz se clasifican en tres grandes grupos, a saber:
· codificadores de la forma de onda
· vocoders
· codificadores híbridos
En el primer grupo, codificadores de forma de onda, se engloban aquellos codificadores que intentan reproducir la forma de la onda de la señal de entrada sin tener en cuenta la naturaleza de la misma. Estos, en función de en qué dominio operen, se dividen en:
· codificadores en el dominio del tiempo
· codificadores en el dominio de la frecuencia
Este tipo de codificadores proporcionan una alta calidad de voz a bit rates medios, del orden de 32 kb/s. Sin embargo, no son útiles cuando se quiere codificar a bajos bit rates.
En el grupo de vocoders están aquellos codificadores que sí tienen en cuenta la naturaleza de la señal a codificar, en este caso la voz, y aprovechan las características de la misma para ganar en eficiencia. Permiten trabajar con muy bajos bit rates, pero la señal de voz que producen suena demasiado sintética.