Ayuda Para Usar Octave

Embed Size (px)

DESCRIPTION

Octave

Citation preview

  • Nociones bsicas de Octave Basado en un texto de Mariangeles (Angie) Soldi, modificado por Julieta Villanueva y Romina Galvan. OPERACIONES BSICAS CON ESCALARES. Octave trabaja con diferentes tipos de notaciones para los escalares: enteros, fraccionarios, reales, en forma exponencial. La manera mediante la cual opera entre ellos es anloga a una calculadora o a como se hace en papel. Slo con una pequea diferencia en los smbolos y en la sintaxis; ya que primero se escribe la variable que contendr el resultado y luego la operacin. Ejemplo: si x = 2 e y = 3 entonces z = x + y luego z = 5 Notacin:

    suma (+), resta (-), multiplicacin (*), divisin (/).

    OPERACIONES BSICAS CON VECTORES. Se pueden ingresar componente a componente , si los nmeros son consecutivos separados por los dos puntos (esto ltimo slo es vlido para ingresar en el caso de vectores fila). Ejemplo: c = [ 1 : 4 ] ingresa el vector fila, u = (1 2 3 4) v = [ 5; 6; 7; 8] ingresa el vector columna, v = Para sumar (+) o restar (-) vectores es como con escalares, pero viendo que coincidan en la cantidad de componentes. Ejemplo:

    5 6 7 8

  • Tomando v = [ 5:8 ] w = u + v = [ 6, 8, 10, 12 ] A la hora de multiplicar dos vectores se puede:

    calcular el producto escalar (que me devuelve un nmero), haciendo uso de la funcin intrnseca DOT.

    Ejemplo: p = dot (u,v) = 70

    multiplicar componente a componente (me devuelve un vector). Ejemplo: q = u .* v = [ 5 12 21 32 ]

    producto vectorial, se puede en el caso en que los vectores tengan 3 componentes (devuelve un vector perpendicular a los ingresados),para ello Octave cuenta con otra funcin intrnseca, que es: CROSS.

    Ejemplo: r = [ 1, 0, 0 ] s = [ 0, 1, 0 ] t = cross (r,s) = [ 0, 0, 1 ] OPERACIONES BSICAS CON MATRICES. Para ingresar una matriz se escriben los valores de los coeficientes entre corchetes y separados por comas para especificar las columnas en una misma fila, y por punto y coma para ir a la fila siguiente. Ejemplo: a = [ 1, 2; 3, 4 ] equivale a a = b = [ 6, 7; 8, 9 ] equivale a b =

    1 2 3 4

    6 7 8 9

  • Para sumar (+) y restar (-) matrices se trabaja igual que con los escalares, slo teniendo en cuenta que las dimensiones de las mismas deben coincidir. Ejemplo: c = a + b = En la multiplicacin (*) de matrices, hay que tener especial cuidado con las dimensiones para poder operar. Ms all de eso, el procedimiento es anlogo, a como se hace por definicin. Ejemplo: d = a * b =

    Caso particular: d = a .* b nos dar como resultado la multiplicacin componente a componente de las matrices (que es distinto a como se hace por definicin). Slo se puede realizar con matrices cuadradas.

    En ese caso: d = La divisin, siendo las matrices adecuadas para la operacin en cuanto a la dimensin, es de la forma: e = a \ b = que corresponde a calcular: e = inversa(a)*b Visto desde el lgebra, en este caso lo que se esta haciendo, es resolver un sistema de ecuaciones.

    7 9 11 13

    22 25 50 57

    6 14 24 36

    -4 -5 5 6

  • Ejemplo: Un sistema de 2 ecuaciones con 2 incgnitas; tenemos el problema AX = B, donde A es una matriz de 2x2, X es un vector de 2x1 y B es otro vector de 2x1. Entonces: A = X = B = para hallar las soluciones, es decir, x e y hay dos opciones a) resolver el sistema: 2x + 3y = 6 x = 6 7x + 5y = 32 y = -2 b) lo que es equivalente, calcular: X = inverse(A)*B = 6 -2 Nota: A eso se llega si multiplicando en ambos lados de la ecuacin por la inversa de A: A . X = B A-1. A . X = A-1 . B Id . X = X = A-1 . B

    Tambin en este caso est la opcin de dividir componente a componente. f = a .\ b = 6.0 3.5 2.6 2.2 El clculo de la matriz traspuesta est representado por el smbolo del apstrofe simple (') Ejemplo: g = a' = 1 3 2 4 Para la obtencin de la matriz inversa, se debe usar una funcin intrnseca de Octave. Ejemplo: h = inverse (a) = -2 1 1.5 -0.5

    2 3 7 5

    x y

    6 32

  • MANIPULACIN DE UNA MATRIZ. En Octave se puede hacer referencia a toda una columna o fila de una matriz y llamar a eso como un nuevo vector. Ejemplo:

    m = a ( : , 1 ) con eso le digo que tome todas filas de la columna uno, eso me devuelve el vector columna m =

    n = a ( 1 , : ) con eso le digo que tome todas columnas de la fila uno, eso me devuelve el vector fila n = ( 1 2 ) Y as creamos dos nuevos vectores. Luego, por ejemplo, podemos crear una matriz a partir de dos vectores. Ejemplo: l = a ( 2 , : ) = ( 3 4 ) p = [ l; n ] = ORDENAR UNA MATRIZ. Octave cuenta con una funcin intrnseca: SORT, cuyo objetivo es ordenar los coeficientes de las columnas de una matriz de manera creciente. Ejemplo: X = aplicando la funcin se obtiene: Y = sort (x) =

    1 5 12 4 3 13 3 2 14

    1 2 12 3 3 13 4 5 14

    1 3

    3 4 1 2

  • Dicha funcin tambin puede ser usada para producir una matriz que contenga los ndices originales (por fila) de la matriz ordenada. [ y, i] = sort(x) devuelve y = i = !!! NO puede ser usada para ordenar una matriz por filas. (Al menos en un solo paso). Ejemplo: Cmo ordenar una matriz segn la segunda columna, pero que a la vez las filas mantengan sus valores? Deben realizarse varios pasos: 1) ordenar la matriz por la segunda columna [ y, i] = sort (x(:,2)) devuelve, la columna ordenada y otro vector columna con el orden de los ndices y = 2 i = 3 3 2 5 1 2) le digo que vuelva a escribir la matriz X segn los ndices: t = a(i , :) t = CONTROL DE FLUJO. El BLOQUE IF es una estructura de decisin. Su sintaxis es: if ( condicin_1 ) lista_1 elseif ( condicin_2 ) lista_2 else lista_3 endif

    Las condiciones son expresiones NO ejecutables, sino que tienen el rol de controlar que parte del if se debe ejecutar. Es decir, si la primera condicin es verdadera entonces se ejecutan las sentencias que haya dentro de la lista_1. De lo contrario analiza las condiciones del elseif, si es verdadera, ejecutar la lista_2; y si fuese falsa ejecuta la lista_3 que corresponde al else.

    1 2 12 3 3 13 4 5 14

    1 3 1 3 2 1 2 1 3

    3 2 14 4 3 13 1 5 12

  • Puede haber tantos elseif como sean necesarios; sin embargo, slo puede haber UN else, que debe ir como ltima opcin.

    BLOQUE WHILE: es una estructura de repeticin o bucle. Sintaxis: while ( condicin ) cuerpo endwhile

    Este bloque consiste en ejecutar una y otra vez la lista de sentencias que haya en el cuerpo mientras que la condicin sea verdadera. Es decir, que slo se detendr cuando tal condicin ya no se cumpla.

    BLOQUE FOR: tambin consiste en una estructura de repeticin. Sintaxis: for variable = expresin cuerpo endfor

    A diferencia del while, en este bucle se indica el nmero de iteraciones; por medio de la expresin, la cual puede indicar el valor inicial y final (separados por los dos puntos), o una expresin propiamente dicha que indique cual es el inicio y el fin. En este ltimo caso las variables utilizadas para la expresin deben estar bien definidas con anterioridad.

    Lo que har el bucle ser tomar el primer valor, ejecutar las sentencias presentes en

    el cuerpo. Salir y preguntarse si el prximo valor que toma la variable pertenece al intervalo que le indica la expresin; si es as lo vuelve a ejecutar y sino saltea el bucle.

    Ejemplo: x=0 x=0 for t=1:5 equivalente con h=10 x=x+1 for t=1:h/2 endfor x=x+1 endfor

  • LEER Y ESCRIBIR ARCHIVOS. Para importar datos, es decir, existe un archivo con datos y se lo desea leer desde Octave; el comando a utilizar es: LOAD. Sintaxis: d = load ('nombre_del_archivo') A la hora de exportar un archivo, entindase por ello: guardar en un archivo lo que se ha estado trabajando; lo que hay que hacer es usar el comando: SAVE. Sintaxis: (simulando el promt de octave) octave15> save nombre_del_archivo GRFICOS EN 2-D. Para realizar un grfico se necesita tener previamente definidas las variables y los valores que esas van a tomar. En esos casos se usa el comando: PLOT. Sintaxis: plot (x,y) --> donde los valores de x se graficarn en el eje x y los de y en el y. El comando antes mencionado slo muestra un grfico por ventana. Mientras que el comando SUBPLOT permite realizar ms de uno y organizarlos de manera distinta. Sintaxis: subplot ( m, n, i )

    m : cantidad de grficos por fila n : cantidad de grficos por columna i : ndice de a cual de los grficos me refiero El ndice i se mueve por filas.

    Ejemplo: subplot (2,3,i) donde i va de 1 a 6 en el orden _________ | 1 | 2 | |___|___| | 3 | 4 | |___|___| | 5 | 6 | |___|___| Tambin est la opcin de que distintos grficos queden en un mismo par de ejes coordenados; para ello se usa la funcin: HOLD. La misma se activa agregndole on y una vez terminado se lo indica con off.

  • Ejemplo: Grafiquemos en los mismos ejes una recta y una parbola; x = [ 1:10 ] f(x) = x plot (x,f(x)) hold on g(x)= x.^2 plot (x,g(x)) hold off pause -1 PROGRAMA EJEMPLO: contiene algunos de los comandos y bloques explicados.

    Primero cargo la matriz 'datos' que contiene informacin sobre temperatura (en grados celsius), presin (en atmsferas) y volumen (en metros cbicos), respectivamente cada columna:

    90 0.00595 5 30 0.00310 8 250 0.01 4 445 0.00294 20 15 0.000814 29 100 0.012 2.5 50 0.00203 13 25 0.00143 17

    Luego corro el programa: d= load('datos'); columna_1=d(:,1); columna_2=d(:,2); columna_3=d(:,3); # paso las temperaturas a kelvin. tk=columna_1 + 273.15; # ahora la presin a pascales. pp=columna_2 *101300; # armo una nueva matriz con los datos ya pasados. m=[tk,pp,columna_3] # armo un bucle que pasa por todas las filas y preguntar si la temperatura es mayor igual a 10 y de acuerdo a ello enviar la informacin a una u otra rama del bloque if. Luego a ella, la guardo en nuevos vectores.

  • j=1; h=1; for i=1:8 if ( m(i,3)