Este documento introduce el lenguaje Octave. Explica que es un lenguaje orientado al cálculo numérico similar a Matlab pero de código abierto. Describe algunas de las características básicas de Octave como el cálculo simbólico y numérico con matrices, y explica cómo interactuar con el entorno de Octave mediante comandos como help, diary y cd.
MATLAB se ha convertido en un estándar para el cálculo científico y la visualización en ingeniería y ciencias, y como herramienta docente en universidades. El principal inconveniente para la enseñanza con MATLAB es la dificultad de acceso de los alumnos a la herramienta, debido al alto coste de las licencias. Esto provoca un impacto docente muy claro, pues pocos estudiantes pueden practicar usando sus propios ordenadores.
Octave es una alternativa a MATLAB, que se distribuye como software libre. El principal inconveniente que ha tenido Octave hasta ahora era la falta de una interfaz gráfica sencilla y de un entorno de programación, similares a los que presenta MATLAB. Además, puede ser complicado de instalar en algunas plataformas, como Windows.
Este inconveniente es historia gracias al proyecto Octave UPM, que proporciona un entorno de programación basado en Octave compatible con MATLAB. El entorno Octave UPM ofrece las mismas funcionalidades que MATLAB y ha sido probado con éxito en varias asignaturas en la UPM, con más de 200 alumnos matriculados, que anteriormente empleaban exclusivamente MATLAB, sin cambiar una línea del código de las asignaturas.
MATLAB se ha convertido en un estándar para el cálculo científico y la visualización en ingeniería y ciencias, y como herramienta docente en universidades. El principal inconveniente para la enseñanza con MATLAB es la dificultad de acceso de los alumnos a la herramienta, debido al alto coste de las licencias. Esto provoca un impacto docente muy claro, pues pocos estudiantes pueden practicar usando sus propios ordenadores.
Octave es una alternativa a MATLAB, que se distribuye como software libre. El principal inconveniente que ha tenido Octave hasta ahora era la falta de una interfaz gráfica sencilla y de un entorno de programación, similares a los que presenta MATLAB. Además, puede ser complicado de instalar en algunas plataformas, como Windows.
Este inconveniente es historia gracias al proyecto Octave UPM, que proporciona un entorno de programación basado en Octave compatible con MATLAB. El entorno Octave UPM ofrece las mismas funcionalidades que MATLAB y ha sido probado con éxito en varias asignaturas en la UPM, con más de 200 alumnos matriculados, que anteriormente empleaban exclusivamente MATLAB, sin cambiar una línea del código de las asignaturas.
Libro dedicado al cálculo aproximado de raíces de ecuaciones no lineales utilizando Octave: Bisección, Regula, Secante, Pto. Fijo, Newton-Raphson, Wegstein, Müller, Sturm, etc.
Elites municipales y propiedades rurales: algunos ejemplos en territorio vascónJavier Andreu
Material de apoyo a la conferencia pórtico de la XIX Semana Romana de Cascante celebrada en Cascante (Navarra), el 24 de junio de 2024 en el marco del ciclo de conferencias "De re rustica. El campo y la agricultura en época romana: poblamiento, producción, consumo"
Presentación de la conferencia sobre la basílica de San Pedro en el Vaticano realizada en el Ateneo Cultural y Mercantil de Onda el jueves 2 de mayo de 2024.
Ponencia en I SEMINARIO SOBRE LA APLICABILIDAD DE LA INTELIGENCIA ARTIFICIAL EN LA EDUCACIÓN SUPERIOR UNIVERSITARIA. 3 de junio de 2024. Facultad de Estudios Sociales y Trabajo, Universidad de Málaga.
2. ´
Indice del documento
´
Indice del
documento
1. Introducci´n a lenguajes avanzados de computaci´n t´cnica.
o o e
Introducci´n a
o 2. Introducci´n al lenguaje Octave.
o
lenguajes avanzados
de computaci´n
o 3. Matrices y arrays. Estructuras de datos.
t´cnica
e
4. C´lculo simb´lico.
a o
Introducci´n al
o
lenguaje Octave 5. Visualizaci´n gr´fica.
o a
Matrices 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.
o
Ficheros en Octave 9. Aplicaciones al c´lculo num´rico.
a e
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
2 / 66
3. ´
Indice del
documento
Introducci´n a
o
lenguajes avanzados
de computaci´no
t´cnica
e
Lenguajes
Lenguajes II
Lenguajes III
Lenguajes IV Introducci´n a lenguajes avanzados de
o
Lenguajes V
Introducci´n al
o computaci´n t´cnica
o e
lenguaje Octave
Matrices y arrays.
Estructuras de datos
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
3 / 66
4. Lenguajes
´
Indice del
documento
C´lculo simb´lico: se trabaja con constantes y expresiones
a o
Introducci´n a
o simb´licas.
o
lenguajes avanzados √
de computaci´no • 2, constante simb´lica que representa la ra´ de 2;
o ız
t´cnica
e √ 2
Lenguajes • 2 , constante simb´lica que representa el numero 2.
o
Lenguajes II
Lenguajes III
Lenguajes IV
• x2 , expresi´n simb´lica que representa la funci´n
o o o
Lenguajes V matem´tica f (x) = x2 ;
a
Introducci´n al
o
lenguaje Octave
• x2 dx, su integral indefinida es otra expresi´n simb´lica,
o o
x3
Matrices y arrays.
Estructuras de datos
3 + C.
C´lculo simb´lico
a o Un programa que implementa el c´lculo simb´lico suele
a o
Visualizaci´n gr´fica
o a llamarse “sistema de ´lgebra computacional”.
a
Ficheros en Octave Los m´s conocidos son Mathematica, Maple y Maxima.
a
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
4 / 66
5. Lenguajes II
´
Indice del
documento
A menor escala, Octave tambi´n puede operar
e
Introducci´n a
o simb´licamente.
o
lenguajes avanzados
de computaci´no El c´lculo simb´lico es util para
a o ´
t´cnica
e
Lenguajes • simplificaci´n de expresiones,
o
x2 + 2x + 1 → (x + 1)2
Lenguajes II
Lenguajes III
Lenguajes IV • resoluci´n exacta de ecuaciones lineales o no lineales,
o
Lenguajes V
x2 + xy + y = 3
Introducci´n al
o
→ 1 , −3/2
3
1
lenguaje Octave
x2 − 4x + 3 = 0
Matrices y arrays.
Estructuras de datos • c´lculo de l´
a ımites,
C´lculo simb´lico
a o l´ x→1 x2 y → y
ım
Visualizaci´n gr´fica
o a • c´lculo de derivadas, integrales indefinidas
a
Ficheros en Octave d
Desarrollo de dx sin(x) → cos(x)
algoritmos • resoluci´n exacta de ecuaciones diferenciales.
o
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
5 / 66
6. Lenguajes III
´
Indice del
documento
A veces, el c´lculo simb´lico no puede ser realizado, por
a o
Introducci´n a
o limitaciones del propio sistema o por impedimentos de tipo
lenguajes avanzados
de computaci´no matem´tico.
a
t´cnica
e
Lenguajes
C´lculo num´rico: se trabaja con n´meros representables en
a e u
Lenguajes II un ordenador.
Lenguajes III √
Lenguajes IV • √ se almacena como 1.414213562373095;
2
Lenguajes V 2
Introducci´n al
o
• 2 , es un n´mero pr´ximo a 2.
u o
lenguaje Octave • El uso de funciones se limita a c´lculos que devuelven
a
1
Matrices y arrays.
Estructuras de datos
n´meros: 0 x2 dx, es un n´mero pr´ximo a 1/3.
u u o
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
6 / 66
7. Lenguajes IV
´
Indice del
documento
Con el c´lculo num´rico es posible hallar un resultado
a e
Introducci´n a
o aproximado de los problemas anteriores, incluso cuando el
lenguajes avanzados
de computaci´no c´lculo simb´lico falla.
a o
t´cnica
e
Lenguajes
Su limitaci´n reside en que s´lo obtiene resultados n´mericos:
o o u
Lenguajes II
Lenguajes III • Con c´lculo num´rico podemos saber que la derivada de
a e
Lenguajes IV
Lenguajes V
x2 en x=2 es 4;
Introducci´n al
o • Solo con c´lculo simb´lico podremos ver que la derivada
a o
lenguaje Octave
en todo punto es 2x.
Matrices y arrays.
Estructuras de datos
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
7 / 66
8. Lenguajes V
´
Indice del
documento
El programa orientado al c´lculo num´rico m´s conocido es
a e a
Introducci´n a
o Matlab.
lenguajes avanzados
de computaci´n
t´cnica
e
o • GNU Octave pretende ser un clon de software libre de
Lenguajes Matlab. Se diferencia en la interfaz gr´fica y las
a
Lenguajes II
Lenguajes III toolboxes (por ejemplo, de c´lculo simb´lico).
a o
Lenguajes IV • Scilab ha sido desarrollado por INRIA. No es totalmente
Lenguajes V
Introducci´n al
o
compatible con Matlab, pero se trabaja en un traductor
lenguaje 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 o
Visualizaci´n gr´fica
o a
• R es un lenguaje desarrollado principalmente para an´lisis
a
Ficheros en Octave estad´
ıstico;
Desarrollo de • Sage es una aplicaci´n para c´lculo cient´
o a ıfico desarrollada
algoritmos
Importaci´n de
o
a partir de Python.
datos
Aplicaciones al
c´lculo num´rico
a e
8 / 66
9. ´
Indice del
documento
Introducci´n a
o
lenguajes avanzados
de computaci´n
o
t´cnica
e
Introducci´n al
o
lenguaje Octave
Introducci´n
o
Introducci´n II
o
Primeros comandos Introducci´n al lenguaje Octave
o
Variables
Variables II
Variables III
Recuperaci´n de
o
comandos
Expresiones escalares
Expresiones escalares
II
Matrices y arrays.
Estructuras de datos
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o 9 / 66
datos
10. Introducci´n
o
´
Indice del
documento
GNU Octave es un language pensado para el c´lculo
a
Introducci´n a
o num´rico (http://www.gnu.org/software/octave/) que posee
e
lenguajes avanzados
de computaci´n
o una interfaz de l´
ınea de comando.
t´cnica
e
Octave-Forge es una comunidad de desarrollo que
Introducci´n al
o
lenguaje Octave proporciona paquetes para varios problemas. Los paquetes
Introducci´n
o
Introducci´n II
o
disponibles se describen en
Primeros comandos http://octave.sourceforge.net/packages.php.
Variables
Variables II QtOctave es una interfaz gr´fica para Octave
a
Variables III
Recuperaci´n de
o
(http://qtoctave.wordpress.com/).
comandos
Expresiones escalares Existen instaladores para GNU Linux y Mac OS.
Expresiones escalares
II El paquete precompilado para Windows est´ en Octave-Forge
a
Matrices 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 oct2mat
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o 10 / 66
datos
11. Introducci´n II
o
´
Indice del
documento
Si usamos QtOctave, podremos distinguir varias ventanas:
Introducci´n a
o
lenguajes avanzados
• Terminal, para escribir los comandos Octave;
de computaci´n
t´cnica
e
o • Commands’ List, refleja los comandos ya escritos;
Introducci´n al
o • Variables’ List, refleja las variables creadas;
lenguaje Octave
Introducci´n
o
• Navigator, muestra la carpeta por defecto;
Introducci´n II
o • Editor, permite editar ficheros.
Primeros comandos
Variables
Variables II
Variables III
Recuperaci´n de
o
comandos
Expresiones escalares
Expresiones escalares
II
Matrices y arrays.
Estructuras de datos
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o 11 / 66
datos
12. Primeros comandos
´
Indice del
documento
Al ser un lenguaje interpretado, los comandos se ejecutan
Introducci´n a
o uno a uno, terminados con retorno de carro.
lenguajes avanzados
de computaci´n
o diary, para volcar lo mostrado a un fichero:
t´cnica
e
>> diary %vuelca al fichero ’diary’ de la capeta por defecto
Introducci´n al
o
lenguaje Octave >> diary file %´dem al fichero ’file’
ı
Introducci´n
o
Introducci´n II
o
>> diary off %interrumpe el volcado
Primeros comandos help, para solicitar ayuda:
Variables
Variables II >> help diary %da ayuda sobre el comando ’diary’
Variables III
Recuperaci´n de
o
La ayuda online est´ en
a
comandos http://www.gnu.org/software/octave/doc/interpreter/
Expresiones escalares
Expresiones escalares
II pwd, para ver la carpeta por defecto.
Matrices y arrays.
Estructuras de datos
cd, para cambiar de carpeta:
C´lculo simb´lico
a o
>> cd Z:mi_carpeta %cambia la carpeta por defecto
Visualizaci´n gr´fica
o a >> cd .. %se desplaza a la carpeta padre
Ficheros en Octave ls, para ver el contenido de la carpeta.
Desarrollo de
algoritmos
Importaci´n de
o 12 / 66
datos
13. Variables
´
Indice del
documento
Las variables num´ricas no necesitan declararse:
e
Introducci´n a
o >> a=1/3
lenguajes avanzados
de computaci´n
o Cuando se asigna otro valor, el anterior desaparece:
t´cnica
e
>> a=1/6
Introducci´n al
o
lenguaje Octave Las variables creadas se guardan en la Variables’ List:
Introducci´n
o
Introducci´n II
o
>> whos
Primeros comandos Todo c´lculo no asignado se guarda en la variable ans:
a
Variables
Variables II >> 1/4
Variables III
Recuperaci´n de
o
format, distintas formas de ver (no de calular) el valor:
comandos >> format short %punto fijo, 4 decimales
Expresiones escalares
Expresiones escalares >> format long %punto fijo, 15 decimales
II
Matrices y arrays.
>> format short e %punto flotante, 4 decimales
Estructuras de datos >> format long e %punto flotante, 15 decimales
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o 13 / 66
datos
14. Variables II
´
Indice del
documento
clear, borra variables:
Introducci´n a
o >> clear a %borra la variable a
lenguajes avanzados
de computaci´n
o >> clear %borra todas las variables
t´cnica
e
Los nombres de variables deben debe tener 31 caracteres
Introducci´n al
o
lenguaje Octave como m´ximo, empezar por una letra y contener letras,
a
Introducci´n
o
Introducci´n II
o
n´meros y “ ”, pero no espacios en blanco.
u
Primeros comandos >> n_2=44 %es correcto, no as´ 2_n ´ n 2
ı o
Variables
Variables II Se distingue entre may´sculas y min´sculas.
u u
Variables III
Recuperaci´n de
o
Varios comandos en linea se separan con “,” o “;”.
comandos >> a=4; b2=10^(2-a)
Expresiones escalares
Expresiones escalares Los terminados con “;” se ejecutan sin mostrar el resultado.
II
Matrices y arrays.
Todo lo que sigue a % se considera un comentario.
Estructuras de datos
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o 14 / 66
datos
15. Variables III
´
Indice del
documento
Un comando se extiende por varias l´
ıneas con . . . :
Introducci´n a
o >> Nombre_muy_largo=...
lenguajes avanzados
de computaci´n
o 2.e-4*23
t´cnica
e
No se recomienda usar nombres propios de Octave:
Introducci´n al
o
lenguaje Octave
Introducci´n
o
• pi, valor de π,
Introducci´n II
o • i, j, valor del n´mero imaginario,
u
Primeros comandos
Variables • inf, representa el infinto, ∞,
Variables II
Variables III
• NaN, representa la indeterminaci´n.
o
Recuperaci´n de
o
comandos Ojo, el n´mero e se escribe evaluando la exponecial, exp(1),
u
Expresiones escalares
Expresiones escalares
pero e2 no se escribe exp(1)^2 sino exp(2).
II
Matrices y arrays.
Estructuras de datos
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o 15 / 66
datos
16. Recuperaci´n de comandos
o
´
Indice del
documento
Solo se puede modificar el comando de la linea actual.
Introducci´n a
o Para recuperar un comando previo podemos:
lenguajes avanzados
de computaci´n
t´cnica
e
o • copiarlo desde la ventana Commands’ List o
Introducci´n al
o • usar el cursor “flecha hacia arriba” ↑ o
lenguaje Octave
Introducci´n
o • escribir las primeras letras del comando y pulsar ↑ para
Introducci´n II
o
Primeros comandos navegar solo por los comandos que empiezan por esas
Variables letras.
Variables II
Variables III
Recuperaci´n de
o
Con la tecla “Esc” se borra lo escrito.
comandos
Expresiones escalares
Expresiones escalares
II
Matrices y arrays.
Estructuras de datos
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o 16 / 66
datos
17. Expresiones escalares
´
Indice del
documento
Las operaciones b´sicas son + - * / ∧
a
Introducci´n a
o La prioridad es la misma que en las calculadoras.
lenguajes avanzados
de computaci´n
o Se pueden usar par´ntesis para cambiarlas.
e
t´cnica
e
Introducci´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
o
Introducci´n II
o • trigonom´ticas: sin, cos, tan, sec, csc,. . .
e
Primeros comandos
Variables • trigonom´ticas inversas: asin, acos, . . .
e
Variables II
Variables III
• logar´
ıtmicas: log, log10, . . .
Recuperaci´n de
comandos
o • para complejos: imag, real, . . .
Expresiones escalares • enteros: floor, round, mod, sign, . . .
Expresiones escalares
II • otras: sqrt, abs, sinh, . . .
Matrices y arrays.
Estructuras de datos
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o 17 / 66
datos
18. Expresiones escalares II
´
Indice del
documento
Ejercicios 1
Introducci´n a
o
lenguajes avanzados
1. Inicia el volcado con diary.
de computaci´n
t´cnica
e
o
2. Calcula eiπ + 1.
Introducci´n al
o 3. Calcula 0/0.
lenguaje Octave
Introducci´n
o 4. Guarda | cos(3)2 | − 6 2 y | cos(32 )| − 3·2 en dos variables.
3
6
Introducci´n II
o 5. Comprueba que se han guardado en la Variables’ List.
Primeros comandos
Variables 6. Borra las variables.
Variables II
Variables III
7. Termina el volcado y comprueba el contenido del fichero.
Recuperaci´n de
o
comandos
Expresiones escalares
Expresiones escalares
II
Matrices y arrays.
Estructuras de datos
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o 18 / 66
datos
19. ´
Indice del
documento
Introducci´n a
o
lenguajes avanzados
de computaci´n
o
t´cnica
e
Introducci´n al
o
lenguaje Octave
Matrices y arrays.
Estructuras de datos
Vectores Matrices y arrays. Estructuras de datos
Vectores II
Vectores III
Vectores IV
Matrices
Matrices II
Matrices III
Otros datos
Estructuras y celdas
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
19 / 66
Aplicaciones al
20. Vectores
´
Indice del
documento
Vectores dados manualmente:
Introducci´n a
o >> v=[1 3 5 7] %fila, componentes separadas por " " ´ ","
o
lenguajes avanzados
de computaci´n
o >> w=[1;3;5;7] %columna, componentes separadas por ";"
t´cnica
e
Introducci´n al
o Ojo, cuidado con los espacios en las filas: [2, 4] se obtiene
lenguaje Octave
Matrices y arrays.
con [2 1+3] o [2, 1 +3], pero no con [2 1 +3].
Estructuras de datos Vectores con una ley de formaci´n:
o
Vectores
Vectores II >> q=2:2:20 %inicio:incremento:fin
Vectores III >> y=2:2:21 %es el mismo vector
Vectores IV
Matrices >> v=8:-1:1 %va de 8 a 1
Matrices II
>> r=1:5 %si el incremento es 1, se puede omitir
Matrices III
Otros datos >> q2=linspace(2,20,10) %inicio, fin, num. componentes
Estructuras y celdas
>> m=ones(1,20) %fila de 20 unos
C´lculo simb´lico
a o
>> n=zeros(20,1) %columna de 20 ceros
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
20 / 66
Aplicaciones al
21. Vectores II
´
Indice del Las operaciones b´sicas matriciales son + - * /
a ∧
documento
Introducci´n a
o >> 3*m %fila de 20 treses
lenguajes avanzados
de computaci´n
o >> m*n %multiplicaci´n "fila por columna"
o
t´cnica
e
Introducci´n al
o
Las operaciones b´sicas elementales son + - .* ./ .∧
a
lenguaje Octave >> m.*m %multiplicaci´n "elemento a elemento"
o
Matrices y arrays.
Estructuras de datos
Las funciones intr´
ınsecas son elementales.
Vectores Funciones espec´ıficas para vectores:
Vectores II
Vectores III • ’, trasposici´n,
o
Vectores IV
Matrices • length, numero de componentes,
Matrices II
Matrices III
• norm, norma,
Otros datos • dot, producto escalar,
Estructuras y celdas
• cross, producto cruzado.
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
21 / 66
Aplicaciones al
22. Vectores III
´
Indice del
documento
Extracci´n de componentes:
o
Introducci´n a
o >> v(2) %devuelve la 2a componente
lenguajes avanzados
de 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
o
lenguaje Octave >> ind=[1 5 3]; v(ind) %´dem
ı
Matrices y arrays. >> v(4:end-1) %componentes de la 4a a la pen´ltima
u
Estructuras de datos
Vectores
Vectores II Ejercicios 2
Vectores III
Vectores IV 1. Crea dos vectores fila, u y v, de la misma dimensi´n.
o
Matrices
Matrices II 2. Muestra su n´mero de componentes.
u
Matrices III 3. S´malos.
u
Otros datos
Estructuras y celdas 4. Multiplica u por el traspuesto de v.
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
22 / 66
Aplicaciones al
23. Vectores IV
´
Indice del
documento
5. Multiplica el traspuesto de u por v.
Introducci´n a
o 6. Calcula la norma de u.
lenguajes avanzados
de 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
o
lenguaje Octave 9. Eleva al cubo cada componente de u.
Matrices y arrays.
Estructuras de datos
10. Suma los elementos de ´ ındice par de u con los elementos
Vectores de ´
ındice impar de v. ¿Es siempre posible?
Vectores II
Vectores III
11. Toma los elementos 1, 5 y 4 de u y s´male los tres ultimos
u ´
Vectores IV valores de v. Guarda el resultado en las posiciones dadas
Matrices
Matrices II para u.
Matrices III
Otros datos
Estructuras y celdas
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
23 / 66
Aplicaciones al
24. Matrices
´
Indice del
documento
Matrices dadas manualmente, se introducen por filas:
Introducci´n a
o >> M=[1 2 5; 2 -1 6; 3 0 -1] %en filas, usamos " " ´ ","
o
lenguajes avanzados
de computaci´n
o Matrices con una ley de formaci´n:
o
t´cnica
e
>> A=ones(2,3) %matriz 2 x 3 de unos
Introducci´n al
o
lenguaje Octave >> B=zeros(4) %matriz 4 x 4 de ceros
Matrices y arrays. >> C=eye(4,5) %matriz identidad 4 x 5
Estructuras de datos
Vectores >> C=rand(2) %matriz aleatoria 2 x 2, 0<=C<=1
Vectores II
Vectores III
Como en vectores, se distingue entre operaciones matriciales
Vectores IV (* / ∧ ) y elementales (.* ./ .∧ ).
Matrices
Matrices II Las funciones intr´
ınsecas tambi´n son elementales.
e
Matrices III
Algunas funciones espec´ ıficas para matrices: ’, size, det,
Otros datos
Estructuras y celdas rank, inv, eig, . . .
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
24 / 66
Aplicaciones al
25. Matrices II
´
Indice del
documento
Resoluci´n del sistema lineal Ax = b:
o
Introducci´n a
o >> x=Ab
lenguajes avanzados
de computaci´n
o Si es SCD, devuelve la unica soluci´n del sistema.
´ o
t´cnica
e
En otro caso, devuelve la soluci´n por m´
o ınimos cuadrados.
Introducci´n al
o
lenguaje Octave (Ver tambi´n chol, lu, . . . )
e
Matrices y arrays.
Estructuras de datos
Extracci´n de componentes:
o
Vectores >> M(2,3) %devuelve la componente (2,3)
Vectores II
Vectores III
>> M(:,3) %devuelve la 3a columna
Vectores IV >> M(2,:) %devuelve la 2a fila
Matrices
Matrices II >> M([1 5 3],1:2) %matriz orlada 3 x 2
Matrices III
>> triu(M), tril(M), diag(M) %triangular sup., inf. y diagonal
Otros datos
Estructuras y celdas >> I=diag(diag(M)) %matriz diagonal, con diag(I)=diag(M)
C´lculo simb´lico
a o Yuxtaposici´n de matrices:
o
Visualizaci´n gr´fica
o a >> A=[1 2; 5 -2]; B=[-10 30; A] %a~adimos filas
n
Ficheros en Octave
>> C=[eye(2) zeros(2,2); zeros(2,2) A] %diagonal por bloques
Desarrollo de
algoritmos
Importaci´n de
o
datos
25 / 66
Aplicaciones al
26. Matrices III
´
Indice del
documento
Ejercicios 3
Introducci´n a
o
lenguajes avanzados
1. Crea dos matrices cuadradas, A y B, del mismo tama˜o.n
de computaci´n
t´cnica
e
o
2. Muestra su n´mero de filas y columnas.
u
Introducci´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.
Vectores
Vectores II 6. Resuelve el sistema Ax=[1;1;...;1].
Vectores III 7. Extrae los elementos intersecci´n de las dos primeras filas y
o
Vectores IV
Matrices columnas de A. ´Idem de las dos ultimas filas y columnas de
´
Matrices II
Matrices III
B.
Otros datos 8. Crea una matriz diagonal por bloques, que tenga en la
Estructuras y celdas
diagonal las dos matrices anteriores.
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
26 / 66
Aplicaciones al
27. Otros datos
´
Indice del
documento
Complejos: 1+3*i ´ 1+3i, funciones como real, imag,
o
Introducci´n a
o conj, isreal, angle, abs, . . .
lenguajes avanzados
de computaci´n
o Cadenas: a= ’$de 5&’, b =’don’’t’
t´cnica
e
Introducci´n al
o • Concatenaci´n: c = [’sdf’ ’asd’]
o
lenguaje Octave
• Conversi´n de numeros a cadenas: num2str(2)
o
Matrices y arrays.
Estructuras de datos • Impresi´n del valor de una variable: disp(variable)
o
Vectores
Vectores II
>> a=25; disp([’El resultado es’ num2str(a) ’ grados’])
Vectores III
Vectores IV L´gicos: entero no nulo (1) es verdadero, 0 es falso
o
Matrices
Matrices II • Operadores relacionales: < > <= >= == ~=
Matrices III
Otros datos
• Operadores logicos: & | ~ xor any all
Estructuras y celdas
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
27 / 66
Aplicaciones al
28. Estructuras y celdas
´
Indice del
documento
Estructuras: agrupaci´n de datos con nombre
o
Introducci´n a
o >> circulo.centro=[0 1]
lenguajes avanzados
de computaci´n
o >> circulo.radio=4
t´cnica
e
Celdas: agrupaci´n de datos numerados
o
Introducci´n al
o
lenguaje Octave >> dato{1} = 23
Matrices y arrays. >> dato{2} = [2 8]
Estructuras de datos
Vectores >> dato{3} = [0 9; 5 7]
Vectores II
Vectores III Ciertos comandos devuelven celdas:
Vectores IV
Matrices
>> symbols; x=sym(’x’); y=sym(’y’);
Matrices II >> S=symlsolve({x+y-3,x-y+5},{x,y})
Matrices III
Otros datos S tiene dos elementos: S{1} y S{2}.
Estructuras y celdas
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
28 / 66
Aplicaciones al
29. ´
Indice del
documento
Introducci´n a
o
lenguajes avanzados
de computaci´n
o
t´cnica
e
Introducci´n al
o
lenguaje Octave
Matrices y arrays.
Estructuras de datos
C´lculo
a simb´lico
o
C´lculo simb´lico
a o
C´lculo
a simb´lico
o
C´lculo
a simb´lico II
o
C´lculo
a simb´lico III
o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
29 / 66
30. C´lculo simb´lico
a o
´
Indice del
documento
Precisa del paquete symbolic de Octave-Forge.
Introducci´n a
o El c´lculo simb´lico se carga con symbols
a o
lenguajes avanzados
de computaci´n
o Las variables simb´licas deben declararse:
o
t´cnica
e
>> x = sym(’x’)
Introducci´n al
o
lenguaje Octave Toda expresi´n que las involucre ser´ simb´lica:
o a o
Matrices y arrays. >> f = x^2 %f es una expresi´n simb´lica
o o
Estructuras de datos
C´lculo
a simb´lico
o
La asignaci´n las convierte en num´ricas:
o e
C´lculo
a simb´lico
o >> x = 5 %x ha dejado de ser simb´lica
o
C´lculo
a simb´lico II
o
C´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 de
algoritmos
collect, recolecta los t´rminos como polinomio:
e
Importaci´n de
o >> f = 2*x+x+3; collect(f,x)
datos
Aplicaciones al
splot, pinta una funci´n simb´lica:
o o
c´lculo num´rico
a e >> i = Exp(x); splot(i,x,[-1 1])
30 / 66
31. C´lculo simb´lico II
a o
´
Indice del
documento
subs, eval´a una expresi´n:
u o
Introducci´n a
o >> g = Cos(x); p = subs(g,x,1.3)
lenguajes avanzados
de computaci´n
o to_double, convierte un valor simb´lico a num´rico:
o e
t´cnica
e
>> to_double(p) %p es el resultado anterior
Introducci´n al
o
lenguaje Octave differentiate, calcula la derivada:
Matrices y arrays. >> f = x^2; differentiate(f,x,2) %derivada segunda
Estructuras de datos
C´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
o
C´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 de
algoritmos
integraci´n, ecuaciones diferenciales, gr´ficas de funciones de
o a
Importaci´n de
o dos variables. . . (oct 2010)
datos
Aplicaciones al
c´lculo num´rico
a e
31 / 66
32. C´lculo simb´lico III
a o
´
Indice del
documento
Ejercicios 4
Introducci´n a
o
lenguajes avanzados
1. Crea una expresi´n simb´lica de una variable.
o o
de computaci´n
t´cnica
e
o
3. Muestra su gr´fica en diferentes dominios.
a
Introducci´n al
o 5. Eval´ala en distintos puntos.
u
lenguaje Octave
4. Calcula su derivada.
Matrices y arrays.
Estructuras de datos 6. Resuelve un sistema lineal, y otro no lineal, de 2 ecuaciones
C´lculo
a simb´lico
o y dos inc´gnitas.
o
C´lculo
a simb´lico
o
C´lculo
a simb´lico II
o
C´lculo
a simb´lico III
o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
32 / 66
33. ´
Indice del
documento
Introducci´n a
o
lenguajes avanzados
de computaci´n
o
t´cnica
e
Introducci´n al
o
lenguaje Octave
Matrices y arrays.
Estructuras de datos
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
Visualizaci´n gr´fica
o a
Gr´ficos num´ricos
a e
Gr´ficos num´ricos II
a e
Gr´ficos num´ricos
a e
III
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
33 / 66
34. Gr´ficos num´ricos
a e
´
Indice del
documento
plot, gr´ficas de funciones de una variable:
a
Introducci´n a
o >> x = 0:0.5:5; plot(x, sin(x)) %cambiar 0.5 a 0.1
lenguajes avanzados
de computaci´n
o Varios gr´ficos en la misma ventana:
a
t´cnica
e
>> hold on; plot(x, cos(x))
Introducci´n al
o
lenguaje 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:
o
Gr´ficos num´ricos
a e >> title(’Dos curvas’) %titulo
Gr´ficos num´ricos II
a e
Gr´ficos num´ricos
a e >> xlabel(’Abscisas’); ylabel(’Ordenadas’) %texto en ejes
III
>> legend(’Curva 1’,’Curva 2’) %leyenda
Ficheros en Octave
Desarrollo de >> axis([-1 11 -1.5 1.5]) %escala
algoritmos
figure, crea una nueva ventana de gr´ficos.
a
Importaci´n de
o
datos line, crea lineas personalizadas.
Aplicaciones al
c´lculo num´rico
a e
>> line(x,cos(x), ’linewidth’, 4)
34 / 66
35. Gr´ficos num´ricos II
a e
´
Indice del
documento
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 avanzados
de computaci´n
o >> plot3(cos(t),t.*sin(t),sqrt(t))
t´cnica
e
(Obs´rvese el uso de .*)
e
Introducci´n al
o
lenguaje Octave Escala logar´
ıtmica, semilogx, semilogy, loglog:
Matrices y arrays. >> x = 0:0.1:5; semilogy(x, exp(-x))
Estructuras de datos
C´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 e
Gr´ficos num´ricos
a e >> errorbar(x,sin(x),rand(size(x)))
III
>> hist([2,3,3,4,4.5])
Ficheros en Octave
Desarrollo de Gr´ficas de funciones de dos variables:
a
algoritmos
>> [x,y]=meshgrid(-2:.2:2, -2:.2:2);
Importaci´n de
o
datos >> surf(x, y, x.*exp(-x.^2-y.^2))
Aplicaciones al
c´lculo num´rico
a e
>> contour(x, y, x.*exp(-x.^2-y.^2))
35 / 66
36. Gr´ficos num´ricos III
a e
´
Indice del
documento
Subgr´ficos:
a
Introducci´n a
o >> x = -2:0.1:2;
lenguajes avanzados
de computaci´n
o >> subplot(1,2,1); plot(x,sin(x),’r’); title(’Primer gr´fico’)
a
t´cnica
e
>> subplot(1,2,2); plot(x,cos(x),’r’); title(’Segundo gr´fico’)
a
Introducci´n al
o
lenguaje Octave print, impresi´n de la ventana de gr´ficos activa:
o a
Matrices y arrays. >> print -dpng ’grafica.png’
Estructuras de datos
C´lculo simb´lico
a o
Ejercicios 5
Visualizaci´n gr´fica
o a
Gr´ficos num´ricos
a e 1. Crea una ventana con dos gr´ficos. A˜ade informaci´n
a n o
Gr´ficos num´ricos II
a e
Gr´ficos num´ricos
a e adicional.
III
Ficheros en Octave
2. Crea un gr´fico de contorno para una funci´n de dos
a o
Desarrollo de variables en una ventana aparte.
algoritmos
3. Salva el gr´fico en un fichero.
a
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
36 / 66
37. ´
Indice del
documento
Introducci´n a
o
lenguajes avanzados
de computaci´n
o
t´cnica
e
Introducci´n al
o
lenguaje Octave
Matrices y arrays.
Estructuras de datos
C´lculo simb´lico
a o
Ficheros en Octave
Visualizaci´n gr´fica
o a
Ficheros en Octave
Scripts
Fichero funci´n
o
Fichero funci´n II
o
Fichero funci´n III
o
Funci´n autom´tica
o a
Funci´n autom´tica
o a
II
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
37 / 66
38. Scripts
´
Indice del
documento
Es un fichero con una secuencia de comandos.
Introducci´n a
o Lleva extensi´n .m
o
lenguajes avanzados
de computaci´n
o Para que Octave lo encuentre, su carpeta debe
t´cnica
e
Introducci´n al
o a) ser la carpeta por defecto o
lenguaje Octave
b) a˜adirse a las rutas de b´squeda con addpath.
n u
Matrices y arrays.
Estructuras de datos
Para ejecutarlo, escribir el nombre sin extensi´n en la
o
C´lculo simb´lico
a o
Terminal.
Visualizaci´n gr´fica
o a
Ficheros en Octave
Ejemplo: script grado2.m, para resolver 3x2 + 5x + 2 = 0.
Scripts a=3; b=5; c=2;
Fichero funci´n
o
Fichero 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 a
Funci´n autom´tica
o a x(2)=(-b-sqrt(D))/(2*a);
II
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
38 / 66
39. Fichero funci´n
o
´
Indice del
documento
¡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
o
lenguajes avanzados
de computaci´n
o variables.
t´cnica
e
La primera l´ınea de un fichero de funci´n es del tipo:
o
Introducci´n al
o
lenguaje Octave
Matrices 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 Octave
Scripts
El valor de una variable de entrada solo se modifica si
Fichero funci´n
o tambi´n es de salida.
e
Fichero funci´n II
o
Fichero funci´n III
o
Funci´n autom´tica
o a
Funci´n autom´tica
o a
II
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
39 / 66
40. Fichero funci´n II
o
´
Indice del
documento
Ejemplo: fichero funci´n fgrado2.m.
o
Introducci´n a
o function x=fgrado2(a,b,c)
lenguajes avanzados
de computaci´n
o D=b^2-4*a*c;
t´cnica
e
x(1)=(-b+sqrt(D))/(2*a);
Introducci´n al
o
lenguaje Octave x(2)=(-b-sqrt(D))/(2*a);
Matrices y arrays.
Estructuras de datos
C´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.
a
Scripts
Fichero funci´n
o
Fichero funci´n II
o
Fichero funci´n III
o
Funci´n autom´tica
o a
Funci´n autom´tica
o a
II
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
40 / 66
41. Fichero funci´n III
o
´
Indice del
documento
Para usar un fichero funci´n como argumento, hay que poner
o
Introducci´n a
o “@” antes del nombre. Consideremos la funci´n:
o
lenguajes avanzados
de 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
o
lenguaje Octave t=linspace(a,b,100);
Matrices y arrays.
Estructuras de datos
y = trapz(t, f(t));
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
La funci´n sin de Octave es un fichero funci´n:
o o
Ficheros en Octave >> int_def(@sin, 0, 1)
Scripts
Fichero funci´n
o
Fichero funci´n II
o
Fichero funci´n III
o
Funci´n autom´tica
o a
Funci´n autom´tica
o a
II
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
41 / 66
42. Funci´n autom´tica
o a
´
Indice del
documento
Se define en una l´ınea: >> f = @(x,y) x.^2 + y.^2
Introducci´n a
o Escritas en la Terminal, no se conservan al cerrar la sesi´n.
o
lenguajes avanzados
de computaci´n
o Se podr´ usar para las funciones anteriores. . .
ıan
t´cnica
e
>> g2=@(a,b,c) [(-b+sqrt(b^2-4*a*c))/(2*a) ...
Introducci´n al
o
lenguaje Octave (-b-sqrt(b^2-4*a*c))/(2*a)]
Matrices y arrays. >> id = @(f,a,b) trapz(linspace(a,b,100),...
Estructuras de datos
C´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 fichero
Scripts
Fichero funci´n
o
funci´n con el mismo nombre que funciones autom´ticas.
o a
Fichero funci´n II
o
Fichero funci´n III
o
Funci´n autom´tica
o a
Funci´n autom´tica
o a
II
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
42 / 66
43. Funci´n autom´tica II
o a
´
Indice del
documento
Para usar una funci´n autom´tica como argumento, no hay
o a
Introducci´n a
o que poner “@”:
lenguajes avanzados
de computaci´n
o >> f = @(x) sin(x); int_def(f, 0, 1)
t´cnica
e
Introducci´n al
o
lenguaje Octave
Ejercicios 6
Matrices y arrays.
Estructuras de datos
1. Crea un fichero funci´n para resolver ecuaciones del tipo
o
C´lculo simb´lico
a o
ae−x + b = 0
Visualizaci´n gr´fica
o a 2. Crea una funci´n autom´tica para f (x) = x3 atan( 1+x ).
o a x2
Ficheros en Octave 3. Dibuja la gr´fica de f entre -1 y 1
a
Scripts
Fichero funci´n
o
4. Calcula con int def.m su integral definida en [−1, 1].
Fichero funci´n II
o
Fichero funci´n III
o
Funci´n autom´tica
o a
Funci´n autom´tica
o a
II
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
43 / 66
44. ´
Indice del
documento
Introducci´n a
o
lenguajes avanzados
de computaci´n
o
t´cnica
e
Introducci´n al
o
lenguaje Octave
Matrices y arrays.
Estructuras de datos
C´lculo simb´lico
a o
Desarrollo de algoritmos
Visualizaci´n gr´fica
o a
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´n
o
Importaci´n de
o
datos
44 / 66
45. Algoritmos
´
Indice del
documento
Un programa no suele tener una unica l´
´ ınea de flujo.
Introducci´n a
o Las estructuras de control de flujo pueden ser
lenguajes avanzados
de computaci´n
t´cnica
e
o • repetitivas, permiten la repetici´n de comandos: for y
o
Introducci´n al
o while;
lenguaje Octave
• alternativas, permiten decidir seg´n una condici´n: if y
u o
Matrices y arrays.
Estructuras de datos switch (que no veremos);
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
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´n
o
Importaci´n de
o
datos
45 / 66
46. Bucle for
´
Indice del for i=v
documento
Introducci´n a
o comandos (que dependen de i)
lenguajes avanzados
de computaci´n
o
end
t´cnica
e
Introducci´n al
o v es un vector; en la iteraci´n j, i toma el valor de v(j).
o
lenguaje Octave
Los bucles pueden anidarse. Se recomienda “indentar” los
Matrices y arrays.
Estructuras de datos comandos para facilitar la lectura.
C´lculo simb´lico
a o Cuando sea posible, se recomienda usar operaciones
Visualizaci´n gr´fica
o a vectoriales en vez de bucles.
Ficheros en Octave
Ejemplo: c´lculo del n!
a
Desarrollo de
algoritmos fac = 1;
Algoritmos for i=2:n
Bucle for
Bucle while fac = fac*i;
Estructura if
Estructura if II
end
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuraci´n
o
Importaci´n de
o
datos
46 / 66
47. Bucle while
´
Indice del
documento
while condici´n
o
Introducci´n a
o comandos
lenguajes avanzados
de computaci´n
o end
t´cnica
e
Introducci´n al
o condici´n es una relaci´n l´gica.
o o o
lenguaje Octave
while se suele usar cuando no es sencillo calcular el n´mero
u
Matrices y arrays.
Estructuras de datos de iteraciones.
1
C´lculo simb´lico
a o Ejemplo: c´lculo de ∞ n4
a n=1
Visualizaci´n gr´fica
o a n = 1; sum = 0;
Ficheros en Octave while 1/n^4 > eps
Desarrollo de
algoritmos sum = sum + 1/n^4;
Algoritmos n = n+1;
Bucle for
Bucle while end
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuraci´n
o
Importaci´n de
o
datos
47 / 66
48. Estructura if
´
Indice del
documento
if condici´n 1
o
Introducci´n a
o comandos 1
lenguajes avanzados
de computaci´n
o [ elseif condici´n 2
o
t´cnica
e
comandos 2 ]
Introducci´n al
o
lenguaje Octave [ elseif . . . ]
Matrices y arrays.
Estructuras de datos
[ else
C´lculo simb´lico
a o
comandos n ]
Visualizaci´n gr´fica
o a end
Ficheros en Octave
Si condici´n 1 es cierta, se ejecutan comandos 1.
o
Desarrollo de
algoritmos Si no y condici´n 2 es cierta, se ejecutan comandos 2.
o
Algoritmos
Bucle for
Si ninguna condici´n es cierta, se ejecuta comandos n.
o
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuraci´n
o
Importaci´n de
o
datos
48 / 66
49. Estructura if II
´
Indice del
documento
Ejemplo: funci´n definida a trozos
o
Introducci´n a
o x − 1,
x ≤ −2,
lenguajes avanzados
1 − x2 , −2 < x < 0,
de computaci´n
o
t´cnica
e f (x) =
− 1 , x ≥ 0.
Introducci´n al
o
lenguaje Octave
x+1
Matrices y arrays.
Estructuras de datos function y=f(x)
C´lculo simb´lico
a o if x<=-2
Visualizaci´n gr´fica
o a y=x-1;
Ficheros en Octave
elseif x<0
Desarrollo de
algoritmos y=1-x^2;
Algoritmos
Bucle for
else
Bucle while y=-1/(x+1);
Estructura if
Estructura if II end
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuraci´n
o
Importaci´n de
o
datos
49 / 66
50. Estructura if III
´
Indice del
documento
Para conseguir que f admita argumentos vectoriales, es
Introducci´n a
o necesario usar un bucle (no basta con usar operaciones
lenguajes avanzados
de computaci´n
o elementales, puesto que if no es elemental):
t´cnica
e
function y=f(x)
Introducci´n al
o
lenguaje Octave for i=1:length(x)
Matrices y arrays.
Estructuras de datos
if x(i)<=-2
C´lculo simb´lico
a o y(i)=x(i)-1;
Visualizaci´n gr´fica
o a elseif x(i)<0
Ficheros en Octave y(i)=1-x(i)^2;
Desarrollo de
algoritmos
else
Algoritmos y(i)=-1/(x(i)+1);
Bucle for
Bucle while end
Estructura if end
Estructura if II
Estructura if III
Otros comandos Ahora la gr´fica de f se obtiene con:
a
Otros comandos II
Otros comandos III >> x=-3:0.1:3; plot(x,f(x))
Depuraci´n
o
Importaci´n de
o
datos
50 / 66
51. Otros comandos
´
Indice del
documento
break, interrumpe la ejecuci´n del bucle m´s interno.
o a
Introducci´n a
o %busqueda de la posicion del ´ltimo elemento negativo
u
lenguajes avanzados
de computaci´n
o for i=length(x):-1:1
t´cnica
e
if x(i)<0
Introducci´n al
o
lenguaje Octave break
Matrices y arrays. end
Estructuras de datos
C´lculo simb´lico
a o
end
Visualizaci´n gr´fica
o a disp([’La posici´n buscada es’ num2str(i)])
o
Ficheros en Octave return, interrumpe la ejecuci´n de una funci´n y devuelve el
o o
Desarrollo de
algoritmos
control a quien la haya llamado (otra funci´n o el propio
o
Algoritmos Octave).
Bucle for
Bucle while
if x<=0
Estructura if disp(’log(x) no es real!’)
Estructura if II
Estructura if III return %la funci´n se interrumpe, el programa contin´a
o u
Otros comandos end
Otros comandos II
Otros comandos III
Depuraci´n
o
Importaci´n de
o
datos
51 / 66
52. Otros comandos II
´
Indice del
documento
error, interrumpe completamente la ejecuci´n del programa.
o
Introducci´n a
o if x<=0
lenguajes avanzados
de computaci´n
o error(’Error fatal: log(x) no es real!’)
t´cnica
e
end
Introducci´n al
o
lenguaje Octave input, permite introducir datos por teclado.
Matrices y arrays. >> x=input(’Introduzca un n´mero: ’)
u
Estructuras de datos
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
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´n
o
Importaci´n de
o
datos
52 / 66
53. Otros comandos III
´
Indice del
documento
Ejercicios 7
Introducci´n a
o
lenguajes avanzados
1. Calcula la suma de las componentes de un vector;
de computaci´n
t´cnica
e
o
comp´ralo con el resultado de sum.
a
x como la suma infinita ∞ xn
Introducci´n al
o 2. Calcula e n=0 n! .
lenguaje Octave
3. Construye una funci´n que eval´e f , definida por
o u
Matrices 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 a
Ficheros en Octave
Dibuja su gr´fica.
a
Desarrollo de 4. Escribe una funci´n que solicite al usuario en un bucle,
o
algoritmos
Algoritmos
n´meros por teclado. Si el n´mero es positivo, debe escribir
u u
Bucle for su logaritmo; si es negativo, debe salir del bucle e informar
Bucle while
Estructura if de que no puede calcular dicho logaritmo.
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuraci´n
o
Importaci´n de
o
datos
53 / 66
54. Depuraci´n
o
´
Indice del
documento
Para iniciar la depuraci´n en avisos y errores:
o
Introducci´n a
o debug_on_warning(1); debug_on_error(1);
lenguajes avanzados
de computaci´n
o Para gestionar puntos de interrupci´n:
o
t´cnica
e
dbstop(’nombre_funcion’,15) %parada en la l´nea 15
ı
Introducci´n al
o
lenguaje Octave dbstatus %muestra paradas establecidas
Matrices y arrays. dbclear(’nombre_funcion’,15) %eliminaci´n de la parada
o
Estructuras de datos
C´lculo simb´lico
a o
Para mostrar el fichero: dbtype
Visualizaci´n gr´fica
o a Para saber d´nde estamos parados: dbwhere
o
Ficheros en Octave Ir a la siguiente l´
ınea: dbnext
Desarrollo de
algoritmos
Profundizar en las llamadas a funciones: dbstep
Algoritmos Continuar la ejecuci´n: dbcont
o
Bucle for
Bucle while Cuando la ejecuci´n est´ parada, se pueden ejecutar otros
o a
Estructura if
Estructura if II comandos (ver valor de variables,. . . )
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuraci´n
o
Importaci´n de
o
datos
54 / 66
55. ´
Indice del
documento
Introducci´n a
o
lenguajes avanzados
de computaci´n
o
t´cnica
e
Introducci´n al
o
lenguaje Octave
Matrices y arrays.
Estructuras de datos
C´lculo simb´lico
a o
Importaci´n de datos
o
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
Datos
Datos II
Datos III
Datos IV
Aplicaciones al
c´lculo num´rico
a e
55 / 66
56. Datos
´
Indice del
documento
save, salvado de variables (fichero binario con compresi´n):
o
Introducci´n a
o >> save fichero [variables]
lenguajes avanzados
de computaci´n
o load, carga de variables:
t´cnica
e
>> load fichero [variables]
Introducci´n al
o
lenguaje 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 de
algoritmos • a, escritura de ficheros; ; si existe, se a˜ade.
n
Importaci´n de
datos
o • A˜adiendo + se permite la operaci´n contraria.
n o
Datos
Datos II fclose, cierre de ficheros:
Datos III fclose(fid)
Datos IV
Aplicaciones al
c´lculo num´rico
a e Lectura / escritura con formato binario: fread y fclose.
56 / 66
57. Datos II
´
Indice del
documento
Lectura con formato ascii:
Introducci´n a
o A=fscanf(fid, ’formato’[, sizeA])
lenguajes avanzados
de computaci´n
t´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,
a
lenguaje 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 o
Visualizaci´n gr´fica
o a
• %d: entero;
Ficheros en Octave
• %f: real
Desarrollo de • %s: cadena
algoritmos
Importaci´n de
o textscan, util si texto y n´meros est´n mezclados.
´ u a
datos
Datos Escritura con formato ascii:
Datos II
Datos III fprintf(fid, ’formato’, A,. . . )
Datos IV
Aplicaciones al Escribe las variables A,. . . en el fichero con identificador fid.
c´lculo num´rico
a e
formato puede contener descriptores como n (nueva l´ ınea).
57 / 66
58. Datos III
´
Indice del
documento
Ejemplo de escritura:
Introducci´n a
o fid = fopen(’datos.txt’,’w’);
lenguajes avanzados
de computaci´n
o fprintf(fid,’%f %f ’, [1:2; 3:4]); %por columnas
t´cnica
e
fprintf(fid,’%s %d %f %d %d’,’asd’, 1, pi, [2;3]);
Introducci´n al
o
lenguaje Octave fclose(fid);
Matrices y arrays.
Estructuras de datos
C´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 3
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
Datos
Datos II
Datos III
Datos IV
Aplicaciones al
c´lculo num´rico
a e
58 / 66
59. Datos IV
´
Indice del
documento
Ejemplo de lectura:
Introducci´n a
o fid = fopen(’datos.txt’,’r’);
lenguajes avanzados
de computaci´n
o A=fscanf(fid,’%f’, [2 2]); %lee una matriz 2 x 2
t´cnica
e
S=fscanf(fid,’%s’,1); %lee una cadena
Introducci´n al
o
lenguaje Octave V=fscanf(fid,’%f’); %lee reales hasta EOF
Matrices y arrays.
Estructuras de datos
fclose(fid);
C´lculo simb´lico
a o
Visualizaci´n gr´fica
o a
El resultado es:
Ficheros en Octave A = 1 2
Desarrollo de
algoritmos 3 4
Importaci´n de
o S = asd
datos
Datos V = 1.0000
Datos II 3.1416
Datos III
Datos IV 2.0000
Aplicaciones al
c´lculo num´rico
a e
3.0000
59 / 66
60. ´
Indice del
documento
Introducci´n a
o
lenguajes avanzados
de computaci´n
o
t´cnica
e
Introducci´n al
o
lenguaje Octave
Matrices y arrays.
Estructuras de datos
C´lculo simb´lico
a o
Aplicaciones al c´lculo num´rico
a e
Visualizaci´n gr´fica
o a
Ficheros en Octave
Desarrollo de
algoritmos
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
Interpolaci´n y
o
ajuste
Resoluci´n de
o
ecuaciones
Resoluci´n simb´lica
o o
de ecuaciones
Optimizaci´no
Integraci´n
o
Ecuaciones
60 / 66
diferenciales
61. Interpolaci´n y ajuste
o
´
Indice del
documento
polyfit, interpolaci´n polinomial:
o
Introducci´n a
o >> x=[-5:5]; f=@(x)1./(1+x.^2); %(x,f(x)), 11 nodos de interp.
lenguajes avanzados
de computaci´n
o >> c=polyfit(x,f(x),10) %c, coeficientes del polinomio
t´cnica
e
>> xx=-5:0.1:5; %xx, vector de abscisas para la gr´fica
a
Introducci´n al
o
lenguaje Octave >> plot(x,f(x),’*’, xx,f(xx), xx, polyval(c,xx)) %gr´fico
a
Matrices y arrays. >> legend(’nodos’, ’funci´n’, ’polinomio de interpolaci´n’)
o o
Estructuras de datos
C´lculo simb´lico
a o
interp1, interpolaci´n con rectas a trozos:
o
Visualizaci´n gr´fica
o a
>> plot(xx,f(xx), xx,interp1(x,f(x),xx,’linear’))
Ficheros en Octave
Desarrollo de
interp1, interpolaci´n con splines:
o
algoritmos
>> plot(xx,f(xx), xx,interp1(x,f(x),xx,’spline’))
Importaci´n de
o
datos
Aplicaciones al
polyfit, ajuste polinomial:
c´lculo num´rico
a e >> c=polyfit(x,f(x),2) %grado < num. nodos +1
Interpolaci´n y
o
ajuste >> plot(x,f(x),’*’, xx, polyval(c,xx)) %gr´fico
a
Resoluci´n de
o
ecuaciones
Resoluci´n simb´lica
o o
de ecuaciones
Optimizaci´no
Integraci´n
o
Ecuaciones
61 / 66
diferenciales
62. Resoluci´n de ecuaciones
o
´
Indice del
documento
Resoluci´n del sistema lineal Ax = b:
o
Introducci´n a
o >> x=Ab
lenguajes avanzados
de computaci´n
o Si es SCD, devuelve la unica soluci´n del sistema.
´ o
t´cnica
e
En otro caso, devuelve la soluci´n por m´
o ınimos cuadrados.
Introducci´n al
o
lenguaje Octave fzero, resoluci´n de ecuaciones no lineales:
o
Matrices y arrays. >> f=@cos(x)-x; fzero(f,0)
Estructuras de datos
C´lculo simb´lico
a o
fsolve, resoluci´n de sistemas no lineales:
o
Visualizaci´n gr´fica
o a >> fsolve(@f,[0 0])
Ficheros en Octave Se ha creado, previamente, el fichero funci´n:
o
Desarrollo de
algoritmos function y = f(x)
Importaci´n de
o y(1)=x(1)^2+3*x(1)-1;
datos
Aplicaciones al
y(2)=x(1)*x(2)-x(2)^2+3;
c´lculo num´rico
a e
Interpolaci´n y
o
ajuste
Resoluci´n de
o
ecuaciones
Resoluci´n simb´lica
o o
de ecuaciones
Optimizaci´no
Integraci´n
o
Ecuaciones
62 / 66
diferenciales
63. Resoluci´n simb´lica de ecuaciones
o o
´
Indice del
documento
symlsolve, resoluci´n de ecuaciones lineales:
o
Introducci´n a
o >> symbols; x=sym(’x’); y=sym(’y’);
lenguajes avanzados
de computaci´n
o >> S=symlsolve({x+y-3,x-y+5},{x,y})
t´cnica
e
Introducci´n al
o
S tiene dos elementos: S{1} y S{2}.
lenguaje Octave
symfsolve, resoluci´n de ecuaciones no lineales usando
o
Matrices 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 0
Desarrollo de
algoritmos >> a = symfsolve(f,g,x,1,y,5); %valores iniciales, x=1 e y=5
Importaci´n de
o >> a = symfsolve(f,g,{x==1,y==5}); %´dem
ı
datos
Aplicaciones al
>> a = symfsolve(f,g,[1 5]); %´dem
ı
c´lculo num´rico
a e
Interpolaci´n y
o
Si las variables no se especifican en las condiciones iniciales,
ajuste
Resoluci´n de
o
se toman alfab´ticamente.
e
ecuaciones
Resoluci´n simb´lica
o o
de ecuaciones
Optimizaci´no
Integraci´n
o
Ecuaciones
63 / 66
diferenciales
64. Optimizaci´n
o
´
Indice del
documento
Precisa del paquete optim de Octave-Forge.
Introducci´n a
o fminsearch, b´squeda de un m´
u ınimo (Nelder-Mead
lenguajes avanzados
de computaci´n
o Simplex):
t´cnica
e
>> f=@(x)x^2*cos(x);
Introducci´n al
o
lenguaje Octave >> fminsearch(f,2) %parte de x0 = 2
Matrices 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 (Golden
Ficheros en Octave
Desarrollo de
Search):
algoritmos >> fminbnd(f,2,4) %en [2, 4]
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
Interpolaci´n y
o
ajuste
Resoluci´n de
o
ecuaciones
Resoluci´n simb´lica
o o
de ecuaciones
Optimizaci´no
Integraci´n
o
Ecuaciones
64 / 66
diferenciales
65. Integraci´n
o
´
Indice del
documento
quad, integraci´n definida:
o
Introducci´n a
o >> f=@(x) x*sin(x); quad(f,0,3)
lenguajes avanzados
de computaci´n
o quadl, quadgk y quadv, integraci´n num´rica adaptativa.
o e
t´cnica
e
trapz, integraci´n definida (regla de trapecios):
o
Introducci´n al
o
lenguaje Octave >> x=[0 1 2 3]; y = [0.5 0.85 0.67 0.9];
Matrices y arrays. >> trapz(x,y)
Estructuras de datos
C´lculo simb´lico
a o
dblquad, integraci´n doble:
o
Visualizaci´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 de
algoritmos Para integraci´n triple, triplequad.
o
Importaci´n de
o
datos
Aplicaciones al
c´lculo num´rico
a e
Interpolaci´n y
o
ajuste
Resoluci´n de
o
ecuaciones
Resoluci´n simb´lica
o o
de ecuaciones
Optimizaci´no
Integraci´n
o
Ecuaciones
65 / 66
diferenciales
66. Ecuaciones diferenciales
´
Indice del
documento
Consideremos el problema de valor inicial:
Introducci´n a
o
dx = x2 log(t + 1) − x ,
lenguajes avanzados
de computaci´n
o
t´cnica
e dt t+1
Introducci´n al
o x(0) = 1.
lenguaje Octave
Matrices y arrays.
Estructuras de datos
lsode, resoluci´n de una e.d.o.:
o
C´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 de
algoritmos Se ha creado, previamente, el fichero funci´n:
o
Importaci´n de
o function xp=f(x,t)
datos
Aplicaciones al xp=x^2*log(t+1)-x/(t+1);
c´lculo num´rico
a e
Interpolaci´n y
ajuste
o
Para sistemas de ecuaciones, hay que usar argumentos
Resoluci´n de
o
ecuaciones
vectoriales en la funci´n f.
o
Resoluci´n simb´lica
o o
de ecuaciones
Optimizaci´no
Integraci´n
o
Ecuaciones
66 / 66
diferenciales