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