SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
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.

                                                     ✔   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
Introducción                                      como libres; un fenómeno que destaca
Hoy en día la mayoría de los centros de           actualmente es el uso del software libre, que
formación superior y Universidades, tratan de     al margen de proveer soluciones iguales o
fomentar    la   investigación    entre     sus   mejores a sus similares dentro el ámbito
profesionales y alumnado, pero muchas             comercial de pago, permite fomentar
veces esta tarea se ve limitada por la falta de   directamente el trabajo en comunidad,
herramientas e instrumentos que permitan          estudia detalle de soluciones existentes
encarar este proceso. Una de estas                (tener a disposición el código de la
herramientas y/instrumentos la conforman las      aplicación), su libre distribución y la
aplicaciones software, cuyo objetivo principal    colaboración dentro los proyectos existentes,
es la automatización de tareas morosas y          aspecto que se convierte en fundamental al
álgidas que muchas veces los personas             momento de encargar una investigación.
deben realizar.
Para los profesionales y estudiantes dentro el    Octave
mundo académico y de la investigación, es
fundamental contar con herramientas que le        GNU Octave es un lenguaje de alto nivel,
permitan:                                         destinado principalmente al cálculo numérico,
                                                  permite resolver problemas numéricos
   ✔   Convertir la teoría en práctica            lineales, no lineales y una variedad de
   ✔   Realizar tareas de forma automática        experimentos numéricos
   ✔   Realizar cálculos matemáticos de
       forma más cómoda, sencilla, rápida y
       confiable.
Requerimientos                                      Tipos de datos
Para su instalación se puede hacer uso del             ✔     Escalares
gestor de paquetes propio de cada
                                                       ✔     Vectores y Matrices
distribución:
   ✔   YUM, para CentOs, Fedora
                                                    Escalares
   ✔   apt-get, para Debian, Ubuntu
                                                    17
                                                    ans =    17
Características                                     1.7e1
                                                    ans =    17
   ✔   Se basa en un lenguaje orientado al
       cálculo numérico                             Vectores
   ✔   Proporciona una consola para el uso          [2 4 6 8 10]
       del interprete de forma interactiva          ans =
                                                    2 4 6 8 10
   ✔   Compatible con la mayoría              las
       instrucciones de Matlab
                                                    Matrices
   ✔   Puede extenderse mediante el uso de          [1 2; 3 4]
       procedimientos y funciones por medio         ans =
       de módulos dinámicos                         1 2
                                                    3 4
   ✔   Capacidad de         ser   utilizado   en
       archivos script
                                                    Constantes
   ✔   Es multiplataforma
                                                    e
                                                    ans = 2.7183

Funciones incluidas
                                                    pi
   ✔   Entrada/Salida                               ans = 3.1416

   ✔   Gráficas
   ✔   Manejo de matrices
                                                    Algunos ejemplos sobre
   ✔   Álgebra lineal
                                                    matrices
                                                    Matriz identidad
   ✔   Ecuaciones no lineales
                                                    eye(5)
   ✔   Ecuaciones diferenciales                     ans =
                                                       1     0    0    0   0
   ✔   Optimización                                    0     1    0    0   0
                                                       0     0    1    0   0
   ✔   Estadística                                     0     0    0    1   0
   ✔   Funciones financieras                           0     0    0    0   1

   ✔   Conjuntos
                                                    Matriz unidad
   ✔   Manejo de polinomios
                                                    ones(5)
   ✔   Teoría de control                            ans =
                                                       1    1     1    1   1
   ✔   Procesado de señales                            1    1     1    1   1
                                                       1    1     1    1   1
   ✔   Procesado de imágenes                           1    1     1    1   1
                                                       1    1     1    1   1
   ✔   Procesado de audio
Matriz cero                                                       '       Traspuesta
zeros(3,5)
ans =                                                             ^       Potenciación
   0   0   0          0    0
   0   0   0          0    0
                                                                         División-izquierda
   0   0   0          0    0

                                                                  /       División-derecha
magic(5)
ans =                                                             .*      Producto       elemento   a
   17    24          1     8     15
   23     5          7    14     16                                       elemento
    4     6         13    20     22
   10    12         19    21      3                           ./ y .     División       elemento   a
   11    18         25     2      9                                       elemento

Números aleatorios                                                .^      Elevar a una potencia
                                                                          elemento a elemento
rand()
ans = 0.67079

                                                          Control de Flujo
rand(3)
ans =                                                     Esta parte se refiere al manejo de
                                                          operadores de comparación e instrucciones
   0.247306          0.785293        0.307220
   0.035242          0.577977        0.277319             que permiten realizar comparaciones y
   0.843676          0.804095        0.104045             repeticiones

