Gnu Octave Guia Basica

8
Octave una alternativa libre para el cálculo numérico Hoy en día el software libre ha tratado de abarcar todas las áreas de aplicación: diseño, desarrollo, administración, hasta llegar a las áreas científicas, donde su potencial ha sido bien acogido, un ejemplo claro de ésto es el uso de Octave para el cálculo numérico. Introducción Hoy en día la mayoría de los centros de formación superior y Universidades, tratan de fomentar la investigación entre sus profesionales y alumnado, pero muchas veces esta tarea se ve limitada por la falta de herramientas e instrumentos que permitan encarar este proceso. Una de estas herramientas y/instrumentos la conforman las aplicaciones software, cuyo objetivo principal es la automatización de tareas morosas y álgidas que muchas veces los personas deben realizar. Para los profesionales y estudiantes dentro el mundo académico y de la investigación, es fundamental contar con herramientas que le permitan: Convertir la teoría en práctica Realizar tareas de forma automática Realizar cálculos matemáticos de forma más cómoda, sencilla, rápida y confiable. Valerse de estas herramientas para realizar experimentos que contribuyan a la ciencia y a la investigación. Hacer uso de funcionalidades ya implementadas, en lugar de desarrollarlas desde cero Reusar procedimientos y funciones realizadas por otros profesionales. ..... Es así que dentro del mundo matemático hoy en día contamos con una amplia variedad de aplicaciones software tanto comerciales como libres; un fenómeno que destaca actualmente es el uso del software libre, que al margen de proveer soluciones iguales o mejores a sus similares dentro el ámbito comercial de pago, permite fomentar directamente el trabajo en comunidad, estudia detalle de soluciones existentes (tener a disposición el código de la aplicación), su libre distribución y la colaboración dentro los proyectos existentes, aspecto que se convierte en fundamental al momento de encargar una investigación. Octave GNU Octave es un lenguaje de alto nivel, destinado principalmente al cálculo numérico, permite resolver problemas numéricos lineales, no lineales y una variedad de experimentos numéricos

description

Guía básica para programar datos estadísticos en octave

