Introducción a la Informática
ITBA Teoría 5
1
Octave Lenguaje Lenguaje de programa programación ción de alto nivel nivel orientad orientado o al procesa procesamien miento to numérico numérico.. Perm Permit ite e reso resolv lver er prob proble lema mas s de álge álgebr bra a line lineal al,, integrar integrar funcione funciones s numérica numéricament mente, e, manipul manipular ar polinomios, polinomios, operar operar con matrices, etc.
2
1
Octave
Características
• Di Dire recc cció ión n ww www. w.oc octa tave ve.o .org rg.. • Part Parte e de dell proy proyec ecto to GNU GNU con con lice licenc ncia ia GPL. GPL. • Vers Versio ione nes s pa para ra Wind Window ows, s, Ma Mac c y Linu Linux. x. • Es un prog progra rama ma de cons consol ola a o sea sea no tien tiene e inte intefa faz z gráf gráfic ica a. 3
Octave
Características
Permite ejecutar procesos: Dentro del programa mediante al ingreso de comandos por teclados. A través de archivos con funciones (definidos con extensión “.m”) Mediante a script scripts s de bash bash Mediante
4
2
Octave
Características
• Di Dire recc cció ión n ww www. w.oc octa tave ve.o .org rg.. • Part Parte e de dell proy proyec ecto to GNU GNU con con lice licenc ncia ia GPL. GPL. • Vers Versio ione nes s pa para ra Wind Window ows, s, Ma Mac c y Linu Linux. x. • Es un prog progra rama ma de cons consol ola a o sea sea no tien tiene e inte intefa faz z gráf gráfic ica a. 3
Octave
Características
Permite ejecutar procesos: Dentro del programa mediante al ingreso de comandos por teclados. A través de archivos con funciones (definidos con extensión “.m”) Mediante a script scripts s de bash bash Mediante
4
2
Octave
Ejecución
En linux desde la línea de comandos comandos ingresar el comando ´octave´. Luego del mensaje inicial, se puede ingresar cualquier comando en el prompt Ingres Ing resar ar ‘quit’ ‘quit’ o ‘exit’ ‘exit’ para para salir. salir. Mediante a la función atexit se atexit se pueden agregar acciones a realizar al momento de salir 5
Octave
Ayuda
El comando comando ‘help’ ‘help’ sirve para para ver la lista de operandos, comandos y funciones. ‘help ' muestra la ayuda ayuda del comando (o función) con ese nombre. Ejemplo: Ejemplo: ‘help ‘help help’ help’ comenta comenta como como se se usa usa el comando help El manual completo se encuentra online en: http://www.gnu.org/software/ http://www.gnu.org/software/octave/doc octave/doc/inter /inter preter/index.html 6
3
Octave
Tipos de datos numéricos
Los operadores que aplican a estos tipos de número son + - / * ^
Números naturales Números reales Notación exponencial Números complejos
12 3.4 4.37E-8 2 + 8i
1 - 3i
No poner espacios entre la i y el numero que la precede
7
Octave
Strings
Cadenas de caracteres que permiten guardar texto legible por los usuarios. Se delimitan con comillas dobles o simples (preferiblemente dobles). Se puede operar sobre los strings mediante a funciones especiales.
8
4
Octave
Escapes Escapes
Barra invertida Comillas dobles Comillas simples Nueva linea Tab Vertical tab 9
Octave
Vectores
Se define entre corchetes La coma (o espacios) separa elementos de una fila. El punto y coma separa elementos de una columna. octave:1> ans = octave:1> ans
[ 21, 35, 67] 21 35 [ 21; 35; 67] = 21 35 67
67
10
5
Octave
Matrices
Combinación de filas y columnas octave:1> [ 10, 5, 8 ; 3, 4, 1] ans = 10 5 8 3 4 1
Se accede a los elemento utilizando () El “:” indica toda la fila.
octave:1> [ 10, 5, 8 ; 3, 4, 1] (2, :) ans = 3 4 1 octave:1> [ 10, 5, 8 ; 3, 4, 1] (2, 2) ans = 4
11
Octave
El operador :
Genera un vector que contiene una secuencia de números El comando a:b crea el vector [a a+1 a+2 ... b] El comando a:c:b crea el vector [a a+c a+2*c a+3*c ... b]
octave:1> 1:8 ans = 1 2 3 4 5 6 octave:2> 4:6 ans = 4 5 6 octave:3> 2:0.25:3 ans = 2.00 2.25 2.75 3.00
7
8
2.50
12
6
Octave
Funciones para la construcción matrices
ones(N) crea una matriz de NxN con todos sus elementos igual a uno ones(F,C) crea una matriz de FxC con todos unos zeros(N) y zeros(F,C) crea una matriz de NxN o FxC de ceros eye(N) y eye(F,C) crea una matriz identidad de tamaño NxN o FxC rand(N) y rand(F,C) crea una matriz de tamaño NxN o FxC con valores aletorios entre 0 y 1 13
Octave
Al aplicar los operadores se debe tener en cuenta que la operación tenga sentido matemático. Por ejemplo:
Operaciones entre elementos
Para que sea posible multiplicar dos matrices la primera matriz debe tener tantas columnas como la segunda filas. Para sumar matrices y/o vectores ambos operandos deben tener la misma cantidad de elementos.
Si los operandos son mixtos, la operación es elemento a elemento. 14
7
Octave
Resumen de Operadores Aritméticos
a + b a - b
Suma y resta de escalares Suma y resta de matrices
a.+ b a.- b
Suma y resta de matrices elemento a elemento
a * b a / b
Producto y división de dos escalares Producto y división de dos matrices
a.* b a./ b
Producto y división de matrices elemento a elemento
a ^ b
Potencia de un escalar o una matriz
a.^ b
Potencia de los elementos de una matriz 15
Octave
Resumen de Operadores Relacionales
a == b
Igualdad, la respuesta es 1 si a es igual a b, ó 0 en caso contrario
a ~= b a <> b a != b
Desigualdad, la respuesta es 1 si a es distinto a b, ó 0 en caso contrario
a < b
1 si a es menor a b
a > b
1 si a es mayor a b
a <= b
1 si a es menor o igual a b
a >= b
1 si a es mayor o igual a b 16
8
Octave
Resumen de Operadores Lógicos
!x ~x
Not, 1 si x es 0 y
a | b a || b
Or, 1 si a ó b es distinto de 0
a & b a && b
And, 1 si a y b son distintos de 0
0 si x es distinto de 0
17
Octave
La matriz Transpuesta
Aplicando el operador ' a una matriz se obtiene la matriz traspuesta octave:1> [ 1 2 3; 4 5 6] ans =
1 4
2 5
3 6
octave:2> [ 1 2 3; 4 5 6] '
ans =
1 2 3
4 5 6
18
9
Octave
Variables
Los nombres de variables responden a la expresión regular [a-zA-Z_][a-zA-Z_0-9]* Los nombres de variables son case-sensitive Para asignarle un valor a una variable se utiliza el símbolo '=' Para utilizar su valor basta con indicar su nombre Los comandos who y whos permiten ver las variables definidas. octave:1> respuesta = 3 + 5 * 2 respuesta = 13 octave:2>X = (3 + 5) * 2 X = 16 octave:3> Y = 3 * X + 4 Y = 52 19
Octave
Variables predefinidas
Hay algunas variables predefinidas que son utiles: pi
3.1416
e
2.7183
inf
Inf
true
1
false
0
ans
Contiene la respuesta a la ultima operación no asignada 20
10
Octave
Acceso a los elementos de una matriz con :
•X(a:b,c:d) devolverá una matriz con los elementos de X que estén entre las filas a y b, y las columnas c y d octave:1> octave:2> SM = 6 4 octave:3> SM1 = 3 12
M = [3 6 8; 12 4 2; 1 10 2; 4 8 9]; SM = M(1:2,2:3) 8 2 SM1 = M(1:2,:) 6 8 4 2
21
Octave
Funciones de octave
Octave ofrece una gran cantidad de funciones sobre los distintos tipos de datos y además permite que el usuario cree sus propias funciones
22
11
Octave
Funciones Trigonométricas
Los ángulos son expresados en radianes Para pasar de grados a radianes se multiplicar por pi/180
sin(x) cos(x) tan(x)
Trigonométricas
asin(x) acos(x) atan(x)
Inversas
senh(x) cosh(x) tanh(x)
Hiperbólicas
asenh(x) acosh(x) atanh(x)
Hiperbólicas inversas
23
Octave
Otras Funciones
ceil(x)
Techo: mínimo número entero mayor que x
floor(x)
Piso: máximo número entero menor que x
fix(x)
Trunca: elimina la parte decimal de x
mod(x,y)
Resto: el resto de la división x / y
round(x)
Redondeo: el entero más cercano a x
sign(x)
Signo: 1 si x>0, -1 si x<0 y 0 si x=0
exp(x)
Exponencial ex
log(x)
Logaritmo natural
log10(x)
Logaritmo en base 10
log2(x)
Logaritmo en base 2
sqrt(x)
Raiz cuadrada 24
12
Octave length(x)
Funciones para vectores y matrices
Si x es un vector devuelve su longitud. Si x es una matriz devuelve la cantidad de filas o columnas, el valor que sea mayor
size(x)
Devuelve un vector de dos elementos con la cantidad de filas y de columnas de x
sum(x)
Si x es un vector retorna la suma de sus elementos Si x es una matriz retorna un vector con la suma de los elementos de cada columna
prod(x)
Si x es un vector retorna el producto de todos sus elementos Si x es una matriz retorna un vector con el producto de los elementos de cada columna 25
Octave m = max(x)
Funciones para vectores y matrices Si x es un vector max asigna a m el mayor elemento de x
[m i] = max(x)
Si x es un vector max asigna a m el mayor elemento de x y le asigna a i la posición de dicho elemento
diag(x)
Construye una matriz cuya diagonal es el vector x o bien devuelve un vector con los elementos de la diagonal de la matriz x
det(x)
Calcula el determinante de la matriz x
inv(x)
Calcula la inversa de la matriz x
rank(x)
Calcula el rango de la matriz x 26
13
Octave
Ejemplos de uso de funciones sobre vectores y matrices
x = [1, 2, 3, 4, 1]; y = [5; 3; 2]; z = [1, 3, 4, 2; 2, 3, 5, 1]; length(x) => 5 length(y) => 3 length(z) => 4 length(z’) => 4 sum(x) => 11 max(y) => 5 sum(z) => 3 6 9 3 prod(z) => 2 9 20 2
27
Octave
Funciones para Strings
deblank (s )
Quita los espacios al final de un string
findstr (s, t, overlap )
Devuelve un vector con las ocurrencias de t en s overlap indica si las respuestas pueden sobreponerse
index (s, t )
Devuelve la primera posición de t en s
rindex (s, t )
Devuelve la ultima posición de t en s
split (s, t, n )
Divide el string s en n partes usando t como separador
strcmp (s1, s2 )
Indica si los strings son iguales
strrep (s, x, y )
Reemplaza en s las ocurrecias de x por el string y
substr (s, beg, len )
Corta el string s desde la posición beg y len cara
tolower (s )
Pasa todos los caracteres a minusculas
toupper (s )
Pasa todos los caracteres a mayusculas
isdigit (s )
Devuelve true si el string representa a un numero
isalpha (s )
Devuelve true si todos los caracteres son letras
28
14
Octave
Funciones para Strings
findstr ("ababab", "a") => [ 1, 3, 5 ] index ("Teststring", "t") => 4 rindex ("Teststring", "t") => 6 split ("Test string", "t") => "Tes " " s " "ring" split ("Test string", "t", 2) => "Tes " " string" strrep ("This is a test string", "is", "&%$") => "Th&%$ &%$ a test string" substr ("This is a test string", 6, 9) => "is a test" isalpha ("!Q@WERT^Y&") => [ 0, 1, 0, 1, 1, 1, 1, 0, 1, 0 ] Isdigit(“f2/0231a9?”) => [ 0, 1, 0, 1, 1, 1, 1, 0, 1, 0 ] olower ("MiXeD cAsE 123") => "mixed case 123" toupper ("MiXeD cAsE 123") => "MIXED CASE 123"
29
Octave
Entrada y Salida
El comando ‘disp(x)’ permite escribir en la pantalla el contenido del parametro x. Siempre agrega un carácter de nueva linea al terminar. octave:1> disp ("The value of pi is:"), disp (pi) the value of pi is: 3.1416
El comando ‘input(x)’ imprime el mensaje x y espera que el usuario ingrese una expresión que evalua y resuelve octave:1> input ("Pick a number, any number! ")
30
15
Octave
Gráficos
Octave no cuenta con una interfase gráfica. Para generar gráficos se basa en la aplicación gnuPlot.
31
Octave
Gráficos en dos dimensiones
• Se utiliza el comando plot. • En su versión más simple el comando plot(x) grafica los elementos del vector x. octave:1> X = sin(0:0.1:2*pi); octave:2> plot(X)
32
16
Octave
Gráficos en dos dimensiones
Agregando un segundo parámetro, plot(x,y) realiza un gráfico del vector y, en función del vector x. Los vectores x e y deben ser del mismo tamaño. Cada punto n de la curva tiene las coordenadas (x(n), y(n))
33
Octave
Gráficos en dos dimensiones
octave:1> X = 0:0.1:2*pi; octave:2> plot(X,sin(X))
34
17
Octave
Formato de gráficos en dos dimensiones
Agregando un tercer parámetro, plot(x,y,fmt) realiza un gráfico del vector y, en función del vector x con el formato especificado en fmt
El formato es una cadena de caracteres que especifica, el tipo de punto, su color y el nombre de la serie.
”*g;Coseno de X;”
Los puntos se indican con un asterisco
Título de la serie (encerrado entre ; ) Los puntos son de color verde (green)
Octave
35
Formato de gráficos en dos dimensiones
Formato del punto: “-” grafica una línea que une los puntos “.” grafica puntos “+” grafica los puntos con forma de + “*” grafica los puntos con forma de * “o” grafica los puntos con forma de o “^” grafica impulsos Color: “r” rojo
“g” verde
“b” azul
“m” magenta
“c” cyan
“w” blanco 36
18