You are on page 1of 66

Introducci´ on al Octave

Francisco Pena (USC)
29 de diciembre de 2010

1 / 66

´ Indice del documento
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

1. 2. 3. 4. 5. 6. 7. 8. 9.

Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica. Introducci´ on al lenguaje Octave. Matrices y arrays. Estructuras de datos. C´ alculo simb´ olico. Visualizaci´ on gr´ afica. Ficheros en Octave. Desarrollo de algoritmos. Importaci´ on de datos. Aplicaciones al c´ alculo num´ erico.

2 / 66

´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Lenguajes Lenguajes II Lenguajes III Lenguajes IV Lenguajes V Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica

3 / 66

Lenguajes
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Lenguajes Lenguajes II Lenguajes III Lenguajes IV Lenguajes V Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

C´ alculo simb´ olico: se trabaja con constantes y expresiones simb´ olicas. √ • 2, constante simb´ olica que representa la ra´ ız de 2; √ 2 • 2 , constante simb´ olica que representa el numero 2. • •

x2 , expresi´ on simb´ olica que representa la funci´ on matem´ atica f (x) = x2 ; x2 dx, su integral indefinida es otra expresi´ on simb´ olica, x3 3 + C.

Un programa que implementa el c´ alculo simb´ olico suele llamarse “sistema de ´ algebra computacional”. Los m´ as conocidos son Mathematica, Maple y Maxima.

4 / 66

Lenguajes II
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Lenguajes Lenguajes II Lenguajes III Lenguajes IV Lenguajes V Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

A menor escala, Octave tambi´ en puede operar simb´ olicamente. El c´ alculo simb´ olico es u ´til para • • • • • simplificaci´ on de expresiones, x2 + 2x + 1 → (x + 1)2 resoluci´ on exacta de ecuaciones lineales o no lineales, x2 + xy + y = 3 1 1 → , 3 −3 / 2 x2 − 4x + 3 = 0 c´ alculo de l´ ımites, l´ ımx→1 x2 y → y c´ alculo de derivadas, integrales indefinidas d dx sin(x) → cos(x) resoluci´ on exacta de ecuaciones diferenciales.

5 / 66

Lenguajes III
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Lenguajes Lenguajes II Lenguajes III Lenguajes IV Lenguajes V Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

A veces, el c´ alculo simb´ olico no puede ser realizado, por limitaciones del propio sistema o por impedimentos de tipo matem´ atico. C´ alculo num´ erico: se trabaja con n´ umeros representables en un ordenador. √ • √ 2 se almacena como 1.414213562373095; 2 • 2 , es un n´ umero pr´ oximo a 2. • El uso de funciones se limita a c´ alculos que devuelven 1 n´ umeros: 0 x2 dx, es un n´ umero pr´ oximo a 1/3.

6 / 66

Lenguajes IV
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Lenguajes Lenguajes II Lenguajes III Lenguajes IV Lenguajes V Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

Con el c´ alculo num´ erico es posible hallar un resultado aproximado de los problemas anteriores, incluso cuando el c´ alculo simb´ olico falla. Su limitaci´ on reside en que s´ olo obtiene resultados n´ umericos: • • Con c´ alculo num´ erico podemos saber que la derivada de x2 en x=2 es 4; Solo con c´ alculo simb´ olico podremos ver que la derivada en todo punto es 2x.

7 / 66

Lenguajes V
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Lenguajes Lenguajes II Lenguajes III Lenguajes IV Lenguajes V Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

El programa orientado al c´ alculo num´ erico m´ as conocido es Matlab. • • GNU Octave pretende ser un clon de software libre de Matlab. Se diferencia en la interfaz gr´ afica y las toolboxes (por ejemplo, de c´ alculo simb´ olico). Scilab ha sido desarrollado por INRIA. No es totalmente compatible con Matlab, pero se trabaja en un traductor de Matlab a Scilab. R es un lenguaje desarrollado principalmente para an´ alisis estad´ ıstico; Sage es una aplicaci´ on para c´ alculo cient´ ıfico desarrollada a partir de Python.

