Está en la página 1de 66

Introduccion al Octave

Francisco Pena (USC)

29 de diciembre de 2010

1 / 66
Indice del documento

Indice del
documento
1. Introduccion a lenguajes avanzados de computacion tecnica.
Introduccion a 2. Introduccion al lenguaje Octave.
lenguajes avanzados
de computacion 3. Matrices y arrays. Estructuras de datos.
tecnica
4. Calculo simbolico.
Introduccion al
lenguaje Octave 5. Visualizacion grafica.
Matrices y arrays.
Estructuras de datos
6. Ficheros en Octave.
Calculo simbolico
7. Desarrollo de algoritmos.
Visualizacion grafica 8. Importacion de datos.
Ficheros en Octave 9. Aplicaciones al calculo numerico.
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico

2 / 66
Indice del
documento
Introduccion a
lenguajes avanzados
de computacion
tecnica
Lenguajes
Lenguajes II
Lenguajes III
Lenguajes IV Introduccion a lenguajes avanzados de
Lenguajes V
Introduccion al computacion tecnica
lenguaje Octave
Matrices y arrays.
Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico

3 / 66
Lenguajes

Indice del
documento
Calculo simbolico: se trabaja con constantes y expresiones
Introduccion a simbolicas.
lenguajes avanzados
de computacion 2, constante simbolica que representa la raz de 2;
tecnica 2
Lenguajes 2 , constante simbolica que representa el numero 2.
Lenguajes II
Lenguajes III
Lenguajes IV
x2 , expresion simbolica que representa la funcion
Lenguajes V matematica f (x) = x 2;
R 2
Introduccion al
lenguaje Octave
x dx, su integral indefinida es otra expresion simbolica,
x3
Matrices y arrays.
Estructuras de datos
3 + C.

Calculo simbolico Un programa que implementa el calculo simbolico suele


Visualizacion grafica llamarse sistema de algebra computacional.
Ficheros en Octave Los mas conocidos son Mathematica, Maple y Maxima.
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico

4 / 66
Lenguajes II

