introduccion al octave
DESCRIPTION
Breve introduccion al Octave en el contexto del calculo numericoTRANSCRIPT
1 / 66
Introduccion al Octave
Francisco Pena (USC)
29 de diciembre de 2010
Indice del documento
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
2 / 66
1. Introduccion a lenguajes avanzados de computacion tecnica.2. Introduccion al lenguaje Octave.3. Matrices y arrays. Estructuras de datos.4. Calculo simbolico.5. Visualizacion grafica.6. Ficheros en Octave.7. Desarrollo de algoritmos.8. Importacion de datos.9. Aplicaciones al calculo numerico.
Introduccion a lenguajes avanzados de
computacion tecnica
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Lenguajes
Lenguajes II
Lenguajes III
Lenguajes IV
Lenguajes V
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
3 / 66
Lenguajes
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Lenguajes
Lenguajes II
Lenguajes III
Lenguajes IV
Lenguajes V
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
4 / 66
Calculo simbolico: se trabaja con constantes y expresionessimbolicas.
•√
2, constante simbolica que representa la raız de 2;
•(√
2)2
, constante simbolica que representa el numero 2.
• x2, expresion simbolica que representa la funcionmatematica f(x) = x2;
•∫
x2 dx, su integral indefinida es otra expresion simbolica,x3
3+ C.
Un programa que implementa el calculo simbolico suelellamarse “sistema de algebra computacional”.Los mas conocidos son Mathematica, Maple y Maxima.
Lenguajes II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Lenguajes
Lenguajes II
Lenguajes III
Lenguajes IV
Lenguajes V
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
5 / 66
A menor escala, Octave tambien puede operarsimbolicamente.El calculo simbolico es util para
• simplificacion de expresiones,x2 + 2x + 1 → (x + 1)2
• resolucion exacta de ecuaciones lineales o no lineales,{
x2 + xy + y = 3
x2 − 4x + 3 = 0→
(
1
3
)
,(
1
−3/2
)
• calculo de lımites,lımx→1 x2y → y
• calculo de derivadas, integrales indefinidasddx sin(x) → cos(x)
• resolucion exacta de ecuaciones diferenciales.
Lenguajes III
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Lenguajes
Lenguajes II
Lenguajes III
Lenguajes IV
Lenguajes V
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
6 / 66
A veces, el calculo simbolico no puede ser realizado, porlimitaciones del propio sistema o por impedimentos de tipomatematico.Calculo numerico: se trabaja con numeros representables enun ordenador.
•√
2 se almacena como 1.414213562373095;•
(√2)2
, es un numero proximo a 2.• El uso de funciones se limita a calculos que devuelven
numeros:∫ 1
0x2 dx, es un numero proximo a 1/3.
Lenguajes IV
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Lenguajes
Lenguajes II
Lenguajes III
Lenguajes IV
Lenguajes V
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
7 / 66
Con el calculo numerico es posible hallar un resultadoaproximado de los problemas anteriores, incluso cuando elcalculo simbolico falla.Su limitacion reside en que solo obtiene resultados numericos:
• Con calculo numerico podemos saber que la derivada dex2 en x=2 es 4;
• Solo con calculo simbolico podremos ver que la derivadaen todo punto es 2x.
Lenguajes V
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Lenguajes
Lenguajes II
Lenguajes III
Lenguajes IV
Lenguajes V
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
8 / 66
El programa orientado al calculo numerico mas conocido esMatlab.
• GNU Octave pretende ser un clon de software libre deMatlab. Se diferencia en la interfaz grafica y lastoolboxes (por ejemplo, de calculo simbolico).
• Scilab ha sido desarrollado por INRIA. No es totalmentecompatible con Matlab, pero se trabaja en un traductorde Matlab a Scilab.
Otras herramientas de calculo cientıfico son:
• R es un lenguaje desarrollado principalmente para analisisestadıstico;
• Sage es una aplicacion para calculo cientıfico desarrolladaa partir de Python.
Introduccion al lenguaje Octave
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Introduccion
Introduccion II
Primeros comandos
Variables
Variables II
Variables IIIRecuperacion decomandos
Expresiones escalares
Expresiones escalaresII
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones al
9 / 66
Introduccion
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Introduccion
Introduccion II
Primeros comandos
Variables
Variables II
Variables IIIRecuperacion decomandos
Expresiones escalares
Expresiones escalaresII
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones al
10 / 66
GNU Octave es un language pensado para el calculonumerico (http://www.gnu.org/software/octave/) que poseeuna interfaz de lınea de comando.Octave-Forge es una comunidad de desarrollo queproporciona paquetes para varios problemas. Los paquetesdisponibles se describen enhttp://octave.sourceforge.net/packages.php.QtOctave es una interfaz grafica para Octave(http://qtoctave.wordpress.com/).
Existen instaladores para GNU Linux y Mac OS.El paquete precompilado para Windows esta en Octave-Forge(oct. 2010).
• Se recomienda activar los paquetes symbolic y optim.• Comprobar bugs como: pkg rebuild -noauto oct2mat
Introduccion II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Introduccion
Introduccion II
Primeros comandos
Variables
Variables II
Variables IIIRecuperacion decomandos
Expresiones escalares
Expresiones escalaresII
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones al
11 / 66
Si usamos QtOctave, podremos distinguir varias ventanas:
• Terminal, para escribir los comandos Octave;• Commands’ List, refleja los comandos ya escritos;• Variables’ List, refleja las variables creadas;• Navigator, muestra la carpeta por defecto;• Editor, permite editar ficheros.
Primeros comandos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Introduccion
Introduccion II
Primeros comandos
Variables
Variables II
Variables IIIRecuperacion decomandos
Expresiones escalares
Expresiones escalaresII
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones al
12 / 66
Al ser un lenguaje interpretado, los comandos se ejecutanuno a uno, terminados con retorno de carro.diary, para volcar lo mostrado a un fichero:>> diary %vuelca al fichero ’diary’ de la capeta por defecto
>> diary file %ıdem al fichero ’file’
>> diary off %interrumpe el volcado
help, para solicitar ayuda:>> help diary %da ayuda sobre el comando ’diary’
La ayuda online esta enhttp://www.gnu.org/software/octave/doc/interpreter/
pwd, para ver la carpeta por defecto.cd, para cambiar de carpeta:>> cd Z:\mi_carpeta %cambia la carpeta por defecto
>> cd .. %se desplaza a la carpeta padre
ls, para ver el contenido de la carpeta.
Variables
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Introduccion
Introduccion II
Primeros comandos
Variables
Variables II
Variables IIIRecuperacion decomandos
Expresiones escalares
Expresiones escalaresII
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones al
13 / 66
Las variables numericas no necesitan declararse:>> a=1/3
Cuando se asigna otro valor, el anterior desaparece:>> a=1/6
Las variables creadas se guardan en la Variables’ List:>> whos
Todo calculo no asignado se guarda en la variable ans:>> 1/4
format, distintas formas de ver (no de calular) el valor:>> format short %punto fijo, 4 decimales
>> format long %punto fijo, 15 decimales
>> format short e %punto flotante, 4 decimales
>> format long e %punto flotante, 15 decimales
Variables II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Introduccion
Introduccion II
Primeros comandos
Variables
Variables II
Variables IIIRecuperacion decomandos
Expresiones escalares
Expresiones escalaresII
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones al
14 / 66
clear, borra variables:>> clear a %borra la variable a
>> clear %borra todas las variables
Los nombres de variables deben debe tener 31 caracterescomo maximo, empezar por una letra y contener letras,numeros y “ ”, pero no espacios en blanco.>> n_2=44 %es correcto, no ası 2_n o n 2
Se distingue entre mayusculas y minusculas.Varios comandos en linea se separan con “,” o “;”.>> a=4; b2=10^(2-a)
Los terminados con “;” se ejecutan sin mostrar el resultado.Todo lo que sigue a % se considera un comentario.
Variables III
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Introduccion
Introduccion II
Primeros comandos
Variables
Variables II
Variables IIIRecuperacion decomandos
Expresiones escalares
Expresiones escalaresII
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones al
15 / 66
Un comando se extiende por varias lıneas con . . . :>> Nombre_muy_largo=...
2.e-4*23
No se recomienda usar nombres propios de Octave:
• pi, valor de π,• i, j, valor del numero imaginario,• inf, representa el infinto, ∞,• NaN, representa la indeterminacion.
Ojo, el numero e se escribe evaluando la exponecial, exp(1),pero e2 no se escribe exp(1)^2 sino exp(2).
Recuperacion de comandos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Introduccion
Introduccion II
Primeros comandos
Variables
Variables II
Variables IIIRecuperacion decomandos
Expresiones escalares
Expresiones escalaresII
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones al
16 / 66
Solo se puede modificar el comando de la linea actual.Para recuperar un comando previo podemos:
• copiarlo desde la ventana Commands’ List o• usar el cursor “flecha hacia arriba” ↑ o
• escribir las primeras letras del comando y pulsar ↑ paranavegar solo por los comandos que empiezan por esasletras.
Con la tecla “Esc” se borra lo escrito.
Expresiones escalares
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Introduccion
Introduccion II
Primeros comandos
Variables
Variables II
Variables IIIRecuperacion decomandos
Expresiones escalares
Expresiones escalaresII
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones al
17 / 66
Las operaciones basicas son + - * / ∧
La prioridad es la misma que en las calculadoras.Se pueden usar parentesis para cambiarlas.Ojo, 1/6 no es 1/2*3 sino 1/(2*3).Hay muchas funciones intrınsecas (ver ayuda online):
• trigonometicas: sin, cos, tan, sec, csc,. . .• trigonometicas inversas: asin, acos, . . .• logarıtmicas: log, log10, . . .• para complejos: imag, real, . . .• enteros: floor, round, mod, sign, . . .• otras: sqrt, abs, sinh, . . .
Expresiones escalares II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Introduccion
Introduccion II
Primeros comandos
Variables
Variables II
Variables IIIRecuperacion decomandos
Expresiones escalares
Expresiones escalaresII
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones al
18 / 66
Ejercicios 1
1. Inicia el volcado con diary.2. Calcula eiπ + 1.3. Calcula 0/0.4. Guarda | cos(3)2| − 6
32 y | cos(32)| − 6
3·2en dos variables.
5. Comprueba que se han guardado en la Variables’ List.6. Borra las variables.7. Termina el volcado y comprueba el contenido del fichero.
Matrices y arrays. Estructuras de datos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Vectores
Vectores II
Vectores III
Vectores IV
Matrices
Matrices II
Matrices III
Otros datos
Estructuras y celdas
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
19 / 66
Vectores
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Vectores
Vectores II
Vectores III
Vectores IV
Matrices
Matrices II
Matrices III
Otros datos
Estructuras y celdas
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
20 / 66
Vectores dados manualmente:>> v=[1 3 5 7] %fila, componentes separadas por " " o ","
>> w=[1;3;5;7] %columna, componentes separadas por ";"
Ojo, cuidado con los espacios en las filas: [2, 4] se obtienecon [2 1+3] o [2, 1 +3], pero no con [2 1 +3].Vectores con una ley de formacion:>> q=2:2:20 %inicio:incremento:fin
>> y=2:2:21 %es el mismo vector
>> v=8:-1:1 %va de 8 a 1
>> r=1:5 %si el incremento es 1, se puede omitir
>> q2=linspace(2,20,10) %inicio, fin, num. componentes
>> m=ones(1,20) %fila de 20 unos
>> n=zeros(20,1) %columna de 20 ceros
Vectores II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Vectores
Vectores II
Vectores III
Vectores IV
Matrices
Matrices II
Matrices III
Otros datos
Estructuras y celdas
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
21 / 66
Las operaciones basicas matriciales son + - * / ∧
>> 3*m %fila de 20 treses
>> m*n %multiplicacion "fila por columna"
Las operaciones basicas elementales son + - .* ./ .∧
>> m.*m %multiplicacion "elemento a elemento"
Las funciones intrınsecas son elementales.Funciones especıficas para vectores:
• ’, trasposicion,• length, numero de componentes,• norm, norma,• dot, producto escalar,• cross, producto cruzado.
Vectores III
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Vectores
Vectores II
Vectores III
Vectores IV
Matrices
Matrices II
Matrices III
Otros datos
Estructuras y celdas
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
22 / 66
Extraccion de componentes:>> v(2) %devuelve la 2a componente
>> v(2:4) %devuelve [v(2) v(3) v(4)]
>> v([1 5 3]) %devuelve [v(1) v(5) v(3)]
>> ind=[1 5 3]; v(ind) %ıdem
>> v(4:end-1) %componentes de la 4a a la penultima
Ejercicios 2
1. Crea dos vectores fila, u y v, de la misma dimension.2. Muestra su numero de componentes.3. Sumalos.4. Multiplica u por el traspuesto de v.
Vectores IV
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Vectores
Vectores II
Vectores III
Vectores IV
Matrices
Matrices II
Matrices III
Otros datos
Estructuras y celdas
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
23 / 66
5. Multiplica el traspuesto de u por v.6. Calcula la norma de u.7. Calcula el seno de cada componente de u.8. Divide cada componente de u por la correspondiente de v.9. Eleva al cubo cada componente de u.10. Suma los elementos de ındice par de u con los elementos
de ındice impar de v. ¿Es siempre posible?11. Toma los elementos 1, 5 y 4 de u y sumale los tres ultimos
valores de v. Guarda el resultado en las posiciones dadaspara u.
Matrices
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Vectores
Vectores II
Vectores III
Vectores IV
Matrices
Matrices II
Matrices III
Otros datos
Estructuras y celdas
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
24 / 66
Matrices dadas manualmente, se introducen por filas:>> M=[1 2 5; 2 -1 6; 3 0 -1] %en filas, usamos " " o ","
Matrices con una ley de formacion:>> A=ones(2,3) %matriz 2 x 3 de unos
>> B=zeros(4) %matriz 4 x 4 de ceros
>> C=eye(4,5) %matriz identidad 4 x 5
>> C=rand(2) %matriz aleatoria 2 x 2, 0<=C<=1
Como en vectores, se distingue entre operaciones matriciales(* / ∧) y elementales (.* ./ .∧).Las funciones intrınsecas tambien son elementales.Algunas funciones especıficas para matrices: ’, size, det,rank, inv, eig, . . .
Matrices II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Vectores
Vectores II
Vectores III
Vectores IV
Matrices
Matrices II
Matrices III
Otros datos
Estructuras y celdas
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
25 / 66
Resolucion del sistema lineal Ax = b:>> x=A\b
Si es SCD, devuelve la unica solucion del sistema.En otro caso, devuelve la solucion por mınimos cuadrados.(Ver tambien chol, lu, . . . )Extraccion de componentes:>> M(2,3) %devuelve la componente (2,3)
>> M(:,3) %devuelve la 3a columna
>> M(2,:) %devuelve la 2a fila
>> M([1 5 3],1:2) %matriz orlada 3 x 2
>> triu(M), tril(M), diag(M) %triangular sup., inf. y diagonal
>> I=diag(diag(M)) %matriz diagonal, con diag(I)=diag(M)
Yuxtaposicion de matrices:>> A=[1 2; 5 -2]; B=[-10 30; A] %a~nadimos filas
>> C=[eye(2) zeros(2,2); zeros(2,2) A] %diagonal por bloques
Matrices III
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Vectores
Vectores II
Vectores III
Vectores IV
Matrices
Matrices II
Matrices III
Otros datos
Estructuras y celdas
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
26 / 66
Ejercicios 3
1. Crea dos matrices cuadradas, A y B, del mismo tamano.2. Muestra su numero de filas y columnas.3. Sumalas, multiplıcalas matricial y elementalmente.4. Calcula la traspuesta, el rango y el determinante de A.5. Calcula los autovalores A.6. Resuelve el sistema Ax=[1;1;...;1].7. Extrae los elementos interseccion de las dos primeras filas y
columnas de A. Idem de las dos ultimas filas y columnas deB.
8. Crea una matriz diagonal por bloques, que tenga en ladiagonal las dos matrices anteriores.
Otros datos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Vectores
Vectores II
Vectores III
Vectores IV
Matrices
Matrices II
Matrices III
Otros datos
Estructuras y celdas
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
27 / 66
Complejos: 1+3*i o 1+3i, funciones como real, imag,conj, isreal, angle, abs, . . .Cadenas: a= ’$de 5&’, b =’don’’t’
• Concatenacion: c = [’sdf’ ’asd’]
• Conversion de numeros a cadenas: num2str(2)• Impresion del valor de una variable: disp(variable)
>> a=25; disp([’El resultado es’ num2str(a) ’ grados’])
Logicos: entero no nulo (1) es verdadero, 0 es falso
• Operadores relacionales: < > <= >= == ~=
• Operadores logicos: & | ~ xor any all
Estructuras y celdas
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Vectores
Vectores II
Vectores III
Vectores IV
Matrices
Matrices II
Matrices III
Otros datos
Estructuras y celdas
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
28 / 66
Estructuras: agrupacion de datos con nombre>> circulo.centro=[0 1]
>> circulo.radio=4
Celdas: agrupacion de datos numerados>> dato{1} = 23
>> dato{2} = [2 8]
>> dato{3} = [0 9; 5 7]
Ciertos comandos devuelven celdas:>> symbols; x=sym(’x’); y=sym(’y’);
>> S=symlsolve({x+y-3,x-y+5},{x,y})
S tiene dos elementos: S{1} y S{2}.
Calculo simbolico
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Calculo simbolico
Calculo simbolico II
Calculo simbolico III
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
29 / 66
Calculo simbolico
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Calculo simbolico
Calculo simbolico II
Calculo simbolico III
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
30 / 66
Precisa del paquete symbolic de Octave-Forge.El calculo simbolico se carga con symbols
Las variables simbolicas deben declararse:>> x = sym(’x’)
Toda expresion que las involucre sera simbolica:>> f = x^2 %f es una expresion simbolica
La asignacion las convierte en numericas:>> x = 5 %x ha dejado de ser simbolica
En simbolico, las funciones intrınsecas cambian de nombre:>> f = Sin(Pi*x); g = Cos(x); h = Exp(x); i = Sqrt(x)
(ver http://octave.sourceforge.net/symbolic/overview.html)collect, recolecta los terminos como polinomio:>> f = 2*x+x+3; collect(f,x)
splot, pinta una funcion simbolica:>> i = Exp(x); splot(i,x,[-1 1])
Calculo simbolico II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Calculo simbolico
Calculo simbolico II
Calculo simbolico III
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
31 / 66
subs, evalua una expresion:>> g = Cos(x); p = subs(g,x,1.3)
to_double, convierte un valor simbolico a numerico:>> to_double(p) %p es el resultado anterior
differentiate, calcula la derivada:>> f = x^2; differentiate(f,x,2) %derivada segunda
symlsolve, resuelve ecuaciones lineales:>> y=sym(’y’); symlsolve({x+y-2,x-y-1},{x,y})
symfsolve, resuelve ecuaciones no lineales:>> f = x^2+3*x-1; g= x*y-y^2+3; symfsolve(f,g,[1,5])
No esta implementado el calculo simbolico de lımites,integracion, ecuaciones diferenciales, graficas de funciones dedos variables. . . (oct 2010)
Calculo simbolico III
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Calculo simbolico
Calculo simbolico II
Calculo simbolico III
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
32 / 66
Ejercicios 4
1. Crea una expresion simbolica de una variable.3. Muestra su grafica en diferentes dominios.5. Evaluala en distintos puntos.4. Calcula su derivada.6. Resuelve un sistema lineal, y otro no lineal, de 2 ecuaciones
y dos incognitas.
Visualizacion grafica
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Graficos numericos
Graficos numericos IIGraficos numericosIII
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
33 / 66
Graficos numericos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Graficos numericos
Graficos numericos IIGraficos numericosIII
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
34 / 66
plot, graficas de funciones de una variable:>> x = 0:0.5:5; plot(x, sin(x)) %cambiar 0.5 a 0.1
Varios graficos en la misma ventana:>> hold on; plot(x, cos(x))
>> hold off; plot(x, sin(2*x), x, cos(3*x))
Opciones de plot, colores, lıneas y marcas:>> plot(x, sin(x), ’r*’, x, cos(x), ’-.g’)
Informacion adicional:>> title(’Dos curvas’) %titulo
>> xlabel(’Abscisas’); ylabel(’Ordenadas’) %texto en ejes
>> legend(’Curva 1’,’Curva 2’) %leyenda
>> axis([-1 11 -1.5 1.5]) %escala
figure, crea una nueva ventana de graficos.line, crea lineas personalizadas.>> line(x,cos(x), ’linewidth’, 4)
Graficos numericos II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Graficos numericos
Graficos numericos IIGraficos numericosIII
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
35 / 66
Curvas en el plano y el espacio:>> t=0:0.1:2*pi; plot(exp(-t).*cos(2*t), exp(-t).*sin(2*t))
>> plot3(cos(t),t.*sin(t),sqrt(t))
(Observese el uso de .*)Escala logarıtmica, semilogx, semilogy, loglog:>> x = 0:0.1:5; semilogy(x, exp(-x))
Coordenadas polares, polar:>> t = 0:.01:2*pi; polar(t,sin(2*t).*cos(2*t))
Analisis estadıstico:>> errorbar(x,sin(x),rand(size(x)))
>> hist([2,3,3,4,4.5])
Graficas de funciones de dos variables:>> [x,y]=meshgrid(-2:.2:2, -2:.2:2);
>> surf(x, y, x.*exp(-x.^2-y.^2))
>> contour(x, y, x.*exp(-x.^2-y.^2))
Graficos numericos III
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Graficos numericos
Graficos numericos IIGraficos numericosIII
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
36 / 66
Subgraficos:>> x = -2:0.1:2;
>> subplot(1,2,1); plot(x,sin(x),’r’); title(’Primer grafico’)
>> subplot(1,2,2); plot(x,cos(x),’r’); title(’Segundo grafico’)
print, impresion de la ventana de graficos activa:>> print -dpng ’grafica.png’
Ejercicios 5
1. Crea una ventana con dos graficos. Anade informacionadicional.
2. Crea un grafico de contorno para una funcion de dosvariables en una ventana aparte.
3. Salva el grafico en un fichero.
Ficheros en Octave
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
37 / 66
Scripts
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
38 / 66
Es un fichero con una secuencia de comandos.Lleva extension .mPara que Octave lo encuentre, su carpeta debe
a) ser la carpeta por defecto ob) anadirse a las rutas de busqueda con addpath.
Para ejecutarlo, escribir el nombre sin extension en laTerminal.Ejemplo: script grado2.m, para resolver 3x2 + 5x + 2 = 0.
a=3; b=5; c=2;
D=b^2-4*a*c;
x(1)=(-b+sqrt(D))/(2*a);
x(2)=(-b-sqrt(D))/(2*a);
Fichero funcion
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
39 / 66
¡Los script usan la Variables’ List para sus variables!Los ficheros de funcion son scripts con su propio espacio devariables.La primera lınea de un fichero de funcion es del tipo:
function [y1, y2,...] = nombre(x1, x2,...)El nombre debe coincidir con el nombre del fichero.Las variables de entrada x1, x2,... se pasan por copia.La Variables’ List solo recibe las variables de salida y1, y2,...El valor de una variable de entrada solo se modifica sitambien es de salida.
Fichero funcion II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
40 / 66
Ejemplo: fichero funcion fgrado2.m.
function x=fgrado2(a,b,c)
D=b^2-4*a*c;
x(1)=(-b+sqrt(D))/(2*a);
x(2)=(-b-sqrt(D))/(2*a);
Para ejecutarlo, hay que indicar los valores de entrada:>> fgrado2(3,5,2)
Podemos usarlo facilmente para resolver otros polinomios.
Fichero funcion III
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
41 / 66
Para usar un fichero funcion como argumento, hay que poner“@” antes del nombre. Consideremos la funcion:
function y=int_def(f,a,b)
%integral definida de f entre a y b (trapecios)
t=linspace(a,b,100);
y = trapz(t, f(t));
La funcion sin de Octave es un fichero funcion:>> int_def(@sin, 0, 1)
Funcion automatica
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
42 / 66
Se define en una lınea: >> f = @(x,y) x.^2 + y.^2
Escritas en la Terminal, no se conservan al cerrar la sesion.Se podrıan usar para las funciones anteriores. . .>> g2=@(a,b,c) [(-b+sqrt(b^2-4*a*c))/(2*a) ...
(-b-sqrt(b^2-4*a*c))/(2*a)]
>> id = @(f,a,b) trapz(linspace(a,b,100),...
f(linspace(a,b,100)))
. . . pero se usan, generalmente, para funciones sencillas.Ojo, debemos evitar tener en la carpeta de trabajo ficherofuncion con el mismo nombre que funciones automaticas.
Funcion automatica II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numerico
43 / 66
Para usar una funcion automatica como argumento, no hayque poner “@”:>> f = @(x) sin(x); int_def(f, 0, 1)
Ejercicios 6
1. Crea un fichero funcion para resolver ecuaciones del tipoae−x + b = 0
2. Crea una funcion automatica para f(x) = x3 atan(1+xx2 ).
3. Dibuja la grafica de f entre -1 y 14. Calcula con int def.m su integral definida en [−1, 1].
Desarrollo de algoritmos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion dedatos
Aplicaciones al
44 / 66
Algoritmos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion dedatos
Aplicaciones al
45 / 66
Un programa no suele tener una unica lınea de flujo.Las estructuras de control de flujo pueden ser
• repetitivas, permiten la repeticion de comandos: for ywhile;
• alternativas, permiten decidir segun una condicion: if yswitch (que no veremos);
Bucle for
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion dedatos
Aplicaciones al
46 / 66
for i=v
comandos (que dependen de i)end
v es un vector; en la iteracion j, i toma el valor de v(j).Los bucles pueden anidarse. Se recomienda “indentar” loscomandos para facilitar la lectura.Cuando sea posible, se recomienda usar operacionesvectoriales en vez de bucles.Ejemplo: calculo del n!
fac = 1;
for i=2:n
fac = fac*i;
end
Bucle while
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion dedatos
Aplicaciones al
47 / 66
while condicioncomandos
end
condicion es una relacion logica.while se suele usar cuando no es sencillo calcular el numerode iteraciones.Ejemplo: calculo de
∑
∞
n=11
n4
n = 1; sum = 0;
while 1/n^4 > eps
sum = sum + 1/n^4;
n = n+1;
end
Estructura if
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion dedatos
Aplicaciones al
48 / 66
if condicion 1comandos 1
[ elseif condicion 2comandos 2 ]
[ elseif . . . ][ else
comandos n ]end
Si condicion 1 es cierta, se ejecutan comandos 1.Si no y condicion 2 es cierta, se ejecutan comandos 2.Si ninguna condicion es cierta, se ejecuta comandos n.
Estructura if II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion dedatos
Aplicaciones al
49 / 66
Ejemplo: funcion definida a trozos
f(x) =
x − 1, x ≤ −2,
1 − x2, −2 < x < 0,
− 1
x + 1, x ≥ 0.
function y=f(x)
if x<=-2
y=x-1;
elseif x<0
y=1-x^2;
else
y=-1/(x+1);
end
Estructura if III
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion dedatos
Aplicaciones al
50 / 66
Para conseguir que f admita argumentos vectoriales, esnecesario usar un bucle (no basta con usar operacioneselementales, puesto que if no es elemental):
function y=f(x)
for i=1:length(x)
if x(i)<=-2
y(i)=x(i)-1;
elseif x(i)<0
y(i)=1-x(i)^2;
else
y(i)=-1/(x(i)+1);
end
end
Ahora la grafica de f se obtiene con:>> x=-3:0.1:3; plot(x,f(x))
Otros comandos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion dedatos
Aplicaciones al
51 / 66
break, interrumpe la ejecucion del bucle mas interno.%busqueda de la posicion del ultimo elemento negativo
for i=length(x):-1:1
if x(i)<0
break
end
end
disp([’La posicion buscada es’ num2str(i)])
return, interrumpe la ejecucion de una funcion y devuelve elcontrol a quien la haya llamado (otra funcion o el propioOctave).if x<=0
disp(’log(x) no es real!’)
return %la funcion se interrumpe, el programa continua
end
Otros comandos II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion dedatos
Aplicaciones al
52 / 66
error, interrumpe completamente la ejecucion del programa.if x<=0
error(’Error fatal: log(x) no es real!’)
end
input, permite introducir datos por teclado.>> x=input(’Introduzca un numero: ’)
Otros comandos III
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion dedatos
Aplicaciones al
53 / 66
Ejercicios 7
1. Calcula la suma de las componentes de un vector;comparalo con el resultado de sum.
2. Calcula ex como la suma infinita∑
∞
n=0xn
n!.
3. Construye una funcion que evalue f , definida por
f(x) =
{
2 sen2(2x), x ≤ 0,
1 − e−x, x > 0.
Dibuja su grafica.4. Escribe una funcion que solicite al usuario en un bucle,
numeros por teclado. Si el numero es positivo, debe escribirsu logaritmo; si es negativo, debe salir del bucle e informarde que no puede calcular dicho logaritmo.
Depuracion
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Depuracion
Importacion dedatos
Aplicaciones al
54 / 66
Para iniciar la depuracion en avisos y errores:debug_on_warning(1); debug_on_error(1);
Para gestionar puntos de interrupcion:dbstop(’nombre_funcion’,15) %parada en la lınea 15
dbstatus %muestra paradas establecidas
dbclear(’nombre_funcion’,15) %eliminacion de la parada
Para mostrar el fichero: dbtypePara saber donde estamos parados: dbwhereIr a la siguiente lınea: dbnextProfundizar en las llamadas a funciones: dbstepContinuar la ejecucion: dbcont
Cuando la ejecucion esta parada, se pueden ejecutar otroscomandos (ver valor de variables,. . . )
Importacion de datos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Aplicaciones alcalculo numerico
55 / 66
Datos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Aplicaciones alcalculo numerico
56 / 66
save, salvado de variables (fichero binario con compresion):>> save fichero [variables]
load, carga de variables:>> load fichero [variables]
fopen, apertura de ficheros:fid=fopen(’fichero’,’permiso’)
Los permisos pueden ser:
• r, lectura de ficheros existentes.• w, escritura de ficheros; si existe, se borra.• a, escritura de ficheros; ; si existe, se anade.• Anadiendo + se permite la operacion contraria.
fclose, cierre de ficheros:fclose(fid)
Lectura / escritura con formato binario: fread y fclose.
Datos II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Aplicaciones alcalculo numerico
57 / 66
Lectura con formato ascii:A=fscanf(fid, ’formato’[, sizeA])
Lee datos del fichero con identificador fid y los guarda en A.sizeA puede ser un natural o un array [m,n]; si esta presente,lee sizeA elementos.formato es una cadena que describe los elementos a leer:
• %d: entero;• %f: real• %s: cadena
textscan, util si texto y numeros estan mezclados.
Escritura con formato ascii:fprintf(fid, ’formato’, A,. . . )
Escribe las variables A,. . . en el fichero con identificador fid.formato puede contener descriptores como \n (nueva lınea).
Datos III
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Aplicaciones alcalculo numerico
58 / 66
Ejemplo de escritura:
fid = fopen(’datos.txt’,’w’);
fprintf(fid,’%f %f ’, [1:2; 3:4]); %por columnas
fprintf(fid,’%s %d %f %d %d’,’asd’, 1, pi, [2;3]);
fclose(fid);
El contenido de datos.txt es:1.000000 3.000000 2.000000 4.000000 asd 1 3.141593 2 3
Datos IV
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Aplicaciones alcalculo numerico
59 / 66
Ejemplo de lectura:
fid = fopen(’datos.txt’,’r’);
A=fscanf(fid,’%f’, [2 2]); %lee una matriz 2 x 2
S=fscanf(fid,’%s’,1); %lee una cadena
V=fscanf(fid,’%f’); %lee reales hasta EOF
fclose(fid);
El resultado es:
A = 1 2
3 4
S = asd
V = 1.0000
3.1416
2.0000
3.0000
Aplicaciones al calculo numerico
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numericoInterpolacion yajuste
Resolucion deecuacionesResolucion simbolicade ecuaciones
Optimizacion
Integracion
Ecuacionesdiferenciales
60 / 66
Interpolacion y ajuste
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numericoInterpolacion yajuste
Resolucion deecuacionesResolucion simbolicade ecuaciones
Optimizacion
Integracion
Ecuacionesdiferenciales
61 / 66
polyfit, interpolacion polinomial:>> x=[-5:5]; f=@(x)1./(1+x.^2); %(x,f(x)), 11 nodos de interp.
>> c=polyfit(x,f(x),10) %c, coeficientes del polinomio
>> xx=-5:0.1:5; %xx, vector de abscisas para la grafica
>> plot(x,f(x),’*’, xx,f(xx), xx, polyval(c,xx)) %grafico
>> legend(’nodos’, ’funcion’, ’polinomio de interpolacion’)
interp1, interpolacion con rectas a trozos:>> plot(xx,f(xx), xx,interp1(x,f(x),xx,’linear’))
interp1, interpolacion con splines:>> plot(xx,f(xx), xx,interp1(x,f(x),xx,’spline’))
polyfit, ajuste polinomial:>> c=polyfit(x,f(x),2) %grado < num. nodos +1
>> plot(x,f(x),’*’, xx, polyval(c,xx)) %grafico
Resolucion de ecuaciones
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numericoInterpolacion yajuste
Resolucion deecuacionesResolucion simbolicade ecuaciones
Optimizacion
Integracion
Ecuacionesdiferenciales
62 / 66
Resolucion del sistema lineal Ax = b:>> x=A\b
Si es SCD, devuelve la unica solucion del sistema.En otro caso, devuelve la solucion por mınimos cuadrados.fzero, resolucion de ecuaciones no lineales:>> f=@cos(x)-x; fzero(f,0)
fsolve, resolucion de sistemas no lineales:>> fsolve(@f,[0 0])
Se ha creado, previamente, el fichero funcion:function y = f(x)
y(1)=x(1)^2+3*x(1)-1;
y(2)=x(1)*x(2)-x(2)^2+3;
Resolucion simbolica de ecuaciones
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numericoInterpolacion yajuste
Resolucion deecuacionesResolucion simbolicade ecuaciones
Optimizacion
Integracion
Ecuacionesdiferenciales
63 / 66
symlsolve, resolucion de ecuaciones lineales:>> symbols; x=sym(’x’); y=sym(’y’);
>> S=symlsolve({x+y-3,x-y+5},{x,y})
S tiene dos elementos: S{1} y S{2}.symfsolve, resolucion de ecuaciones no lineales usandofsolve():>> symbols; x=sym(’x’); y=sym(’y’);
>> f=x^2+3*x-1; g=x*y-y^2+3;
>> a = symfsolve(f,g); %los valores iniciales se toman a 0
>> a = symfsolve(f,g,x,1,y,5); %valores iniciales, x=1 e y=5
>> a = symfsolve(f,g,{x==1,y==5}); %ıdem
>> a = symfsolve(f,g,[1 5]); %ıdem
Si las variables no se especifican en las condiciones iniciales,se toman alfabeticamente.
Optimizacion
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numericoInterpolacion yajuste
Resolucion deecuacionesResolucion simbolicade ecuaciones
Optimizacion
Integracion
Ecuacionesdiferenciales
64 / 66
Precisa del paquete optim de Octave-Forge.fminsearch, busqueda de un mınimo (Nelder-MeadSimplex):>> f=@(x)x^2*cos(x);
>> fminsearch(f,2) %parte de x0 = 2
Se aplica a funciones multidimensionales:>> f = @(x) x(1)^2+x(2)^2; fminsearch(f,[1 1])
fminbnd, busqueda de un mınimo con restricciones (GoldenSearch):>> fminbnd(f,2,4) %en [2, 4]
Integracion
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numericoInterpolacion yajuste
Resolucion deecuacionesResolucion simbolicade ecuaciones
Optimizacion
Integracion
Ecuacionesdiferenciales
65 / 66
quad, integracion definida:>> f=@(x) x*sin(x); quad(f,0,3)
quadl, quadgk y quadv, integracion numerica adaptativa.trapz, integracion definida (regla de trapecios):>> x=[0 1 2 3]; y = [0.5 0.85 0.67 0.9];
>> trapz(x,y)
dblquad, integracion doble:>> f=@(x,y) sin(pi.*x.*y).*sqrt(x.*y);
>> I=dblquad(f, 0,1, 0,1)
Para integracion triple, triplequad.
Ecuaciones diferenciales
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion allenguaje Octave
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Octave
Desarrollo dealgoritmos
Importacion dedatos
Aplicaciones alcalculo numericoInterpolacion yajuste
Resolucion deecuacionesResolucion simbolicade ecuaciones
Optimizacion
Integracion
Ecuacionesdiferenciales
66 / 66
Consideremos el problema de valor inicial:
dx
dt= x2 log(t + 1) − x
t + 1,
x(0) = 1.
lsode, resolucion de una e.d.o.:>> t = 0:0.1:3;
>> x = lsode(f,1,t)
>> plot(t,x)
Se ha creado, previamente, el fichero funcion:function xp=f(x,t)
xp=x^2*log(t+1)-x/(t+1);
Para sistemas de ecuaciones, hay que usar argumentosvectoriales en la funcion f.