Otras herramientas de c´ alculo cient´ ıfico son: • •

8 / 66

´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Introducci´ on Introducci´ on II Primeros comandos Variables Variables II Variables III Recuperaci´ on de comandos Expresiones escalares Expresiones escalares II Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos

Introducci´ on al lenguaje Octave

9 / 66

Introducci´ on
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Introducci´ on Introducci´ on II Primeros comandos Variables Variables II Variables III Recuperaci´ on de comandos Expresiones escalares Expresiones escalares II Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos

GNU Octave es un language pensado para el c´ alculo num´ erico (http://www.gnu.org/software/octave/) que posee una interfaz de l´ ınea de comando. Octave-Forge es una comunidad de desarrollo que proporciona paquetes para varios problemas. Los paquetes disponibles se describen en http://octave.sourceforge.net/packages.php. QtOctave es una interfaz gr´ afica para Octave (http://qtoctave.wordpress.com/). Existen instaladores para GNU Linux y Mac OS. El paquete precompilado para Windows est´ a en Octave-Forge (oct. 2010). • • Se recomienda activar los paquetes symbolic y optim. Comprobar bugs como: pkg rebuild -noauto oct2mat

10 / 66

Introducci´ on II
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Introducci´ on Introducci´ on II Primeros comandos Variables Variables II Variables III Recuperaci´ on de comandos Expresiones escalares Expresiones escalares II Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos

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.

11 / 66

Primeros comandos
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Introducci´ on Introducci´ on II Primeros comandos Variables Variables II Variables III Recuperaci´ on de comandos Expresiones escalares Expresiones escalares II Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos

Al ser un lenguaje interpretado, los comandos se ejecutan uno 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 est´ a en
http://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.
12 / 66

Variables
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Introducci´ on Introducci´ on II Primeros comandos Variables Variables II Variables III Recuperaci´ on de comandos Expresiones escalares Expresiones escalares II Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos

Las variables num´ ericas 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 c´ alculo 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

13 / 66

Variables II
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Introducci´ on Introducci´ on II Primeros comandos Variables Variables II Variables III Recuperaci´ on de comandos Expresiones escalares Expresiones escalares II Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos

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

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

Se distingue entre may´ usculas y min´ usculas. 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.

14 / 66

Variables III
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Introducci´ on Introducci´ on II Primeros comandos Variables Variables II Variables III Recuperaci´ on de comandos Expresiones escalares Expresiones escalares II Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos

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 n´ umero imaginario, inf, representa el infinto, ∞, NaN, representa la indeterminaci´ on.

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

15 / 66

Recuperaci´ on de comandos
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Introducci´ on Introducci´ on II Primeros comandos Variables Variables II Variables III Recuperaci´ on de comandos Expresiones escalares Expresiones escalares II Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos

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 ↑ para navegar solo por los comandos que empiezan por esas letras.

Con la tecla “Esc” se borra lo escrito.

16 / 66

Expresiones escalares
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Introducci´ on Introducci´ on II Primeros comandos Variables Variables II Variables III Recuperaci´ on de comandos Expresiones escalares Expresiones escalares II Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos

Las operaciones b´ asicas son + - * / ∧ La prioridad es la misma que en las calculadoras. Se pueden usar par´ entesis para cambiarlas. Ojo, 1/6 no es 1/2*3 sino 1/(2*3). Hay muchas funciones intr´ ınsecas (ver ayuda online): • • • • • • trigonom´ eticas: sin, cos, tan, sec, csc,. . . trigonom´ eticas inversas: asin, acos, . . . logar´ ıtmicas: log, log10, . . . para complejos: imag, real, . . . enteros: floor, round, mod, sign, . . . otras: sqrt, abs, sinh, . . .

17 / 66

Expresiones escalares II
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Introducci´ on Introducci´ on II Primeros comandos Variables Variables II Variables III Recuperaci´ on de comandos Expresiones escalares Expresiones escalares II Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos

Ejercicios 1
1. 2. 3. 4. 5. 6. 7. Inicia el volcado con diary. Calcula eiπ + 1. Calcula 0/0. 2 )| − 6 en dos variables. Guarda | cos(3)2 | − 6 2 y | cos(3 3 3·2 Comprueba que se han guardado en la Variables’ List. Borra las variables. Termina el volcado y comprueba el contenido del fichero.

18 / 66

´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos Vectores Vectores II Vectores III Vectores IV Matrices Matrices II Matrices III Otros datos Estructuras y celdas C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al

Matrices y arrays. Estructuras de datos

19 / 66

Vectores
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos Vectores Vectores II Vectores III Vectores IV Matrices Matrices II Matrices III Otros datos Estructuras y celdas C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al

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 obtiene con [2 1+3] o [2, 1 +3], pero no con [2 1 +3]. Vectores con una ley de formaci´ on:
>> 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

20 / 66

Vectores II
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos Vectores Vectores II Vectores III Vectores IV Matrices Matrices II Matrices III Otros datos Estructuras y celdas C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al

Las operaciones b´ asicas matriciales son + - * /
>> 3*m %fila de 20 treses >> m*n %multiplicaci´ on "fila por columna"

Las operaciones b´ asicas elementales son + - .* ./ .∧
>> m.*m %multiplicaci´ on "elemento a elemento"

Las funciones intr´ ınsecas son elementales. Funciones espec´ ıficas para vectores: • • • • • ’, trasposici´ on, length, numero de componentes, norm, norma, dot, producto escalar, cross, producto cruzado.

21 / 66

Vectores III
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos Vectores Vectores II Vectores III Vectores IV Matrices Matrices II Matrices III Otros datos Estructuras y celdas C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al

Extracci´ on 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 pen´ ultima

Ejercicios 2
1. 2. 3. 4. Crea dos vectores fila, u y v, de la misma dimensi´ on. Muestra su n´ umero de componentes. S´ umalos. Multiplica u por el traspuesto de v.

22 / 66

Vectores IV
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos Vectores Vectores II Vectores III Vectores IV Matrices Matrices II Matrices III Otros datos Estructuras y celdas C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al

Multiplica el traspuesto de u por v. Calcula la norma de u. Calcula el seno de cada componente de u. Divide cada componente de u por la correspondiente de v. Eleva al cubo cada componente de u. 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 s´ umale los tres u ´ltimos valores de v. Guarda el resultado en las posiciones dadas para u.

5. 6. 7. 8. 9. 10.

23 / 66

Matrices
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos Vectores Vectores II Vectores III Vectores IV Matrices Matrices II Matrices III Otros datos Estructuras y celdas C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al

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 formaci´ on:
>> 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 tambi´ en son elementales. Algunas funciones espec´ ıficas para matrices: ’, size, det, rank, inv, eig, . . .

24 / 66

Matrices II
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos Vectores Vectores II Vectores III Vectores IV Matrices Matrices II Matrices III Otros datos Estructuras y celdas C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al

Resoluci´ on del sistema lineal Ax = b:
>> x=A\b

Si es SCD, devuelve la u ´nica soluci´ on del sistema. En otro caso, devuelve la soluci´ on por m´ ınimos cuadrados. (Ver tambi´ en chol, lu, . . . ) Extracci´ on 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)

