Escolar Documentos
Profissional Documentos
Cultura Documentos
Introducción a Octave.
Octave es un software con un lenguaje de alto nivel, interactivo, diseñado como herramienta
importante para manejar problemas de una amplia variedad que requieren de cálculos matri-
ciales.
Octave tiene muchos atractivos, entre ellos la capacidad de realizar gráficos de dos y tres
dimensiones y el tener un lenguaje de programación propio en el que el usuario puede crear sus
propios archivos y funciones.
La pantalla principal de Octave, el lugar donde se escriben las órdenes y se visualizan las
respuestas, se llama Ventana de Comandos (en inglés Command Window ). Los dos caracteres
>> que se muestran en la Ventana de Comandos indicando que está a la espera de órdenes es
conocido como Prompt.
Otra parte importante es el Editor. Este es un espacio de trabajo que nos permite guardar
secuencias de comandos (llamados script) en archivos de extensión .m, asi como crear funciones,
como veremos al final de esta introducción.
Octave dispone de un completo Help con el que se puede encontrar la información que
se desee. Puede disponerse desde el prompt, anteponiendo la palabra help al comando que
queremos investigar. Por ejemplo,
El “;” al final de una instrucción evita la información del resultado por pantalla.
Se considera comentario todo lo que se escribe desde el caracter % (por ciento) hasta el
final de la lı́nea.
Para limpiar la ventana de comandos, escribimos clc. Si además queremos liberar las
variables utilizadas, escribimos clear all.
Sugerimos conveniente para mejor organización, crear una carpeta propia de trabajo,
por ejemplo de nombre Matematica_D, en donde puedas ir guardando tus archivos y
programas. Después de haberla creado, busca tu carpeta desde Octave a través de Current
Directory o File Browser, transformándola ası́ en tu directorio activo de trabajo.
1. Operaciones básicas
Las operaciones aritméticas más simples, se escriben como en una calculadora. En la siguiente
tabla se muestran algunas sintaxis de las mismas (pensando en a y b números reales):
1
En Octave significa:
a*b ab
a
a/b
b
a^b ab
La prioridad de las operaciones en Octave es la usual. Primero se realizan las potencias,
luego las multiplicaciones y divisiones y finalmente las sumas y restas. Por ejemplo:
Las multiplicaciones y divisiones tienen la misma prioridad, lo mismo ocurre con las sumas y
restas. Cuando quedan por resolver operaciones con la misma prioridad, MATLAB las resuelve
de izquierda a derecha. Ası́,
a
a/b*c es lo mismo que c
b
a
Si queremos calcular debemos escribir a/(b*c) o también puede ser a/b/c
bc
En lenguaje matemático escrito, se suelen utilizar paréntesis ( ), corchetes [ ] y llaves { }
para indicar distintos niveles de prioridad dentro de una expresión complicada. En Octave se
usan sólo paréntesis a estos efectos. Los corchetes y las llaves tienen otro uso que ya veremos.
Por ejemplo:
5
b
para calcular 2 (3 + 2) ∗ a + escribimos (2*((3+2)*a+b/(c*d)))^5
cd
−3 + 2−5 4
b) p
3
Rta: -16.8131019947240.
0, 88 − 7/8
2
Octave almacena todos los resultados en la variable ans (por answer ), a menos que asignemos
el resultado a otra variable.
Al igual que en un lenguaje de programación, el signo = representa asignación. Por lo tanto
a la izquierda del mismo debe ir el nombre de una variable (sin sı́mbolos) a la que se le asignará
el resultado de la operación que está a la derecha.
>> a = 5*8
>> a = a + 5
>> a = 2 * a
>> a = a + 10;
>> a
2. Manipulación de matrices.
Ejercicio 3 (Manipulando vectores y matrices)
Analiza qué devuelve Octave después de escribir textualmente cada instrucción (si en un
ı́tem aparecen varias instrucciones, realı́zala de a una). Si no quieres olvidar qué es lo hace cada
comando, puedes copiar las instrucciones en un archivo .m usando el editor, comentando los
resultados después de un % .
a) A=[1 2 3; 4 5 6; 7 8 9; 10 11 12]
c) length(v) y size(A)
d) w(3) y A(2,3)
e) A(3,:) y A(:,3)
f ) A([2 4],:)
g) A([2:4],:)
i) A(2,:)=-4*A(1,:) + A(2,:)
k) A(2,:)=[]
l) u=u’ y u=u(end:-1:1)
m) b= v([2,5,9])
3
1. Investiga las funciones rand, randi, zeros, ones, eye y diag. Puedes practicar con ejem-
plos.
2. Introduce los vectores y matrices que se indican, pero sin ingresar uno a uno los valores
del vector o matriz:
1. A.*B da como resultado una matriz C cuyos elementos son Cij = Aij · Bij ; mientras que
A*B es el producto matricial usual entre matrices. Luego, éste podrá realizarse si las
dimensiones de las matrices intervinientes ası́ lo permiten.
2. A./B da como resultado una matriz D cuyos elementos son Dij = Aij /Bij y
4
3. A.^n resulta ser otra matriz cuyos elementos son (Anij ).
7. (C+E)^2 y C^2+2*C*E+E^2.
3x1 + 5x2 − x3 = 8
x1 − 6x2 + x3 = 4
x1 + x3 = 2
lo primero que debemos hacer es escribirlo en forma matricial. En este caso, la forma matricial
es:
3 5 −1 x1 8
1 −6 1 x2 = 4
1 0 1 x3 2
Para resolverlo, escribimos las siguientes lı́neas en Octave
>> A = [ 3 5 -1 ; 1 -6 1 ; 1 0 1 ];
>> b = [ 8 4 2 ]’;
>> x = A\b
5
a) Escribir en forma matricial y resolver el siguiente sistema lineal
x1 = 0
−x1 + 2x2 − x3 = 1/25
−x2 + 2x3 − x4 = 1/25
−x3 + 2x4 − x5 = 1/25
x5 = 0
4. Gráficos en el plano.
La instrucción plot permite dibujar en la pantalla de la PC. Si x e y son vectores de la misma
longitud, la orden plot(x,y) define atributos de la pantalla gráfica y realiza un gráfico plano de
los elementos de x contra los elementos de y. Es decir, si x = (x1 , x2 , ..., xn ) e y = (y1 , y2 , ..., yn ),
la orden mencionada da como resultado el gráfico que se obtiene uniendo los puntos (xi , yi )
consecutivamente. Para realizar el dibujo, la función plot establece un sistema de coordenadas
con escalas adaptadas en forma automática a los datos que se desean representar. Es posible
mediante otras funciones y comandos, modificar el aspecto del dibujo.
Ası́, si queremos realizar el gráfico de una función y = f (x) para x en un intervalo [a, b], se
deben generar los dos vectores x e y necesarios para plot. El primero corresponde a las abscisas
de los puntos a graficar, y son valores comprendidos entre a y b.
Para dibujar la gráfica de una función f sobre el intervalo [a, b] puedes seguir los siguientes
pasos:
>> x= a:.1:b; % x es un vector con componentes x(i) equiespaciadas por 0.1 entre a y b
>> y= f(x); % y es un vector cuyas componentes y(i) son los valores f(x(i))
>> plot(x,y) % grafica en el plano y une con segmentos de recta los puntos (x(i),y(i))
6
x = cos t
c) La curva dada por , t ∈ [0, 2π].
y = sin t
Para esto puedes definir el vector t=0:0.01:2*pi, luego x=cos(t) e y=sin(t). Finalmente
escribir plot(x,y).
x = t cos t
d) La curva dada por , t ∈ [0, 6π].
y = t sin t
El caracter r en la segunda ejecución de plot, hace que el gráfico se realice con color rojo.
En la siguiente tabla están algunas de las opciones para los gráficos:
Tipeando help plot puedes obtener más información sobre esta orden.
>> x=0:.1:3;
>> y1=x+1;
>> y2=x.^2;
>> plot(x,y1,’g.’,x,y2,’r’); % Dibuja y1 punteada en verde e y2
% en linea continua roja
>> grid % Realiza un cuadriculado sobre el grafico actual
7
A continuación tipea y analiza la siguiente secuencia:
El comando axis(c), donde c=[xmin, xmax, ymin, ymax], escala los ejes de manera que
el gráfico aparece en el rectángulo [xmin, xmax] × [ymin, ymax].
Ejercicio 9 Graficar los siguientes pares de funciones sobre el intervalo [0, 1]:
Ejercicio 10 Graficar los siguientes pares de funciones sobre el intervalo [−π, π]:
8
Una función es similar a un script, sólo que ejecuta comandos a partir de un valor ingresado
en el prompt. La mayorı́a de las funciones de Octave están en realidad en archivos .m, y se
pueden visualizar escribiendo type xx, donde xx es el nombre de la función. (ej: type magic).
Una diferencia importante entre función y script, es que las variables definidas en una función
sólo existen dentro de ella, mientras que en un script, una vez ejecutado, las variables pasan a
formar parte de nuestro espacio de trabajo.
Para elaborar sus propios scripts o funciones, deberán generar un nuevo archivo de texto con
el nombre que ustedes quieran, siempre y cuando termine en .m, para que Octave lo reconozca.
Este tipo de archivos se pueden crear, editar y guardar con el mismo Octave o con cualquier
editor de textos (ej: Bloc de notas).
Para que un archivo .m sea una función, tiene que empezar por la palabra function seguida
de las variables de salida entre corchetes, luego el sı́mbolo =, el nombre de la función y las
variables de entrada entre paréntesis.
9
>> y=mifun(10)
Por otro lado, vale destacar que las tres lı́neas comentadas debajo de function [y]= mifun(x)
sirven como help para mi función. Verifiquemos esto escribiendo en el prompt
>> help mifun
Una forma alternativa a la anterior para definir una función de valores reales (o vetoriales) a
valores reales (o vectoriales), es escribir en el prompt
>> mifun = @(x) x.^2;
>> mifun([3 5])
Notar que en este último caso, una vez cerrado el programa, al reabrirlo no podrá utilizarse
mifun, mientras que en el primer caso sı́. Además, el concepto de funciones del tipo function
en Octave, va más allá del concepto tradicional de función al que estamos habituados en ma-
temática. El próximo ejercicio da cuenta de ello.
Ejercicio 13 Considerar nuevamente el sistema del Ejercicio 6 inciso (c), esta vez para cual-
quier entero positivo N . Es decir,
x1 = 0,
−xi−1 + 2xi − xi+1 = 1/N 2 , i = 2, 3, . . . , N − 1,
xN = 0.
b) Modificar la función para que además grafique el resultado en el intervalo [0, 1].
6. Sentencias de control.
Octave posee las sentencias de control usuales: if, for, while cuya sintaxis puede estudiarse
mediante la función help o bien en algún manual disponible. Aquı́ sólo esbozaremos algunos
ejemplos para dilucidar su uso:
10
Modifique los valores de A y B, guarde nuevamente el script y corra el script. Repı́talo para
diferentes valores de A y B que permitan corrobar su buen funcionamiento.
% inicializamos s en cero
s=0;
% recorremos los numeros de 1 a n
for i=1:n,
% sumamos i a s
s=s+i;
end
Ejercicio 14 (Sentencias if, for, while) a) Escribir la función fact.m para calcular el fac-
torial de un número. La función comienza ası́:
function f = fact(n)
% function f = fact(n)
% Calcula el factorial de la parte entera de n
% Devuelve cero si n < 0
...
11
function c = comb(n,k)
% function c = comb(n,k)
% Calcula el numero combinatorio n! / (k! (n-k)!)
...
Determine el lı́mite de la misma, con un error no mayor que 10−8 . Para ello, considere
como estimación del error en el paso n-ésimo, a la diferencia entre xn+1 y xn . ¿A quién le
recuerda el lı́mite obtenido?
d) Modifique la función dados.m para que simule 1000 veces la cantidad de intententos requeri-
dos para obtener que la suma de dos dados sea n y obtenga un promedio de ello. Piense en
un caso donde pueda deducir la probabilidad fácilmente.¿Se corresponden los resultados con
lo esperado?
12