Indice del
documento
A menor escala, Octave tambien puede operar
Introduccion a simbolicamente.
lenguajes avanzados
de computacion El calculo simbolico es util para
tecnica
Lenguajes simplificacion de expresiones,
x2 + 2x + 1 (x + 1)2
Lenguajes II
Lenguajes III
Lenguajes IV resolucion exacta de ecuaciones lineales o no lineales,
Lenguajes V
(
x2 + xy + y = 3 1
 1

Introduccion al
lenguaje Octave 2
3 , 3/2
x 4x + 3 = 0
Matrices y arrays.
Estructuras de datos calculo de lmites,
Calculo simbolico lmx1 x2 y y
Visualizacion grafica calculo de derivadas, integrales indefinidas
Ficheros en Octave d
Desarrollo de dx sin(x) cos(x)
algoritmos resolucion exacta de ecuaciones diferenciales.
Importacion de
datos
Aplicaciones al
calculo numerico

5 / 66
Lenguajes III

Indice del
documento
A veces, el calculo simbolico no puede ser realizado, por
Introduccion a limitaciones del propio sistema o por impedimentos de tipo
lenguajes avanzados
de computacion matematico.
tecnica
Lenguajes
Calculo numerico: se trabaja con numeros representables en
Lenguajes II un ordenador.
Lenguajes III
Lenguajes IV 2 se 2 almacena como 1.414213562373095;
Lenguajes V
Introduccion al
2 , es un numero proximo a 2.
lenguaje Octave El uso de Rfunciones se limita a calculos que devuelven
1
Matrices y arrays.
Estructuras de datos
numeros: 0 x2 dx, es un numero proximo a 1/3.
Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico

6 / 66
Lenguajes IV

Indice del
documento
Con el calculo numerico es posible hallar un resultado
Introduccion a aproximado de los problemas anteriores, incluso cuando el
lenguajes avanzados
de computacion calculo simbolico falla.
tecnica
Lenguajes
Su limitacion reside en que solo obtiene resultados numericos:
Lenguajes II
Lenguajes III Con calculo numerico podemos saber que la derivada de
Lenguajes IV
Lenguajes V
x2 en x=2 es 4;
Introduccion al Solo con calculo simbolico podremos ver que la derivada
lenguaje Octave
en todo punto es 2x.
Matrices y arrays.
Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico

7 / 66
Lenguajes V

Indice del
documento
El programa orientado al calculo numerico mas conocido es
Introduccion a Matlab.
lenguajes avanzados
de computacion
tecnica
GNU Octave pretende ser un clon de software libre de
Lenguajes Matlab. Se diferencia en la interfaz grafica y las
Lenguajes II
Lenguajes III toolboxes (por ejemplo, de calculo simbolico).
Lenguajes IV Scilab ha sido desarrollado por INRIA. No es totalmente
Lenguajes V
Introduccion al
compatible con Matlab, pero se trabaja en un traductor
lenguaje Octave de Matlab a Scilab.
Matrices y arrays.
Estructuras de datos Otras herramientas de calculo cientfico son:
Calculo simbolico

Visualizacion grafica
R es un lenguaje desarrollado principalmente para analisis
Ficheros en Octave estadstico;
Desarrollo de Sage es una aplicacion para calculo cientfico desarrollada
algoritmos
Importacion de
a partir de Python.
datos
Aplicaciones al
calculo numerico

8 / 66
Indice del
documento
Introduccion a
lenguajes avanzados
de computacion
tecnica
Introduccion al
lenguaje Octave
Introduccion
Introduccion II
Primeros comandos Introduccion al lenguaje Octave
Variables
Variables II
Variables III
Recuperacion de
comandos
Expresiones escalares
Expresiones escalares
II
Matrices y arrays.
Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de 9 / 66
datos
Introduccion

Indice del
documento
GNU Octave es un language pensado para el calculo
Introduccion a numerico (http://www.gnu.org/software/octave/) que posee
lenguajes avanzados
de computacion una interfaz de lnea de comando.
tecnica
Octave-Forge es una comunidad de desarrollo que
Introduccion al
lenguaje Octave proporciona paquetes para varios problemas. Los paquetes
Introduccion
Introduccion II
disponibles se describen en
Primeros comandos http://octave.sourceforge.net/packages.php.
Variables
Variables II QtOctave es una interfaz grafica para Octave
Variables III
Recuperacion de
(http://qtoctave.wordpress.com/).
comandos
Expresiones escalares Existen instaladores para GNU Linux y Mac OS.
Expresiones escalares
II El paquete precompilado para Windows esta en Octave-Forge
Matrices y arrays.
Estructuras de datos
(oct. 2010).
Calculo simbolico Se recomienda activar los paquetes symbolic y optim.
Visualizacion grafica Comprobar bugs como: pkg rebuild -noauto oct2mat
Ficheros en Octave
Desarrollo de
algoritmos
Importacion de 10 / 66
datos
Introduccion II

Indice del
documento
Si usamos QtOctave, podremos distinguir varias ventanas:
Introduccion a
lenguajes avanzados
Terminal, para escribir los comandos Octave;
de computacion
tecnica
Commands List, refleja los comandos ya escritos;
Introduccion al Variables List, refleja las variables creadas;
lenguaje Octave
Introduccion
Navigator, muestra la carpeta por defecto;
Introduccion II Editor, permite editar ficheros.
Primeros comandos
Variables
Variables II
Variables III
Recuperacion de
comandos
Expresiones escalares
Expresiones escalares
II
Matrices y arrays.
Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de 11 / 66
datos
Primeros comandos

Indice del
documento
Al ser un lenguaje interpretado, los comandos se ejecutan
Introduccion a uno a uno, terminados con retorno de carro.
lenguajes avanzados
de computacion diary, para volcar lo mostrado a un fichero:
tecnica
>> diary %vuelca al fichero diary de la capeta por defecto
Introduccion al
lenguaje Octave >> diary file %dem al fichero file
Introduccion
Introduccion II
>> diary off %interrumpe el volcado
Primeros comandos help, para solicitar ayuda:
Variables
Variables II >> help diary %da ayuda sobre el comando diary
Variables III
Recuperacion de
La ayuda online esta en
comandos http://www.gnu.org/software/octave/doc/interpreter/
Expresiones escalares
Expresiones escalares
II pwd, para ver la carpeta por defecto.
Matrices y arrays.
Estructuras de datos
cd, para cambiar de carpeta:
Calculo simbolico
>> cd Z:\mi_carpeta %cambia la carpeta por defecto
Visualizacion grafica >> cd .. %se desplaza a la carpeta padre
Ficheros en Octave ls, para ver el contenido de la carpeta.
Desarrollo de
algoritmos
Importacion de 12 / 66
datos
Variables

Indice del
documento
Las variables numericas no necesitan declararse:
Introduccion a >> a=1/3
lenguajes avanzados
de computacion Cuando se asigna otro valor, el anterior desaparece:
tecnica
>> a=1/6
Introduccion al
lenguaje Octave Las variables creadas se guardan en la Variables List:
Introduccion
Introduccion II
>> whos
Primeros comandos Todo calculo no asignado se guarda en la variable ans:
Variables
Variables II >> 1/4
Variables III
Recuperacion de
format, distintas formas de ver (no de calular) el valor:
comandos >> format short %punto fijo, 4 decimales
Expresiones escalares
Expresiones escalares >> format long %punto fijo, 15 decimales
II
Matrices y arrays.
>> format short e %punto flotante, 4 decimales
Estructuras de datos >> format long e %punto flotante, 15 decimales
Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de 13 / 66
datos
Variables II

Indice del
documento
clear, borra variables:
Introduccion a >> clear a %borra la variable a
lenguajes avanzados
de computacion >> clear %borra todas las variables
tecnica
Los nombres de variables deben debe tener 31 caracteres
Introduccion al
lenguaje Octave como maximo, empezar por una letra y contener letras,
Introduccion
Introduccion II
numeros y , pero no espacios en blanco.
Primeros comandos >> n_2=44 %es correcto, no as 2_n o n 2
Variables
Variables II Se distingue entre mayusculas y minusculas.
Variables III
Recuperacion de
Varios comandos en linea se separan con , o ;.
comandos >> a=4; b2=10^(2-a)
Expresiones escalares
Expresiones escalares Los terminados con ; se ejecutan sin mostrar el resultado.
II
Matrices y arrays.
Todo lo que sigue a % se considera un comentario.
Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de 14 / 66
datos
Variables III

Indice del
documento
Un comando se extiende por varias lneas con . . . :
Introduccion a >> Nombre_muy_largo=...
lenguajes avanzados
de computacion 2.e-4*23
tecnica
No se recomienda usar nombres propios de Octave:
Introduccion al
lenguaje Octave
Introduccion
pi, valor de ,
Introduccion II i, j, valor del numero imaginario,
Primeros comandos
Variables inf, representa el infinto, ,
Variables II
Variables III
NaN, representa la indeterminacion.
Recuperacion de
comandos Ojo, el numero e se escribe evaluando la exponecial, exp(1),
Expresiones escalares
Expresiones escalares
pero e2 no se escribe exp(1)^2 sino exp(2).
II
Matrices y arrays.
Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de 15 / 66
datos
Recuperacion de comandos

Indice del
documento
Solo se puede modificar el comando de la linea actual.
Introduccion a Para recuperar un comando previo podemos:
lenguajes avanzados
de computacion
tecnica
copiarlo desde la ventana Commands List o
Introduccion al usar el cursor flecha hacia arriba o
lenguaje Octave
Introduccion escribir las primeras letras del comando y pulsar para
Introduccion II
Primeros comandos navegar solo por los comandos que empiezan por esas
Variables letras.
Variables II
Variables III
Recuperacion de
Con la tecla Esc se borra lo escrito.
comandos
Expresiones escalares
Expresiones escalares
II
Matrices y arrays.
Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de 16 / 66
datos
Expresiones escalares

Indice del
documento
Las operaciones basicas son + - * /
Introduccion a La prioridad es la misma que en las calculadoras.
lenguajes avanzados
de computacion Se pueden usar parentesis para cambiarlas.
tecnica
Introduccion al
Ojo, 1/6 no es 1/2*3 sino 1/(2*3).
lenguaje Octave Hay muchas funciones intrnsecas (ver ayuda online):
Introduccion
Introduccion II trigonometicas: sin, cos, tan, sec, csc,. . .
Primeros comandos
Variables trigonometicas inversas: asin, acos, . . .
Variables II
Variables III
logartmicas: log, log10, . . .
Recuperacion de
comandos
para complejos: imag, real, . . .
Expresiones escalares enteros: floor, round, mod, sign, . . .
Expresiones escalares
II otras: sqrt, abs, sinh, . . .
Matrices y arrays.
Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de 17 / 66
datos
Expresiones escalares II

Indice del
documento
Ejercicios 1
Introduccion a
lenguajes avanzados
1. Inicia el volcado con diary.
de computacion
tecnica
2. Calcula ei + 1.
Introduccion al 3. Calcula 0/0.
lenguaje Octave
Introduccion 4. Guarda | cos(3)2 | 63 2 y | cos(32 )| 32
6
en dos variables.
Introduccion II 5. Comprueba que se han guardado en la Variables List.
Primeros comandos
Variables 6. Borra las variables.
Variables II
Variables III
7. Termina el volcado y comprueba el contenido del fichero.
Recuperacion de
comandos
Expresiones escalares
Expresiones escalares
II
Matrices y arrays.
Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de 18 / 66
datos
Indice del
documento
Introduccion a
lenguajes avanzados
de computacion
tecnica
Introduccion al
lenguaje Octave
Matrices y arrays.
Estructuras de datos
Vectores Matrices y arrays. Estructuras de datos
Vectores II
Vectores III
Vectores IV
Matrices
Matrices II
Matrices III
Otros datos
Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
19 / 66
Aplicaciones al
Vectores

Indice del
documento
Vectores dados manualmente:
Introduccion a >> v=[1 3 5 7] %fila, componentes separadas por " " o ","
lenguajes avanzados
de computacion >> w=[1;3;5;7] %columna, componentes separadas por ";"
tecnica
Introduccion al Ojo, cuidado con los espacios en las filas: [2, 4] se obtiene
lenguaje Octave
Matrices y arrays.
con [2 1+3] o [2, 1 +3], pero no con [2 1 +3].
Estructuras de datos Vectores con una ley de formacion:
Vectores
Vectores II >> q=2:2:20 %inicio:incremento:fin
Vectores III >> y=2:2:21 %es el mismo vector
Vectores IV
Matrices >> v=8:-1:1 %va de 8 a 1
Matrices II
>> r=1:5 %si el incremento es 1, se puede omitir
Matrices III
Otros datos >> q2=linspace(2,20,10) %inicio, fin, num. componentes
Estructuras y celdas
>> m=ones(1,20) %fila de 20 unos
Calculo simbolico
>> n=zeros(20,1) %columna de 20 ceros
Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
20 / 66
Aplicaciones al
Vectores II

Indice del Las operaciones basicas matriciales son + - * /


documento
Introduccion a >> 3*m %fila de 20 treses
lenguajes avanzados
de computacion >> m*n %multiplicacion "fila por columna"
tecnica
Introduccion al
Las operaciones basicas elementales son + - .* ./ .
lenguaje Octave >> m.*m %multiplicacion "elemento a elemento"
Matrices y arrays.
Estructuras de datos
Las funciones intrnsecas son elementales.
Vectores Funciones especficas para vectores:
Vectores II
Vectores III , trasposicion,
Vectores IV
Matrices length, numero de componentes,
Matrices II
Matrices III
norm, norma,
Otros datos dot, producto escalar,
Estructuras y celdas
cross, producto cruzado.
Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
21 / 66
Aplicaciones al
Vectores III

Indice del
documento
Extraccion de componentes:
Introduccion a >> v(2) %devuelve la 2a componente
lenguajes avanzados
de computacion >> v(2:4) %devuelve [v(2) v(3) v(4)]
tecnica
>> v([1 5 3]) %devuelve [v(1) v(5) v(3)]
Introduccion al
lenguaje Octave >> ind=[1 5 3]; v(ind) %dem
Matrices y arrays. >> v(4:end-1) %componentes de la 4a a la penultima
Estructuras de datos
Vectores
Vectores II Ejercicios 2
Vectores III
Vectores IV 1. Crea dos vectores fila, u y v, de la misma dimension.
Matrices
Matrices II 2. Muestra su numero de componentes.
Matrices III 3. Sumalos.
Otros datos
Estructuras y celdas 4. Multiplica u por el traspuesto de v.
Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
22 / 66
Aplicaciones al
Vectores IV

Indice del
documento
5. Multiplica el traspuesto de u por v.
Introduccion a 6. Calcula la norma de u.
lenguajes avanzados
de computacion 7. Calcula el seno de cada componente de u.
tecnica
8. Divide cada componente de u por la correspondiente de v.
Introduccion al
lenguaje Octave 9. Eleva al cubo cada componente de u.
Matrices y arrays.
Estructuras de datos
10. Suma los elementos de ndice par de u con los elementos
Vectores de ndice impar de v. Es siempre posible?
Vectores II
Vectores III
11. Toma los elementos 1, 5 y 4 de u y sumale los tres ultimos
Vectores IV valores de v. Guarda el resultado en las posiciones dadas
Matrices
Matrices II para u.
Matrices III
Otros datos
Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
23 / 66
Aplicaciones al
Matrices

Indice del
documento
Matrices dadas manualmente, se introducen por filas:
Introduccion a >> M=[1 2 5; 2 -1 6; 3 0 -1] %en filas, usamos " " o ","
lenguajes avanzados
de computacion Matrices con una ley de formacion:
tecnica
>> A=ones(2,3) %matriz 2 x 3 de unos
Introduccion al
lenguaje Octave >> B=zeros(4) %matriz 4 x 4 de ceros
Matrices y arrays. >> C=eye(4,5) %matriz identidad 4 x 5
Estructuras de datos
Vectores >> C=rand(2) %matriz aleatoria 2 x 2, 0<=C<=1
Vectores II
Vectores III
Como en vectores, se distingue entre operaciones matriciales
Vectores IV (* / ) y elementales (.* ./ . ).
Matrices
Matrices II Las funciones intrnsecas tambien son elementales.
Matrices III
Algunas funciones especficas para matrices: , size, det,
Otros datos
Estructuras y celdas rank, inv, eig, . . .
Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
24 / 66
Aplicaciones al
Matrices II

Indice del
documento
Resolucion del sistema lineal Ax = b:
Introduccion a >> x=A\b
lenguajes avanzados
de computacion Si es SCD, devuelve la unica solucion del sistema.
tecnica
En otro caso, devuelve la solucion por mnimos cuadrados.
Introduccion al
lenguaje Octave (Ver tambien chol, lu, . . . )
Matrices y arrays.
Estructuras de datos
Extraccion de componentes:
Vectores >> M(2,3) %devuelve la componente (2,3)
Vectores II
Vectores III
>> M(:,3) %devuelve la 3a columna
Vectores IV >> M(2,:) %devuelve la 2a fila
Matrices
Matrices II >> M([1 5 3],1:2) %matriz orlada 3 x 2
Matrices III
>> triu(M), tril(M), diag(M) %triangular sup., inf. y diagonal
Otros datos
Estructuras y celdas >> I=diag(diag(M)) %matriz diagonal, con diag(I)=diag(M)
Calculo simbolico Yuxtaposicion de matrices:
Visualizacion grafica >> A=[1 2; 5 -2]; B=[-10 30; A] %a~
nadimos filas
Ficheros en Octave
>> C=[eye(2) zeros(2,2); zeros(2,2) A] %diagonal por bloques
Desarrollo de
algoritmos
Importacion de
datos
25 / 66
Aplicaciones al
Matrices III

Indice del
documento
Ejercicios 3
Introduccion a
lenguajes avanzados
1. Crea dos matrices cuadradas, A y B, del mismo tamano.
de computacion
tecnica
2. Muestra su numero de filas y columnas.
Introduccion al 3. Sumalas, multiplcalas matricial y elementalmente.
lenguaje Octave
4. Calcula la traspuesta, el rango y el determinante de A.
Matrices y arrays.
Estructuras de datos 5. Calcula los autovalores A.
Vectores
Vectores II 6. Resuelve el sistema Ax=[1;1;...;1].
Vectores III 7. Extrae los elementos interseccion de las dos primeras filas y
Vectores IV
Matrices columnas de A. Idem de las dos ultimas filas y columnas de
Matrices II
Matrices III
B.
Otros datos 8. Crea una matriz diagonal por bloques, que tenga en la
Estructuras y celdas
diagonal las dos matrices anteriores.
Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
26 / 66
Aplicaciones al
Otros datos

Indice del
documento
Complejos: 1+3*i o 1+3i, funciones como real, imag,
Introduccion a conj, isreal, angle, abs, . . .
lenguajes avanzados
de computacion Cadenas: a= $de 5&, b =dont
tecnica
Introduccion al Concatenacion: c = [sdf asd]
lenguaje Octave
Conversion de numeros a cadenas: num2str(2)
Matrices y arrays.
Estructuras de datos Impresion del valor de una variable: disp(variable)
Vectores
Vectores II
>> a=25; disp([El resultado es num2str(a) grados])
Vectores III
Vectores IV Logicos: entero no nulo (1) es verdadero, 0 es falso
Matrices
Matrices II Operadores relacionales: < > <= >= == ~=
Matrices III
Otros datos
Operadores logicos: & | ~ xor any all
Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
27 / 66
Aplicaciones al
Estructuras y celdas

Indice del
documento
Estructuras: agrupacion de datos con nombre
Introduccion a >> circulo.centro=[0 1]
lenguajes avanzados
de computacion >> circulo.radio=4
tecnica
Celdas: agrupacion de datos numerados
Introduccion al
lenguaje Octave >> dato{1} = 23
Matrices y arrays. >> dato{2} = [2 8]
Estructuras de datos
Vectores >> dato{3} = [0 9; 5 7]
Vectores II
Vectores III Ciertos comandos devuelven celdas:
Vectores IV
Matrices
>> symbols; x=sym(x); y=sym(y);
Matrices II >> S=symlsolve({x+y-3,x-y+5},{x,y})
Matrices III
Otros datos S tiene dos elementos: S{1} y S{2}.
Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
28 / 66
Aplicaciones al
Indice del
documento
Introduccion a
lenguajes avanzados
de computacion
tecnica
Introduccion al
lenguaje Octave
Matrices y arrays.
Estructuras de datos

Calculo simbolico
Calculo simbolico
Calculo simbolico
Calculo simbolico II
Calculo simbolico III

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico

29 / 66
Calculo simbolico

Indice del
documento
Precisa del paquete symbolic de Octave-Forge.
Introduccion a El calculo simbolico se carga con symbols
lenguajes avanzados
de computacion Las variables simbolicas deben declararse:
tecnica
>> x = sym(x)
Introduccion al
lenguaje Octave Toda expresion que las involucre sera simbolica:
Matrices y arrays. >> f = x^2 %f es una expresion simbolica
Estructuras de datos

Calculo simbolico
La asignacion las convierte en numericas:
Calculo simbolico >> x = 5 %x ha dejado de ser simbolica
Calculo simbolico II
Calculo simbolico III En simbolico, las funciones intrnsecas cambian de nombre:
Visualizacion grafica >> f = Sin(Pi*x); g = Cos(x); h = Exp(x); i = Sqrt(x)
Ficheros en Octave (ver http://octave.sourceforge.net/symbolic/overview.html)
Desarrollo de
algoritmos
collect, recolecta los terminos como polinomio:
Importacion de >> f = 2*x+x+3; collect(f,x)
datos
Aplicaciones al
splot, pinta una funcion simbolica:
calculo numerico >> i = Exp(x); splot(i,x,[-1 1])

30 / 66
Calculo simbolico II

Indice del
documento
subs, evalua una expresion:
Introduccion a >> g = Cos(x); p = subs(g,x,1.3)
lenguajes avanzados
de computacion to_double, convierte un valor simbolico a numerico:
tecnica
>> to_double(p) %p es el resultado anterior
Introduccion al
lenguaje Octave differentiate, calcula la derivada:
Matrices y arrays. >> f = x^2; differentiate(f,x,2) %derivada segunda
Estructuras de datos

Calculo simbolico
symlsolve, resuelve ecuaciones lineales:
Calculo simbolico >> y=sym(y); symlsolve({x+y-2,x-y-1},{x,y})
Calculo simbolico II
Calculo simbolico III symfsolve, resuelve ecuaciones no lineales:
Visualizacion grafica >> f = x^2+3*x-1; g= x*y-y^2+3; symfsolve(f,g,[1,5])
Ficheros en Octave No esta implementado el calculo simbolico de lmites,
Desarrollo de
algoritmos
integracion, ecuaciones diferenciales, graficas de funciones de
Importacion de dos variables. . . (oct 2010)
datos
Aplicaciones al
calculo numerico

31 / 66
Calculo simbolico III

Indice del
documento
Ejercicios 4
Introduccion a
lenguajes avanzados
1. Crea una expresion simbolica de una variable.
de computacion
tecnica
3. Muestra su grafica en diferentes dominios.
Introduccion al 5. Evaluala en distintos puntos.
lenguaje Octave
4. Calcula su derivada.
Matrices y arrays.
Estructuras de datos 6. Resuelve un sistema lineal, y otro no lineal, de 2 ecuaciones
Calculo simbolico y dos incognitas.
Calculo simbolico
Calculo simbolico II
Calculo simbolico III

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico

32 / 66
Indice del
documento
Introduccion a
lenguajes avanzados
de computacion
tecnica
Introduccion al
lenguaje Octave
Matrices y arrays.
Estructuras de datos

Calculo simbolico
Visualizacion grafica
Visualizacion grafica
Graficos numericos
Graficos numericos II
Graficos numericos
III

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico

33 / 66
Graficos numericos

Indice del
documento
plot, graficas de funciones de una variable:
Introduccion a >> x = 0:0.5:5; plot(x, sin(x)) %cambiar 0.5 a 0.1
lenguajes avanzados
de computacion Varios graficos en la misma ventana:
tecnica
>> hold on; plot(x, cos(x))
Introduccion al
lenguaje Octave >> hold off; plot(x, sin(2*x), x, cos(3*x))
Matrices y arrays.
Estructuras de datos
Opciones de plot, colores, lneas y marcas:
Calculo simbolico
>> plot(x, sin(x), r*, x, cos(x), -.g)
Visualizacion grafica Informacion adicional:
Graficos numericos >> title(Dos curvas) %titulo
Graficos numericos II
Graficos numericos >> xlabel(Abscisas); ylabel(Ordenadas) %texto en ejes
III
>> legend(Curva 1,Curva 2) %leyenda
Ficheros en Octave
Desarrollo de >> axis([-1 11 -1.5 1.5]) %escala
algoritmos
figure, crea una nueva ventana de graficos.
Importacion de
datos line, crea lineas personalizadas.
Aplicaciones al
calculo numerico
>> line(x,cos(x), linewidth, 4)

34 / 66
Graficos numericos II

Indice del
documento
Curvas en el plano y el espacio:
Introduccion a >> t=0:0.1:2*pi; plot(exp(-t).*cos(2*t), exp(-t).*sin(2*t))
lenguajes avanzados
de computacion >> plot3(cos(t),t.*sin(t),sqrt(t))
tecnica
(Observese el uso de .*)
Introduccion al
lenguaje Octave Escala logartmica, semilogx, semilogy, loglog:
Matrices y arrays. >> x = 0:0.1:5; semilogy(x, exp(-x))
Estructuras de datos

Calculo simbolico
Coordenadas polares, polar:
Visualizacion grafica >> t = 0:.01:2*pi; polar(t,sin(2*t).*cos(2*t))
Graficos numericos Analisis estadstico:
Graficos numericos II
Graficos numericos >> errorbar(x,sin(x),rand(size(x)))
III
>> hist([2,3,3,4,4.5])
Ficheros en Octave
Desarrollo de Graficas de funciones de dos variables:
algoritmos
>> [x,y]=meshgrid(-2:.2:2, -2:.2:2);
Importacion de
datos >> surf(x, y, x.*exp(-x.^2-y.^2))
Aplicaciones al
calculo numerico
>> contour(x, y, x.*exp(-x.^2-y.^2))

35 / 66
Graficos numericos III

Indice del
documento
Subgraficos:
Introduccion a >> x = -2:0.1:2;
lenguajes avanzados
de computacion >> subplot(1,2,1); plot(x,sin(x),r); title(Primer grafico)
tecnica
>> subplot(1,2,2); plot(x,cos(x),r); title(Segundo grafico)
Introduccion al
lenguaje Octave print, impresion de la ventana de graficos activa:
Matrices y arrays. >> print -dpng grafica.png
Estructuras de datos

Calculo simbolico
Ejercicios 5
Visualizacion grafica
Graficos numericos 1. Crea una ventana con dos graficos. Anade informacion
Graficos numericos II
Graficos numericos adicional.
III

Ficheros en Octave
2. Crea un grafico de contorno para una funcion de dos
Desarrollo de variables en una ventana aparte.
algoritmos
3. Salva el grafico en un fichero.
Importacion de
datos
Aplicaciones al
calculo numerico

36 / 66
Indice del
documento
Introduccion a
lenguajes avanzados
de computacion
tecnica
Introduccion al
lenguaje Octave
Matrices y arrays.
Estructuras de datos

Calculo simbolico
Ficheros en Octave
Visualizacion grafica

Ficheros en Octave
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automatica
Funcion automatica
II
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico
37 / 66
Scripts

Indice del
documento
Es un fichero con una secuencia de comandos.
Introduccion a Lleva extension .m
lenguajes avanzados
de computacion Para que Octave lo encuentre, su carpeta debe
tecnica
Introduccion al a) ser la carpeta por defecto o
lenguaje Octave
b) anadirse a las rutas de busqueda con addpath.
Matrices y arrays.
Estructuras de datos
Para ejecutarlo, escribir el nombre sin extension en la
Calculo simbolico
Terminal.
Visualizacion grafica

Ficheros en Octave
Ejemplo: script grado2.m, para resolver 3x2 + 5x + 2 = 0.
Scripts a=3; b=5; c=2;
Fichero funcion
Fichero funcion II D=b^2-4*a*c;
Fichero funcion III x(1)=(-b+sqrt(D))/(2*a);
Funcion automatica
Funcion automatica x(2)=(-b-sqrt(D))/(2*a);
II
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico
38 / 66
Fichero funcion

Indice del
documento
Los script usan la Variables List para sus variables!
Introduccion a Los ficheros de funcion son scripts con su propio espacio de
lenguajes avanzados
de computacion variables.
tecnica
La primera lnea de un fichero de funcion es del tipo:
Introduccion al
lenguaje Octave
Matrices y arrays.
function [y1, y2,...] = nombre(x1, x2,...)
Estructuras de datos El nombre debe coincidir con el nombre del fichero.
Calculo simbolico Las variables de entrada x1, x2,... se pasan por copia.
Visualizacion grafica
La Variables List solo recibe las variables de salida y1, y2,...
Ficheros en Octave
Scripts
El valor de una variable de entrada solo se modifica si
Fichero funcion tambien es de salida.
Fichero funcion II
Fichero funcion III
Funcion automatica
Funcion automatica
II
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico
39 / 66
Fichero funcion II

Indice del
documento
Ejemplo: fichero funcion fgrado2.m.
Introduccion a function x=fgrado2(a,b,c)
lenguajes avanzados
de computacion D=b^2-4*a*c;
tecnica
x(1)=(-b+sqrt(D))/(2*a);
Introduccion al
lenguaje Octave x(2)=(-b-sqrt(D))/(2*a);
Matrices y arrays.
Estructuras de datos

Calculo simbolico
Para ejecutarlo, hay que indicar los valores de entrada:
Visualizacion grafica
>> fgrado2(3,5,2)
Ficheros en Octave Podemos usarlo facilmente para resolver otros polinomios.
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automatica
Funcion automatica
II
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico
40 / 66
Fichero funcion III

Indice del
documento
Para usar un fichero funcion como argumento, hay que poner
Introduccion a @ antes del nombre. Consideremos la funcion:
lenguajes avanzados
de computacion function y=int_def(f,a,b)
tecnica
%integral definida de f entre a y b (trapecios)
Introduccion al
lenguaje Octave t=linspace(a,b,100);
Matrices y arrays.
Estructuras de datos
y = trapz(t, f(t));
Calculo simbolico

Visualizacion grafica
La funcion sin de Octave es un fichero funcion:
Ficheros en Octave >> int_def(@sin, 0, 1)
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automatica
Funcion automatica
II
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico
41 / 66
Funcion automatica

Indice del
documento
Se define en una lnea: >> f = @(x,y) x.^2 + y.^2
Introduccion a Escritas en la Terminal, no se conservan al cerrar la sesion.
lenguajes avanzados
de computacion Se podran usar para las funciones anteriores. . .
tecnica
>> g2=@(a,b,c) [(-b+sqrt(b^2-4*a*c))/(2*a) ...
Introduccion al
lenguaje Octave (-b-sqrt(b^2-4*a*c))/(2*a)]
Matrices y arrays. >> id = @(f,a,b) trapz(linspace(a,b,100),...
Estructuras de datos

Calculo simbolico
f(linspace(a,b,100)))
Visualizacion grafica . . . pero se usan, generalmente, para funciones sencillas.
Ficheros en Octave Ojo, debemos evitar tener en la carpeta de trabajo fichero
Scripts
Fichero funcion
funcion con el mismo nombre que funciones automaticas.
Fichero funcion II
Fichero funcion III
Funcion automatica
Funcion automatica
II
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico
42 / 66
Funcion automatica II

Indice del
documento
Para usar una funcion automatica como argumento, no hay
Introduccion a que poner @:
lenguajes avanzados
de computacion >> f = @(x) sin(x); int_def(f, 0, 1)
tecnica
Introduccion al
lenguaje Octave
Ejercicios 6
Matrices y arrays.
Estructuras de datos
1. Crea un fichero funcion para resolver ecuaciones del tipo
Calculo simbolico
aex + b = 0
Visualizacion grafica 2. Crea una funcion automatica para f (x) = x3 atan( 1+x
x2
).
Ficheros en Octave 3. Dibuja la grafica de f entre -1 y 1
Scripts
Fichero funcion
4. Calcula con int def.m su integral definida en [1, 1].
Fichero funcion II
Fichero funcion III
Funcion automatica
Funcion automatica
II
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico
43 / 66
Indice del
documento
Introduccion a
lenguajes avanzados
de computacion
tecnica
Introduccion al
lenguaje Octave
Matrices y arrays.
Estructuras de datos

Calculo simbolico
Desarrollo de algoritmos
Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion de
datos
44 / 66
Algoritmos

Indice del
documento
Un programa no suele tener una unica lnea de flujo.
Introduccion a Las estructuras de control de flujo pueden ser
lenguajes avanzados
de computacion
tecnica
repetitivas, permiten la repeticion de comandos: for y
Introduccion al while;
lenguaje Octave
alternativas, permiten decidir segun una condicion: if y
Matrices y arrays.
Estructuras de datos switch (que no veremos);
Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion de
datos
45 / 66
Bucle for

Indice del for i=v


documento
Introduccion a comandos (que dependen de i)
lenguajes avanzados
de computacion
end
tecnica
Introduccion al v es un vector; en la iteracion j, i toma el valor de v(j).
lenguaje Octave
Los bucles pueden anidarse. Se recomienda indentar los
Matrices y arrays.
Estructuras de datos comandos para facilitar la lectura.
Calculo simbolico Cuando sea posible, se recomienda usar operaciones
Visualizacion grafica vectoriales en vez de bucles.
Ficheros en Octave
Ejemplo: calculo del n!
Desarrollo de
algoritmos fac = 1;
Algoritmos for i=2:n
Bucle for
Bucle while fac = fac*i;
Estructura if
Estructura if II
end
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion de
datos
46 / 66
Bucle while

Indice del
documento
while condicion
Introduccion a comandos
lenguajes avanzados
de computacion end
tecnica
Introduccion al condicion es una relacion logica.
lenguaje Octave
while se suele usar cuando no es sencillo calcular el numero
Matrices y arrays.
Estructuras de datos de iteraciones. P 1
Calculo simbolico Ejemplo: calculo de n=1 n4
Visualizacion grafica n = 1; sum = 0;
Ficheros en Octave while 1/n^4 > eps
Desarrollo de
algoritmos sum = sum + 1/n^4;
Algoritmos n = n+1;
Bucle for
Bucle while end
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion de
datos
47 / 66
Estructura if

Indice del
documento
if condicion 1
Introduccion a comandos 1
lenguajes avanzados
de computacion [ elseif condicion 2
tecnica
comandos 2 ]
Introduccion al
lenguaje Octave [ elseif . . . ]
Matrices y arrays.
Estructuras de datos
[ else
Calculo simbolico
comandos n ]
Visualizacion grafica end
Ficheros en Octave
Si condicion 1 es cierta, se ejecutan comandos 1.
Desarrollo de
algoritmos Si no y condicion 2 es cierta, se ejecutan comandos 2.
Algoritmos
Bucle for
Si ninguna condicion es cierta, se ejecuta comandos n.
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion de
datos
48 / 66
Estructura if II

Indice del
documento
Ejemplo:funcion definida a trozos
Introduccion a
x 1, x 2,
lenguajes avanzados 2
de computacion
f (x) = 1 x , 2 < x < 0,
tecnica
1 , x 0.

Introduccion al
lenguaje Octave
x+1
Matrices y arrays.
Estructuras de datos function y=f(x)
Calculo simbolico if x<=-2
Visualizacion grafica y=x-1;
Ficheros en Octave
elseif x<0
Desarrollo de
algoritmos y=1-x^2;
Algoritmos
Bucle for
else
Bucle while y=-1/(x+1);
Estructura if
Estructura if II end
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion de
datos
49 / 66
Estructura if III

Indice del
documento
Para conseguir que f admita argumentos vectoriales, es
Introduccion a necesario usar un bucle (no basta con usar operaciones
lenguajes avanzados
de computacion elementales, puesto que if no es elemental):
tecnica
function y=f(x)
Introduccion al
lenguaje Octave for i=1:length(x)
Matrices y arrays.
Estructuras de datos
if x(i)<=-2
Calculo simbolico y(i)=x(i)-1;
Visualizacion grafica elseif x(i)<0
Ficheros en Octave y(i)=1-x(i)^2;
Desarrollo de
algoritmos
else
Algoritmos y(i)=-1/(x(i)+1);
Bucle for
Bucle while end
Estructura if end
Estructura if II
Estructura if III
Otros comandos Ahora la grafica de f se obtiene con:
Otros comandos II
Otros comandos III >> x=-3:0.1:3; plot(x,f(x))
Depuracion
Importacion de
datos
50 / 66
Otros comandos

Indice del
documento
break, interrumpe la ejecucion del bucle mas interno.
Introduccion a %busqueda de la posicion del ultimo elemento negativo
lenguajes avanzados
de computacion for i=length(x):-1:1
tecnica
if x(i)<0
Introduccion al
lenguaje Octave break
Matrices y arrays. end
Estructuras de datos

Calculo simbolico
end
Visualizacion grafica disp([La posicion buscada es num2str(i)])
Ficheros en Octave return, interrumpe la ejecucion de una funcion y devuelve el
Desarrollo de
algoritmos
control a quien la haya llamado (otra funcion o el propio
Algoritmos Octave).
Bucle for
Bucle while
if x<=0
Estructura if disp(log(x) no es real!)
Estructura if II
Estructura if III return %la funcion se interrumpe, el programa continua
Otros comandos end
Otros comandos II
Otros comandos III
Depuracion
Importacion de
datos
51 / 66
Otros comandos II

Indice del
documento
error, interrumpe completamente la ejecucion del programa.
Introduccion a if x<=0
lenguajes avanzados
de computacion error(Error fatal: log(x) no es real!)
tecnica
end
Introduccion al
lenguaje Octave input, permite introducir datos por teclado.
Matrices y arrays. >> x=input(Introduzca un numero: )
Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion de
datos
52 / 66
Otros comandos III

Indice del
documento
Ejercicios 7
Introduccion a
lenguajes avanzados
1. Calcula la suma de las componentes de un vector;
de computacion
tecnica
comparalo con el resultado de sum.
P xn
x
2. Calcula e como la suma infinita n=0 n! .
Introduccion al
lenguaje Octave
3. Construye(una funcion que evalue f , definida por
Matrices y arrays.
Estructuras de datos 2 sen2 (2x), x 0,
Calculo simbolico f (x) =
1 ex , x > 0.
Visualizacion grafica

Ficheros en Octave
Dibuja su grafica.
Desarrollo de 4. Escribe una funcion que solicite al usuario en un bucle,
algoritmos
Algoritmos
numeros por teclado. Si el numero es positivo, debe escribir
Bucle for su logaritmo; si es negativo, debe salir del bucle e informar
Bucle while
Estructura if de que no puede calcular dicho logaritmo.
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion de
datos
53 / 66
Depuracion

Indice del
documento
Para iniciar la depuracion en avisos y errores:
Introduccion a debug_on_warning(1); debug_on_error(1);
lenguajes avanzados
de computacion Para gestionar puntos de interrupcion:
tecnica
dbstop(nombre_funcion,15) %parada en la lnea 15
Introduccion al
lenguaje Octave dbstatus %muestra paradas establecidas
Matrices y arrays. dbclear(nombre_funcion,15) %eliminacion de la parada
Estructuras de datos

Calculo simbolico
Para mostrar el fichero: dbtype
Visualizacion grafica Para saber donde estamos parados: dbwhere
Ficheros en Octave Ir a la siguiente lnea: dbnext
Desarrollo de
algoritmos
Profundizar en las llamadas a funciones: dbstep
Algoritmos Continuar la ejecucion: dbcont
Bucle for
Bucle while Cuando la ejecucion esta parada, se pueden ejecutar otros
Estructura if
Estructura if II comandos (ver valor de variables,. . . )
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion de
datos
54 / 66
Indice del
documento
Introduccion a
lenguajes avanzados
de computacion
tecnica
Introduccion al
lenguaje Octave
Matrices y arrays.
Estructuras de datos

Calculo simbolico
Importacion de datos
Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
Datos
Datos II
Datos III
Datos IV
Aplicaciones al
calculo numerico

55 / 66
Datos

Indice del
documento
save, salvado de variables (fichero binario con compresion):
Introduccion a >> save fichero [variables]
lenguajes avanzados
de computacion load, carga de variables:
tecnica
>> load fichero [variables]
Introduccion al
lenguaje Octave fopen, apertura de ficheros:
Matrices y arrays.
Estructuras de datos
fid=fopen(fichero,permiso)
Calculo simbolico Los permisos pueden ser:
Visualizacion grafica
r, lectura de ficheros existentes.
Ficheros en Octave
w, escritura de ficheros; si existe, se borra.
Desarrollo de
algoritmos a, escritura de ficheros; ; si existe, se anade.
Importacion de
datos
Anadiendo + se permite la operacion contraria.
Datos
Datos II fclose, cierre de ficheros:
Datos III fclose(fid)
Datos IV
Aplicaciones al
calculo numerico Lectura / escritura con formato binario: fread y fclose.

56 / 66
Datos II

Indice del
documento
Lectura con formato ascii:
Introduccion a A=fscanf(fid, formato[, sizeA])
lenguajes avanzados
de computacion
tecnica
Lee datos del fichero con identificador fid y los guarda en A.
Introduccion al sizeA puede ser un natural o un array [m,n]; si esta presente,
lenguaje Octave
lee sizeA elementos.
Matrices y arrays.
Estructuras de datos formato es una cadena que describe los elementos a leer:
Calculo simbolico

Visualizacion grafica
%d: entero;
Ficheros en Octave
%f: real
Desarrollo de %s: cadena
algoritmos
Importacion de textscan, util si texto y numeros estan mezclados.
datos
Datos Escritura con formato ascii:
Datos II
Datos III fprintf(fid, formato, A,. . . )
Datos IV
Aplicaciones al Escribe las variables A,. . . en el fichero con identificador fid.
calculo numerico
formato puede contener descriptores como \n (nueva lnea).

57 / 66
Datos III

Indice del
documento
Ejemplo de escritura:
Introduccion a fid = fopen(datos.txt,w);
lenguajes avanzados
de computacion fprintf(fid,%f %f , [1:2; 3:4]); %por columnas
tecnica
fprintf(fid,%s %d %f %d %d,asd, 1, pi, [2;3]);
Introduccion al
lenguaje Octave fclose(fid);
Matrices y arrays.
Estructuras de datos

Calculo simbolico
El contenido de datos.txt es:
Visualizacion grafica
1.000000 3.000000 2.000000 4.000000 asd 1 3.141593 2 3
Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
Datos
Datos II
Datos III
Datos IV
Aplicaciones al
calculo numerico

58 / 66
Datos IV

Indice del
documento
Ejemplo de lectura:
Introduccion a fid = fopen(datos.txt,r);
lenguajes avanzados
de computacion A=fscanf(fid,%f, [2 2]); %lee una matriz 2 x 2
tecnica
S=fscanf(fid,%s,1); %lee una cadena
Introduccion al
lenguaje Octave V=fscanf(fid,%f); %lee reales hasta EOF
Matrices y arrays.
Estructuras de datos
fclose(fid);
Calculo simbolico

Visualizacion grafica
El resultado es:
Ficheros en Octave A = 1 2
Desarrollo de
algoritmos 3 4
Importacion de S = asd
datos
Datos V = 1.0000
Datos II 3.1416
Datos III
Datos IV 2.0000
Aplicaciones al
calculo numerico
3.0000

59 / 66
Indice del
documento
Introduccion a
lenguajes avanzados
de computacion
tecnica
Introduccion al
lenguaje Octave
Matrices y arrays.
Estructuras de datos

Calculo simbolico
Aplicaciones al calculo numerico
Visualizacion grafica

Ficheros en Octave
Desarrollo de
algoritmos
Importacion de
datos
Aplicaciones al
calculo numerico
Interpolacion y
ajuste
Resolucion de
ecuaciones
Resolucion simbolica
de ecuaciones
Optimizacion
Integracion
Ecuaciones
60 / 66
diferenciales
Interpolacion y ajuste

Indice del
documento
polyfit, interpolacion polinomial:
Introduccion a >> x=[-5:5]; f=@(x)1./(1+x.^2); %(x,f(x)), 11 nodos de interp.
lenguajes avanzados
de computacion >> c=polyfit(x,f(x),10) %c, coeficientes del polinomio
tecnica
>> xx=-5:0.1:5; %xx, vector de abscisas para la grafica
Introduccion al
lenguaje Octave >> plot(x,f(x),*, xx,f(xx), xx, polyval(c,xx)) %grafico
Matrices y arrays. >> legend(nodos, funcion, polinomio de interpolacion)
Estructuras de datos

Calculo simbolico
interp1, interpolacion con rectas a trozos:
Visualizacion grafica
>> plot(xx,f(xx), xx,interp1(x,f(x),xx,linear))
Ficheros en Octave
Desarrollo de
interp1, interpolacion con splines:
algoritmos
>> plot(xx,f(xx), xx,interp1(x,f(x),xx,spline))
Importacion de
datos
Aplicaciones al
polyfit, ajuste polinomial:
calculo numerico >> c=polyfit(x,f(x),2) %grado < num. nodos +1
Interpolacion y
ajuste >> plot(x,f(x),*, xx, polyval(c,xx)) %grafico
Resolucion de
ecuaciones
Resolucion simbolica
de ecuaciones
Optimizacion
Integracion
Ecuaciones
61 / 66
diferenciales
Resolucion de ecuaciones

Indice del
documento
Resolucion del sistema lineal Ax = b:
Introduccion a >> x=A\b
lenguajes avanzados
de computacion Si es SCD, devuelve la unica solucion del sistema.
tecnica
En otro caso, devuelve la solucion por mnimos cuadrados.
Introduccion al
lenguaje Octave fzero, resolucion de ecuaciones no lineales:
Matrices y arrays. >> f=@cos(x)-x; fzero(f,0)
Estructuras de datos

Calculo simbolico
fsolve, resolucion de sistemas no lineales:
Visualizacion grafica >> fsolve(@f,[0 0])
Ficheros en Octave Se ha creado, previamente, el fichero funcion:
Desarrollo de
algoritmos function y = f(x)
Importacion de y(1)=x(1)^2+3*x(1)-1;
datos
Aplicaciones al
y(2)=x(1)*x(2)-x(2)^2+3;
calculo numerico
Interpolacion y
ajuste
Resolucion de
ecuaciones
Resolucion simbolica
de ecuaciones
Optimizacion
Integracion
Ecuaciones
62 / 66
diferenciales
Resolucion simbolica de ecuaciones

Indice del
documento
symlsolve, resolucion de ecuaciones lineales:
Introduccion a >> symbols; x=sym(x); y=sym(y);
lenguajes avanzados
de computacion >> S=symlsolve({x+y-3,x-y+5},{x,y})
tecnica
Introduccion al
S tiene dos elementos: S{1} y S{2}.
lenguaje Octave
symfsolve, resolucion de ecuaciones no lineales usando
Matrices y arrays.
Estructuras de datos fsolve():
Calculo simbolico >> symbols; x=sym(x); y=sym(y);
Visualizacion grafica >> f=x^2+3*x-1; g=x*y-y^2+3;
Ficheros en Octave >> a = symfsolve(f,g); %los valores iniciales se toman a 0
Desarrollo de
algoritmos >> a = symfsolve(f,g,x,1,y,5); %valores iniciales, x=1 e y=5
Importacion de >> a = symfsolve(f,g,{x==1,y==5}); %dem
datos
Aplicaciones al
>> a = symfsolve(f,g,[1 5]); %dem
calculo numerico
Interpolacion y
Si las variables no se especifican en las condiciones iniciales,
ajuste
Resolucion de
se toman alfabeticamente.
ecuaciones
Resolucion simbolica
de ecuaciones
Optimizacion
Integracion
Ecuaciones
63 / 66
diferenciales
Optimizacion

Indice del
documento
Precisa del paquete optim de Octave-Forge.
Introduccion a fminsearch, busqueda de un mnimo (Nelder-Mead
lenguajes avanzados
de computacion Simplex):
tecnica
>> f=@(x)x^2*cos(x);
Introduccion al
lenguaje Octave >> fminsearch(f,2) %parte de x0 = 2
Matrices y arrays.
Estructuras de datos Se aplica a funciones multidimensionales:
Calculo simbolico >> f = @(x) x(1)^2+x(2)^2; fminsearch(f,[1 1])
Visualizacion grafica
fminbnd, busqueda de un mnimo con restricciones (Golden
Ficheros en Octave
Desarrollo de
Search):
algoritmos >> fminbnd(f,2,4) %en [2, 4]
Importacion de
datos
Aplicaciones al
calculo numerico
Interpolacion y
ajuste
Resolucion de
ecuaciones
Resolucion simbolica
de ecuaciones
Optimizacion
Integracion
Ecuaciones
64 / 66
diferenciales
Integracion

Indice del
documento
quad, integracion definida:
Introduccion a >> f=@(x) x*sin(x); quad(f,0,3)
lenguajes avanzados
de computacion quadl, quadgk y quadv, integracion numerica adaptativa.
tecnica
trapz, integracion definida (regla de trapecios):
Introduccion al
lenguaje Octave >> x=[0 1 2 3]; y = [0.5 0.85 0.67 0.9];
Matrices y arrays. >> trapz(x,y)
Estructuras de datos

Calculo simbolico
dblquad, integracion doble:
Visualizacion grafica >> f=@(x,y) sin(pi.*x.*y).*sqrt(x.*y);
Ficheros en Octave >> I=dblquad(f, 0,1, 0,1)
Desarrollo de
algoritmos Para integracion triple, triplequad.
Importacion de
datos
Aplicaciones al
calculo numerico
Interpolacion y
ajuste
Resolucion de
ecuaciones
Resolucion simbolica
de ecuaciones
Optimizacion
Integracion
Ecuaciones
65 / 66
diferenciales
Ecuaciones diferenciales

Indice del
documento
Consideremos el problema de valor inicial:
Introduccion a
dx = x2 log(t + 1) x ,

lenguajes avanzados
de computacion
tecnica dt t+1
Introduccion al x(0) = 1.
lenguaje Octave
Matrices y arrays.
Estructuras de datos
lsode, resolucion de una e.d.o.:
Calculo simbolico >> t = 0:0.1:3;
Visualizacion grafica >> x = lsode(f,1,t)
Ficheros en Octave >> plot(t,x)
Desarrollo de
algoritmos Se ha creado, previamente, el fichero funcion:
Importacion de function xp=f(x,t)
datos
Aplicaciones al xp=x^2*log(t+1)-x/(t+1);
calculo numerico
Interpolacion y
ajuste
Para sistemas de ecuaciones, hay que usar argumentos
Resolucion de
ecuaciones
vectoriales en la funcion f.
Resolucion simbolica
de ecuaciones
Optimizacion
Integracion
Ecuaciones
66 / 66
diferenciales