Yuxtaposici´ on 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

25 / 66

Matrices III
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos Vectores Vectores II Vectores III Vectores IV Matrices Matrices II Matrices III Otros datos Estructuras y celdas C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al

Ejercicios 3
Crea dos matrices cuadradas, A y B, del mismo tama˜ no. Muestra su n´ umero de filas y columnas. S´ umalas, multipl´ ıcalas matricial y elementalmente. Calcula la traspuesta, el rango y el determinante de A. Calcula los autovalores A. Resuelve el sistema Ax=[1;1;...;1]. Extrae los elementos intersecci´ on de las dos primeras filas y columnas de A. ´ Idem de las dos u ´ltimas filas y columnas de B. 8. Crea una matriz diagonal por bloques, que tenga en la diagonal las dos matrices anteriores. 1. 2. 3. 4. 5. 6. 7.

26 / 66

Otros datos
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos Vectores Vectores II Vectores III Vectores IV Matrices Matrices II Matrices III Otros datos Estructuras y celdas C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al

Complejos: 1+3*i ´ o 1+3i, funciones como real, imag, conj, isreal, angle, abs, . . . Cadenas: a= ’$de 5&’, b =’don’’t’ • • • Concatenaci´ on: c = [’sdf’ ’asd’] Conversi´ on de numeros a cadenas: num2str(2) Impresi´ on del valor de una variable: disp(variable)
>> a=25; disp([’El resultado es’ num2str(a) ’ grados’])