rand(2,4)
ans =
                                                          Comparación de escalares
   0.52680          0.38192      0.60232        0.65686   2 > 5
   0.29206          0.17618      0.60594        0.66963   ans = 0


Variables                                                 2 & 5
                                                          ans =       1
x=1
y=rand(1,2)
                                                          2 & 2
                                                          ans =       1
Intervalos
1:5                                                       2 | 2
ans =                                                     ans =       1
  1 2       3   4    5


1:3:25
                                                          Comparación entre vectores
ans =                                                     [2 4 6 8] <= [5 2 7 8]
   1   4        7    10   13    16    19   22    25       ans =
                                                             1   0   1   1
Operaciones
                                                          Comparación entre matrices
  Operación                    Descripción
                                                          [1 3; 5 7] <= [5 2; 6 7]
                                                          ans =
        +           Adición suma                             1   0
                                                             1   1
        –           Sustracción resta

        *           Multiplicación
Archivos script                                  Funciones
Hay ocasiones en que debemos hacer uso           Generalmente cuando uno tiene que
de varias instrucciones para obtener los         desarrollar un programa complejo, es
resultados esperados, para esto podemos          recomendable dividir éste en unidades
agruparlos en archivos de scripts (.m), los      lógicas más pequeñas, estas unidades son
cuales     contendrán     la   secuencia    de   llamadas funciones.
instrucciones de octave; para ejecutarlos        El manejo de funciones permite realizar
solo debemos introducir el nombre del            tareas     de    corrección,  ampliación    y
archivo .m desde la consola de octave, como      verificación de una forma más fácil y cómoda.
si se tratase de una instrucción cualesquiera:

                                                 Estructura de una función
Sentencias comparativas
                                                 function [valores de salida] = name
Octave permite realizar comparaciones            (valores de entrada)
lógicas simples o compuestas. En el ejemplo             secuencia de comandos
                                                 end function
siguiente dado un número x, determinamos si
éste es Par o Impar.
x=8;                                             Para comprender el manejo de funciones,
if (rem (x, 2) == 0)                             creamos una función que nos permita
  disp('Es par');                                calcular la suma de los elementos de un
else
  disp('Es impar');
                                                 vector:
endif

                                                 function s = suma(vector)
Sentencias repetitivas                             s = 0;
                                                   for i = 1: length(vector)
Octave permite que un cierto número de               s = s + vector(i);
instrucciones se repitan un número finito de       end
                                                 end
veces o hasta que se cumpla cierta
condición, como mostramos en los siguientes
ejemplos:                                        La forma de invocar a una función es la
                                                 siguiente:
For                                              suma([1 2 3 4 5])
                                                 ans = 15
for i = 0 : 5
  disp(i)
end                                              Algunas funciones escalares
                                                  Función               Descripción
While
x = 20;                                           sin(x)     seno
while x > 0
  x = x - 2;                                      cos(x)     coseno
  disp(x)
end                                               tan(x)     tangente

Do Until                                          asin(x)    arco seno
x = 20;
do                                                acos(x)    arco coseno
   x = x - 2;
   disp(x)                                        atan(x)    arco tangente (devuelve un
until x <= 0                                                 ángulo entre -90y 90o)

                                                  sinh(x)    seno hiperbólico
sum()     La suma de los elementos de
                                                        un vector
 cosh(x)    coseno hiperbólico
                                              prod()    Producto de los elementos de
 tanh(x)    tangente hiperbólica                        un vector

 asinh(x)   arco seno hiperbólico             median() La media de un vector

 acosh(x) arco coseno hiperbólico             var()     Varianza de un vector

 atanh(x)   arco tangente hiperbólica         std()     Desviación     estándar     de   un
                                                        vector
 log(x)     logaritmo natural
                                              sort()    Ordena los elementos de un
 log10(x)   logaritmo decimal                           vector
 exp(x)     función exponencial

 sqrt(x)    raíz cuadrada
                                             Algunas funciones
                                             matriciales
 round(x)   redondeo hacia el entero más
            próximo                           Función            Descripción

 fix(x)     redondea hacia el entero más      eig()     Calcula el valor eig de una
            próxima 0                                   matriz

 floor(x)   valor entero más próximo hacia    inv()     Matriz inversa
            -∞
                                              poly()    Polinomial característica
 ceil(x)    valor entero más próximo hacia
            +∞                                det()     Determinante

 gcd(x)     máximo común divisor              size()    Tamaño de la matriz

 lcm(x)     mínimo común múltiplo             norm(,p) Calcula la matriz normalizada

 real(x)    partes reales                     rank()    Calcula la tasa de una matriz

 imag(x)    partes imaginarias
                                             Funcionales polinomiales
 abs(x)     valores absolutos                polinomio=[1 3 2 -1]
                                             polinomio =
 angle(x)   ángulos de fase                     1   3    2 -1


                                             polyderiv(polinomio)
