1 / 65
Introduccion a linguaxes avanzadas de computacion: Matlab nadocencia en Quımica
J. A. Alvarez, B. Pateiro, F. Pena
7 de septiembre de 2010
Indice del documento
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
2 / 65
1. Introduccion a lenguajes avanzados de computacion tecnica.2. Introduccion al programa Matlab.3. Matrices y arrays. Estructuras de datos.4. Calculo simbolico.5. Visualizacion grafica.6. Ficheros en Matlab.7. Desarrollo de algoritmos.8. Importacion de datos.
Introduccion a lenguajes avanzados de
computacion tecnica
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Lenguajes
Lenguajes II
Lenguajes III
Lenguajes IV
Lenguajes V
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
3 / 65
Lenguajes
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Lenguajes
Lenguajes II
Lenguajes III
Lenguajes IV
Lenguajes V
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
4 / 65
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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
5 / 65
A menor escala, Matlab 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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
6 / 65
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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
7 / 65
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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
8 / 65
El programa orientado al calculo numerico mas conocido esMatlab.
• 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 programa Matlab
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
9 / 65
Introduccion
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
10 / 65
Se compone de un nucleo de calculo (o kernel), una interfazgrafica y herramientas (o toolboxes), paquetes de comandosespecializados que deben indicarse en el momento de lainstalacion. Mas informacion enhttp://www.mathworks.com/products/product_listing/
Existe instalador para Windows, GNU Linux y Mac OS.Instalado desde www.usc.es, precisa de conexion al servidorde licencias (solo posible desde el dominio USC).La version de estudiante 5.3 para Windows esta en labiblioteca de Quımica (signatura A-ES-84-J-2). Hay algunasdiferencias entre ambas (ver Anexo). En Windows Vista usar“modo compatibilidad”.
Introduccion II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
11 / 65
Aunque Matlab se puede ejecutar desde lınea de comando,lo habitual es usar la interfaz grafica. Se compone de variasventanas:
• Command Window, para escribir los comandos Matlab;• Command History, refleja los comandos ya escritos;• Workspace, refleja las variables creadas;• Current Directory, muestra el directorio de trabajo;• Editor, permite editar ficheros.
Primeros comandos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
12 / 65
Los comandos se escriben en la Command Window.Al ser un lenguaje interpretado, los comandos se ejecutanuno a uno, terminados con retorno de carro.diary, para volcar lo mostrado en la Command Window aun fichero:>> diary %vuelca al fichero ’diary’ del directorio de trabajo
>> diary file %ıdem al fichero ’file’
>> diary off %interrumpe el volcado
help y helpwin, para solicitar ayuda:>> help diary %da ayuda sobre el comando ’diary’
>> helpwin %abre una ventana de ayuda
La informacion online esta enhttp://www.mathworks.com/support/
Variables
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
13 / 65
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 el Workspace:>> 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 alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
14 / 65
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 alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
15 / 65
Un comando se extiende por varias lıneas con . . . :>> Nombre_muy_largo=...
2.e-4*23
No se recomienda usar nombres propios de Matlab:
• 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 alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
16 / 65
Solo se puede modificar el comando de la linea actual.Para recuperar un comando previo podemos:
• copiarlo desde la ventana Command History 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 alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
17 / 65
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 (escribir help elfun):
• 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 alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
18 / 65
Ejercicios 1
1. Inicia el volcado de la Command Window.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 el Workspace.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 alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
19 / 65
Vectores
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
20 / 65
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 alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
21 / 65
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 alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
22 / 65
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 alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
23 / 65
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 alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
24 / 65
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 alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
25 / 65
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) %super, sub y diagonal
>> I=diag(diag(M)) %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 alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
26 / 65
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 alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
27 / 65
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
Estructuras y celdas
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
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 Matlab
Desarrollo dealgoritmos
Importacion dedatos
28 / 65
Estructuras: agrupacion de datos con nombre>> circulo.centro=[0 1]
>> circulo.radio=4
Ciertos comandos devuelven estructuras:>> S=solve(’x^2*y^2 - 2*x - 1 = 0’,’x^2 - y^2 - 1 = 0’)
S tiene dos campos: S.x, S.y. Alternativamente>> [x,y]=solve(’x^2*y^2 - 2*x - 1 = 0’,’x^2 - y^2 - 1 = 0’)
Celdas: agrupacion de datos numerados>> dato{1} = 23
>> dato{2} = [2 8]
>> dato{3} = [0 9; 5 7]
Calculo simbolico
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Calculo simbolico
Calculo simbolico II
Calculo simbolico III
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
29 / 65
Calculo simbolico
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Calculo simbolico
Calculo simbolico II
Calculo simbolico III
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
30 / 65
Las variables simbolicas deben declararse:>> syms x y
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
Algunas funciones de calculo simbolico son:
• simple, distintas formas de simplificar una expresion:>> f = x^2-2*x+1; simple(f)
• pretty, impresion clara de una expresion:>> pretty(f/sqrt(x)-1)
• finverse, calculo de la inversa:>> finverse(f)
• ezplot, graficas de una variable:>> ezplot(f)
Calculo simbolico II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Calculo simbolico
Calculo simbolico II
Calculo simbolico III
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
31 / 65
ezplot, graficas de dos variables:>> g=sin(x^2+y^2); ezsurf(g,[-1 1 -1 1])
subs, evaluacion:>> subs(g,x,1)
limit, calculo de lımites:>> syms x h; limit((sin(x+h)-sin(x))/h,h,0)
diff, derivacion:>> syms x; diff(sin(x^2),2)
taylor, polinomio de Taylor:>> syms x; taylor(exp(-x))
int, integracion:>> syms x; int(besselj(1,x),x)
solve, resolucion de ecuaciones:>> syms r p x; solve(p*sin(x)-r, x) %resuelve en x
Calculo simbolico III
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Calculo simbolico
Calculo simbolico II
Calculo simbolico III
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
32 / 65
dsolve, resolucion de ecuaciones diferenciales:>> dsolve(’Dx = -a*x’,’x(0) = 1’,’t’)
Inicialmente, los sımbolos se daban como cadenas; haycomandos, como dsolve, que solo funcionan a la maneraantigua.
Ejercicios 4
1. Crea un polinomio de una variable, f, y una expresionsimbolica de dos variables, g.
2. Factoriza el polinomio y muestra con pretty la expresion.3. Muestra sus graficas en diferentes dominios.4. Calcula sus derivadas e integralas en distintos dominios.5. Evalualas en distintos puntos.6. Usalas con los comandos limit, taylor, solve y dsolve.
Visualizacion grafica
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Graficos
Graficos II
Graficos III
Pelıculas
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
33 / 65
Graficos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Graficos
Graficos II
Graficos III
Pelıculas
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
34 / 65
Empezaremos con los graficos en calculo numerico.
plot, graficos 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))
figure, crea una nueva ventana de graficos.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’) %texto en X
>> ylabel(’Ordenadas’) %texto en Y
>> legend(’Curva 1’,’Curva 2’) %leyenda
>> axis([-1 11 -1.5 1.5]) %escala
>> gtext(’$\frac{A}{Y_0}$’,’interpreter’,’latex’) %t. flotante
Graficos II
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Graficos
Graficos II
Graficos III
Pelıculas
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
35 / 65
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])
Graficos de dos variables:>> [x,y]=meshgrid(-2:.2:2, -2:.2:2);
>> surf(x, y, x.*exp(-x.^2-y.^2))
>> clabel(contour(x, y, x.*exp(-x.^2-y.^2)))
Graficos III
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Graficos
Graficos II
Graficos III
Pelıculas
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
36 / 65
Subgraficos:>> x = -2:0.1:2;
>> subplot(1,2,1); plot(x,sin(x),’r’) %primer grafico
>> subplot(1,2,2); plot(x,cos(x),’r’) %segundo grafico
Pasamos a los graficos para simbolico.
Suele bastar poner “ez” al comando:>> syms x; ezplot(x^2-2*x+1,[-1 1])
>> syms t; ezplot3(cos(t),t*sin(t),sqrt(t))
>> ezsurf(cos(t)*sin(x))
Pelıculas
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Graficos
Graficos II
Graficos III
Pelıculas
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
37 / 65
Ejemplo, pelıcula de 17 fotogramas:
M=moviein(17); %M, matriz de 17 columnas (fotogramas)
x=linspace(-2*pi, 2*pi, 100);
for j=1:17
y = sin(x+j*pi/8);
plot(x,y); %sera el fotograma j
M(:,j) = getframe; %lo almacena en la columna j de M
end
movie(M) %reproduce la pelıcula
movie2avi(M,’mi_peli’) %genera un fichero avi
Ficheros en Matlab
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
38 / 65
Scripts
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
39 / 65
Es un fichero con una secuencia de comandos Matlab.Lleva extension .mPara que Matlab lo encuentre, su carpeta debe
a) ser el directorio de trabajo ob) anadirse a las rutas de busqueda con addpath.
Para ejecutarlo, escribir el nombre sin extension en laCommand Window.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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
40 / 65
¡Los script usan el Workspace 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.Matlab 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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
41 / 65
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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
42 / 65
Para usar un fichero funcion como argumento, hay que poner“@”
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 Matlab es un fichero funcion:>> int_def(@sin, 0, 1)
Funcion automatica
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
43 / 65
Se define como un si fuese un comando:>> f = @(x,y) x.^2 + y.^2
Escritas en la Command Window, no se conservan al cerrar lasesion.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 en la practica se usan 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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Scripts
Fichero funcion
Fichero funcion II
Fichero funcion III
Funcion automaticaFuncion automaticaII
Desarrollo dealgoritmos
Importacion dedatos
44 / 65
Para usar una funcion automatica como argumento, no hayque poner “@”>> f = @(x) sin(x); int_def(f, 0, 1)
Ejercicios 5
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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Importacion dedatos
45 / 65
Algoritmos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Importacion dedatos
46 / 65
Un programa no suele tener una unica lınea de flujo.Las estructuras de control de flujo puede 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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Importacion dedatos
47 / 65
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*n;
end
Bucle while
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Importacion dedatos
48 / 65
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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Importacion dedatos
49 / 65
if condicion 1comandos 1
[ elseif condicion 2comandos 2 ]
[ elseif . . . ][ else condicion n
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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Importacion dedatos
50 / 65
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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Importacion dedatos
51 / 65
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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Importacion dedatos
52 / 65
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 propioMatlab).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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Importacion dedatos
53 / 65
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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Algoritmos
Bucle for
Bucle while
Estructura if
Estructura if II
Estructura if III
Otros comandos
Otros comandos II
Otros comandos III
Importacion dedatos
54 / 65
Ejercicios 6
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. Construya una funcion que evalue f , definida por
f(x) =
{
2 sen2(2x), x ≤ 0,
1 − e−x, x > 0.
Dibuje su grafica.4. Escriba 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.
Importacion de datos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Datos V
Datos VI
Datos V
Datos VI
Datos VII
Datos V55 / 65
Datos
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Datos V
Datos VI
Datos V
Datos VI
Datos VII
Datos V56 / 65
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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Datos V
Datos VI
Datos V
Datos VI
Datos VII
Datos V57 / 65
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
Escritura con formato ascii:fprintf(fid, ’formato’, A,. . . )
Escribe las variables A,. . . en el fichero con identificador fid.formato puede contener, ademas de los anteriores,descriptores como \n (nueva lınea).
Datos III
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Datos V
Datos VI
Datos V
Datos VI
Datos VII
Datos V58 / 65
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 alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Datos V
Datos VI
Datos V
Datos VI
Datos VII
Datos V59 / 65
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
Datos V
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Datos V
Datos VI
Datos V
Datos VI
Datos VII
Datos V60 / 65
Ejemplo 1: Cinco espectros de absorcionCarga de las variables:load Espectros.mat
Ver las variables cargadas: esp300X (561x2), . . .whos
Grafica en la primera subventana:subplot(1,2,1)
plot(esp300X(:,1), esp300X(:,2),...
esp315X(:,1), esp315X(:,2),...
esp330X(:,1), esp330X(:,2))
legend(’esp300X’, ’esp315X’, ’esp330X’)
title(’Espectros de absorcion’)
xlabel(’Longitud de onda (nm)’)
ylabel(’A’)
Datos VI
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Datos V
Datos VI
Datos V
Datos VI
Datos VII
Datos V61 / 65
Grafica en la segunda subventana:subplot(1,2,2)
plot(esp360M(:,1), esp360M(:,2),...
esp480M(:,1), esp480M(:,2))
legend(’esp360M’, ’esp480M’)
title(’Espectros de absorcion’)
xlabel(’Longitud de onda (nm)’)
ylabel(’A’)
300 350 400 450 500 550 600 6500
2
4
6
8
10
12
14x 10
5
Longitud de onda (nm)
A
Espectros de absorcion
esp300Xesp315Xesp330X
250 300 350 400 4500
1
2
3
4
5
6x 10
6
Longitud de onda (nm)
A
Espectros de absorcion
esp360Mesp480M
Datos V
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Datos V
Datos VI
Datos V
Datos VI
Datos VII
Datos V62 / 65
Ejemplo 2: Multiples espectros de absorcionCarga de las variables:clear; load Espectros_pH.mat
Ver las variables cargadas: A, l, pHwhos
Grafica de todos los espectros:figure; plot(l, A)
legend(num2str(pH))
250 300 350 400 450 500−0.1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9Espectros de absorcion
Longitud de onda (nm)
A
1.051 1.54873.459423.656683.825223.977324.102144.214044.315154.463554.567734.688954.889315.056875.701967.868648.287498.514358.669128.809718.93724 9.07099.19642 9.3367 9.48499.659689.8329810.1177 10.67811.2706
Datos VI
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Datos V
Datos VI
Datos V
Datos VI
Datos VII
Datos V63 / 65
Absorcion para una longitud determinada:figure; n0 = 291; plot(pH, A(n0,:),’o’);
title([’Absorb. para l= ’ num2str(l(n0)) ’ nm’])
0 2 4 6 8 10 120
0.1
0.2
0.3
0.4
0.5
0.6
0.7Absorb. para l= 355 nm
pH
A
Datos VII
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Datos V
Datos VI
Datos V
Datos VI
Datos VII
Datos V64 / 65
Diversas graficas 3D:surf(l, pH, A’)
mesh(l, pH, A’)
contour(l, pH, A’)
l (nm)
pH
Espectros de absorcion
250 300 350 400 450 500
2
3
4
5
6
7
8
9
10
11
Datos V
Indice deldocumento
Introduccion alenguajes avanzadosde computaciontecnica
Introduccion alprograma Matlab
Matrices y arrays.Estructuras de datos
Calculo simbolico
Visualizacion grafica
Ficheros en Matlab
Desarrollo dealgoritmos
Importacion dedatos
Datos
Datos II
Datos III
Datos IV
Datos V
Datos VI
Datos V
Datos VI
Datos VII
Datos V65 / 65
Ejemplo 3: Lectura de ficheros ascii
Apertura del fichero:fid=fopen(’AbsMPIP-TriF.csv’,’r’);
Lectura de la cabecera:ans=fscanf(fid,’%s’,7)
Lectura de los datos:d=fscanf(fid,’%f,%f,%f,%f,%f,%f,%f,%f,’, [8 inf])
Cierre del fichero:fclose(fid)
Grafico:plot(d(1,:),d(2:2:8,:))
200 250 300 350 400 450 500−0.2
0
0.2
0.4
0.6
0.8
1
1.2
1.4