L´ ogicos: entero no nulo (1) es verdadero, 0 es falso • • Operadores relacionales: < > <= >= == ~= Operadores logicos: & | ~ xor any all

27 / 66

Estructuras y celdas
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos Vectores Vectores II Vectores III Vectores IV Matrices Matrices II Matrices III Otros datos Estructuras y celdas C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al

Estructuras: agrupaci´ on de datos con nombre
>> circulo.centro=[0 1] >> circulo.radio=4

Celdas: agrupaci´ on 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}.

28 / 66

´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo C´ alculo C´ alculo C´ alculo simb´ olico simb´ olico simb´ olico II simb´ olico III

C´ alculo simb´ olico

Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

29 / 66

C´ alculo simb´ olico
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo C´ alculo C´ alculo C´ alculo simb´ olico simb´ olico simb´ olico II simb´ olico III

Precisa del paquete symbolic de Octave-Forge. El c´ alculo simb´ olico se carga con symbols Las variables simb´ olicas deben declararse:
>> x = sym(’x’)

Toda expresi´ on que las involucre ser´ a simb´ olica:
>> f = x^2 %f es una expresi´ on simb´ olica

La asignaci´ on las convierte en num´ ericas:
>> x = 5 %x ha dejado de ser simb´ olica

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

Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

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

splot, pinta una funci´ on simb´ olica:
>> i = Exp(x); splot(i,x,[-1 1])

30 / 66

C´ alculo simb´ olico II
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo C´ alculo C´ alculo C´ alculo simb´ olico simb´ olico simb´ olico II simb´ olico III

subs, eval´ ua una expresi´ on:
>> g = Cos(x); p = subs(g,x,1.3)

to_double, convierte un valor simb´ olico a num´ erico:
>> 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])

Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

No esta implementado el c´ alculo simb´ olico de l´ ımites, integraci´ on, ecuaciones diferenciales, gr´ aficas de funciones de dos variables. . . (oct 2010)

31 / 66

C´ alculo simb´ olico III
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo C´ alculo C´ alculo C´ alculo simb´ olico simb´ olico simb´ olico II simb´ olico III

Ejercicios 4
1. 3. 5. 4. 6. Crea una expresi´ on simb´ olica de una variable. Muestra su gr´ afica en diferentes dominios. Eval´ uala en distintos puntos. Calcula su derivada. Resuelve un sistema lineal, y otro no lineal, de 2 ecuaciones y dos inc´ ognitas.

Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

32 / 66

´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Gr´ aficos num´ ericos Gr´ aficos num´ ericos II Gr´ aficos num´ ericos III Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

Visualizaci´ on gr´ afica

33 / 66

Gr´ aficos num´ ericos
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Gr´ aficos num´ ericos Gr´ aficos num´ ericos II Gr´ aficos num´ ericos III Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

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

Varios gr´ aficos 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’)

Informaci´ on 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 gr´ aficos. line, crea lineas personalizadas.
>> line(x,cos(x), ’linewidth’, 4)

34 / 66

Gr´ aficos num´ ericos II
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Gr´ aficos num´ ericos Gr´ aficos num´ ericos II Gr´ aficos num´ ericos III Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

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))