Transcript of Gnu Octave Guia Basica

  • Octave una alternativa librepara el clculo numricoHoy en da el software libre ha tratado de abarcar todas las reas de aplicacin: diseo, desarrollo, administracin, hasta llegar a las reas cientficas, donde su potencial ha sido bien acogido, un ejemplo claro de sto es el uso de Octave para el clculo numrico.

    Introduccin Hoy en da la mayora de los centros de formacin superior y Universidades, tratan de fomentar la investigacin entre sus profesionales y alumnado, pero muchas veces esta tarea se ve limitada por la falta de herramientas e instrumentos que permitan encarar este proceso. Una de estas herramientas y/instrumentos la conforman las aplicaciones software, cuyo objetivo principal es la automatizacin de tareas morosas y lgidas que muchas veces los personas deben realizar. Para los profesionales y estudiantes dentro el mundo acadmico y de la investigacin, es fundamental contar con herramientas que le permitan:

    Convertir la teora en prctica Realizar tareas de forma automtica Realizar clculos matemticos de

    forma ms cmoda, sencilla, rpida y confiable.

    Valerse de estas herramientas para realizar experimentos que contribuyan a la ciencia y a la investigacin.

    Hacer uso de funcionalidades ya implementadas, en lugar de desarrollarlas desde cero

    Reusar procedimientos y funciones realizadas por otros profesionales.

    ..... Es as que dentro del mundo matemtico hoy en da contamos con una amplia variedad de aplicaciones software tanto comerciales como libres; un fenmeno que destaca actualmente es el uso del software libre, que al margen de proveer soluciones iguales o mejores a sus similares dentro el mbito comercial de pago, permite fomentar directamente el trabajo en comunidad, estudia detalle de soluciones existentes (tener a disposicin el cdigo de la aplicacin), su libre distribucin y la colaboracin dentro los proyectos existentes, aspecto que se convierte en fundamental al momento de encargar una investigacin.

    Octave GNU Octave es un lenguaje de alto nivel, destinado principalmente al clculo numrico, permite resolver problemas numricos lineales, no lineales y una variedad de experimentos numricos

  • Requerimientos Para su instalacin se puede hacer uso del gestor de paquetes propio de cada distribucin:

    YUM, para CentOs, Fedora apt-get, para Debian, Ubuntu

    Caractersticas Se basa en un lenguaje orientado al

    clculo numrico Proporciona una consola para el uso

    del interprete de forma interactiva Compatible con la mayora las

    instrucciones de Matlab Puede extenderse mediante el uso de

    procedimientos y funciones por medio de mdulos dinmicos

    Capacidad de ser utilizado en archivos script

    Es multiplataforma

    Funciones incluidas Entrada/Salida Grficas Manejo de matrices lgebra lineal Ecuaciones no lineales Ecuaciones diferenciales Optimizacin Estadstica Funciones financieras Conjuntos Manejo de polinomios Teora de control Procesado de seales Procesado de imgenes Procesado de audio

    Tipos de datos Escalares Vectores y Matrices

    Escalares 17 ans = 17 1.7e1 ans = 17

    Vectores [2 4 6 8 10] ans = 2 4 6 8 10

    Matrices [1 2; 3 4] ans = 1 2 3 4

    Constantes e ans = 2.7183

    pi ans = 3.1416

    Algunos ejemplos sobre matrices Matriz identidad eye(5) ans = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1

    Matriz unidadones(5) ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

  • Matriz cerozeros(3,5) ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    magic(5) ans = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9

    Nmeros aleatorios rand() ans = 0.67079

    rand(3) ans =

    0.247306 0.785293 0.307220 0.035242 0.577977 0.277319 0.843676 0.804095 0.104045

    rand(2,4) ans = 0.52680 0.38192 0.60232 0.65686 0.29206 0.17618 0.60594 0.66963

    Variables x=1 y=rand(1,2)

    Intervalos 1:5 ans = 1 2 3 4 5

    1:3:25 ans = 1 4 7 10 13 16 19 22 25

    Operaciones Operacin Descripcin

    + Adicin suma

    Sustraccin resta

    * Multiplicacin

    ' Traspuesta

    ^ Potenciacin

    \ Divisin-izquierda

    / Divisin-derecha

    .* Producto elemento a elemento

    ./ y .\ Divisin elemento a elemento

    .^ Elevar a una potencia elemento a elemento

    Control de Flujo Esta parte se refiere al manejo de operadores de comparacin e instrucciones que permiten realizar comparaciones y repeticiones

    Comparacin de escalares 2 > 5 ans = 0

    2 & 5 ans = 1

    2 & 2ans = 1

    2 | 2ans = 1

    Comparacin entre vectores [2 4 6 8]

  • Archivos scriptHay ocasiones en que debemos hacer uso de varias instrucciones para obtener los resultados esperados, para esto podemos agruparlos en archivos de scripts (.m), los cuales contendrn la secuencia de instrucciones de octave; para ejecutarlos solo debemos introducir el nombre del archivo .m desde la consola de octave, como si se tratase de una instruccin cualesquiera:

    Sentencias comparativasOctave permite realizar comparaciones lgicas simples o compuestas. En el ejemplo siguiente dado un nmero x, determinamos si ste es Par o Impar.x=8; if (rem (x, 2) == 0) disp('Es par'); else disp('Es impar'); endif

    Sentencias repetitivasOctave permite que un cierto nmero de instrucciones se repitan un nmero finito de veces o hasta que se cumpla cierta condicin, como mostramos en los siguientes ejemplos:

    Forfor i = 0 : 5 disp(i) end

    Whilex = 20; while x > 0 x = x - 2; disp(x) end

    Do Untilx = 20; do x = x - 2; disp(x) until x

  • cosh(x) coseno hiperblico

    tanh(x) tangente hiperblica

    asinh(x) arco seno hiperblico

    acosh(x) arco coseno hiperblico

    atanh(x) arco tangente hiperblica

    log(x) logaritmo natural

    log10(x) logaritmo decimal

    exp(x) funcin exponencial

    sqrt(x) raz cuadrada

    round(x) redondeo hacia el entero ms prximo

    fix(x) redondea hacia el entero ms prxima 0

    floor(x) valor entero ms prximo hacia -

    ceil(x) valor entero ms prximo hacia +

    gcd(x) mximo comn divisor

    lcm(x) mnimo comn mltiplo

    real(x) partes reales

    imag(x) partes imaginarias

    abs(x) valores absolutos

    angle(x) ngulos de fase

    Algunas funciones vectoriales y matriciales

    Funcin Descripcin

    max() Valor mximo de un vector

    min() Valor mnimo de un vector

    sum() La suma de los elementos de un vector

    prod() Producto de los elementos de un vector

    median() La media de un vector

    var() Varianza de un vector

    std() Desviacin estndar de un vector

    sort() Ordena los elementos de un vector

    Algunas funciones matriciales

    Funcin Descripcin

    eig() Calcula el valor eig de una matriz

    inv() Matriz inversa

    poly() Polinomial caracterstica

    det() Determinante

    size() Tamao de la matriz

    norm(,p) Calcula la matriz normalizada

    rank() Calcula la tasa de una matriz

    Funcionales polinomiales polinomio=[1 3 2 -1] polinomio = 1 3 2 -1

    polyderiv(polinomio) ans = 3 6 2

    polyinteg(polinomio) ans = 0.25000 1.00000 1.00000 -1.00000 0.00000

  • polyval(polinomio,2) ans = 23

    roots(polinomio) ans = -1.66236 + 0.56228i -1.66236 - 0.56228i 0.32472 + 0.00000i

    Grficas Octave pone a nuestra disposicin el uso de grficas 2D y grficas 3D, dentro de cada una serie de funciones especiales

    Grficas 2D Octave para realizar grficas 2D cuenta con las siguientes funciones:

    plot(): permite crear un grfico a partir de vectores y/o columnas de matrices, las escalas que maneja para los ejes son lineales.

    loglog(): similar al anterior pero en este caso maneja una escala logartmica en los ejes

    semilogx(): similar a los anteriores, con la diferencia de manejar una escala lineal en el eje de ordenadas y una escala logartmica en el eje de abscisas

    semilogy(): invertida a la anterior.

    x=[rand(1,10)*10]; plot(x,'m')

    x=[rand(1,10)*10]; bar(x)

    x=[rand(1,10)*10]; area(x)

    x=[rand(1,10)*10]; pie(x)

  • Grficas 3D Generalmente las grficas 3D son las ms atrayentes e ilustrativas al momento de exponer el comportamiento de cierta funcin, por lo que octave no ha descuidado este aspecto. Para ilustrar de mejor forma el poder de las grficas 3D, mostramos los siguientes ejemplos: a=-8:0.3:8; b=a; [A,B]=meshgrid(a,b); R=sqrt(A.^2+B.^2)+eps; S=sin(R)./R; mesh(S)

    a=-8:0.3:8; b=a; [A,B]=meshgrid(a,b); R=sqrt(A.^2+B.^2)+eps; S=sin(R)./R; surf(S)

    Adicionalmente una vez realizado el grfico podemos adecuar su presentacin, dicho de otra forma hacerlo rotar, con tan solo haciendo uso del ratn y presionando en el grfico y orientndolo hacia la direccin deseada, algunos ejemplos son mostrados a continuacin:

    Personalizando las grficas En todos los casos no solo es necesario realizar la grfica de una funcin, sino ms al contrario es preciso personalizar la grfica en sus elementos esenciales como: sus ttulos, ejes, leyendas, grillas, etc. En el siguiente ejemplo mostramos como realizar esta personalizacin: x=[-pi:0.01:pi]; plot(x,sin(x),'r',x,cos(x),'g') title('Funcin seno(x) -en Rojo- y funcion coseno(x) -en Verde-') xlabel('Angulo en radianes') ylabel('Valor de la funcion trigonometrica') axis([-3,3,-1,1])

  • donde: title('ttulo'): aade un ttulo al dibujo. xlabel('etiqueta x'): aade una

    etiqueta al eje de abscisas. Con xlabel off desaparece.

    ylabel('etiqueta y'): aade una etiqueta al eje de ordenadas. Con ylabel off desaparece.

    text(x,y,'texto'): introduce 'texto' en el lugar especificado por las coordenadas x e y. Si x e y son vectores, el texto se repite por cada par de elementos. Si texto es tambin un vector de cadenas de texto de la misma dimensin, cada elemento se escribe en las coordenadas correspondientes.

    legend(): define rtulos para las distintas lneas o ejes utilizados en la figura. Para ms detalle, consultar el Help.

    grid: activa la inclusin de una cuadrcula en el dibujo. Con grid off desaparece la cuadrcula.

    Interaccin con lenguajes de programacin Una de las grandes virtudes de Octave es brindar la posibilidad de ser utilizado desde una aplicacin desarrollada en lenguajes de programacin como: Python, Perl, C, C++; cualidad que hace que se pueda reutilizar esta poderosa herramienta desde el desarrollo de nuestras propias aplicaciones.

    Poder de OctaveEste artculo solo intenta mostrar una pequea parte del gran potencial que se dispone en Octave. Adicionalmente comentar que muchsimas universidades en todo el mundo han incluido a esta herramienta por sus buenas caractersticas, innumerables funciones implementadas y sobre todo por su facilidad de uso y rapidez en su curva de aprendizaje.

    Referencias[1] http://www.gnu.org/software/octave/

    Autores

    Pilar Castel DiazCentro de Investigacin en Fsica y Matemticas (ES)[email protected]

    Esteban Saavedra Lpez Lder de la Comunidad ATIX (Oruro Bolivia) Activista de Software Libre en Bolivia [email protected] http://jesaavedra.opentelematics.org

    Introduccin Octave Requerimientos Caractersticas Funciones incluidas Tipos de datos Escalares Vectores Matrices Constantes Algunos ejemplos sobre matrices Nmeros aleatorios Variables Intervalos Operaciones Control de Flujo Comparacin de escalares Comparacin entre vectores Comparacin entre matrices Archivos scriptSentencias comparativasSentencias repetitivasForWhileDo UntilFunciones Estructura de una funcin Algunas funciones escalares Algunas funciones vectoriales y matriciales Algunas funciones matriciales Funcionales polinomiales Grficas Grficas 2D Grficas 3D Personalizando las grficas Interaccin con lenguajes de programacin Poder de OctaveReferenciasAutores