introduccion al octave

66
1 / 66 Introducci´on al Octave Francisco Pena (USC) 29 de diciembre de 2010

Upload: franpenabra

Post on 02-Jul-2015

8.238 views

Category:

Education


2 download

DESCRIPTION

Breve introduccion al Octave en el contexto del calculo numerico

TRANSCRIPT

Page 1: Introduccion al Octave

1 / 66

Introduccion al Octave

Francisco Pena (USC)

29 de diciembre de 2010

Page 2: Introduccion al Octave

Indice del documento

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

2 / 66

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

Page 3: Introduccion al Octave

Introduccion a lenguajes avanzados de

computacion tecnica

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Lenguajes

Lenguajes II

Lenguajes III

Lenguajes IV

Lenguajes V

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

3 / 66

Page 4: Introduccion al Octave

Lenguajes

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Lenguajes

Lenguajes II

Lenguajes III

Lenguajes IV

Lenguajes V

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

4 / 66

Calculo simbolico: se trabaja con constantes y expresionessimbolicas.

•√

2, constante simbolica que representa la raız de 2;

•(√

2)2

, constante simbolica que representa el numero 2.

• x2, expresion simbolica que representa la funcionmatematica f(x) = x2;

•∫

x2 dx, su integral indefinida es otra expresion simbolica,x3

3+ C.

Un programa que implementa el calculo simbolico suelellamarse “sistema de algebra computacional”.Los mas conocidos son Mathematica, Maple y Maxima.

Page 5: Introduccion al Octave

Lenguajes II

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Lenguajes

Lenguajes II

Lenguajes III

Lenguajes IV

Lenguajes V

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

5 / 66

A menor escala, Octave tambien puede operarsimbolicamente.El calculo simbolico es util para

• simplificacion de expresiones,x2 + 2x + 1 → (x + 1)2