(Obs´ ervese 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))

An´ alisis estad´ ıstico:
>> errorbar(x,sin(x),rand(size(x))) >> hist([2,3,3,4,4.5])

Gr´ aficas 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))

35 / 66

Gr´ aficos num´ ericos III
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Gr´ aficos num´ ericos Gr´ aficos num´ ericos II Gr´ aficos num´ ericos III Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

Subgr´ aficos:
>> x = -2:0.1:2; >> subplot(1,2,1); plot(x,sin(x),’r’); title(’Primer gr´ afico’) >> subplot(1,2,2); plot(x,cos(x),’r’); title(’Segundo gr´ afico’)

print, impresi´ on de la ventana de gr´ aficos activa:
>> print -dpng ’grafica.png’

Ejercicios 5
1. Crea una ventana con dos gr´ aficos. A˜ nade informaci´ on adicional. 2. Crea un gr´ afico de contorno para una funci´ on de dos variables en una ventana aparte. 3. Salva el gr´ afico en un fichero.

36 / 66

´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Scripts Fichero funci´ on Fichero funci´ on II Fichero funci´ on III Funci´ on autom´ atica Funci´ on autom´ atica II Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

Ficheros en Octave

37 / 66

Scripts
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Scripts Fichero funci´ on Fichero funci´ on II Fichero funci´ on III Funci´ on autom´ atica Funci´ on autom´ atica II Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

Es un fichero con una secuencia de comandos. Lleva extensi´ on .m Para que Octave lo encuentre, su carpeta debe a) ser la carpeta por defecto o b) a˜ nadirse a las rutas de b´ usqueda con addpath. Para ejecutarlo, escribir el nombre sin extensi´ on en la Terminal. 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);

38 / 66

Fichero funci´ on
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Scripts Fichero funci´ on Fichero funci´ on II Fichero funci´ on III Funci´ on autom´ atica Funci´ on autom´ atica II Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

¡Los script usan la Variables’ List para sus variables! Los ficheros de funci´ on son scripts con su propio espacio de variables. La primera l´ ınea de un fichero de funci´ on 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 si tambi´ en es de salida.

39 / 66

Fichero funci´ on II
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Scripts Fichero funci´ on Fichero funci´ on II Fichero funci´ on III Funci´ on autom´ atica Funci´ on autom´ atica II Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

Ejemplo: fichero funci´ on 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 f´ acilmente para resolver otros polinomios.

40 / 66

Fichero funci´ on III
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Scripts Fichero funci´ on Fichero funci´ on II Fichero funci´ on III Funci´ on autom´ atica Funci´ on autom´ atica II Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

Para usar un fichero funci´ on como argumento, hay que poner “@” antes del nombre. Consideremos la funci´ on: 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 funci´ on sin de Octave es un fichero funci´ on:
>> int_def(@sin, 0, 1)

41 / 66

Funci´ on autom´ atica
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Scripts Fichero funci´ on Fichero funci´ on II Fichero funci´ on III Funci´ on autom´ atica Funci´ on autom´ atica II Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

Se define en una l´ ınea: >> f = @(x,y) x.^2 + y.^2 Escritas en la Terminal, no se conservan al cerrar la sesi´ on. 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 fichero funci´ on con el mismo nombre que funciones autom´ aticas.

42 / 66

Funci´ on autom´ atica II
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Scripts Fichero funci´ on Fichero funci´ on II Fichero funci´ on III Funci´ on autom´ atica Funci´ on autom´ atica II Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico

Para usar una funci´ on autom´ atica como argumento, no hay que poner “@”:
>> f = @(x) sin(x); int_def(f, 0, 1)

Ejercicios 6
1. Crea un fichero funci´ on para resolver ecuaciones del tipo ae−x + b = 0 x 2. Crea una funci´ on autom´ atica para f (x) = x3 atan( 1+ ). 2 x 3. Dibuja la gr´ afica de f entre -1 y 1 4. Calcula con int def.m su integral definida en [−1, 1].

