65
1 / 65 Introducci´on a linguaxes avanzadas de computaci´on: Matlab na docencia en Qu´ ımica J. A. ´ Alvarez, B. Pateiro, F. Pena 7 de septiembre de 2010

Introducci´on a linguaxes avanzadas de computaci´on

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 2: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 3: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 4: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 5: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 6: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 7: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 8: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 9: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 10: Introducci´on a linguaxes avanzadas de computaci´on

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”.

Page 11: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 12: Introducci´on a linguaxes avanzadas de computaci´on

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/

Page 13: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 14: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 15: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 16: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 17: Introducci´on a linguaxes avanzadas de computaci´on

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, . . .

Page 18: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 19: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 20: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 21: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 22: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 23: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 24: Introducci´on a linguaxes avanzadas de computaci´on

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, . . .

Page 25: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 26: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 27: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 28: Introducci´on a linguaxes avanzadas de computaci´on

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]

Page 29: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 30: Introducci´on a linguaxes avanzadas de computaci´on

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)

Page 31: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 32: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 33: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 34: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 35: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 36: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 37: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 38: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 39: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 40: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 41: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 42: Introducci´on a linguaxes avanzadas de computaci´on

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)

Page 43: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 44: Introducci´on a linguaxes avanzadas de computaci´on

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].

Page 45: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 46: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 47: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 48: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 49: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 50: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 51: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 52: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 53: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 54: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 55: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 56: Introducci´on a linguaxes avanzadas de computaci´on

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.

Page 57: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 58: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 59: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 60: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 61: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 62: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 63: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 64: Introducci´on a linguaxes avanzadas de computaci´on

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

Page 65: Introducci´on a linguaxes avanzadas de computaci´on

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