Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduccion al Octave

11,529 views

Published on

Breve introduccion al Octave en el contexto del calculo numerico

Published in: Education
  • Be the first to comment

Introduccion al Octave

  1. 1. Introducci´n al Octave o Francisco Pena (USC) 29 de diciembre de 2010 1 / 66
  2. 2. ´ Indice del documento´Indice deldocumento 1. Introducci´n a lenguajes avanzados de computaci´n t´cnica. o o eIntroducci´n a o 2. Introducci´n al lenguaje Octave. olenguajes avanzadosde computaci´n o 3. Matrices y arrays. Estructuras de datos.t´cnica e 4. C´lculo simb´lico. a oIntroducci´n al olenguaje Octave 5. Visualizaci´n gr´fica. o aMatrices y arrays.Estructuras de datos 6. Ficheros en Octave.C´lculo simb´lico a o 7. Desarrollo de algoritmos.Visualizaci´n gr´fica o a 8. Importaci´n de datos. oFicheros en Octave 9. Aplicaciones al c´lculo num´rico. a eDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 2 / 66
  3. 3. ´Indice deldocumentoIntroducci´n a olenguajes avanzadosde computaci´not´cnica eLenguajesLenguajes IILenguajes IIILenguajes IV Introducci´n a lenguajes avanzados de oLenguajes VIntroducci´n al o computaci´n t´cnica o elenguaje OctaveMatrices y arrays.Estructuras de datosC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 3 / 66
  4. 4. Lenguajes´Indice deldocumento C´lculo simb´lico: se trabaja con constantes y expresiones a oIntroducci´n a o simb´licas. olenguajes avanzados √de computaci´no • 2, constante simb´lica que representa la ra´ de 2; o ızt´cnica e √ 2Lenguajes • 2 , constante simb´lica que representa el numero 2. oLenguajes IILenguajes IIILenguajes IV • x2 , expresi´n simb´lica que representa la funci´n o o oLenguajes V matem´tica f (x) = x2 ; aIntroducci´n al olenguaje Octave • x2 dx, su integral indefinida es otra expresi´n simb´lica, o o x3Matrices y arrays.Estructuras de datos 3 + C.C´lculo simb´lico a o Un programa que implementa el c´lculo simb´lico suele a oVisualizaci´n gr´fica o a llamarse “sistema de ´lgebra computacional”. aFicheros en Octave Los m´s conocidos son Mathematica, Maple y Maxima. aDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 4 / 66
  5. 5. Lenguajes II´Indice deldocumento A menor escala, Octave tambi´n puede operar eIntroducci´n a o simb´licamente. olenguajes avanzadosde computaci´no El c´lculo simb´lico es util para a o ´t´cnica eLenguajes • simplificaci´n de expresiones, o x2 + 2x + 1 → (x + 1)2Lenguajes IILenguajes IIILenguajes IV • resoluci´n exacta de ecuaciones lineales o no lineales, oLenguajes V x2 + xy + y = 3Introducci´n al o → 1 , −3/2 3 1lenguaje Octave x2 − 4x + 3 = 0Matrices y arrays.Estructuras de datos • c´lculo de l´ a ımites,C´lculo simb´lico a o l´ x→1 x2 y → y ımVisualizaci´n gr´fica o a • c´lculo de derivadas, integrales indefinidas aFicheros en Octave dDesarrollo de dx sin(x) → cos(x)algoritmos • resoluci´n exacta de ecuaciones diferenciales. oImportaci´n de odatosAplicaciones alc´lculo num´rico a e 5 / 66
  6. 6. Lenguajes III´Indice deldocumento A veces, el c´lculo simb´lico no puede ser realizado, por a oIntroducci´n a o limitaciones del propio sistema o por impedimentos de tipolenguajes avanzadosde computaci´no matem´tico. at´cnica eLenguajes C´lculo num´rico: se trabaja con n´meros representables en a e uLenguajes II un ordenador.Lenguajes III √Lenguajes IV • √ se almacena como 1.414213562373095; 2Lenguajes V 2Introducci´n al o • 2 , es un n´mero pr´ximo a 2. u olenguaje Octave • El uso de funciones se limita a c´lculos que devuelven a 1Matrices y arrays.Estructuras de datos n´meros: 0 x2 dx, es un n´mero pr´ximo a 1/3. u u oC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 6 / 66
  7. 7. Lenguajes IV´Indice deldocumento Con el c´lculo num´rico es posible hallar un resultado a eIntroducci´n a o aproximado de los problemas anteriores, incluso cuando ellenguajes avanzadosde computaci´no c´lculo simb´lico falla. a ot´cnica eLenguajes Su limitaci´n reside en que s´lo obtiene resultados n´mericos: o o uLenguajes IILenguajes III • Con c´lculo num´rico podemos saber que la derivada de a eLenguajes IVLenguajes V x2 en x=2 es 4;Introducci´n al o • Solo con c´lculo simb´lico podremos ver que la derivada a olenguaje Octave en todo punto es 2x.Matrices y arrays.Estructuras de datosC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 7 / 66
  8. 8. Lenguajes V´Indice deldocumento El programa orientado al c´lculo num´rico m´s conocido es a e aIntroducci´n a o Matlab.lenguajes avanzadosde computaci´nt´cnica e o • GNU Octave pretende ser un clon de software libre deLenguajes Matlab. Se diferencia en la interfaz gr´fica y las aLenguajes IILenguajes III toolboxes (por ejemplo, de c´lculo simb´lico). a oLenguajes IV • Scilab ha sido desarrollado por INRIA. No es totalmenteLenguajes VIntroducci´n al o compatible con Matlab, pero se trabaja en un traductorlenguaje Octave de Matlab a Scilab.Matrices y arrays.Estructuras de datos Otras herramientas de c´lculo cient´ a ıfico son:C´lculo simb´lico a oVisualizaci´n gr´fica o a • R es un lenguaje desarrollado principalmente para an´lisis aFicheros en Octave estad´ ıstico;Desarrollo de • Sage es una aplicaci´n para c´lculo cient´ o a ıfico desarrolladaalgoritmosImportaci´n de o a partir de Python.datosAplicaciones alc´lculo num´rico a e 8 / 66
  9. 9. ´Indice deldocumentoIntroducci´n a olenguajes avanzadosde computaci´n ot´cnica eIntroducci´n al olenguaje OctaveIntroducci´n oIntroducci´n II oPrimeros comandos Introducci´n al lenguaje Octave oVariablesVariables IIVariables IIIRecuperaci´n de ocomandosExpresiones escalaresExpresiones escalaresIIMatrices y arrays.Estructuras de datosC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de o 9 / 66datos
  10. 10. Introducci´n o´Indice deldocumento GNU Octave es un language pensado para el c´lculo aIntroducci´n a o num´rico (http://www.gnu.org/software/octave/) que posee elenguajes avanzadosde computaci´n o una interfaz de l´ ınea de comando.t´cnica e Octave-Forge es una comunidad de desarrollo queIntroducci´n al olenguaje Octave proporciona paquetes para varios problemas. Los paquetesIntroducci´n oIntroducci´n II o disponibles se describen enPrimeros comandos http://octave.sourceforge.net/packages.php.VariablesVariables II QtOctave es una interfaz gr´fica para Octave aVariables IIIRecuperaci´n de o (http://qtoctave.wordpress.com/).comandosExpresiones escalares Existen instaladores para GNU Linux y Mac OS.Expresiones escalaresII El paquete precompilado para Windows est´ en Octave-Forge aMatrices y arrays.Estructuras de datos (oct. 2010).C´lculo simb´lico a o • Se recomienda activar los paquetes symbolic y optim.Visualizaci´n gr´fica o a • Comprobar bugs como: pkg rebuild -noauto oct2matFicheros en OctaveDesarrollo dealgoritmosImportaci´n de o 10 / 66datos
  11. 11. Introducci´n II o´Indice deldocumento Si usamos QtOctave, podremos distinguir varias ventanas:Introducci´n a olenguajes avanzados • Terminal, para escribir los comandos Octave;de computaci´nt´cnica e o • Commands’ List, refleja los comandos ya escritos;Introducci´n al o • Variables’ List, refleja las variables creadas;lenguaje OctaveIntroducci´n o • Navigator, muestra la carpeta por defecto;Introducci´n II o • Editor, permite editar ficheros.Primeros comandosVariablesVariables IIVariables IIIRecuperaci´n de ocomandosExpresiones escalaresExpresiones escalaresIIMatrices y arrays.Estructuras de datosC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de o 11 / 66datos
  12. 12. Primeros comandos´Indice deldocumento Al ser un lenguaje interpretado, los comandos se ejecutanIntroducci´n a o uno a uno, terminados con retorno de carro.lenguajes avanzadosde computaci´n o diary, para volcar lo mostrado a un fichero:t´cnica e >> diary %vuelca al fichero ’diary’ de la capeta por defectoIntroducci´n al olenguaje Octave >> diary file %´dem al fichero ’file’ ıIntroducci´n oIntroducci´n II o >> diary off %interrumpe el volcadoPrimeros comandos help, para solicitar ayuda:VariablesVariables II >> help diary %da ayuda sobre el comando ’diary’Variables IIIRecuperaci´n de o La ayuda online est´ en acomandos http://www.gnu.org/software/octave/doc/interpreter/Expresiones escalaresExpresiones escalaresII pwd, para ver la carpeta por defecto.Matrices y arrays.Estructuras de datos cd, para cambiar de carpeta:C´lculo simb´lico a o >> cd Z:mi_carpeta %cambia la carpeta por defectoVisualizaci´n gr´fica o a >> cd .. %se desplaza a la carpeta padreFicheros en Octave ls, para ver el contenido de la carpeta.Desarrollo dealgoritmosImportaci´n de o 12 / 66datos
  13. 13. Variables´Indice deldocumento Las variables num´ricas no necesitan declararse: eIntroducci´n a o >> a=1/3lenguajes avanzadosde computaci´n o Cuando se asigna otro valor, el anterior desaparece:t´cnica e >> a=1/6Introducci´n al olenguaje Octave Las variables creadas se guardan en la Variables’ List:Introducci´n oIntroducci´n II o >> whosPrimeros comandos Todo c´lculo no asignado se guarda en la variable ans: aVariablesVariables II >> 1/4Variables IIIRecuperaci´n de o format, distintas formas de ver (no de calular) el valor:comandos >> format short %punto fijo, 4 decimalesExpresiones escalaresExpresiones escalares >> format long %punto fijo, 15 decimalesIIMatrices y arrays. >> format short e %punto flotante, 4 decimalesEstructuras de datos >> format long e %punto flotante, 15 decimalesC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de o 13 / 66datos
  14. 14. Variables II´Indice deldocumento clear, borra variables:Introducci´n a o >> clear a %borra la variable alenguajes avanzadosde computaci´n o >> clear %borra todas las variablest´cnica e Los nombres de variables deben debe tener 31 caracteresIntroducci´n al olenguaje Octave como m´ximo, empezar por una letra y contener letras, aIntroducci´n oIntroducci´n II o n´meros y “ ”, pero no espacios en blanco. uPrimeros comandos >> n_2=44 %es correcto, no as´ 2_n ´ n 2 ı oVariablesVariables II Se distingue entre may´sculas y min´sculas. u uVariables IIIRecuperaci´n de o Varios comandos en linea se separan con “,” o “;”.comandos >> a=4; b2=10^(2-a)Expresiones escalaresExpresiones escalares Los terminados con “;” se ejecutan sin mostrar el resultado.IIMatrices y arrays. Todo lo que sigue a % se considera un comentario.Estructuras de datosC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de o 14 / 66datos
  15. 15. Variables III´Indice deldocumento Un comando se extiende por varias l´ ıneas con . . . :Introducci´n a o >> Nombre_muy_largo=...lenguajes avanzadosde computaci´n o 2.e-4*23t´cnica e No se recomienda usar nombres propios de Octave:Introducci´n al olenguaje OctaveIntroducci´n o • pi, valor de π,Introducci´n II o • i, j, valor del n´mero imaginario, uPrimeros comandosVariables • inf, representa el infinto, ∞,Variables IIVariables III • NaN, representa la indeterminaci´n. oRecuperaci´n de ocomandos Ojo, el n´mero e se escribe evaluando la exponecial, exp(1), uExpresiones escalaresExpresiones escalares pero e2 no se escribe exp(1)^2 sino exp(2).IIMatrices y arrays.Estructuras de datosC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de o 15 / 66datos
  16. 16. Recuperaci´n de comandos o´Indice deldocumento Solo se puede modificar el comando de la linea actual.Introducci´n a o Para recuperar un comando previo podemos:lenguajes avanzadosde computaci´nt´cnica e o • copiarlo desde la ventana Commands’ List oIntroducci´n al o • usar el cursor “flecha hacia arriba” ↑ olenguaje OctaveIntroducci´n o • escribir las primeras letras del comando y pulsar ↑ paraIntroducci´n II oPrimeros comandos navegar solo por los comandos que empiezan por esasVariables letras.Variables IIVariables IIIRecuperaci´n de o Con la tecla “Esc” se borra lo escrito.comandosExpresiones escalaresExpresiones escalaresIIMatrices y arrays.Estructuras de datosC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de o 16 / 66datos
  17. 17. Expresiones escalares´Indice deldocumento Las operaciones b´sicas son + - * / ∧ aIntroducci´n a o La prioridad es la misma que en las calculadoras.lenguajes avanzadosde computaci´n o Se pueden usar par´ntesis para cambiarlas. et´cnica eIntroducci´n al o Ojo, 1/6 no es 1/2*3 sino 1/(2*3).lenguaje Octave Hay muchas funciones intr´ınsecas (ver ayuda online):Introducci´n oIntroducci´n II o • trigonom´ticas: sin, cos, tan, sec, csc,. . . ePrimeros comandosVariables • trigonom´ticas inversas: asin, acos, . . . eVariables IIVariables III • logar´ ıtmicas: log, log10, . . .Recuperaci´n decomandos o • para complejos: imag, real, . . .Expresiones escalares • enteros: floor, round, mod, sign, . . .Expresiones escalaresII • otras: sqrt, abs, sinh, . . .Matrices y arrays.Estructuras de datosC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de o 17 / 66datos
  18. 18. Expresiones escalares II´Indice deldocumento Ejercicios 1Introducci´n a olenguajes avanzados 1. Inicia el volcado con diary.de computaci´nt´cnica e o 2. Calcula eiπ + 1.Introducci´n al o 3. Calcula 0/0.lenguaje OctaveIntroducci´n o 4. Guarda | cos(3)2 | − 6 2 y | cos(32 )| − 3·2 en dos variables. 3 6Introducci´n II o 5. Comprueba que se han guardado en la Variables’ List.Primeros comandosVariables 6. Borra las variables.Variables IIVariables III 7. Termina el volcado y comprueba el contenido del fichero.Recuperaci´n de ocomandosExpresiones escalaresExpresiones escalaresIIMatrices y arrays.Estructuras de datosC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de o 18 / 66datos
  19. 19. ´Indice deldocumentoIntroducci´n a olenguajes avanzadosde computaci´n ot´cnica eIntroducci´n al olenguaje OctaveMatrices y arrays.Estructuras de datosVectores Matrices y arrays. Estructuras de datosVectores IIVectores IIIVectores IVMatricesMatrices IIMatrices IIIOtros datosEstructuras y celdasC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatos 19 / 66Aplicaciones al
  20. 20. Vectores´Indice deldocumento Vectores dados manualmente:Introducci´n a o >> v=[1 3 5 7] %fila, componentes separadas por " " ´ "," olenguajes avanzadosde computaci´n o >> w=[1;3;5;7] %columna, componentes separadas por ";"t´cnica eIntroducci´n al o Ojo, cuidado con los espacios en las filas: [2, 4] se obtienelenguaje OctaveMatrices y arrays. con [2 1+3] o [2, 1 +3], pero no con [2 1 +3].Estructuras de datos Vectores con una ley de formaci´n: oVectoresVectores II >> q=2:2:20 %inicio:incremento:finVectores III >> y=2:2:21 %es el mismo vectorVectores IVMatrices >> v=8:-1:1 %va de 8 a 1Matrices II >> r=1:5 %si el incremento es 1, se puede omitirMatrices IIIOtros datos >> q2=linspace(2,20,10) %inicio, fin, num. componentesEstructuras y celdas >> m=ones(1,20) %fila de 20 unosC´lculo simb´lico a o >> n=zeros(20,1) %columna de 20 cerosVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatos 20 / 66Aplicaciones al
  21. 21. Vectores II´Indice del Las operaciones b´sicas matriciales son + - * / a ∧documentoIntroducci´n a o >> 3*m %fila de 20 treseslenguajes avanzadosde computaci´n o >> m*n %multiplicaci´n "fila por columna" ot´cnica eIntroducci´n al o Las operaciones b´sicas elementales son + - .* ./ .∧ alenguaje Octave >> m.*m %multiplicaci´n "elemento a elemento" oMatrices y arrays.Estructuras de datos Las funciones intr´ ınsecas son elementales.Vectores Funciones espec´ıficas para vectores:Vectores IIVectores III • ’, trasposici´n, oVectores IVMatrices • length, numero de componentes,Matrices IIMatrices III • norm, norma,Otros datos • dot, producto escalar,Estructuras y celdas • cross, producto cruzado.C´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatos 21 / 66Aplicaciones al
  22. 22. Vectores III´Indice deldocumento Extracci´n de componentes: oIntroducci´n a o >> v(2) %devuelve la 2a componentelenguajes avanzadosde computaci´n o >> v(2:4) %devuelve [v(2) v(3) v(4)]t´cnica e >> v([1 5 3]) %devuelve [v(1) v(5) v(3)]Introducci´n al olenguaje Octave >> ind=[1 5 3]; v(ind) %´dem ıMatrices y arrays. >> v(4:end-1) %componentes de la 4a a la pen´ltima uEstructuras de datosVectoresVectores II Ejercicios 2Vectores IIIVectores IV 1. Crea dos vectores fila, u y v, de la misma dimensi´n. oMatricesMatrices II 2. Muestra su n´mero de componentes. uMatrices III 3. S´malos. uOtros datosEstructuras y celdas 4. Multiplica u por el traspuesto de v.C´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatos 22 / 66Aplicaciones al
  23. 23. Vectores IV´Indice deldocumento 5. Multiplica el traspuesto de u por v.Introducci´n a o 6. Calcula la norma de u.lenguajes avanzadosde computaci´n o 7. Calcula el seno de cada componente de u.t´cnica e 8. Divide cada componente de u por la correspondiente de v.Introducci´n al olenguaje 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 elementosVectores de ´ ındice impar de v. ¿Es siempre posible?Vectores IIVectores III 11. Toma los elementos 1, 5 y 4 de u y s´male los tres ultimos u ´Vectores IV valores de v. Guarda el resultado en las posiciones dadasMatricesMatrices II para u.Matrices IIIOtros datosEstructuras y celdasC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatos 23 / 66Aplicaciones al
  24. 24. Matrices´Indice deldocumento Matrices dadas manualmente, se introducen por filas:Introducci´n a o >> M=[1 2 5; 2 -1 6; 3 0 -1] %en filas, usamos " " ´ "," olenguajes avanzadosde computaci´n o Matrices con una ley de formaci´n: ot´cnica e >> A=ones(2,3) %matriz 2 x 3 de unosIntroducci´n al olenguaje Octave >> B=zeros(4) %matriz 4 x 4 de cerosMatrices y arrays. >> C=eye(4,5) %matriz identidad 4 x 5Estructuras de datosVectores >> C=rand(2) %matriz aleatoria 2 x 2, 0<=C<=1Vectores IIVectores III Como en vectores, se distingue entre operaciones matricialesVectores IV (* / ∧ ) y elementales (.* ./ .∧ ).MatricesMatrices II Las funciones intr´ ınsecas tambi´n son elementales. eMatrices III Algunas funciones espec´ ıficas para matrices: ’, size, det,Otros datosEstructuras y celdas rank, inv, eig, . . .C´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatos 24 / 66Aplicaciones al
  25. 25. Matrices II´Indice deldocumento Resoluci´n del sistema lineal Ax = b: oIntroducci´n a o >> x=Ablenguajes avanzadosde computaci´n o Si es SCD, devuelve la unica soluci´n del sistema. ´ ot´cnica e En otro caso, devuelve la soluci´n por m´ o ınimos cuadrados.Introducci´n al olenguaje Octave (Ver tambi´n chol, lu, . . . ) eMatrices y arrays.Estructuras de datos Extracci´n de componentes: oVectores >> M(2,3) %devuelve la componente (2,3)Vectores IIVectores III >> M(:,3) %devuelve la 3a columnaVectores IV >> M(2,:) %devuelve la 2a filaMatricesMatrices II >> M([1 5 3],1:2) %matriz orlada 3 x 2Matrices III >> triu(M), tril(M), diag(M) %triangular sup., inf. y diagonalOtros datosEstructuras y celdas >> I=diag(diag(M)) %matriz diagonal, con diag(I)=diag(M)C´lculo simb´lico a o Yuxtaposici´n de matrices: oVisualizaci´n gr´fica o a >> A=[1 2; 5 -2]; B=[-10 30; A] %a~adimos filas nFicheros en Octave >> C=[eye(2) zeros(2,2); zeros(2,2) A] %diagonal por bloquesDesarrollo dealgoritmosImportaci´n de odatos 25 / 66Aplicaciones al
  26. 26. Matrices III´Indice deldocumento Ejercicios 3Introducci´n a olenguajes avanzados 1. Crea dos matrices cuadradas, A y B, del mismo tama˜o.nde computaci´nt´cnica e o 2. Muestra su n´mero de filas y columnas. uIntroducci´n al o 3. S´malas, multipl´ u ıcalas 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.VectoresVectores II 6. Resuelve el sistema Ax=[1;1;...;1].Vectores III 7. Extrae los elementos intersecci´n de las dos primeras filas y oVectores IVMatrices columnas de A. ´Idem de las dos ultimas filas y columnas de ´Matrices IIMatrices III B.Otros datos 8. Crea una matriz diagonal por bloques, que tenga en laEstructuras y celdas diagonal las dos matrices anteriores.C´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatos 26 / 66Aplicaciones al
  27. 27. Otros datos´Indice deldocumento Complejos: 1+3*i ´ 1+3i, funciones como real, imag, oIntroducci´n a o conj, isreal, angle, abs, . . .lenguajes avanzadosde computaci´n o Cadenas: a= ’$de 5&’, b =’don’’t’t´cnica eIntroducci´n al o • Concatenaci´n: c = [’sdf’ ’asd’] olenguaje Octave • Conversi´n de numeros a cadenas: num2str(2) oMatrices y arrays.Estructuras de datos • Impresi´n del valor de una variable: disp(variable) oVectoresVectores II >> a=25; disp([’El resultado es’ num2str(a) ’ grados’])Vectores IIIVectores IV L´gicos: entero no nulo (1) es verdadero, 0 es falso oMatricesMatrices II • Operadores relacionales: < > <= >= == ~=Matrices IIIOtros datos • Operadores logicos: & | ~ xor any allEstructuras y celdasC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatos 27 / 66Aplicaciones al
  28. 28. Estructuras y celdas´Indice deldocumento Estructuras: agrupaci´n de datos con nombre oIntroducci´n a o >> circulo.centro=[0 1]lenguajes avanzadosde computaci´n o >> circulo.radio=4t´cnica e Celdas: agrupaci´n de datos numerados oIntroducci´n al olenguaje Octave >> dato{1} = 23Matrices y arrays. >> dato{2} = [2 8]Estructuras de datosVectores >> dato{3} = [0 9; 5 7]Vectores IIVectores III Ciertos comandos devuelven celdas:Vectores IVMatrices >> symbols; x=sym(’x’); y=sym(’y’);Matrices II >> S=symlsolve({x+y-3,x-y+5},{x,y})Matrices IIIOtros datos S tiene dos elementos: S{1} y S{2}.Estructuras y celdasC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatos 28 / 66Aplicaciones al
  29. 29. ´Indice deldocumentoIntroducci´n a olenguajes avanzadosde computaci´n ot´cnica eIntroducci´n al olenguaje OctaveMatrices y arrays.Estructuras de datosC´lculo a simb´lico o C´lculo simb´lico a oC´lculo a simb´lico oC´lculo a simb´lico II oC´lculo a simb´lico III oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 29 / 66
  30. 30. C´lculo simb´lico a o´Indice deldocumento Precisa del paquete symbolic de Octave-Forge.Introducci´n a o El c´lculo simb´lico se carga con symbols a olenguajes avanzadosde computaci´n o Las variables simb´licas deben declararse: ot´cnica e >> x = sym(’x’)Introducci´n al olenguaje Octave Toda expresi´n que las involucre ser´ simb´lica: o a oMatrices y arrays. >> f = x^2 %f es una expresi´n simb´lica o oEstructuras de datosC´lculo a simb´lico o La asignaci´n las convierte en num´ricas: o eC´lculo a simb´lico o >> x = 5 %x ha dejado de ser simb´lica oC´lculo a simb´lico II oC´lculo a simb´lico III o En simb´lico, las funciones intr´ o ınsecas cambian de nombre:Visualizaci´n gr´fica o a >> 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 dealgoritmos collect, recolecta los t´rminos como polinomio: eImportaci´n de o >> f = 2*x+x+3; collect(f,x)datosAplicaciones al splot, pinta una funci´n simb´lica: o oc´lculo num´rico a e >> i = Exp(x); splot(i,x,[-1 1]) 30 / 66
  31. 31. C´lculo simb´lico II a o´Indice deldocumento subs, eval´a una expresi´n: u oIntroducci´n a o >> g = Cos(x); p = subs(g,x,1.3)lenguajes avanzadosde computaci´n o to_double, convierte un valor simb´lico a num´rico: o et´cnica e >> to_double(p) %p es el resultado anteriorIntroducci´n al olenguaje Octave differentiate, calcula la derivada:Matrices y arrays. >> f = x^2; differentiate(f,x,2) %derivada segundaEstructuras de datosC´lculo a simb´lico o symlsolve, resuelve ecuaciones lineales:C´lculo a simb´lico o >> y=sym(’y’); symlsolve({x+y-2,x-y-1},{x,y})C´lculo a simb´lico II oC´lculo a simb´lico III o symfsolve, resuelve ecuaciones no lineales:Visualizaci´n gr´fica o a >> f = x^2+3*x-1; g= x*y-y^2+3; symfsolve(f,g,[1,5])Ficheros en Octave No esta implementado el c´lculo simb´lico de l´ a o ımites,Desarrollo dealgoritmos integraci´n, ecuaciones diferenciales, gr´ficas de funciones de o aImportaci´n de o dos variables. . . (oct 2010)datosAplicaciones alc´lculo num´rico a e 31 / 66
  32. 32. C´lculo simb´lico III a o´Indice deldocumento Ejercicios 4Introducci´n a olenguajes avanzados 1. Crea una expresi´n simb´lica de una variable. o ode computaci´nt´cnica e o 3. Muestra su gr´fica en diferentes dominios. aIntroducci´n al o 5. Eval´ala en distintos puntos. ulenguaje Octave 4. Calcula su derivada.Matrices y arrays.Estructuras de datos 6. Resuelve un sistema lineal, y otro no lineal, de 2 ecuacionesC´lculo a simb´lico o y dos inc´gnitas. oC´lculo a simb´lico oC´lculo a simb´lico II oC´lculo a simb´lico III oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 32 / 66
  33. 33. ´Indice deldocumentoIntroducci´n a olenguajes avanzadosde computaci´n ot´cnica eIntroducci´n al olenguaje OctaveMatrices y arrays.Estructuras de datosC´lculo simb´lico a o Visualizaci´n gr´fica o aVisualizaci´n gr´fica o aGr´ficos num´ricos a eGr´ficos num´ricos II a eGr´ficos num´ricos a eIIIFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 33 / 66
  34. 34. Gr´ficos num´ricos a e´Indice deldocumento plot, gr´ficas de funciones de una variable: aIntroducci´n a o >> x = 0:0.5:5; plot(x, sin(x)) %cambiar 0.5 a 0.1lenguajes avanzadosde computaci´n o Varios gr´ficos en la misma ventana: at´cnica e >> hold on; plot(x, cos(x))Introducci´n al olenguaje Octave >> hold off; plot(x, sin(2*x), x, cos(3*x))Matrices y arrays.Estructuras de datos Opciones de plot, colores, l´ ıneas y marcas:C´lculo simb´lico a o >> plot(x, sin(x), ’r*’, x, cos(x), ’-.g’)Visualizaci´n gr´fica o a Informaci´n adicional: oGr´ficos num´ricos a e >> title(’Dos curvas’) %tituloGr´ficos num´ricos II a eGr´ficos num´ricos a e >> xlabel(’Abscisas’); ylabel(’Ordenadas’) %texto en ejesIII >> legend(’Curva 1’,’Curva 2’) %leyendaFicheros en OctaveDesarrollo de >> axis([-1 11 -1.5 1.5]) %escalaalgoritmos figure, crea una nueva ventana de gr´ficos. aImportaci´n de odatos line, crea lineas personalizadas.Aplicaciones alc´lculo num´rico a e >> line(x,cos(x), ’linewidth’, 4) 34 / 66
  35. 35. Gr´ficos num´ricos II a e´Indice deldocumento Curvas en el plano y el espacio:Introducci´n a o >> t=0:0.1:2*pi; plot(exp(-t).*cos(2*t), exp(-t).*sin(2*t))lenguajes avanzadosde computaci´n o >> plot3(cos(t),t.*sin(t),sqrt(t))t´cnica e (Obs´rvese el uso de .*) eIntroducci´n al olenguaje Octave Escala logar´ ıtmica, semilogx, semilogy, loglog:Matrices y arrays. >> x = 0:0.1:5; semilogy(x, exp(-x))Estructuras de datosC´lculo simb´lico a o Coordenadas polares, polar:Visualizaci´n gr´fica o a >> t = 0:.01:2*pi; polar(t,sin(2*t).*cos(2*t))Gr´ficos num´ricos a e An´lisis estad´ a ıstico:Gr´ficos num´ricos II a eGr´ficos num´ricos a e >> errorbar(x,sin(x),rand(size(x)))III >> hist([2,3,3,4,4.5])Ficheros en OctaveDesarrollo de Gr´ficas de funciones de dos variables: aalgoritmos >> [x,y]=meshgrid(-2:.2:2, -2:.2:2);Importaci´n de odatos >> surf(x, y, x.*exp(-x.^2-y.^2))Aplicaciones alc´lculo num´rico a e >> contour(x, y, x.*exp(-x.^2-y.^2)) 35 / 66
  36. 36. Gr´ficos num´ricos III a e´Indice deldocumento Subgr´ficos: aIntroducci´n a o >> x = -2:0.1:2;lenguajes avanzadosde computaci´n o >> subplot(1,2,1); plot(x,sin(x),’r’); title(’Primer gr´fico’) at´cnica e >> subplot(1,2,2); plot(x,cos(x),’r’); title(’Segundo gr´fico’) aIntroducci´n al olenguaje Octave print, impresi´n de la ventana de gr´ficos activa: o aMatrices y arrays. >> print -dpng ’grafica.png’Estructuras de datosC´lculo simb´lico a o Ejercicios 5Visualizaci´n gr´fica o aGr´ficos num´ricos a e 1. Crea una ventana con dos gr´ficos. A˜ade informaci´n a n oGr´ficos num´ricos II a eGr´ficos num´ricos a e adicional.IIIFicheros en Octave 2. Crea un gr´fico de contorno para una funci´n de dos a oDesarrollo de variables en una ventana aparte.algoritmos 3. Salva el gr´fico en un fichero. aImportaci´n de odatosAplicaciones alc´lculo num´rico a e 36 / 66
  37. 37. ´Indice deldocumentoIntroducci´n a olenguajes avanzadosde computaci´n ot´cnica eIntroducci´n al olenguaje OctaveMatrices y arrays.Estructuras de datosC´lculo simb´lico a o Ficheros en OctaveVisualizaci´n gr´fica o aFicheros en OctaveScriptsFichero funci´n oFichero funci´n II oFichero funci´n III oFunci´n autom´tica o aFunci´n autom´tica o aIIDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 37 / 66
  38. 38. Scripts´Indice deldocumento Es un fichero con una secuencia de comandos.Introducci´n a o Lleva extensi´n .m olenguajes avanzadosde computaci´n o Para que Octave lo encuentre, su carpeta debet´cnica eIntroducci´n al o a) ser la carpeta por defecto olenguaje Octave b) a˜adirse a las rutas de b´squeda con addpath. n uMatrices y arrays.Estructuras de datos Para ejecutarlo, escribir el nombre sin extensi´n en la oC´lculo simb´lico a o Terminal.Visualizaci´n gr´fica o aFicheros en Octave Ejemplo: script grado2.m, para resolver 3x2 + 5x + 2 = 0.Scripts a=3; b=5; c=2;Fichero funci´n oFichero funci´n II o D=b^2-4*a*c;Fichero funci´n III o x(1)=(-b+sqrt(D))/(2*a);Funci´n autom´tica o aFunci´n autom´tica o a x(2)=(-b-sqrt(D))/(2*a);IIDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 38 / 66
  39. 39. Fichero funci´n o´Indice deldocumento ¡Los script usan la Variables’ List para sus variables!Introducci´n a o Los ficheros de funci´n son scripts con su propio espacio de olenguajes avanzadosde computaci´n o variables.t´cnica e La primera l´ınea de un fichero de funci´n es del tipo: oIntroducci´n al olenguaje OctaveMatrices y arrays. function [y1, y2,...] = nombre(x1, x2,...)Estructuras de datos El nombre debe coincidir con el nombre del fichero.C´lculo simb´lico a o Las variables de entrada x1, x2,... se pasan por copia.Visualizaci´n gr´fica o a La Variables’ List solo recibe las variables de salida y1, y2,...Ficheros en OctaveScripts El valor de una variable de entrada solo se modifica siFichero funci´n o tambi´n es de salida. eFichero funci´n II oFichero funci´n III oFunci´n autom´tica o aFunci´n autom´tica o aIIDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 39 / 66
  40. 40. Fichero funci´n II o´Indice deldocumento Ejemplo: fichero funci´n fgrado2.m. oIntroducci´n a o function x=fgrado2(a,b,c)lenguajes avanzadosde computaci´n o D=b^2-4*a*c;t´cnica e x(1)=(-b+sqrt(D))/(2*a);Introducci´n al olenguaje Octave x(2)=(-b-sqrt(D))/(2*a);Matrices y arrays.Estructuras de datosC´lculo simb´lico a o Para ejecutarlo, hay que indicar los valores de entrada:Visualizaci´n gr´fica o a >> fgrado2(3,5,2)Ficheros en Octave Podemos usarlo f´cilmente para resolver otros polinomios. aScriptsFichero funci´n oFichero funci´n II oFichero funci´n III oFunci´n autom´tica o aFunci´n autom´tica o aIIDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 40 / 66
  41. 41. Fichero funci´n III o´Indice deldocumento Para usar un fichero funci´n como argumento, hay que poner oIntroducci´n a o “@” antes del nombre. Consideremos la funci´n: olenguajes avanzadosde computaci´n o function y=int_def(f,a,b)t´cnica e %integral definida de f entre a y b (trapecios)Introducci´n al olenguaje Octave t=linspace(a,b,100);Matrices y arrays.Estructuras de datos y = trapz(t, f(t));C´lculo simb´lico a oVisualizaci´n gr´fica o a La funci´n sin de Octave es un fichero funci´n: o oFicheros en Octave >> int_def(@sin, 0, 1)ScriptsFichero funci´n oFichero funci´n II oFichero funci´n III oFunci´n autom´tica o aFunci´n autom´tica o aIIDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 41 / 66
  42. 42. Funci´n autom´tica o a´Indice deldocumento Se define en una l´ınea: >> f = @(x,y) x.^2 + y.^2Introducci´n a o Escritas en la Terminal, no se conservan al cerrar la sesi´n. olenguajes avanzadosde computaci´n o Se podr´ usar para las funciones anteriores. . . ıant´cnica e >> g2=@(a,b,c) [(-b+sqrt(b^2-4*a*c))/(2*a) ...Introducci´n al olenguaje Octave (-b-sqrt(b^2-4*a*c))/(2*a)]Matrices y arrays. >> id = @(f,a,b) trapz(linspace(a,b,100),...Estructuras de datosC´lculo simb´lico a o f(linspace(a,b,100)))Visualizaci´n gr´fica o a . . . pero se usan, generalmente, para funciones sencillas.Ficheros en Octave Ojo, debemos evitar tener en la carpeta de trabajo ficheroScriptsFichero funci´n o funci´n con el mismo nombre que funciones autom´ticas. o aFichero funci´n II oFichero funci´n III oFunci´n autom´tica o aFunci´n autom´tica o aIIDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 42 / 66
  43. 43. Funci´n autom´tica II o a´Indice deldocumento Para usar una funci´n autom´tica como argumento, no hay o aIntroducci´n a o que poner “@”:lenguajes avanzadosde computaci´n o >> f = @(x) sin(x); int_def(f, 0, 1)t´cnica eIntroducci´n al olenguaje Octave Ejercicios 6Matrices y arrays.Estructuras de datos 1. Crea un fichero funci´n para resolver ecuaciones del tipo oC´lculo simb´lico a o ae−x + b = 0Visualizaci´n gr´fica o a 2. Crea una funci´n autom´tica para f (x) = x3 atan( 1+x ). o a x2Ficheros en Octave 3. Dibuja la gr´fica de f entre -1 y 1 aScriptsFichero funci´n o 4. Calcula con int def.m su integral definida en [−1, 1].Fichero funci´n II oFichero funci´n III oFunci´n autom´tica o aFunci´n autom´tica o aIIDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a e 43 / 66
  44. 44. ´Indice deldocumentoIntroducci´n a olenguajes avanzadosde computaci´n ot´cnica eIntroducci´n al olenguaje OctaveMatrices y arrays.Estructuras de datosC´lculo simb´lico a o Desarrollo de algoritmosVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosAlgoritmosBucle forBucle whileEstructura ifEstructura if IIEstructura if IIIOtros comandosOtros comandos IIOtros comandos IIIDepuraci´n oImportaci´n de odatos 44 / 66
  45. 45. Algoritmos´Indice deldocumento Un programa no suele tener una unica l´ ´ ınea de flujo.Introducci´n a o Las estructuras de control de flujo pueden serlenguajes avanzadosde computaci´nt´cnica e o • repetitivas, permiten la repetici´n de comandos: for y oIntroducci´n al o while;lenguaje Octave • alternativas, permiten decidir seg´n una condici´n: if y u oMatrices y arrays.Estructuras de datos switch (que no veremos);C´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosAlgoritmosBucle forBucle whileEstructura ifEstructura if IIEstructura if IIIOtros comandosOtros comandos IIOtros comandos IIIDepuraci´n oImportaci´n de odatos 45 / 66
  46. 46. Bucle for´Indice del for i=vdocumentoIntroducci´n a o comandos (que dependen de i)lenguajes avanzadosde computaci´n o endt´cnica eIntroducci´n al o v es un vector; en la iteraci´n j, i toma el valor de v(j). olenguaje Octave Los bucles pueden anidarse. Se recomienda “indentar” losMatrices y arrays.Estructuras de datos comandos para facilitar la lectura.C´lculo simb´lico a o Cuando sea posible, se recomienda usar operacionesVisualizaci´n gr´fica o a vectoriales en vez de bucles.Ficheros en Octave Ejemplo: c´lculo del n! aDesarrollo dealgoritmos fac = 1;Algoritmos for i=2:nBucle forBucle while fac = fac*i;Estructura ifEstructura if II endEstructura if IIIOtros comandosOtros comandos IIOtros comandos IIIDepuraci´n oImportaci´n de odatos 46 / 66
  47. 47. Bucle while´Indice deldocumento while condici´n oIntroducci´n a o comandoslenguajes avanzadosde computaci´n o endt´cnica eIntroducci´n al o condici´n es una relaci´n l´gica. o o olenguaje Octave while se suele usar cuando no es sencillo calcular el n´mero uMatrices y arrays.Estructuras de datos de iteraciones. 1C´lculo simb´lico a o Ejemplo: c´lculo de ∞ n4 a n=1Visualizaci´n gr´fica o a n = 1; sum = 0;Ficheros en Octave while 1/n^4 > epsDesarrollo dealgoritmos sum = sum + 1/n^4;Algoritmos n = n+1;Bucle forBucle while endEstructura ifEstructura if IIEstructura if IIIOtros comandosOtros comandos IIOtros comandos IIIDepuraci´n oImportaci´n de odatos 47 / 66
  48. 48. Estructura if´Indice deldocumento if condici´n 1 oIntroducci´n a o comandos 1lenguajes avanzadosde computaci´n o [ elseif condici´n 2 ot´cnica e comandos 2 ]Introducci´n al olenguaje Octave [ elseif . . . ]Matrices y arrays.Estructuras de datos [ elseC´lculo simb´lico a o comandos n ]Visualizaci´n gr´fica o a endFicheros en Octave Si condici´n 1 es cierta, se ejecutan comandos 1. oDesarrollo dealgoritmos Si no y condici´n 2 es cierta, se ejecutan comandos 2. oAlgoritmosBucle for Si ninguna condici´n es cierta, se ejecuta comandos n. oBucle whileEstructura ifEstructura if IIEstructura if IIIOtros comandosOtros comandos IIOtros comandos IIIDepuraci´n oImportaci´n de odatos 48 / 66
  49. 49. Estructura if II´Indice deldocumento Ejemplo: funci´n definida a trozos  oIntroducci´n a o  x − 1,  x ≤ −2,lenguajes avanzados 1 − x2 , −2 < x < 0, de computaci´n ot´cnica e f (x) =  − 1 , x ≥ 0. Introducci´n al o lenguaje Octave x+1Matrices y arrays.Estructuras de datos function y=f(x)C´lculo simb´lico a o if x<=-2Visualizaci´n gr´fica o a y=x-1;Ficheros en Octave elseif x<0Desarrollo dealgoritmos y=1-x^2;AlgoritmosBucle for elseBucle while y=-1/(x+1);Estructura ifEstructura if II endEstructura if IIIOtros comandosOtros comandos IIOtros comandos IIIDepuraci´n oImportaci´n de odatos 49 / 66
  50. 50. Estructura if III´Indice deldocumento Para conseguir que f admita argumentos vectoriales, esIntroducci´n a o necesario usar un bucle (no basta con usar operacioneslenguajes avanzadosde computaci´n o elementales, puesto que if no es elemental):t´cnica e function y=f(x)Introducci´n al olenguaje Octave for i=1:length(x)Matrices y arrays.Estructuras de datos if x(i)<=-2C´lculo simb´lico a o y(i)=x(i)-1;Visualizaci´n gr´fica o a elseif x(i)<0Ficheros en Octave y(i)=1-x(i)^2;Desarrollo dealgoritmos elseAlgoritmos y(i)=-1/(x(i)+1);Bucle forBucle while endEstructura if endEstructura if IIEstructura if IIIOtros comandos Ahora la gr´fica de f se obtiene con: aOtros comandos IIOtros comandos III >> x=-3:0.1:3; plot(x,f(x))Depuraci´n oImportaci´n de odatos 50 / 66
  51. 51. Otros comandos´Indice deldocumento break, interrumpe la ejecuci´n del bucle m´s interno. o aIntroducci´n a o %busqueda de la posicion del ´ltimo elemento negativo ulenguajes avanzadosde computaci´n o for i=length(x):-1:1t´cnica e if x(i)<0Introducci´n al olenguaje Octave breakMatrices y arrays. endEstructuras de datosC´lculo simb´lico a o endVisualizaci´n gr´fica o a disp([’La posici´n buscada es’ num2str(i)]) oFicheros en Octave return, interrumpe la ejecuci´n de una funci´n y devuelve el o oDesarrollo dealgoritmos control a quien la haya llamado (otra funci´n o el propio oAlgoritmos Octave).Bucle forBucle while if x<=0Estructura if disp(’log(x) no es real!’)Estructura if IIEstructura if III return %la funci´n se interrumpe, el programa contin´a o uOtros comandos endOtros comandos IIOtros comandos IIIDepuraci´n oImportaci´n de odatos 51 / 66
  52. 52. Otros comandos II´Indice deldocumento error, interrumpe completamente la ejecuci´n del programa. oIntroducci´n a o if x<=0lenguajes avanzadosde computaci´n o error(’Error fatal: log(x) no es real!’)t´cnica e endIntroducci´n al olenguaje Octave input, permite introducir datos por teclado.Matrices y arrays. >> x=input(’Introduzca un n´mero: ’) uEstructuras de datosC´lculo simb´lico a oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosAlgoritmosBucle forBucle whileEstructura ifEstructura if IIEstructura if IIIOtros comandosOtros comandos IIOtros comandos IIIDepuraci´n oImportaci´n de odatos 52 / 66
  53. 53. Otros comandos III´Indice deldocumento Ejercicios 7Introducci´n a olenguajes avanzados 1. Calcula la suma de las componentes de un vector;de computaci´nt´cnica e o comp´ralo con el resultado de sum. a x como la suma infinita ∞ xnIntroducci´n al o 2. Calcula e n=0 n! .lenguaje Octave 3. Construye una funci´n que eval´e f , definida por o uMatrices y arrays.Estructuras de datos 2 sen2 (2x), x ≤ 0,C´lculo simb´lico a o f (x) = 1 − e−x , x > 0.Visualizaci´n gr´fica o aFicheros en Octave Dibuja su gr´fica. aDesarrollo de 4. Escribe una funci´n que solicite al usuario en un bucle, oalgoritmosAlgoritmos n´meros por teclado. Si el n´mero es positivo, debe escribir u uBucle for su logaritmo; si es negativo, debe salir del bucle e informarBucle whileEstructura if de que no puede calcular dicho logaritmo.Estructura if IIEstructura if IIIOtros comandosOtros comandos IIOtros comandos IIIDepuraci´n oImportaci´n de odatos 53 / 66
  54. 54. Depuraci´n o´Indice deldocumento Para iniciar la depuraci´n en avisos y errores: oIntroducci´n a o debug_on_warning(1); debug_on_error(1);lenguajes avanzadosde computaci´n o Para gestionar puntos de interrupci´n: ot´cnica e dbstop(’nombre_funcion’,15) %parada en la l´nea 15 ıIntroducci´n al olenguaje Octave dbstatus %muestra paradas establecidasMatrices y arrays. dbclear(’nombre_funcion’,15) %eliminaci´n de la parada oEstructuras de datosC´lculo simb´lico a o Para mostrar el fichero: dbtypeVisualizaci´n gr´fica o a Para saber d´nde estamos parados: dbwhere oFicheros en Octave Ir a la siguiente l´ ınea: dbnextDesarrollo dealgoritmos Profundizar en las llamadas a funciones: dbstepAlgoritmos Continuar la ejecuci´n: dbcont oBucle forBucle while Cuando la ejecuci´n est´ parada, se pueden ejecutar otros o aEstructura ifEstructura if II comandos (ver valor de variables,. . . )Estructura if IIIOtros comandosOtros comandos IIOtros comandos IIIDepuraci´n oImportaci´n de odatos 54 / 66
  55. 55. ´Indice deldocumentoIntroducci´n a olenguajes avanzadosde computaci´n ot´cnica eIntroducci´n al olenguaje OctaveMatrices y arrays.Estructuras de datosC´lculo simb´lico a o Importaci´n de datos oVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatosDatosDatos IIDatos IIIDatos IVAplicaciones alc´lculo num´rico a e 55 / 66
  56. 56. Datos´Indice deldocumento save, salvado de variables (fichero binario con compresi´n): oIntroducci´n a o >> save fichero [variables]lenguajes avanzadosde computaci´n o load, carga de variables:t´cnica e >> load fichero [variables]Introducci´n al olenguaje Octave fopen, apertura de ficheros:Matrices y arrays.Estructuras de datos fid=fopen(’fichero’,’permiso’)C´lculo simb´lico a o Los permisos pueden ser:Visualizaci´n gr´fica o a • r, lectura de ficheros existentes.Ficheros en Octave • w, escritura de ficheros; si existe, se borra.Desarrollo dealgoritmos • a, escritura de ficheros; ; si existe, se a˜ade. nImportaci´n dedatos o • A˜adiendo + se permite la operaci´n contraria. n oDatosDatos II fclose, cierre de ficheros:Datos III fclose(fid)Datos IVAplicaciones alc´lculo num´rico a e Lectura / escritura con formato binario: fread y fclose. 56 / 66
  57. 57. Datos II´Indice deldocumento Lectura con formato ascii:Introducci´n a o A=fscanf(fid, ’formato’[, sizeA])lenguajes avanzadosde computaci´nt´cnica e o Lee datos del fichero con identificador fid y los guarda en A.Introducci´n al o sizeA puede ser un natural o un array [m,n]; si est´ presente, alenguaje Octave lee sizeA elementos.Matrices y arrays.Estructuras de datos formato es una cadena que describe los elementos a leer:C´lculo simb´lico a oVisualizaci´n gr´fica o a • %d: entero;Ficheros en Octave • %f: realDesarrollo de • %s: cadenaalgoritmosImportaci´n de o textscan, util si texto y n´meros est´n mezclados. ´ u adatosDatos Escritura con formato ascii:Datos IIDatos III fprintf(fid, ’formato’, A,. . . )Datos IVAplicaciones al Escribe las variables A,. . . en el fichero con identificador fid.c´lculo num´rico a e formato puede contener descriptores como n (nueva l´ ınea). 57 / 66
  58. 58. Datos III´Indice deldocumento Ejemplo de escritura:Introducci´n a o fid = fopen(’datos.txt’,’w’);lenguajes avanzadosde computaci´n o fprintf(fid,’%f %f ’, [1:2; 3:4]); %por columnast´cnica e fprintf(fid,’%s %d %f %d %d’,’asd’, 1, pi, [2;3]);Introducci´n al olenguaje Octave fclose(fid);Matrices y arrays.Estructuras de datosC´lculo simb´lico a o El contenido de datos.txt es:Visualizaci´n gr´fica o a 1.000000 3.000000 2.000000 4.000000 asd 1 3.141593 2 3Ficheros en OctaveDesarrollo dealgoritmosImportaci´n de odatosDatosDatos IIDatos IIIDatos IVAplicaciones alc´lculo num´rico a e 58 / 66
  59. 59. Datos IV´Indice deldocumento Ejemplo de lectura:Introducci´n a o fid = fopen(’datos.txt’,’r’);lenguajes avanzadosde computaci´n o A=fscanf(fid,’%f’, [2 2]); %lee una matriz 2 x 2t´cnica e S=fscanf(fid,’%s’,1); %lee una cadenaIntroducci´n al olenguaje Octave V=fscanf(fid,’%f’); %lee reales hasta EOFMatrices y arrays.Estructuras de datos fclose(fid);C´lculo simb´lico a oVisualizaci´n gr´fica o a El resultado es:Ficheros en Octave A = 1 2Desarrollo dealgoritmos 3 4Importaci´n de o S = asddatosDatos V = 1.0000Datos II 3.1416Datos IIIDatos IV 2.0000Aplicaciones alc´lculo num´rico a e 3.0000 59 / 66
  60. 60. ´Indice deldocumentoIntroducci´n a olenguajes avanzadosde computaci´n ot´cnica eIntroducci´n al olenguaje OctaveMatrices y arrays.Estructuras de datosC´lculo simb´lico a o Aplicaciones al c´lculo num´rico a eVisualizaci´n gr´fica o aFicheros en OctaveDesarrollo dealgoritmosImportaci´n de odatosAplicaciones alc´lculo num´rico a eInterpolaci´n y oajusteResoluci´n de oecuacionesResoluci´n simb´lica o ode ecuacionesOptimizaci´noIntegraci´n oEcuaciones 60 / 66diferenciales
  61. 61. Interpolaci´n y ajuste o´Indice deldocumento polyfit, interpolaci´n polinomial: oIntroducci´n a o >> x=[-5:5]; f=@(x)1./(1+x.^2); %(x,f(x)), 11 nodos de interp.lenguajes avanzadosde computaci´n o >> c=polyfit(x,f(x),10) %c, coeficientes del polinomiot´cnica e >> xx=-5:0.1:5; %xx, vector de abscisas para la gr´fica aIntroducci´n al olenguaje Octave >> plot(x,f(x),’*’, xx,f(xx), xx, polyval(c,xx)) %gr´fico aMatrices y arrays. >> legend(’nodos’, ’funci´n’, ’polinomio de interpolaci´n’) o oEstructuras de datosC´lculo simb´lico a o interp1, interpolaci´n con rectas a trozos: oVisualizaci´n gr´fica o a >> plot(xx,f(xx), xx,interp1(x,f(x),xx,’linear’))Ficheros en OctaveDesarrollo de interp1, interpolaci´n con splines: oalgoritmos >> plot(xx,f(xx), xx,interp1(x,f(x),xx,’spline’))Importaci´n de odatosAplicaciones al polyfit, ajuste polinomial:c´lculo num´rico a e >> c=polyfit(x,f(x),2) %grado < num. nodos +1Interpolaci´n y oajuste >> plot(x,f(x),’*’, xx, polyval(c,xx)) %gr´fico aResoluci´n de oecuacionesResoluci´n simb´lica o ode ecuacionesOptimizaci´noIntegraci´n oEcuaciones 61 / 66diferenciales
  62. 62. Resoluci´n de ecuaciones o´Indice deldocumento Resoluci´n del sistema lineal Ax = b: oIntroducci´n a o >> x=Ablenguajes avanzadosde computaci´n o Si es SCD, devuelve la unica soluci´n del sistema. ´ ot´cnica e En otro caso, devuelve la soluci´n por m´ o ınimos cuadrados.Introducci´n al olenguaje Octave fzero, resoluci´n de ecuaciones no lineales: oMatrices y arrays. >> f=@cos(x)-x; fzero(f,0)Estructuras de datosC´lculo simb´lico a o fsolve, resoluci´n de sistemas no lineales: oVisualizaci´n gr´fica o a >> fsolve(@f,[0 0])Ficheros en Octave Se ha creado, previamente, el fichero funci´n: oDesarrollo dealgoritmos function y = f(x)Importaci´n de o y(1)=x(1)^2+3*x(1)-1;datosAplicaciones al y(2)=x(1)*x(2)-x(2)^2+3;c´lculo num´rico a eInterpolaci´n y oajusteResoluci´n de oecuacionesResoluci´n simb´lica o ode ecuacionesOptimizaci´noIntegraci´n oEcuaciones 62 / 66diferenciales
  63. 63. Resoluci´n simb´lica de ecuaciones o o´Indice deldocumento symlsolve, resoluci´n de ecuaciones lineales: oIntroducci´n a o >> symbols; x=sym(’x’); y=sym(’y’);lenguajes avanzadosde computaci´n o >> S=symlsolve({x+y-3,x-y+5},{x,y})t´cnica eIntroducci´n al o S tiene dos elementos: S{1} y S{2}.lenguaje Octave symfsolve, resoluci´n de ecuaciones no lineales usando oMatrices y arrays.Estructuras de datos fsolve():C´lculo simb´lico a o >> symbols; x=sym(’x’); y=sym(’y’);Visualizaci´n gr´fica o a >> 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 0Desarrollo dealgoritmos >> a = symfsolve(f,g,x,1,y,5); %valores iniciales, x=1 e y=5Importaci´n de o >> a = symfsolve(f,g,{x==1,y==5}); %´dem ıdatosAplicaciones al >> a = symfsolve(f,g,[1 5]); %´dem ıc´lculo num´rico a eInterpolaci´n y o Si las variables no se especifican en las condiciones iniciales,ajusteResoluci´n de o se toman alfab´ticamente. eecuacionesResoluci´n simb´lica o ode ecuacionesOptimizaci´noIntegraci´n oEcuaciones 63 / 66diferenciales
  64. 64. Optimizaci´n o´Indice deldocumento Precisa del paquete optim de Octave-Forge.Introducci´n a o fminsearch, b´squeda de un m´ u ınimo (Nelder-Meadlenguajes avanzadosde computaci´n o Simplex):t´cnica e >> f=@(x)x^2*cos(x);Introducci´n al olenguaje Octave >> fminsearch(f,2) %parte de x0 = 2Matrices y arrays.Estructuras de datos Se aplica a funciones multidimensionales:C´lculo simb´lico a o >> f = @(x) x(1)^2+x(2)^2; fminsearch(f,[1 1])Visualizaci´n gr´fica o a fminbnd, b´squeda de un m´ u ınimo con restricciones (GoldenFicheros en OctaveDesarrollo de Search):algoritmos >> fminbnd(f,2,4) %en [2, 4]Importaci´n de odatosAplicaciones alc´lculo num´rico a eInterpolaci´n y oajusteResoluci´n de oecuacionesResoluci´n simb´lica o ode ecuacionesOptimizaci´noIntegraci´n oEcuaciones 64 / 66diferenciales
  65. 65. Integraci´n o´Indice deldocumento quad, integraci´n definida: oIntroducci´n a o >> f=@(x) x*sin(x); quad(f,0,3)lenguajes avanzadosde computaci´n o quadl, quadgk y quadv, integraci´n num´rica adaptativa. o et´cnica e trapz, integraci´n definida (regla de trapecios): oIntroducci´n al olenguaje Octave >> x=[0 1 2 3]; y = [0.5 0.85 0.67 0.9];Matrices y arrays. >> trapz(x,y)Estructuras de datosC´lculo simb´lico a o dblquad, integraci´n doble: oVisualizaci´n gr´fica o a >> f=@(x,y) sin(pi.*x.*y).*sqrt(x.*y);Ficheros en Octave >> I=dblquad(f, 0,1, 0,1)Desarrollo dealgoritmos Para integraci´n triple, triplequad. oImportaci´n de odatosAplicaciones alc´lculo num´rico a eInterpolaci´n y oajusteResoluci´n de oecuacionesResoluci´n simb´lica o ode ecuacionesOptimizaci´noIntegraci´n oEcuaciones 65 / 66diferenciales
  66. 66. Ecuaciones diferenciales´Indice deldocumento Consideremos el problema de valor inicial:Introducci´n a o  dx = x2 log(t + 1) − x , lenguajes avanzadosde computaci´n ot´cnica e dt t+1Introducci´n al o x(0) = 1.lenguaje OctaveMatrices y arrays.Estructuras de datos lsode, resoluci´n de una e.d.o.: oC´lculo simb´lico a o >> t = 0:0.1:3;Visualizaci´n gr´fica o a >> x = lsode(f,1,t)Ficheros en Octave >> plot(t,x)Desarrollo dealgoritmos Se ha creado, previamente, el fichero funci´n: oImportaci´n de o function xp=f(x,t)datosAplicaciones al xp=x^2*log(t+1)-x/(t+1);c´lculo num´rico a eInterpolaci´n yajuste o Para sistemas de ecuaciones, hay que usar argumentosResoluci´n de oecuaciones vectoriales en la funci´n f. oResoluci´n simb´lica o ode ecuacionesOptimizaci´noIntegraci´n oEcuaciones 66 / 66diferenciales

×