43 / 66

´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Algoritmos Bucle for Bucle while Estructura if Estructura if II Estructura if III Otros comandos Otros comandos II Otros comandos III Depuraci´ on Importaci´ on de datos

Desarrollo de algoritmos

44 / 66

Algoritmos
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Algoritmos Bucle for Bucle while Estructura if Estructura if II Estructura if III Otros comandos Otros comandos II Otros comandos III Depuraci´ on Importaci´ on de datos

Un programa no suele tener una u ´nica l´ ınea de flujo. Las estructuras de control de flujo pueden ser • • repetitivas, permiten la repetici´ on de comandos: for y while; alternativas, permiten decidir seg´ un una condici´ on: if y switch (que no veremos);

45 / 66

Bucle for
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Algoritmos Bucle for Bucle while Estructura if Estructura if II Estructura if III Otros comandos Otros comandos II Otros comandos III Depuraci´ on Importaci´ on de datos

for i=v comandos (que dependen de i) end v es un vector; en la iteraci´ on j, i toma el valor de v(j). Los bucles pueden anidarse. Se recomienda “indentar” los comandos para facilitar la lectura. Cuando sea posible, se recomienda usar operaciones vectoriales en vez de bucles. Ejemplo: c´ alculo del n! fac = 1; for i=2:n fac = fac*i; end

46 / 66

Bucle while
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Algoritmos Bucle for Bucle while Estructura if Estructura if II Estructura if III Otros comandos Otros comandos II Otros comandos III Depuraci´ on Importaci´ on de datos

while condici´ on comandos end condici´ on es una relaci´ on l´ ogica. while se suele usar cuando no es sencillo calcular el n´ umero de iteraciones. 1 Ejemplo: c´ alculo de ∞ n=1 n4 n = 1; sum = 0; while 1/n^4 > eps sum = sum + 1/n^4; n = n+1; end

47 / 66

Estructura if
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Algoritmos Bucle for Bucle while Estructura if Estructura if II Estructura if III Otros comandos Otros comandos II Otros comandos III Depuraci´ on Importaci´ on de datos

if condici´ on 1 comandos 1 [ elseif condici´ on 2 comandos 2 ] [ elseif . . . ] [ else comandos n ] end Si condici´ on 1 es cierta, se ejecutan comandos 1. Si no y condici´ on 2 es cierta, se ejecutan comandos 2. Si ninguna condici´ on es cierta, se ejecuta comandos n.

48 / 66

Estructura if II
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Algoritmos Bucle for Bucle while Estructura if Estructura if II Estructura if III Otros comandos Otros comandos II Otros comandos III Depuraci´ on Importaci´ on de datos

Ejemplo: on definida a trozos funci´ x − 1, x ≤ −2,    2 1 − x , −2 < x < 0, f ( x) =    − 1 , x ≥ 0. x+1 function y=f(x) if x<=-2 y=x-1; elseif x<0 y=1-x^2; else y=-1/(x+1); end

49 / 66

Estructura if III
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Algoritmos Bucle for Bucle while Estructura if Estructura if II Estructura if III Otros comandos Otros comandos II Otros comandos III Depuraci´ on Importaci´ on de datos