• resolucion exacta de ecuaciones lineales o no lineales,{

x2 + xy + y = 3

x2 − 4x + 3 = 0→

(

1

3

)

,(

1

−3/2

)

• calculo de lımites,lımx→1 x2y → y

• calculo de derivadas, integrales indefinidasddx sin(x) → cos(x)

• resolucion exacta de ecuaciones diferenciales.

Page 6: Introduccion al Octave

Lenguajes III

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Lenguajes

Lenguajes II

Lenguajes III

Lenguajes IV

Lenguajes V

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

6 / 66

A veces, el calculo simbolico no puede ser realizado, porlimitaciones del propio sistema o por impedimentos de tipomatematico.Calculo numerico: se trabaja con numeros representables enun ordenador.

•√

2 se almacena como 1.414213562373095;•

(√2)2

, es un numero proximo a 2.• El uso de funciones se limita a calculos que devuelven

numeros:∫ 1

0x2 dx, es un numero proximo a 1/3.

Page 7: Introduccion al Octave

Lenguajes IV

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Lenguajes

Lenguajes II

Lenguajes III

Lenguajes IV

Lenguajes V

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

7 / 66

Con el calculo numerico es posible hallar un resultadoaproximado de los problemas anteriores, incluso cuando elcalculo simbolico falla.Su limitacion reside en que solo obtiene resultados numericos:

• Con calculo numerico podemos saber que la derivada dex2 en x=2 es 4;

• Solo con calculo simbolico podremos ver que la derivadaen todo punto es 2x.

Page 8: Introduccion al Octave

Lenguajes V

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Lenguajes

Lenguajes II

Lenguajes III

Lenguajes IV

Lenguajes V

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

8 / 66

El programa orientado al calculo numerico mas conocido esMatlab.

• GNU Octave pretende ser un clon de software libre deMatlab. Se diferencia en la interfaz grafica y lastoolboxes (por ejemplo, de calculo simbolico).

• Scilab ha sido desarrollado por INRIA. No es totalmentecompatible con Matlab, pero se trabaja en un traductorde Matlab a Scilab.

Otras herramientas de calculo cientıfico son:

• R es un lenguaje desarrollado principalmente para analisisestadıstico;

• Sage es una aplicacion para calculo cientıfico desarrolladaa partir de Python.

Page 9: Introduccion al Octave

Introduccion al lenguaje Octave

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Introduccion

Introduccion II

Primeros comandos

Variables

Variables II

Variables IIIRecuperacion decomandos

Expresiones escalares

Expresiones escalaresII

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones al

9 / 66

Page 10: Introduccion al Octave

Introduccion

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Introduccion

Introduccion II

Primeros comandos

Variables

Variables II

Variables IIIRecuperacion decomandos

Expresiones escalares

Expresiones escalaresII

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones al

10 / 66

GNU Octave es un language pensado para el calculonumerico (http://www.gnu.org/software/octave/) que poseeuna interfaz de lınea de comando.Octave-Forge es una comunidad de desarrollo queproporciona paquetes para varios problemas. Los paquetesdisponibles se describen enhttp://octave.sourceforge.net/packages.php.QtOctave es una interfaz grafica para Octave(http://qtoctave.wordpress.com/).

Existen instaladores para GNU Linux y Mac OS.El paquete precompilado para Windows esta en Octave-Forge(oct. 2010).

• Se recomienda activar los paquetes symbolic y optim.• Comprobar bugs como: pkg rebuild -noauto oct2mat

Page 11: Introduccion al Octave

Introduccion II

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Introduccion

Introduccion II

Primeros comandos

Variables

Variables II

Variables IIIRecuperacion decomandos

Expresiones escalares

Expresiones escalaresII

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones al

11 / 66

Si usamos QtOctave, podremos distinguir varias ventanas:

• Terminal, para escribir los comandos Octave;• Commands’ List, refleja los comandos ya escritos;• Variables’ List, refleja las variables creadas;• Navigator, muestra la carpeta por defecto;• Editor, permite editar ficheros.

Page 12: Introduccion al Octave

Primeros comandos

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Introduccion

Introduccion II

Primeros comandos

Variables

Variables II

Variables IIIRecuperacion decomandos

Expresiones escalares

Expresiones escalaresII

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones al

12 / 66

Al ser un lenguaje interpretado, los comandos se ejecutanuno a uno, terminados con retorno de carro.diary, para volcar lo mostrado a un fichero:>> diary %vuelca al fichero ’diary’ de la capeta por defecto

>> diary file %ıdem al fichero ’file’

>> diary off %interrumpe el volcado

help, para solicitar ayuda:>> help diary %da ayuda sobre el comando ’diary’

La ayuda online esta enhttp://www.gnu.org/software/octave/doc/interpreter/

pwd, para ver la carpeta por defecto.cd, para cambiar de carpeta:>> cd Z:\mi_carpeta %cambia la carpeta por defecto

>> cd .. %se desplaza a la carpeta padre

ls, para ver el contenido de la carpeta.

Page 13: Introduccion al Octave

Variables

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Introduccion

Introduccion II

Primeros comandos

Variables

Variables II

Variables IIIRecuperacion decomandos

Expresiones escalares

Expresiones escalaresII

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones al

13 / 66

Las variables numericas no necesitan declararse:>> a=1/3

Cuando se asigna otro valor, el anterior desaparece:>> a=1/6

Las variables creadas se guardan en la Variables’ List:>> whos

Todo calculo no asignado se guarda en la variable ans:>> 1/4

format, distintas formas de ver (no de calular) el valor:>> format short %punto fijo, 4 decimales

>> format long %punto fijo, 15 decimales

>> format short e %punto flotante, 4 decimales

>> format long e %punto flotante, 15 decimales

Page 14: Introduccion al Octave

Variables II

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Introduccion

Introduccion II

Primeros comandos

Variables

Variables II

Variables IIIRecuperacion decomandos

Expresiones escalares

Expresiones escalaresII

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones al

14 / 66

clear, borra variables:>> clear a %borra la variable a

>> clear %borra todas las variables

Los nombres de variables deben debe tener 31 caracterescomo maximo, empezar por una letra y contener letras,numeros y “ ”, pero no espacios en blanco.>> n_2=44 %es correcto, no ası 2_n o n 2

Se distingue entre mayusculas y minusculas.Varios comandos en linea se separan con “,” o “;”.>> a=4; b2=10^(2-a)

Los terminados con “;” se ejecutan sin mostrar el resultado.Todo lo que sigue a % se considera un comentario.

Page 15: Introduccion al Octave

Variables III

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Introduccion

Introduccion II

Primeros comandos

Variables

Variables II

Variables IIIRecuperacion decomandos

Expresiones escalares

Expresiones escalaresII

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones al

15 / 66

Un comando se extiende por varias lıneas con . . . :>> Nombre_muy_largo=...

2.e-4*23

No se recomienda usar nombres propios de Octave:

• pi, valor de π,• i, j, valor del numero imaginario,• inf, representa el infinto, ∞,• NaN, representa la indeterminacion.

Ojo, el numero e se escribe evaluando la exponecial, exp(1),pero e2 no se escribe exp(1)^2 sino exp(2).

Page 16: Introduccion al Octave

Recuperacion de comandos

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Introduccion

Introduccion II

Primeros comandos

Variables

Variables II

Variables IIIRecuperacion decomandos

Expresiones escalares

Expresiones escalaresII

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones al

16 / 66

Solo se puede modificar el comando de la linea actual.Para recuperar un comando previo podemos:

• copiarlo desde la ventana Commands’ List o• usar el cursor “flecha hacia arriba” ↑ o

• escribir las primeras letras del comando y pulsar ↑ paranavegar solo por los comandos que empiezan por esasletras.

Con la tecla “Esc” se borra lo escrito.

Page 17: Introduccion al Octave

Expresiones escalares

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Introduccion

Introduccion II

Primeros comandos

Variables

Variables II

Variables IIIRecuperacion decomandos

Expresiones escalares

Expresiones escalaresII

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones al

17 / 66

Las operaciones basicas son + - * / ∧

La prioridad es la misma que en las calculadoras.Se pueden usar parentesis para cambiarlas.Ojo, 1/6 no es 1/2*3 sino 1/(2*3).Hay muchas funciones intrınsecas (ver ayuda online):

• trigonometicas: sin, cos, tan, sec, csc,. . .• trigonometicas inversas: asin, acos, . . .• logarıtmicas: log, log10, . . .• para complejos: imag, real, . . .• enteros: floor, round, mod, sign, . . .• otras: sqrt, abs, sinh, . . .

Page 18: Introduccion al Octave

Expresiones escalares II

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Introduccion

Introduccion II

Primeros comandos

Variables

Variables II

Variables IIIRecuperacion decomandos

Expresiones escalares

Expresiones escalaresII

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones al

18 / 66

Ejercicios 1

1. Inicia el volcado con diary.2. Calcula eiπ + 1.3. Calcula 0/0.4. Guarda | cos(3)2| − 6

32 y | cos(32)| − 6

3·2en dos variables.

5. Comprueba que se han guardado en la Variables’ List.6. Borra las variables.7. Termina el volcado y comprueba el contenido del fichero.

Page 19: Introduccion al Octave

Matrices y arrays. Estructuras de datos

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Vectores

Vectores II

Vectores III

Vectores IV

Matrices

Matrices II

Matrices III

Otros datos

Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

19 / 66

Page 20: Introduccion al Octave

Vectores

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Vectores

Vectores II

Vectores III

Vectores IV

Matrices

Matrices II

Matrices III

Otros datos

Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

20 / 66

Vectores dados manualmente:>> v=[1 3 5 7] %fila, componentes separadas por " " o ","

>> w=[1;3;5;7] %columna, componentes separadas por ";"

Ojo, cuidado con los espacios en las filas: [2, 4] se obtienecon [2 1+3] o [2, 1 +3], pero no con [2 1 +3].Vectores con una ley de formacion:>> q=2:2:20 %inicio:incremento:fin

>> y=2:2:21 %es el mismo vector

>> v=8:-1:1 %va de 8 a 1

>> r=1:5 %si el incremento es 1, se puede omitir

>> q2=linspace(2,20,10) %inicio, fin, num. componentes

>> m=ones(1,20) %fila de 20 unos

>> n=zeros(20,1) %columna de 20 ceros

Page 21: Introduccion al Octave

Vectores II

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Vectores

Vectores II

Vectores III

Vectores IV

Matrices

Matrices II

Matrices III

Otros datos

Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

21 / 66

Las operaciones basicas matriciales son + - * / ∧

>> 3*m %fila de 20 treses

>> m*n %multiplicacion "fila por columna"

Las operaciones basicas elementales son + - .* ./ .∧

>> m.*m %multiplicacion "elemento a elemento"

Las funciones intrınsecas son elementales.Funciones especıficas para vectores:

• ’, trasposicion,• length, numero de componentes,• norm, norma,• dot, producto escalar,• cross, producto cruzado.

Page 22: Introduccion al Octave

Vectores III

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Vectores

Vectores II

Vectores III

Vectores IV

Matrices

Matrices II

Matrices III

Otros datos

Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

22 / 66

Extraccion de componentes:>> v(2) %devuelve la 2a componente

>> v(2:4) %devuelve [v(2) v(3) v(4)]

>> v([1 5 3]) %devuelve [v(1) v(5) v(3)]

>> ind=[1 5 3]; v(ind) %ıdem

>> v(4:end-1) %componentes de la 4a a la penultima

Ejercicios 2

1. Crea dos vectores fila, u y v, de la misma dimension.2. Muestra su numero de componentes.3. Sumalos.4. Multiplica u por el traspuesto de v.

Page 23: Introduccion al Octave

Vectores IV

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Vectores

Vectores II

Vectores III

Vectores IV

Matrices

Matrices II

Matrices III

Otros datos

Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

23 / 66

5. Multiplica el traspuesto de u por v.6. Calcula la norma de u.7. Calcula el seno de cada componente de u.8. Divide cada componente de u por la correspondiente de v.9. Eleva al cubo cada componente de u.10. Suma los elementos de ındice par de u con los elementos

de ındice impar de v. ¿Es siempre posible?11. Toma los elementos 1, 5 y 4 de u y sumale los tres ultimos

valores de v. Guarda el resultado en las posiciones dadaspara u.

Page 24: Introduccion al Octave

Matrices

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Vectores

Vectores II

Vectores III

Vectores IV

Matrices

Matrices II

Matrices III

Otros datos

Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

24 / 66

Matrices dadas manualmente, se introducen por filas:>> M=[1 2 5; 2 -1 6; 3 0 -1] %en filas, usamos " " o ","

Matrices con una ley de formacion:>> A=ones(2,3) %matriz 2 x 3 de unos

>> B=zeros(4) %matriz 4 x 4 de ceros

>> C=eye(4,5) %matriz identidad 4 x 5

>> C=rand(2) %matriz aleatoria 2 x 2, 0<=C<=1

Como en vectores, se distingue entre operaciones matriciales(* / ∧) y elementales (.* ./ .∧).Las funciones intrınsecas tambien son elementales.Algunas funciones especıficas para matrices: ’, size, det,rank, inv, eig, . . .

Page 25: Introduccion al Octave

Matrices II

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Vectores

Vectores II

Vectores III

Vectores IV

Matrices

Matrices II

Matrices III

Otros datos

Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

25 / 66

Resolucion del sistema lineal Ax = b:>> x=A\b

Si es SCD, devuelve la unica solucion del sistema.En otro caso, devuelve la solucion por mınimos cuadrados.(Ver tambien chol, lu, . . . )Extraccion de componentes:>> M(2,3) %devuelve la componente (2,3)

>> M(:,3) %devuelve la 3a columna

>> M(2,:) %devuelve la 2a fila

>> M([1 5 3],1:2) %matriz orlada 3 x 2

>> triu(M), tril(M), diag(M) %triangular sup., inf. y diagonal

>> I=diag(diag(M)) %matriz diagonal, con diag(I)=diag(M)

Yuxtaposicion de matrices:>> A=[1 2; 5 -2]; B=[-10 30; A] %a~nadimos filas

>> C=[eye(2) zeros(2,2); zeros(2,2) A] %diagonal por bloques

Page 26: Introduccion al Octave

Matrices III

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Vectores

Vectores II

Vectores III

Vectores IV

Matrices

Matrices II

Matrices III

Otros datos

Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

26 / 66

Ejercicios 3

1. Crea dos matrices cuadradas, A y B, del mismo tamano.2. Muestra su numero de filas y columnas.3. Sumalas, multiplıcalas matricial y elementalmente.4. Calcula la traspuesta, el rango y el determinante de A.5. Calcula los autovalores A.6. Resuelve el sistema Ax=[1;1;...;1].7. Extrae los elementos interseccion de las dos primeras filas y

columnas de A. Idem de las dos ultimas filas y columnas deB.

8. Crea una matriz diagonal por bloques, que tenga en ladiagonal las dos matrices anteriores.

Page 27: Introduccion al Octave

Otros datos

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Vectores

Vectores II

Vectores III

Vectores IV

Matrices

Matrices II

Matrices III

Otros datos

Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

27 / 66

Complejos: 1+3*i o 1+3i, funciones como real, imag,conj, isreal, angle, abs, . . .Cadenas: a= ’$de 5&’, b =’don’’t’

• Concatenacion: c = [’sdf’ ’asd’]

• Conversion de numeros a cadenas: num2str(2)• Impresion del valor de una variable: disp(variable)

>> a=25; disp([’El resultado es’ num2str(a) ’ grados’])

Logicos: entero no nulo (1) es verdadero, 0 es falso

• Operadores relacionales: < > <= >= == ~=

• Operadores logicos: & | ~ xor any all

Page 28: Introduccion al Octave

Estructuras y celdas

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Vectores

Vectores II

Vectores III

Vectores IV

Matrices

Matrices II

Matrices III

Otros datos

Estructuras y celdas

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

28 / 66

Estructuras: agrupacion de datos con nombre>> circulo.centro=[0 1]

>> circulo.radio=4

Celdas: agrupacion de datos numerados>> dato{1} = 23

>> dato{2} = [2 8]

>> dato{3} = [0 9; 5 7]

Ciertos comandos devuelven celdas:>> symbols; x=sym(’x’); y=sym(’y’);

>> S=symlsolve({x+y-3,x-y+5},{x,y})

S tiene dos elementos: S{1} y S{2}.

Page 29: Introduccion al Octave

Calculo simbolico

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Calculo simbolico

Calculo simbolico II

Calculo simbolico III

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

29 / 66

Page 30: Introduccion al Octave

Calculo simbolico

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Calculo simbolico

Calculo simbolico II

Calculo simbolico III

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

30 / 66

Precisa del paquete symbolic de Octave-Forge.El calculo simbolico se carga con symbols

Las variables simbolicas deben declararse:>> x = sym(’x’)

Toda expresion que las involucre sera simbolica:>> f = x^2 %f es una expresion simbolica

La asignacion las convierte en numericas:>> x = 5 %x ha dejado de ser simbolica

En simbolico, las funciones intrınsecas cambian de nombre:>> f = Sin(Pi*x); g = Cos(x); h = Exp(x); i = Sqrt(x)

(ver http://octave.sourceforge.net/symbolic/overview.html)collect, recolecta los terminos como polinomio:>> f = 2*x+x+3; collect(f,x)

splot, pinta una funcion simbolica:>> i = Exp(x); splot(i,x,[-1 1])

Page 31: Introduccion al Octave

Calculo simbolico II

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Calculo simbolico

Calculo simbolico II

Calculo simbolico III

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

31 / 66

subs, evalua una expresion:>> g = Cos(x); p = subs(g,x,1.3)

to_double, convierte un valor simbolico a numerico:>> to_double(p) %p es el resultado anterior

differentiate, calcula la derivada:>> f = x^2; differentiate(f,x,2) %derivada segunda

symlsolve, resuelve ecuaciones lineales:>> y=sym(’y’); symlsolve({x+y-2,x-y-1},{x,y})

symfsolve, resuelve ecuaciones no lineales:>> f = x^2+3*x-1; g= x*y-y^2+3; symfsolve(f,g,[1,5])

No esta implementado el calculo simbolico de lımites,integracion, ecuaciones diferenciales, graficas de funciones dedos variables. . . (oct 2010)

Page 32: Introduccion al Octave

Calculo simbolico III

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Calculo simbolico

Calculo simbolico II

Calculo simbolico III

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

32 / 66

Ejercicios 4

1. Crea una expresion simbolica de una variable.3. Muestra su grafica en diferentes dominios.5. Evaluala en distintos puntos.4. Calcula su derivada.6. Resuelve un sistema lineal, y otro no lineal, de 2 ecuaciones

y dos incognitas.

Page 33: Introduccion al Octave

Visualizacion grafica

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Graficos numericos

Graficos numericos IIGraficos numericosIII

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

33 / 66

Page 34: Introduccion al Octave

Graficos numericos

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Graficos numericos

Graficos numericos IIGraficos numericosIII

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

34 / 66

plot, graficas de funciones de una variable:>> x = 0:0.5:5; plot(x, sin(x)) %cambiar 0.5 a 0.1

Varios graficos en la misma ventana:>> hold on; plot(x, cos(x))

>> hold off; plot(x, sin(2*x), x, cos(3*x))

Opciones de plot, colores, lıneas y marcas:>> plot(x, sin(x), ’r*’, x, cos(x), ’-.g’)

Informacion adicional:>> title(’Dos curvas’) %titulo

>> xlabel(’Abscisas’); ylabel(’Ordenadas’) %texto en ejes

>> legend(’Curva 1’,’Curva 2’) %leyenda

>> axis([-1 11 -1.5 1.5]) %escala

figure, crea una nueva ventana de graficos.line, crea lineas personalizadas.>> line(x,cos(x), ’linewidth’, 4)

Page 35: Introduccion al Octave

Graficos numericos II

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Graficos numericos

Graficos numericos IIGraficos numericosIII

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

35 / 66

Curvas en el plano y el espacio:>> t=0:0.1:2*pi; plot(exp(-t).*cos(2*t), exp(-t).*sin(2*t))

>> plot3(cos(t),t.*sin(t),sqrt(t))

(Observese el uso de .*)Escala logarıtmica, semilogx, semilogy, loglog:>> x = 0:0.1:5; semilogy(x, exp(-x))

Coordenadas polares, polar:>> t = 0:.01:2*pi; polar(t,sin(2*t).*cos(2*t))

Analisis estadıstico:>> errorbar(x,sin(x),rand(size(x)))

>> hist([2,3,3,4,4.5])

Graficas de funciones de dos variables:>> [x,y]=meshgrid(-2:.2:2, -2:.2:2);

>> surf(x, y, x.*exp(-x.^2-y.^2))

>> contour(x, y, x.*exp(-x.^2-y.^2))

Page 36: Introduccion al Octave

Graficos numericos III

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Graficos numericos

Graficos numericos IIGraficos numericosIII

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

36 / 66

Subgraficos:>> x = -2:0.1:2;

>> subplot(1,2,1); plot(x,sin(x),’r’); title(’Primer grafico’)

>> subplot(1,2,2); plot(x,cos(x),’r’); title(’Segundo grafico’)

print, impresion de la ventana de graficos activa:>> print -dpng ’grafica.png’

Ejercicios 5

1. Crea una ventana con dos graficos. Anade informacionadicional.

2. Crea un grafico de contorno para una funcion de dosvariables en una ventana aparte.

3. Salva el grafico en un fichero.

Page 37: Introduccion al Octave

Ficheros en Octave

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Scripts

Fichero funcion

Fichero funcion II

Fichero funcion III

Funcion automaticaFuncion automaticaII

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

37 / 66

Page 38: Introduccion al Octave

Scripts

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Scripts

Fichero funcion

Fichero funcion II

Fichero funcion III

Funcion automaticaFuncion automaticaII

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

38 / 66

Es un fichero con una secuencia de comandos.Lleva extension .mPara que Octave lo encuentre, su carpeta debe

a) ser la carpeta por defecto ob) anadirse a las rutas de busqueda con addpath.

Para ejecutarlo, escribir el nombre sin extension en laTerminal.Ejemplo: script grado2.m, para resolver 3x2 + 5x + 2 = 0.

a=3; b=5; c=2;

D=b^2-4*a*c;

x(1)=(-b+sqrt(D))/(2*a);

x(2)=(-b-sqrt(D))/(2*a);

Page 39: Introduccion al Octave

Fichero funcion

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Scripts

Fichero funcion

Fichero funcion II

Fichero funcion III

Funcion automaticaFuncion automaticaII

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

39 / 66

¡Los script usan la Variables’ List para sus variables!Los ficheros de funcion son scripts con su propio espacio devariables.La primera lınea de un fichero de funcion es del tipo:

function [y1, y2,...] = nombre(x1, x2,...)El nombre debe coincidir con el nombre del fichero.Las variables de entrada x1, x2,... se pasan por copia.La Variables’ List solo recibe las variables de salida y1, y2,...El valor de una variable de entrada solo se modifica sitambien es de salida.

Page 40: Introduccion al Octave

Fichero funcion II

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Scripts

Fichero funcion

Fichero funcion II

Fichero funcion III

Funcion automaticaFuncion automaticaII

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

40 / 66

Ejemplo: fichero funcion fgrado2.m.

function x=fgrado2(a,b,c)

D=b^2-4*a*c;

x(1)=(-b+sqrt(D))/(2*a);

x(2)=(-b-sqrt(D))/(2*a);

Para ejecutarlo, hay que indicar los valores de entrada:>> fgrado2(3,5,2)

Podemos usarlo facilmente para resolver otros polinomios.

Page 41: Introduccion al Octave

Fichero funcion III

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Scripts

Fichero funcion

Fichero funcion II

Fichero funcion III

Funcion automaticaFuncion automaticaII

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

41 / 66

Para usar un fichero funcion como argumento, hay que poner“@” antes del nombre. Consideremos la funcion:

function y=int_def(f,a,b)

%integral definida de f entre a y b (trapecios)

t=linspace(a,b,100);

y = trapz(t, f(t));

La funcion sin de Octave es un fichero funcion:>> int_def(@sin, 0, 1)

Page 42: Introduccion al Octave

Funcion automatica

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Scripts

Fichero funcion

Fichero funcion II

Fichero funcion III

Funcion automaticaFuncion automaticaII

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

42 / 66

Se define en una lınea: >> f = @(x,y) x.^2 + y.^2

Escritas en la Terminal, no se conservan al cerrar la sesion.Se podrıan usar para las funciones anteriores. . .>> g2=@(a,b,c) [(-b+sqrt(b^2-4*a*c))/(2*a) ...

(-b-sqrt(b^2-4*a*c))/(2*a)]

>> id = @(f,a,b) trapz(linspace(a,b,100),...

f(linspace(a,b,100)))

. . . pero se usan, generalmente, para funciones sencillas.Ojo, debemos evitar tener en la carpeta de trabajo ficherofuncion con el mismo nombre que funciones automaticas.

Page 43: Introduccion al Octave

Funcion automatica II

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Scripts

Fichero funcion

Fichero funcion II

Fichero funcion III

Funcion automaticaFuncion automaticaII

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numerico

43 / 66

Para usar una funcion automatica como argumento, no hayque poner “@”:>> f = @(x) sin(x); int_def(f, 0, 1)

Ejercicios 6

1. Crea un fichero funcion para resolver ecuaciones del tipoae−x + b = 0

2. Crea una funcion automatica para f(x) = x3 atan(1+xx2 ).

3. Dibuja la grafica de f entre -1 y 14. Calcula con int def.m su integral definida en [−1, 1].

Page 44: Introduccion al Octave

Desarrollo de algoritmos

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Algoritmos

Bucle for

Bucle while

Estructura if

Estructura if II

Estructura if III

Otros comandos

Otros comandos II

Otros comandos III

Depuracion

Importacion dedatos

Aplicaciones al

44 / 66

Page 45: Introduccion al Octave

Algoritmos

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Algoritmos

Bucle for

Bucle while

Estructura if

Estructura if II

Estructura if III

Otros comandos

Otros comandos II

Otros comandos III

Depuracion

Importacion dedatos

Aplicaciones al

45 / 66

Un programa no suele tener una unica lınea de flujo.Las estructuras de control de flujo pueden ser

• repetitivas, permiten la repeticion de comandos: for ywhile;

• alternativas, permiten decidir segun una condicion: if yswitch (que no veremos);

Page 46: Introduccion al Octave

Bucle for

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Algoritmos

Bucle for

Bucle while

Estructura if

Estructura if II

Estructura if III

Otros comandos

Otros comandos II

Otros comandos III

Depuracion

Importacion dedatos

Aplicaciones al

46 / 66

for i=v

comandos (que dependen de i)end

v es un vector; en la iteracion j, i toma el valor de v(j).Los bucles pueden anidarse. Se recomienda “indentar” loscomandos para facilitar la lectura.Cuando sea posible, se recomienda usar operacionesvectoriales en vez de bucles.Ejemplo: calculo del n!

fac = 1;

for i=2:n

fac = fac*i;

end

Page 47: Introduccion al Octave

Bucle while

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Algoritmos

Bucle for

Bucle while

Estructura if

Estructura if II

Estructura if III

Otros comandos

Otros comandos II

Otros comandos III

Depuracion

Importacion dedatos

Aplicaciones al

47 / 66

while condicioncomandos

end

condicion es una relacion logica.while se suele usar cuando no es sencillo calcular el numerode iteraciones.Ejemplo: calculo de

n=11

n4

n = 1; sum = 0;

while 1/n^4 > eps

sum = sum + 1/n^4;

n = n+1;

end

Page 48: Introduccion al Octave

Estructura if

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Algoritmos

Bucle for

Bucle while

Estructura if

Estructura if II

Estructura if III

Otros comandos

Otros comandos II

Otros comandos III

Depuracion

Importacion dedatos

Aplicaciones al

48 / 66

if condicion 1comandos 1

[ elseif condicion 2comandos 2 ]

[ elseif . . . ][ else

comandos n ]end

Si condicion 1 es cierta, se ejecutan comandos 1.Si no y condicion 2 es cierta, se ejecutan comandos 2.Si ninguna condicion es cierta, se ejecuta comandos n.

Page 49: Introduccion al Octave

Estructura if II

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Algoritmos

Bucle for

Bucle while

Estructura if

Estructura if II

Estructura if III

Otros comandos

Otros comandos II

Otros comandos III

Depuracion

Importacion dedatos

Aplicaciones al

49 / 66

Ejemplo: funcion definida a trozos

f(x) =

x − 1, x ≤ −2,

1 − x2, −2 < x < 0,

− 1

x + 1, x ≥ 0.

function y=f(x)

if x<=-2

y=x-1;

elseif x<0

y=1-x^2;

else

y=-1/(x+1);

end

Page 50: Introduccion al Octave

Estructura if III

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Algoritmos

Bucle for

Bucle while

Estructura if

Estructura if II

Estructura if III

Otros comandos

Otros comandos II

Otros comandos III

Depuracion

Importacion dedatos

Aplicaciones al

50 / 66

Para conseguir que f admita argumentos vectoriales, esnecesario usar un bucle (no basta con usar operacioneselementales, puesto que if no es elemental):

function y=f(x)

for i=1:length(x)

if x(i)<=-2

y(i)=x(i)-1;

elseif x(i)<0

y(i)=1-x(i)^2;

else

y(i)=-1/(x(i)+1);

end

end

Ahora la grafica de f se obtiene con:>> x=-3:0.1:3; plot(x,f(x))

Page 51: Introduccion al Octave

Otros comandos

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Algoritmos

Bucle for

Bucle while

Estructura if

Estructura if II

Estructura if III

Otros comandos

Otros comandos II

Otros comandos III

Depuracion

Importacion dedatos

Aplicaciones al

51 / 66

break, interrumpe la ejecucion del bucle mas interno.%busqueda de la posicion del ultimo elemento negativo

for i=length(x):-1:1

if x(i)<0

break

end

end

disp([’La posicion buscada es’ num2str(i)])

return, interrumpe la ejecucion de una funcion y devuelve elcontrol a quien la haya llamado (otra funcion o el propioOctave).if x<=0

disp(’log(x) no es real!’)

return %la funcion se interrumpe, el programa continua

end

Page 52: Introduccion al Octave

Otros comandos II

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Algoritmos

Bucle for

Bucle while

Estructura if

Estructura if II

Estructura if III

Otros comandos

Otros comandos II

Otros comandos III

Depuracion

Importacion dedatos

Aplicaciones al

52 / 66

error, interrumpe completamente la ejecucion del programa.if x<=0

error(’Error fatal: log(x) no es real!’)

end

input, permite introducir datos por teclado.>> x=input(’Introduzca un numero: ’)

Page 53: Introduccion al Octave

Otros comandos III

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Algoritmos

Bucle for

Bucle while

Estructura if

Estructura if II

Estructura if III

Otros comandos

Otros comandos II

Otros comandos III

Depuracion

Importacion dedatos

Aplicaciones al

53 / 66

Ejercicios 7

1. Calcula la suma de las componentes de un vector;comparalo con el resultado de sum.

2. Calcula ex como la suma infinita∑

n=0xn

n!.

3. Construye una funcion que evalue f , definida por

f(x) =

{

2 sen2(2x), x ≤ 0,

1 − e−x, x > 0.

Dibuja su grafica.4. Escribe una funcion que solicite al usuario en un bucle,

numeros por teclado. Si el numero es positivo, debe escribirsu logaritmo; si es negativo, debe salir del bucle e informarde que no puede calcular dicho logaritmo.

Page 54: Introduccion al Octave

Depuracion

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Algoritmos

Bucle for

Bucle while

Estructura if

Estructura if II

Estructura if III

Otros comandos

Otros comandos II

Otros comandos III

Depuracion

Importacion dedatos

Aplicaciones al

54 / 66

Para iniciar la depuracion en avisos y errores:debug_on_warning(1); debug_on_error(1);

Para gestionar puntos de interrupcion:dbstop(’nombre_funcion’,15) %parada en la lınea 15

dbstatus %muestra paradas establecidas

dbclear(’nombre_funcion’,15) %eliminacion de la parada

Para mostrar el fichero: dbtypePara saber donde estamos parados: dbwhereIr a la siguiente lınea: dbnextProfundizar en las llamadas a funciones: dbstepContinuar la ejecucion: dbcont

Cuando la ejecucion esta parada, se pueden ejecutar otroscomandos (ver valor de variables,. . . )

Page 55: Introduccion al Octave

Importacion de datos

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Datos

Datos II

Datos III

Datos IV

Aplicaciones alcalculo numerico

55 / 66

Page 56: Introduccion al Octave

Datos

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Datos

Datos II

Datos III

Datos IV

Aplicaciones alcalculo numerico

56 / 66

save, salvado de variables (fichero binario con compresion):>> save fichero [variables]

load, carga de variables:>> load fichero [variables]

fopen, apertura de ficheros:fid=fopen(’fichero’,’permiso’)

Los permisos pueden ser:

• r, lectura de ficheros existentes.• w, escritura de ficheros; si existe, se borra.• a, escritura de ficheros; ; si existe, se anade.• Anadiendo + se permite la operacion contraria.

fclose, cierre de ficheros:fclose(fid)

Lectura / escritura con formato binario: fread y fclose.

Page 57: Introduccion al Octave

Datos II

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Datos

Datos II

Datos III

Datos IV

Aplicaciones alcalculo numerico

57 / 66

Lectura con formato ascii:A=fscanf(fid, ’formato’[, sizeA])

Lee datos del fichero con identificador fid y los guarda en A.sizeA puede ser un natural o un array [m,n]; si esta presente,lee sizeA elementos.formato es una cadena que describe los elementos a leer:

• %d: entero;• %f: real• %s: cadena

textscan, util si texto y numeros estan mezclados.

Escritura con formato ascii:fprintf(fid, ’formato’, A,. . . )

Escribe las variables A,. . . en el fichero con identificador fid.formato puede contener descriptores como \n (nueva lınea).

Page 58: Introduccion al Octave

Datos III

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Datos

Datos II

Datos III

Datos IV

Aplicaciones alcalculo numerico

58 / 66

Ejemplo de escritura:

fid = fopen(’datos.txt’,’w’);

fprintf(fid,’%f %f ’, [1:2; 3:4]); %por columnas

fprintf(fid,’%s %d %f %d %d’,’asd’, 1, pi, [2;3]);

fclose(fid);

El contenido de datos.txt es:1.000000 3.000000 2.000000 4.000000 asd 1 3.141593 2 3

Page 59: Introduccion al Octave

Datos IV

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Datos

Datos II

Datos III

Datos IV

Aplicaciones alcalculo numerico

59 / 66

Ejemplo de lectura:

fid = fopen(’datos.txt’,’r’);

A=fscanf(fid,’%f’, [2 2]); %lee una matriz 2 x 2

S=fscanf(fid,’%s’,1); %lee una cadena

V=fscanf(fid,’%f’); %lee reales hasta EOF

fclose(fid);

El resultado es:

A = 1 2

3 4

S = asd

V = 1.0000

3.1416

2.0000

3.0000

Page 60: Introduccion al Octave

Aplicaciones al calculo numerico

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numericoInterpolacion yajuste

Resolucion deecuacionesResolucion simbolicade ecuaciones

Optimizacion

Integracion

Ecuacionesdiferenciales

60 / 66

Page 61: Introduccion al Octave

Interpolacion y ajuste

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numericoInterpolacion yajuste

Resolucion deecuacionesResolucion simbolicade ecuaciones

Optimizacion

Integracion

Ecuacionesdiferenciales

61 / 66

polyfit, interpolacion polinomial:>> x=[-5:5]; f=@(x)1./(1+x.^2); %(x,f(x)), 11 nodos de interp.

>> c=polyfit(x,f(x),10) %c, coeficientes del polinomio

>> xx=-5:0.1:5; %xx, vector de abscisas para la grafica

>> plot(x,f(x),’*’, xx,f(xx), xx, polyval(c,xx)) %grafico

>> legend(’nodos’, ’funcion’, ’polinomio de interpolacion’)

interp1, interpolacion con rectas a trozos:>> plot(xx,f(xx), xx,interp1(x,f(x),xx,’linear’))

interp1, interpolacion con splines:>> plot(xx,f(xx), xx,interp1(x,f(x),xx,’spline’))

polyfit, ajuste polinomial:>> c=polyfit(x,f(x),2) %grado < num. nodos +1

>> plot(x,f(x),’*’, xx, polyval(c,xx)) %grafico

Page 62: Introduccion al Octave

Resolucion de ecuaciones

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numericoInterpolacion yajuste

Resolucion deecuacionesResolucion simbolicade ecuaciones

Optimizacion

Integracion

Ecuacionesdiferenciales

62 / 66

Resolucion del sistema lineal Ax = b:>> x=A\b

Si es SCD, devuelve la unica solucion del sistema.En otro caso, devuelve la solucion por mınimos cuadrados.fzero, resolucion de ecuaciones no lineales:>> f=@cos(x)-x; fzero(f,0)

fsolve, resolucion de sistemas no lineales:>> fsolve(@f,[0 0])

Se ha creado, previamente, el fichero funcion:function y = f(x)

y(1)=x(1)^2+3*x(1)-1;

y(2)=x(1)*x(2)-x(2)^2+3;

Page 63: Introduccion al Octave

Resolucion simbolica de ecuaciones

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numericoInterpolacion yajuste

Resolucion deecuacionesResolucion simbolicade ecuaciones

Optimizacion

Integracion

Ecuacionesdiferenciales

63 / 66

symlsolve, resolucion de ecuaciones lineales:>> symbols; x=sym(’x’); y=sym(’y’);

>> S=symlsolve({x+y-3,x-y+5},{x,y})

S tiene dos elementos: S{1} y S{2}.symfsolve, resolucion de ecuaciones no lineales usandofsolve():>> symbols; x=sym(’x’); y=sym(’y’);

>> f=x^2+3*x-1; g=x*y-y^2+3;

>> a = symfsolve(f,g); %los valores iniciales se toman a 0

>> a = symfsolve(f,g,x,1,y,5); %valores iniciales, x=1 e y=5

>> a = symfsolve(f,g,{x==1,y==5}); %ıdem

>> a = symfsolve(f,g,[1 5]); %ıdem

Si las variables no se especifican en las condiciones iniciales,se toman alfabeticamente.

Page 64: Introduccion al Octave

Optimizacion

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numericoInterpolacion yajuste

Resolucion deecuacionesResolucion simbolicade ecuaciones

Optimizacion

Integracion

Ecuacionesdiferenciales

64 / 66

Precisa del paquete optim de Octave-Forge.fminsearch, busqueda de un mınimo (Nelder-MeadSimplex):>> f=@(x)x^2*cos(x);

>> fminsearch(f,2) %parte de x0 = 2

Se aplica a funciones multidimensionales:>> f = @(x) x(1)^2+x(2)^2; fminsearch(f,[1 1])

fminbnd, busqueda de un mınimo con restricciones (GoldenSearch):>> fminbnd(f,2,4) %en [2, 4]

Page 65: Introduccion al Octave

Integracion

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numericoInterpolacion yajuste

Resolucion deecuacionesResolucion simbolicade ecuaciones

Optimizacion

Integracion

Ecuacionesdiferenciales

65 / 66

quad, integracion definida:>> f=@(x) x*sin(x); quad(f,0,3)

quadl, quadgk y quadv, integracion numerica adaptativa.trapz, integracion definida (regla de trapecios):>> x=[0 1 2 3]; y = [0.5 0.85 0.67 0.9];

>> trapz(x,y)

dblquad, integracion doble:>> f=@(x,y) sin(pi.*x.*y).*sqrt(x.*y);

>> I=dblquad(f, 0,1, 0,1)

Para integracion triple, triplequad.

Page 66: Introduccion al Octave

Ecuaciones diferenciales

Indice deldocumento

Introduccion alenguajes avanzadosde computaciontecnica

Introduccion allenguaje Octave

Matrices y arrays.Estructuras de datos

Calculo simbolico

Visualizacion grafica

Ficheros en Octave

Desarrollo dealgoritmos

Importacion dedatos

Aplicaciones alcalculo numericoInterpolacion yajuste

Resolucion deecuacionesResolucion simbolicade ecuaciones

Optimizacion

Integracion

Ecuacionesdiferenciales

66 / 66

Consideremos el problema de valor inicial:

dx

dt= x2 log(t + 1) − x

t + 1,

x(0) = 1.

lsode, resolucion de una e.d.o.:>> t = 0:0.1:3;

>> x = lsode(f,1,t)

>> plot(t,x)

Se ha creado, previamente, el fichero funcion:function xp=f(x,t)

xp=x^2*log(t+1)-x/(t+1);

Para sistemas de ecuaciones, hay que usar argumentosvectoriales en la funcion f.