Algunas funciones                            ans =
                                                3   6   2
vectoriales y matriciales
 Función             Descripción             polyinteg(polinomio)
                                             ans =
                                                0.25000   1.00000    1.00000      -1.00000
 max()      Valor máximo de un vector        0.00000

 min()      Valor mínimo de un vector
polyval(polinomio,2)
ans = 23
                                                   x=[rand(1,10)*10];
                                                   bar(x)
roots(polinomio)
ans =
  -1.66236 + 0.56228i
  -1.66236 - 0.56228i
   0.32472 + 0.00000i


Gráficas
Octave pone a nuestra disposición el uso de
gráficas 2D y gráficas 3D, dentro de cada
una serie de funciones especiales


Gráficas 2D
Octave para realizar gráficas 2D cuenta con
las siguientes funciones:
                                                   x=[rand(1,10)*10];
   ✔   plot(): permite crear un gráfico a partir   area(x)
       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
       logarítmica en los ejes
   ✔   semilogx(): similar a los anteriores,
       con la diferencia de manejar una
       escala lineal en el eje de ordenadas y
       una escala logarítmica en el eje de
       abscisas
   ✔   semilogy(): invertida a la anterior.


x=[rand(1,10)*10];                                 x=[rand(1,10)*10];
plot(x,'m')                                        pie(x)
Gráficas 3D                                    Adicionalmente una vez realizado el gráfico
                                               podemos adecuar su presentación, dicho de