Para conseguir que f admita argumentos vectoriales, es necesario usar un bucle (no basta con usar operaciones elementales, 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 gr´ afica de f se obtiene con:
>> x=-3:0.1:3; plot(x,f(x))
50 / 66

Otros comandos
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Algoritmos Bucle for Bucle while Estructura if Estructura if II Estructura if III Otros comandos Otros comandos II Otros comandos III Depuraci´ on Importaci´ on de datos

break, interrumpe la ejecuci´ on del bucle m´ as interno.
%busqueda de la posicion del ´ ultimo elemento negativo for i=length(x):-1:1 if x(i)<0 break end end disp([’La posici´ on buscada es’ num2str(i)])

return, interrumpe la ejecuci´ on de una funci´ on y devuelve el control a quien la haya llamado (otra funci´ on o el propio Octave).
if x<=0 disp(’log(x) no es real!’) return %la funci´ on se interrumpe, el programa contin´ ua end

51 / 66

Otros comandos II
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Algoritmos Bucle for Bucle while Estructura if Estructura if II Estructura if III Otros comandos Otros comandos II Otros comandos III Depuraci´ on Importaci´ on de datos

error, interrumpe completamente la ejecuci´ on del programa.
if x<=0 error(’Error fatal: log(x) no es real!’) end

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

52 / 66

Otros comandos III
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Algoritmos Bucle for Bucle while Estructura if Estructura if II Estructura if III Otros comandos Otros comandos II Otros comandos III Depuraci´ on Importaci´ on de datos

Ejercicios 7
1. Calcula la suma de las componentes de un vector; comp´ aralo con el resultado de sum. ∞ xn x 2. Calcula e como la suma infinita n=0 n! . 3. Construye una funci´ on que eval´ ue f , definida por 2 sen2 (2x), x ≤ 0, f ( x) = 1 − e−x , x > 0. Dibuja su gr´ afica. 4. Escribe una funci´ on que solicite al usuario en un bucle, n´ umeros por teclado. Si el n´ umero es positivo, debe escribir su logaritmo; si es negativo, debe salir del bucle e informar de que no puede calcular dicho logaritmo.

53 / 66

Depuraci´ on
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Algoritmos Bucle for Bucle while Estructura if Estructura if II Estructura if III Otros comandos Otros comandos II Otros comandos III Depuraci´ on Importaci´ on de datos

Para iniciar la depuraci´ on en avisos y errores:
debug_on_warning(1); debug_on_error(1);

Para gestionar puntos de interrupci´ on:
dbstop(’nombre_funcion’,15) %parada en la l´ ınea 15 dbstatus %muestra paradas establecidas dbclear(’nombre_funcion’,15) %eliminaci´ on de la parada

Para mostrar el fichero: dbtype Para saber d´ onde estamos parados: dbwhere Ir a la siguiente l´ ınea: dbnext Profundizar en las llamadas a funciones: dbstep Continuar la ejecuci´ on: dbcont Cuando la ejecuci´ on est´ a parada, se pueden ejecutar otros comandos (ver valor de variables,. . . )

54 / 66

´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Datos Datos II Datos III Datos IV Aplicaciones al c´ alculo num´ erico

Importaci´ on de datos

55 / 66

Datos
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Datos Datos II Datos III Datos IV Aplicaciones al c´ alculo num´ erico

save, salvado de variables (fichero binario con compresi´ on):
>> 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 a˜ nade. A˜ nadiendo + se permite la operaci´ on contraria.

fclose, cierre de ficheros: fclose(fid )

Lectura / escritura con formato binario: fread y fclose.
56 / 66

Datos II
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Datos Datos II Datos III Datos IV Aplicaciones al c´ alculo num´ erico

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 est´ a presente, lee sizeA elementos. formato es una cadena que describe los elementos a leer: • • • %d: entero; %f: real %s: cadena

textscan, u ´til si texto y n´ umeros est´ an 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).
57 / 66

Datos III
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Datos Datos II Datos III Datos IV Aplicaciones al c´ alculo num´ erico

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

58 / 66

Datos IV
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Datos Datos II Datos III Datos IV Aplicaciones al c´ alculo num´ erico

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
59 / 66

´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico Interpolaci´ on y ajuste Resoluci´ on de ecuaciones Resoluci´ on simb´ olica de ecuaciones Optimizaci´ on Integraci´ on Ecuaciones diferenciales

Aplicaciones al c´ alculo num´ erico

60 / 66

Interpolaci´ on y ajuste
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico Interpolaci´ on y ajuste Resoluci´ on de ecuaciones Resoluci´ on simb´ olica de ecuaciones Optimizaci´ on Integraci´ on Ecuaciones diferenciales

