Analisis Numerico
Introduccion a Octave
CNM-425
Contenido
1 Introducci
on
2 Estructuras Selectivas
3 Estructura repetitivas
4 Vectores y Matrices
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Aspectos basicos
Aspectos basicos
Ventajas
Sencillo de utilizar
Sint
axis muy similar a MATLAB
C
odigo abierto: amplia comunidad de soporte (foros, etc.)
A diferencia de MATLAB. . .
No soporta programaci
on orientada a objetos
Capacidad de gr
aficos limitada (GUIs)
GNU Octave
http://www.gnu.org/software/octave/
http://octave.sourceforge.net/
(Octave-Forge - Extra packages for GNU Octave)
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
~$ octave
octave:1>
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Operador Operaci
on Ejemplo Resultado
& y 2&3 1
| o 3|5 1
! negaci
on !7 0
Variables y formatos
Variables: expresiones (identificadores) asociados a datos almacenados
en un sistema de memoria
Variables y formatos
Tipo Formato
short punto fijo, 5 dgitos 3.1416
long punto fijo, 15 dgitos 3.14159265358979
short e punto flotante, 5 dgitos 3.1416e+000
long e punto flotante, 15 dgitos 3.141592653589793e+000
short g punto fijo o flotante, 5 dgitos 3.1416
long g punto fijo o flotante, 15 dgitos 3.14159265358979
Variables predefinidas
Variable Uso
ans almacena el u ltimo resultado
pi almacena el valor de = 3,1415 . . .
e almacena el valor de e = 2,7183 . . .
i almacena el valor de 1
eps epsilon de la m aquina
Inf infinito
NaN resultado no n umerico (Not a Number)
Entorno de trabajo
Variables utilizadas en una sesi
on de trabajo (who, whos)
rdenes ejecutadas (, )
Historial de o
octave:#> who -v
c cadena perim
octave:#> who -v
c perim
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Entorno de trabajo
octave:#> who -v
octave-3.0.1:32> whos -v
Funciones matematicas
Funci
on Uso
sqrt(x) calcula la raz cuadrada de x
exp(x) funci
on exponencial
log(x) funci
on logaritmo natural
sin(x) calcula sen(x)
cos(x) calcula cos(x)
tan(x) calcula tan(x)
asin(x) calcula sen1 (x)
acos(x) calcula cos1 (x)
atan(x) calcula tan1 (x)
Instrucciones de entrada/salida
Salida de datos: Entero d, i
Punto fijo f, g
disp("texto") Punto flotante e
Caracter c
printf("cadena de formato", arg1, arg2,...) Cadena de caracteres s
octave:#> m=3;
octave:#> disp(m)
3
Instrucciones de entrada/salida
Entrada de datos por teclado:
input("texto")
input("texto", "s")
octave:#> palabra
palabra = casa
octave:#> letras
letras = 4
Scripts
Archivos de texto plano sin formato, con extensi
on .m, que contienen
una sucesi
on de comandos de Octave
Se editan con cualquier editor de texto (usaremos QtOctave)
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Ejemplos de scripts
hola mundo.m
promedio.m
% Imprime los n
umeros ingresados y su promedio
printf("El promedio de %g y %g es: %g \n", num1, num2, prom);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Ejemplos de scripts
pmol.m
Ejemplos de scripts
Ejemplo 1.1
Escriba un programa (script) en Octave que tenga como entradas los datos
enteros A y B y escriba el resultado de la siguiente expresi
on:
(A + B)2
3
Soluci
on
operacion.m
Ejemplos de scripts
Ejemplo 1.2 (Area y permetro de un rect
angulo)
Escriba un programa (script) en Octave tal que dado como datos la base y la
altura de un rect
angulo, calcule su permetro y a
rea.
Soluci
on
rectangulo.m
AREA = BASE*ALTURA;
PERIMETRO = 2*(BASE+ALTURA);
Funciones
Son scripts que tienen una sintaxis predefinida Sintaxis de una funci
on
Ejemplo de funcion
Ejemplo 1.3 (Area y permetro de un rect
angulo con funciones)
Resuelva el ejemplo (1.2) del rect
angulo utilizando funciones.
Soluci
on
area.m rectangulo2.m
octave:#> rectangulo2
function z = perimetro(x,y) Ingrese la base: 2
% Calcula el per
metro de un Ingrese la altura: 3
% cuadrado de lados x e y El
area es 6.000000 y el per
metro es 10.000000
z = 2*(x+y);
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Funciones inline
Sintaxis:
f = inline("expresion")
octave:#> g = inline("g")
octave:#> x(10)2 + y(10)2 g =
ans = 1 f(x) = exp(x)*cos(x)
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
La instrucci
on selectiva determina si una instrucci
on particular se
ejecuta o no, seg
un el cumplimiento de una condici on P.
La representaci
on de una estructura selectiva se hace con palabras
(pseudoc
odigo) o por medio de una figura geometrica (diagrama de
flujo).
Sintaxis en Octave
if P
Instrucciones;
end
donde
P: condici
on o conjunto de condiciones a
evaluar.
Intrucciones: instrucciones a realizar si
la condici
on P es verdadera.
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Ejemplo 2.1
Soluci
on
nota.m
% Programa : nota.m
% Descripcion: Dada la calificaci
on de un
% alumno en un examen, se imprime "reprobado"
% si la calificaci
on menor a 3.
% Lee la calificaci
on del alumno
NOTA = input("Ingrese la nota: ");
if NOTA<3.0
disp("Reprobado");
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Ejemplo 2.2
Soluci
on
Datos:
Variables de salida:
sueldo.m
La instrucci
on selectiva doble si entonces / sino permite que el flujo
del diagrama se bifurque por dos ramas diferentes dependiendo del
cumplimiento de una condici on P.
Si al evaluar la condici
on P el resultado es verdadero, entonces se
ejecuta un conjunto de instrucciones; si el resultado es falso se
ejecutan otro conjunto de instrucciones.
Sintaxis en Octave
if P
Instrucciones1;
else
Instrucciones2;
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Ejemplo 2.3
Soluci
on
nota2.m
% Dada la calificaci
on de un alumno en
% un examen, se imprime "aprobado"si la
% calificaci
on mayor o igual a 3 y
% "reprobado" en caso contrario
% Lee la calificaci
on del alumno
NOTA = input("Ingrese la nota: ");
if NOTA>=3.0
disp("aprobado");
else
disp("reprobado");
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Ejemplo 2.4
Soluci
on
Datos:
Variables de salida:
# SUE NSUE
1 200000 230000
2 550000 594000
3 140000 161000
4 400000 460000
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Sintaxis en Octave
if Condicion1
if Condicion2
Operacion21;
else
Operacion22;
end
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Sintaxis en Octave
if P1
Operacion11;
elseif P2
Operacion21;
else
Operacion22;
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Sintaxis en Octave
if Condicion1
if Condicion2
Operacion21;
else
Operacion22;
end
else
if Condicion3
Operacion31;
end
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Realice un algoritmo ( Octave) tal que dado como dato un entero, determine
si es par y en caso de no serlo, determine si es divisble por 3.
Soluci
on
par.m
% Lee entero
a = input("Ingrese un entero: ");
if (rem (a, 2) == 0)
printf ("El numero es par \n");
elseif (rem (a, 3) == 0)
printf("El n
umero es impar...
y no es divisible por 3 \n");
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Ejemplo 2.6
Soluci
on
Datos:
Variables de salida:
comparar.m
%*******************************************
% Descripci
on: Dado tres enteros distintos,
% el programa los ordena de mayor a menor.
%*******************************************
% Lee tres enteros distintos
A = input("Ingrese un entero: ");
B = input("Ingrese un entero: ");
C = input("Ingrese un entero: ");
if A>B
if A>C
if B>C
printf(" %d, %d, %d \n", A, B, C);
else
printf(" %d, %d, %d \n", A, C, B);
end
else
printf(" %d, %d, %d \n", C, A, B);
end
else
if B>C
if A>C
printf(" %d, %d, %d \n", B, A, C);
else
printf(" %d, %d, %d \n", B, C, A);
end
else
printf(" %d, %d, %d \n", C, B, A);
end
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Sintaxis en Octave
for V=VI:ID:VF
sentencias
end
Ejemplo 3.1
Realice una algoritmo ( Octave) que imprima los enteros desde el 1 hasta el
10. No utilice estructuras repetitivas.
Soluci
on
naturales1.m
disp(1);
disp(2);
disp(3);
disp(4);
disp(5);
disp(6);
disp(7);
disp(8);
disp(9);
disp(10);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
naturales2.m
for i=1:10
disp(i);
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Ejemplo 3.3
Ejemplo 3.3
Realice una algoritmo ( Octave) que imprima los enteros impares desde el 1
hasta el 10.
Soluci
on
naturales2.m
for i=1:2:10
disp(i);
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Realice una algoritmo ( Octave) que imprima los enteros desde el 10 hasta
el 1.
Soluci
on
naturales2.m
for i=10:-1:1
disp(i);
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Utilizaci
on:
Cuentan las veces que ocurre un determinado suceso
Controlan la ejecuci
on de un bucle que se realiza un determinado
n
umero de veces.
Inicializaci
on: todo contador debe tomar un valor inicial antes de ser
usado
Sintaxis de un contador:
o tambien
Ejemplo 3.5
Soluci
on
Datos:
Variables de salida:
cuenta ceros.m
N = input("Ingrese el n
umero de datos: ");
NUMCEROS = 0; % inicializa el contador
for i=1:N
NUM = input("Ingrese n
umero: ");
if NUM == 0
NUMCEROS = NUMCEROS + 1;
end
end
disp(NUMCEROS)
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Sintaxis de un acumulador:
Inicializaci
on: todo acumulador debe tomar un valor inicial antes de ser
usado
Soluci
on
Datos:
Variables de salida:
SUMA
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
sumaN.m
for i=1:N
SUMA = SUMA+i;
end
disp(SUMA);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
El factorial de un n
umero entero no negativo n se define como
n! = 1 2 (n 1) n , con 0! = 1 y 1! = 1
Soluci
on
Datos:
factorial.m
for i=1:N
PROD = PROD*i;
endfor
disp(PROD);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Sintaxis en Octave
while EXPRESION
INSTRUCCIONES
end
Ejemplo 3.8
Soluci
on
Variables:
N = input("Ingrese N: ");
NUM = 1;
SUM = 0;
while NUM <= N
SUM = SUM + NUM;
NUM = NUM + 1;
end
PROM = SUM/N;
printf("Promedio = %g \n", PROM);
promedio para.m
N = input("Ingrese N: ");
SUM = 0;
for i=1:N
SUM = SUM + i;
end
PROM = SUM/N;
printf("Promedio = %g \n", PROM);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Salir de un ciclo
17 , 15 , 18 , 16 , 19 , 17 , 20 , 18 , 21 , ...
Soluci
on
Variables:
sucesion mientras.m
NT = input("Ingrese n
umero de t
erminos: ");
TER = 17; % primer t
ermino
CONT = 1; % inicializa contador
BAN = 1; % inicializa bandera
sucesion para.m
NT = input("Ingrese n
umero de t
erminos: ");
TER = 17; % primer t
ermino
BAN = 1; % inicializa bandera
for CONT=1:NT
disp(TER);
if BAN == 1
TER = TER - 2;
BAN = 2;
else
TER = TER + 3;
BAN = 1;
end
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Soluci
on
Variables:
multiplos3.m
while strcmp(CONTINUAR,"si")
NUM = input("Ingrese entero: ");
if NUM < 0
CONTINUAR = "no";
elseif rem(NUM,3) == 0
SUMA = SUMA + NUM;
end
end
disp(SUMA);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
break:
Instrucci
on utilizada dentro de un bucle (for o while)
continue:
Instrucci
on utilizada dentro de un bucle (for o while)
return:
Instrucci
on utilizada dentro del cuerpo de una funci
on
La instrucci
on return permite salir (retornar) a una funci
on de un
ciclo anidado o una estructura selectiva
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Soluci
on
primo break.m
while k<=n
if rem(N,k) == 0
break;
end
k++;
end
if (rem (N, k) == 0)
printf("El menor divisor propio de %d es %d \n", N, k);
else
printf(" %d is primo\n", N);
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Soluci
on
primo continue.m
Soluci
on
primo.m
function y = primo(n)
i = 2; % inicializa contador del ciclo
while i<n
if rem(n,i) == 0
y = 0;
return
end
i++;
end
y = 1;
end
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Vectores
octave:#> x = [1 2 3] octave:#> z(2:5)
x = z =
1 2 3 2 3 4 5
octave:#> cos(alfa)
octave:#> z = [1:6] ans =
z = 1.0000e+00 6.1232e-17 -1.8370e-16
1 2 3 4 5 6 1.0000e+00
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
octave:#> plot(t,u);
octave:#> der = 1:0.2:2
der =
1.0000 1.2000 1.4000 1.6000 1.8000 octave:#> hold on
2.0000 octave:#> plot(t,u);
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Material en construccion. . .
Introducci
on Estructuras Selectivas Estructuras repetitivas Vectores y Matrices
Referencias
O. Cair
o
Metodologa de la programaci
on
Segunda edicion. Alfaomega Grupo Editor, S.A., 2005
M.A. Criado
Programaci
on en lenguajes estructurados
Alfaomega Grupo Editor, S.A. de C.V. Primera Edici
on, 2006
J.W. Eaton
GNU Octave: A high-level interactive language for numerical
computations
Network Theory Ltd., 2002
http://www.network-theory.co.uk/octave/manual/