Generalmente las gráficas 3D son las más       otra forma hacerlo rotar, con tan solo
atrayentes e ilustrativas al momento de        haciendo uso del ratón y presionando en el
exponer el comportamiento de cierta función,   gráfico y orientándolo hacia la dirección
por lo que octave no ha descuidado este        deseada, algunos ejemplos son mostrados a
aspecto.                                       continuación:
Para ilustrar de mejor forma el poder de las
gráficas 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)                                        Personalizando las gráficas
                                               En todos los casos no solo es necesario
                                               realizar la gráfica de una función, sino más al
                                               contrario es preciso personalizar la gráfica en
                                               sus elementos esenciales como: sus títulos,
                                               ejes, leyendas, grillas, etc.
                                               En el siguiente ejemplo mostramos como
                                               realizar esta personalización:
                                               x=[-pi:0.01:pi];
                                               plot(x,sin(x),'r',x,cos(x),'g')
                                               title('Función 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])
Poder de Octave
                                                       Este artículo solo intenta mostrar una
                                                       pequeña parte del gran potencial que se
                                                       dispone en Octave. Adicionalmente comentar
                                                       que muchísimas universidades en todo el
                                                       mundo han incluido a esta herramienta por
                                                       sus buenas características, innumerables
                                                       funciones implementadas y sobre todo por su
                                                       facilidad de uso y rapidez en su curva de
                                                       aprendizaje.


                                                       Referencias
donde:                                                 [1]    http://www.gnu.org/software/octave/
   ✔     title('título'): añade un título al dibujo.
   ✔     xlabel('etiqueta x'): añade una               Autores
         etiqueta al eje de abscisas. Con xlabel
         off desaparece.
   ✔     ylabel('etiqueta y'): añade 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 también
         un vector de cadenas de texto de la           Pilar Castel Diaz
         misma dimensión, cada elemento                Centro de Investigación en Física y
         se         escribe         en          las    Matemáticas (ES)
         coordenadas correspondientes.                 pilar.castel.diaz@gmail.com
   ✔     legend(): define rótulos para las
         distintas líneas o ejes utilizados en la
         figura. Para más detalle, consultar el
         Help.
   ✔     grid: activa la inclusión de una
         cuadrícula en el dibujo. Con grid off
         desaparece la cuadrícula.


Interacción con lenguajes de                           Esteban Saavedra López
                                                       Líder de la Comunidad ATIX (Oruro – Bolivia)
programación                                           Activista de Software Libre en Bolivia
Una de las grandes virtudes de Octave es               jesaavedra@opentelematics.org
brindar la posibilidad de ser utilizado desde          http://jesaavedra.opentelematics.org
una aplicación desarrollada en lenguajes de
programación como: Python, Perl, C, C++;
cualidad que hace que se pueda reutilizar
esta poderosa herramienta desde el
desarrollo de nuestras propias aplicaciones.

Mais conteúdo relacionado

Destaque

Analisis Riesgo Metodología OCTAVE
Analisis Riesgo Metodología OCTAVEAnalisis Riesgo Metodología OCTAVE
Analisis Riesgo Metodología OCTAVEYairTobon
 
Fundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octaveFundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octaveGabriel Romero
 
América economía, El diseño de un nuevo ecosistema sociocultural
América economía, El diseño de un nuevo ecosistema socioculturalAmérica economía, El diseño de un nuevo ecosistema sociocultural
América economía, El diseño de un nuevo ecosistema socioculturalAlex Chipana
 
Jornadas ACEMUSACH
Jornadas ACEMUSACHJornadas ACEMUSACH
Jornadas ACEMUSACHACEMUSACH
 
YP-P2 Samsung Handbuch
YP-P2 Samsung HandbuchYP-P2 Samsung Handbuch
YP-P2 Samsung Handbuchmarco678
 
2014 a diseño de plan de vida_jmmh
2014 a diseño de plan de vida_jmmh2014 a diseño de plan de vida_jmmh
2014 a diseño de plan de vida_jmmhPrepa Cihuatlan
 
Teil l ii schule – heute, morgen
Teil l ii schule – heute, morgenTeil l ii schule – heute, morgen
Teil l ii schule – heute, morgenHeFre
 
CEAC Boletín noviembre 2014
CEAC Boletín noviembre 2014CEAC Boletín noviembre 2014
CEAC Boletín noviembre 2014Alex Chipana
 
Qualitätsentwicklung Besuch an der GSB
Qualitätsentwicklung Besuch an der GSBQualitätsentwicklung Besuch an der GSB
Qualitätsentwicklung Besuch an der GSBHeFre
 
Difusion taller ine sadi 2012
Difusion taller ine sadi 2012Difusion taller ine sadi 2012
Difusion taller ine sadi 2012usapuka
 
Test2 Sound
Test2 SoundTest2 Sound
Test2 Soundtguingab
 
Interactivo en multimedia
Interactivo en multimediaInteractivo en multimedia
Interactivo en multimediaMtz Rey
 

Destaque (20)

Analisis Riesgo Metodología OCTAVE
Analisis Riesgo Metodología OCTAVEAnalisis Riesgo Metodología OCTAVE
Analisis Riesgo Metodología OCTAVE
 
Euler y runge kutta
Euler y runge kuttaEuler y runge kutta
Euler y runge kutta
 
Fundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octaveFundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octave
 
Software Libre
Software LibreSoftware Libre
Software Libre
 
América economía, El diseño de un nuevo ecosistema sociocultural
América economía, El diseño de un nuevo ecosistema socioculturalAmérica economía, El diseño de un nuevo ecosistema sociocultural
América economía, El diseño de un nuevo ecosistema sociocultural
 
Proyecto Itinere 1337
Proyecto Itinere 1337Proyecto Itinere 1337
Proyecto Itinere 1337
 
Jornadas ACEMUSACH
Jornadas ACEMUSACHJornadas ACEMUSACH
Jornadas ACEMUSACH
 
YP-P2 Samsung Handbuch
YP-P2 Samsung HandbuchYP-P2 Samsung Handbuch
YP-P2 Samsung Handbuch
 
2014 a diseño de plan de vida_jmmh
2014 a diseño de plan de vida_jmmh2014 a diseño de plan de vida_jmmh
2014 a diseño de plan de vida_jmmh
 
Teil l ii schule – heute, morgen
Teil l ii schule – heute, morgenTeil l ii schule – heute, morgen
Teil l ii schule – heute, morgen
 
Rock Catala
Rock CatalaRock Catala
Rock Catala
 
CEAC Boletín noviembre 2014
CEAC Boletín noviembre 2014CEAC Boletín noviembre 2014
CEAC Boletín noviembre 2014
 
Qualitätsentwicklung Besuch an der GSB
Qualitätsentwicklung Besuch an der GSBQualitätsentwicklung Besuch an der GSB
Qualitätsentwicklung Besuch an der GSB
 
Coterminal 1
Coterminal 1Coterminal 1
Coterminal 1
 
Difusion taller ine sadi 2012
Difusion taller ine sadi 2012Difusion taller ine sadi 2012
Difusion taller ine sadi 2012
 
The GazettE
The GazettEThe GazettE
The GazettE
 
Test2 Sound
Test2 SoundTest2 Sound
Test2 Sound
 
Fachrecherche BWL
Fachrecherche BWLFachrecherche BWL
Fachrecherche BWL
 
Unpoemadeamor1
Unpoemadeamor1Unpoemadeamor1
Unpoemadeamor1
 
Interactivo en multimedia
Interactivo en multimediaInteractivo en multimedia
Interactivo en multimedia
 

Semelhante a Octave una alternativa libre para el cálculo numérico

Scilab una alternativa libre para el cálculo numérico
Scilab una alternativa libre para el cálculo numéricoScilab una alternativa libre para el cálculo numérico
Scilab una alternativa libre para el cálculo numéricoEsteban Saavedra
 
Diapositivas de Optimizacion
Diapositivas de OptimizacionDiapositivas de Optimizacion
Diapositivas de OptimizacionNileidys_16
 
Presentacion TT Jorge Espoz
Presentacion TT Jorge EspozPresentacion TT Jorge Espoz
Presentacion TT Jorge EspozeiciUV
 
Los Sdkn - MATRIZ MÁGICA
Los Sdkn - MATRIZ MÁGICALos Sdkn - MATRIZ MÁGICA
Los Sdkn - MATRIZ MÁGICAprogramacionuce
 
So 2009-mod 06
So 2009-mod 06So 2009-mod 06
So 2009-mod 06maxsp5566
 
El análisis de fallas y la gestión del conocimiento (viicmmga)
El análisis de fallas y la gestión del conocimiento (viicmmga)El análisis de fallas y la gestión del conocimiento (viicmmga)
El análisis de fallas y la gestión del conocimiento (viicmmga)Eduardo Trujillo Hernández
 
Metodologia de sistemas
Metodologia de sistemasMetodologia de sistemas
Metodologia de sistemasCarPacheco
 
Workshop productividad 28 de octubre 2011
Workshop productividad   28 de octubre 2011Workshop productividad   28 de octubre 2011
Workshop productividad 28 de octubre 2011www.encamina.com
 
Optimizacion de Sistemas y Funciones PSM
Optimizacion de Sistemas y Funciones PSMOptimizacion de Sistemas y Funciones PSM
Optimizacion de Sistemas y Funciones PSMPablo Duarte
 

Semelhante a Octave una alternativa libre para el cálculo numérico (20)

Scilab una alternativa libre para el cálculo numérico
Scilab una alternativa libre para el cálculo numéricoScilab una alternativa libre para el cálculo numérico
Scilab una alternativa libre para el cálculo numérico
 
Optimizacion
OptimizacionOptimizacion
Optimizacion
 
Diapositivas de Optimizacion
Diapositivas de OptimizacionDiapositivas de Optimizacion
Diapositivas de Optimizacion
 
Presentacion TT Jorge Espoz
Presentacion TT Jorge EspozPresentacion TT Jorge Espoz
Presentacion TT Jorge Espoz
 
Python + Ciencia = ♥
Python + Ciencia = ♥Python + Ciencia = ♥
Python + Ciencia = ♥
 
Los Sdkn - MATRIZ MÁGICA
Los Sdkn - MATRIZ MÁGICALos Sdkn - MATRIZ MÁGICA
Los Sdkn - MATRIZ MÁGICA
 
LOS SDKN
LOS SDKNLOS SDKN
LOS SDKN
 
So 2009-mod 06
So 2009-mod 06So 2009-mod 06
So 2009-mod 06
 
Metricas
MetricasMetricas
Metricas
 
Sesion 1 Eureka
Sesion 1 EurekaSesion 1 Eureka
Sesion 1 Eureka
 
Sesion 1 Eureka
Sesion 1 EurekaSesion 1 Eureka
Sesion 1 Eureka
 
Sesion 1 Eureka
Sesion 1 EurekaSesion 1 Eureka
Sesion 1 Eureka
 
El análisis de fallas y la gestión del conocimiento (viicmmga)
El análisis de fallas y la gestión del conocimiento (viicmmga)El análisis de fallas y la gestión del conocimiento (viicmmga)
El análisis de fallas y la gestión del conocimiento (viicmmga)
 
Software 1
Software 1Software 1
Software 1
 
Metodologia de sistemas
Metodologia de sistemasMetodologia de sistemas
Metodologia de sistemas
 
Workshop productividad 28 de octubre 2011
Workshop productividad   28 de octubre 2011Workshop productividad   28 de octubre 2011
Workshop productividad 28 de octubre 2011
 
Introduccion a so
Introduccion a soIntroduccion a so
Introduccion a so
 
Optimizacion de Sistemas y Funciones PSM
Optimizacion de Sistemas y Funciones PSMOptimizacion de Sistemas y Funciones PSM
Optimizacion de Sistemas y Funciones PSM
 
Pack avanzosc pyme
Pack avanzosc pymePack avanzosc pyme
Pack avanzosc pyme
 
Foro 2 actividad 2
Foro 2  actividad 2Foro 2  actividad 2
Foro 2 actividad 2
 

Mais de Esteban Saavedra (20)

Atix30
Atix30Atix30
Atix30
 
Atix29
Atix29Atix29
Atix29
 
Atix28
Atix28Atix28
Atix28
 
Atix27
Atix27Atix27
Atix27
 
Atix26
Atix26Atix26
Atix26
 
Atix25
Atix25Atix25
Atix25
 
Rabbitmq
RabbitmqRabbitmq
Rabbitmq
 
Ansible
AnsibleAnsible
Ansible
 
Perl
PerlPerl
Perl
 
Atix24
Atix24Atix24
Atix24
 
Atix23
Atix23Atix23
Atix23
 
Lineas Base Migracion a Software Libre
Lineas Base Migracion a Software LibreLineas Base Migracion a Software Libre
Lineas Base Migracion a Software Libre
 
Seguridad Sistemas de Gobierno
Seguridad Sistemas de GobiernoSeguridad Sistemas de Gobierno
Seguridad Sistemas de Gobierno
 
Tunneling: Esquivando Restricciones de Proxies y Firewalls
Tunneling: Esquivando Restricciones de Proxies y FirewallsTunneling: Esquivando Restricciones de Proxies y Firewalls
Tunneling: Esquivando Restricciones de Proxies y Firewalls
 
Bi Un Modelo Eficiente para Gerenciar Empresas
Bi Un Modelo Eficiente para Gerenciar EmpresasBi Un Modelo Eficiente para Gerenciar Empresas
Bi Un Modelo Eficiente para Gerenciar Empresas
 
Clouds privadas
Clouds privadasClouds privadas
Clouds privadas
 
Introduccion Computacion Ubicua
Introduccion Computacion UbicuaIntroduccion Computacion Ubicua
Introduccion Computacion Ubicua
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Avances Tecnologicos
Avances TecnologicosAvances Tecnologicos
Avances Tecnologicos
 
Dni Electronico Bolivia
Dni Electronico BoliviaDni Electronico Bolivia
Dni Electronico Bolivia
 

Octave una alternativa libre para el cálculo numérico

  • 1. 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. ✔ 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 Introducción como libres; un fenómeno que destaca Hoy en día la mayoría de los centros de actualmente es el uso del software libre, que formación superior y Universidades, tratan de al margen de proveer soluciones iguales o fomentar la investigación entre sus mejores a sus similares dentro el ámbito profesionales y alumnado, pero muchas comercial de pago, permite fomentar veces esta tarea se ve limitada por la falta de directamente el trabajo en comunidad, herramientas e instrumentos que permitan estudia detalle de soluciones existentes encarar este proceso. Una de estas (tener a disposición el código de la herramientas y/instrumentos la conforman las aplicación), su libre distribución y la aplicaciones software, cuyo objetivo principal colaboración dentro los proyectos existentes, es la automatización de tareas morosas y aspecto que se convierte en fundamental al álgidas que muchas veces los personas momento de encargar una investigación. deben realizar. Para los profesionales y estudiantes dentro el Octave mundo académico y de la investigación, es fundamental contar con herramientas que le GNU Octave es un lenguaje de alto nivel, permitan: destinado principalmente al cálculo numérico, permite resolver problemas numéricos ✔ Convertir la teoría en práctica lineales, no lineales y una variedad de ✔ Realizar tareas de forma automática experimentos numéricos ✔ Realizar cálculos matemáticos de forma más cómoda, sencilla, rápida y confiable.
  • 2. Requerimientos Tipos de datos Para su instalación se puede hacer uso del ✔ Escalares gestor de paquetes propio de cada ✔ Vectores y Matrices distribución: ✔ YUM, para CentOs, Fedora Escalares ✔ apt-get, para Debian, Ubuntu 17 ans = 17 Características 1.7e1 ans = 17 ✔ Se basa en un lenguaje orientado al cálculo numérico Vectores ✔ Proporciona una consola para el uso [2 4 6 8 10] del interprete de forma interactiva ans = 2 4 6 8 10 ✔ Compatible con la mayoría las instrucciones de Matlab Matrices ✔ Puede extenderse mediante el uso de [1 2; 3 4] procedimientos y funciones por medio ans = de módulos dinámicos 1 2 3 4 ✔ Capacidad de ser utilizado en archivos script Constantes ✔ Es multiplataforma e ans = 2.7183 Funciones incluidas pi ✔ Entrada/Salida ans = 3.1416 ✔ Gráficas ✔ Manejo de matrices Algunos ejemplos sobre ✔ Álgebra lineal matrices Matriz identidad ✔ Ecuaciones no lineales eye(5) ✔ Ecuaciones diferenciales ans = 1 0 0 0 0 ✔ Optimización 0 1 0 0 0 0 0 1 0 0 ✔ Estadística 0 0 0 1 0 ✔ Funciones financieras 0 0 0 0 1 ✔ Conjuntos Matriz unidad ✔ Manejo de polinomios ones(5) ✔ Teoría de control ans = 1 1 1 1 1 ✔ Procesado de señales 1 1 1 1 1 1 1 1 1 1 ✔ Procesado de imágenes 1 1 1 1 1 1 1 1 1 1 ✔ Procesado de audio
  • 3. Matriz cero ' Traspuesta zeros(3,5) ans = ^ Potenciación 0 0 0 0 0 0 0 0 0 0 División-izquierda 0 0 0 0 0 / División-derecha magic(5) ans = .* Producto elemento a 17 24 1 8 15 23 5 7 14 16 elemento 4 6 13 20 22 10 12 19 21 3 ./ y . División elemento a 11 18 25 2 9 elemento Números aleatorios .^ Elevar a una potencia elemento a elemento rand() ans = 0.67079 Control de Flujo rand(3) ans = Esta parte se refiere al manejo de operadores de comparación e instrucciones 0.247306 0.785293 0.307220 0.035242 0.577977 0.277319 que permiten realizar comparaciones y 0.843676 0.804095 0.104045 repeticiones rand(2,4) ans = Comparación de escalares 0.52680 0.38192 0.60232 0.65686 2 > 5 0.29206 0.17618 0.60594 0.66963 ans = 0 Variables 2 & 5 ans = 1 x=1 y=rand(1,2) 2 & 2 ans = 1 Intervalos 1:5 2 | 2 ans = ans = 1 1 2 3 4 5 1:3:25 Comparación entre vectores ans = [2 4 6 8] <= [5 2 7 8] 1 4 7 10 13 16 19 22 25 ans = 1 0 1 1 Operaciones Comparación entre matrices Operación Descripción [1 3; 5 7] <= [5 2; 6 7] ans = + Adición suma 1 0 1 1 – Sustracción resta * Multiplicación
  • 4. Archivos script Funciones Hay ocasiones en que debemos hacer uso Generalmente cuando uno tiene que de varias instrucciones para obtener los desarrollar un programa complejo, es resultados esperados, para esto podemos recomendable dividir éste en unidades agruparlos en archivos de scripts (.m), los lógicas más pequeñas, estas unidades son cuales contendrán la secuencia de llamadas funciones. instrucciones de octave; para ejecutarlos El manejo de funciones permite realizar solo debemos introducir el nombre del tareas de corrección, ampliación y archivo .m desde la consola de octave, como verificación de una forma más fácil y cómoda. si se tratase de una instrucción cualesquiera: Estructura de una función Sentencias comparativas function [valores de salida] = name Octave permite realizar comparaciones (valores de entrada) lógicas simples o compuestas. En el ejemplo secuencia de comandos end function siguiente dado un número x, determinamos si éste es Par o Impar. x=8; Para comprender el manejo de funciones, if (rem (x, 2) == 0) creamos una función que nos permita disp('Es par'); calcular la suma de los elementos de un else disp('Es impar'); vector: endif function s = suma(vector) Sentencias repetitivas s = 0; for i = 1: length(vector) Octave permite que un cierto número de s = s + vector(i); instrucciones se repitan un número finito de end end veces o hasta que se cumpla cierta condición, como mostramos en los siguientes ejemplos: La forma de invocar a una función es la siguiente: For suma([1 2 3 4 5]) ans = 15 for i = 0 : 5 disp(i) end Algunas funciones escalares Función Descripción While x = 20; sin(x) seno while x > 0 x = x - 2; cos(x) coseno disp(x) end tan(x) tangente Do Until asin(x) arco seno x = 20; do acos(x) arco coseno x = x - 2; disp(x) atan(x) arco tangente (devuelve un until x <= 0 ángulo entre -90y 90o) sinh(x) seno hiperbólico
  • 5. sum() La suma de los elementos de un vector cosh(x) coseno hiperbólico prod() Producto de los elementos de tanh(x) tangente hiperbólica un vector asinh(x) arco seno hiperbólico median() La media de un vector acosh(x) arco coseno hiperbólico var() Varianza de un vector atanh(x) arco tangente hiperbólica std() Desviación estándar de un vector log(x) logaritmo natural sort() Ordena los elementos de un log10(x) logaritmo decimal vector exp(x) función exponencial sqrt(x) raíz cuadrada Algunas funciones matriciales round(x) redondeo hacia el entero más próximo Función Descripción fix(x) redondea hacia el entero más eig() Calcula el valor eig de una próxima 0 matriz floor(x) valor entero más próximo hacia inv() Matriz inversa -∞ poly() Polinomial característica ceil(x) valor entero más próximo hacia +∞ det() Determinante gcd(x) máximo común divisor size() Tamaño de la matriz lcm(x) mínimo común múltiplo norm(,p) Calcula la matriz normalizada real(x) partes reales rank() Calcula la tasa de una matriz imag(x) partes imaginarias Funcionales polinomiales abs(x) valores absolutos polinomio=[1 3 2 -1] polinomio = angle(x) ángulos de fase 1 3 2 -1 polyderiv(polinomio) Algunas funciones ans = 3 6 2 vectoriales y matriciales Función Descripción polyinteg(polinomio) ans = 0.25000 1.00000 1.00000 -1.00000 max() Valor máximo de un vector 0.00000 min() Valor mínimo de un vector
  • 6. polyval(polinomio,2) ans = 23 x=[rand(1,10)*10]; bar(x) roots(polinomio) ans = -1.66236 + 0.56228i -1.66236 - 0.56228i 0.32472 + 0.00000i Gráficas Octave pone a nuestra disposición el uso de gráficas 2D y gráficas 3D, dentro de cada una serie de funciones especiales Gráficas 2D Octave para realizar gráficas 2D cuenta con las siguientes funciones: x=[rand(1,10)*10]; ✔ plot(): permite crear un gráfico a partir area(x) 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 logarítmica en los ejes ✔ semilogx(): similar a los anteriores, con la diferencia de manejar una escala lineal en el eje de ordenadas y una escala logarítmica en el eje de abscisas ✔ semilogy(): invertida a la anterior. x=[rand(1,10)*10]; x=[rand(1,10)*10]; plot(x,'m') pie(x)
  • 7. Gráficas 3D Adicionalmente una vez realizado el gráfico podemos adecuar su presentación, dicho de Generalmente las gráficas 3D son las más otra forma hacerlo rotar, con tan solo atrayentes e ilustrativas al momento de haciendo uso del ratón y presionando en el exponer el comportamiento de cierta función, gráfico y orientándolo hacia la dirección por lo que octave no ha descuidado este deseada, algunos ejemplos son mostrados a aspecto. continuación: Para ilustrar de mejor forma el poder de las gráficas 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) Personalizando las gráficas En todos los casos no solo es necesario realizar la gráfica de una función, sino más al contrario es preciso personalizar la gráfica en sus elementos esenciales como: sus títulos, ejes, leyendas, grillas, etc. En el siguiente ejemplo mostramos como realizar esta personalización: x=[-pi:0.01:pi]; plot(x,sin(x),'r',x,cos(x),'g') title('Función 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])
  • 8. Poder de Octave Este artículo solo intenta mostrar una pequeña parte del gran potencial que se dispone en Octave. Adicionalmente comentar que muchísimas universidades en todo el mundo han incluido a esta herramienta por sus buenas características, innumerables funciones implementadas y sobre todo por su facilidad de uso y rapidez en su curva de aprendizaje. Referencias donde: [1] http://www.gnu.org/software/octave/ ✔ title('título'): añade un título al dibujo. ✔ xlabel('etiqueta x'): añade una Autores etiqueta al eje de abscisas. Con xlabel off desaparece. ✔ ylabel('etiqueta y'): añade 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 también un vector de cadenas de texto de la Pilar Castel Diaz misma dimensión, cada elemento Centro de Investigación en Física y se escribe en las Matemáticas (ES) coordenadas correspondientes. pilar.castel.diaz@gmail.com ✔ legend(): define rótulos para las distintas líneas o ejes utilizados en la figura. Para más detalle, consultar el Help. ✔ grid: activa la inclusión de una cuadrícula en el dibujo. Con grid off desaparece la cuadrícula. Interacción con lenguajes de Esteban Saavedra López Líder de la Comunidad ATIX (Oruro – Bolivia) programación Activista de Software Libre en Bolivia Una de las grandes virtudes de Octave es jesaavedra@opentelematics.org brindar la posibilidad de ser utilizado desde http://jesaavedra.opentelematics.org una aplicación desarrollada en lenguajes de programación como: Python, Perl, C, C++; cualidad que hace que se pueda reutilizar esta poderosa herramienta desde el desarrollo de nuestras propias aplicaciones.