polyfit, interpolaci´ on 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 gr´ afica >> plot(x,f(x),’*’, xx,f(xx), xx, polyval(c,xx)) %gr´ afico >> legend(’nodos’, ’funci´ on’, ’polinomio de interpolaci´ on’)

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

interp1, interpolaci´ on 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)) %gr´ afico

61 / 66

Resoluci´ on de ecuaciones
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico Interpolaci´ on y ajuste Resoluci´ on de ecuaciones Resoluci´ on simb´ olica de ecuaciones Optimizaci´ on Integraci´ on Ecuaciones diferenciales

Resoluci´ on del sistema lineal Ax = b:
>> x=A\b

Si es SCD, devuelve la u ´nica soluci´ on del sistema. En otro caso, devuelve la soluci´ on por m´ ınimos cuadrados. fzero, resoluci´ on de ecuaciones no lineales:
>> f=@cos(x)-x; fzero(f,0)

fsolve, resoluci´ on de sistemas no lineales:
>> fsolve(@f,[0 0])

Se ha creado, previamente, el fichero funci´ on:
function y = f(x) y(1)=x(1)^2+3*x(1)-1; y(2)=x(1)*x(2)-x(2)^2+3;

62 / 66

Resoluci´ on simb´ olica de ecuaciones
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico Interpolaci´ on y ajuste Resoluci´ on de ecuaciones Resoluci´ on simb´ olica de ecuaciones Optimizaci´ on Integraci´ on Ecuaciones diferenciales

symlsolve, resoluci´ on 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, resoluci´ on de ecuaciones no lineales usando fsolve():
>> symbols; x=sym(’x’); y=sym(’y’); >> f=x^2+3*x-1; g=x*y-y^2+3; %valores iniciales, x=1 e y=5 >> a = symfsolve(f,g); %los valores iniciales se toman a 0 >> a = symfsolve(f,g,x,1,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 alfab´ eticamente.

63 / 66

Optimizaci´ on
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico Interpolaci´ on y ajuste Resoluci´ on de ecuaciones Resoluci´ on simb´ olica de ecuaciones Optimizaci´ on Integraci´ on Ecuaciones diferenciales

Precisa del paquete optim de Octave-Forge. fminsearch, b´ usqueda de un m´ ınimo (Nelder-Mead Simplex):
>> 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, b´ usqueda de un m´ ınimo con restricciones (Golden Search):
>> fminbnd(f,2,4) %en [2, 4]

64 / 66

Integraci´ on
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico Interpolaci´ on y ajuste Resoluci´ on de ecuaciones Resoluci´ on simb´ olica de ecuaciones Optimizaci´ on Integraci´ on Ecuaciones diferenciales

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

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

dblquad, integraci´ on doble:
>> f=@(x,y) sin(pi.*x.*y).*sqrt(x.*y); >> I=dblquad(f, 0,1, 0,1)

Para integraci´ on triple, triplequad.

65 / 66

Ecuaciones diferenciales
´ Indice del documento Introducci´ on a lenguajes avanzados de computaci´ on t´ ecnica Introducci´ on al lenguaje Octave Matrices y arrays. Estructuras de datos C´ alculo simb´ olico Visualizaci´ on gr´ afica Ficheros en Octave Desarrollo de algoritmos Importaci´ on de datos Aplicaciones al c´ alculo num´ erico Interpolaci´ on y ajuste Resoluci´ on de ecuaciones Resoluci´ on simb´ olica de ecuaciones Optimizaci´ on Integraci´ on Ecuaciones diferenciales

Consideremos el problema de valor inicial:   dx = x2 log(t + 1) − x , dt t+1 x(0) = 1. lsode, resoluci´ on de una e.d.o.:
>> t = 0:0.1:3; >> x = lsode(f,1,t) >> plot(t,x)

Se ha creado, previamente, el fichero funci´ on:
function xp=f(x,t) xp=x^2*log(t+1)-x/(t+1);

Para sistemas de ecuaciones, hay que usar argumentos vectoriales en la funci´ on f .

66 / 66