Top Banner
 Curso de Matlab. Nivel Básico Guillem Borrell i Nogueras 18 de marzo de 2011
97

Curso de Matlab. Nivel Básico

Jul 19, 2015

Download

Documents

Jhonel Córdova
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 1/97

Curso de Matlab. Nivel Básico

Guillem Borrell i Nogueras

18 de marzo de 2011

Page 2: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 2/97

Antes de empezar

• Guillem Borrell i Nogueras.

•http://iimyo.forja.rediris.es/

• Introducción Informal a Matlab y Octave• Matemáticas en Ingeniería con Matlab y Octave• Transparencias y ejercicios de este curso• Material de otros cursos

Page 3: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 3/97

Funcionamiento

• Visitar la página del curso

• Descargarse la hoja de ejercicios• Parar el vídeo para intentar el ejercicio antes

que se de la solución.

Page 4: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 4/97

Recordad...

Ningún lenguaje se aprende por osmosis

Page 5: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 5/97

¿Qué es Matlab?

• Un lenguaje de programación

• Un lenguaje de programación interpretado • Un lenguaje de programación interactivo 

Usar Matlab == Programar en Matlab

Page 6: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 6/97

¿Qué no es Matlab

• Una hoja de cálculo

•Un programa de cálculo simbólico. Matlab

puede hacer 1

0erf (x ) dx  = 0.486 pero no 

erf (x ) dx  = x erf (x ) + e −x 2√π

• La solución a todos nuestros problemas.

Page 7: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 7/97

¿Qué significa interpretado?

• Un intérprete es un programa.

• Es como un actor que hace todo lo que le

dice un guión • Muy parecido a la una calculadora.

• Es interactivo.

1 >>

Os presento a la consola de Matlab

Page 8: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 8/97

Algunas mentiras

• Para ser ingeniero aeronáutico no es

necesario saber programar.

• Programar es difícil.• Programar bien es fácil.

• Los ingenieros programan bien

• En la vida basta un lenguaje deprogramación mientras se domine.

Page 9: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 9/97

Un autoengaño

Si en la escuela sólo me dan seis

créditos de informática es porqueno es importante.

Page 10: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 10/97

En Arquitectura nadie enseña

Autocad.

Page 11: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 11/97

Problema:

Representar I(y), la integral de la función de

Bessel

I (y ) = y 

0

J 2.5(x ) dx 

con y ∈ [1, 5]

• ¿Cómo se haría en Fortran?• ¿Cómo se haría en Excel?

Page 12: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 12/97

En Matlab son 6 líneas

1 x=linspace(1,5,100);

2 intbessel=@(y) quad(@(x) besselj(2.5,x),0,y);

3 for i=1:100

4 z(i)=intbessel(x(i));5 end

6 plot(x,z);

No os preocupéis si no entendéis nada. Esto es

Matlab avanzado.

Page 13: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 13/97

El resultado

0

0.2

0.4

0.6

0.8

1

1.2

1 1.5 2 2.5 3 3.5 4 4.5 5

Page 14: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 14/97

¿Una calculadora programable?

1 >> 2+2

2 ans = 4

3 >> mean([1,2,3,4,5,6,7,8,9])4 ans = 5

5 >> abs(3+4i)

6 ans = 5

Page 15: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 15/97

Todo esto es muy bonito pero...

• ¿Es una herramienta realmente útil?

•¿Se usa masivamente en la industria?

• ¿Por qué?

• ¿Cuánto cuesta Matlab?

•¿Es la única solución?

Page 16: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 16/97

Octave

• Implementación libre y gratuita del lenguaje

Matlab

• http://www.octave.org• Programa muy utilizado en GNU/Linux

• Versiones para Windows y Mac

• QtOctave• Libre y gratuito 

Page 17: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 17/97

El lenguaje Matlab

• Caracteres especiales

• Funciones y scripts

•Tipos

• Variables

• Operadores

•Sentencias

• Contenendores• Function handles 

Page 18: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 18/97

Caracteres especiales

1 >> % Este comando sera ignorado2 >> ’hola’ % ’Hola,Matlab!’

3 ans = hola

4

5 >> ’hola’;

6 >> ’hola’, ’que tal’7 ans = hola

8 ans = que tal

9

10 >> ’hola’, ...

11 ’que tal’

12 ans = hola

13 ans = que tal

Page 19: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 19/97

El directorio de trabajo

• Matlab puede ejecutar archivos con código

• Matlab puede cargar archivos de datos

• La biblioteca de funciones está formada porarchivos con código.

• Matlab busca en sus directorios de sistema

más el directorio de trabajo 

• Variable path

Page 20: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 20/97

Funciones. Sintaxis

1 function [sal1,sal2,...] = nombre(ent1,ent2,...)

2 sentencias ejecutables

3 sal1 = ...4 sal2 = ...

Lo guardaremos todo en el directorio de trabajo 

en un archivo llamado nombre.m 

Page 21: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 21/97

Scripts

• Un script es un programa• Un programa es una secuencia de

instrucciones ejecutables

• Un programa no depende de variablesexternas

• También se guarda en un archivo .m en el

directorio de trabajo 

• Se ejecuta escribiendo el nombre del

archivo en la consola o pulsando F5 en el

editor.

Page 22: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 22/97

Nuestra primera función

Abrimos un archivo nuevo en el editor1 function y = aprsin(x)

2 y=x-(x.^3)/6

Y lo guardamos en el directorio de trabajo como

aprsin.m.

Page 23: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 23/97

Nuestro primer script

En un archivo nuevo del editor1 x=linspace(-pi,pi,100);

2 for i = 1:100

3 y(i)=aprsin(x(i));4 end

5 plot(x,[y;sin(x)])

Lo guardamos con el nombre comparar.m en 

el directorio de trabajo . Luego pulsamos F5

Page 24: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 24/97

El resultado

-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

-3 -2 -1 0 1 2 3

Page 25: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 25/97

Ayuda. Función help

• En Matlab todo es una función

•Cada función contiene una pequeña ayuda

• Para consultar la ayuda existe la función

help

1 help eig

Page 26: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 26/97

Tipos

Es importante diferenciar los conceptos de

Tipo Cualquier elemento de un código

tiene un tipo: caracteres, números,

matrices...

Variable Identificador asignado a un tipo o a un

contenedor

Argumento Variable de entrada o salida de unaunidad de programa

Page 27: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 27/97

Tipos numéricos

• Tipo por defecto: arrays n-dimensionales de

doble precisión• Simple precisión

• Enteros de varios bits

Page 28: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 28/97

Mira qué curioso

1 > > a = pi

2 a = 3.1416

3 >> a(1)

4 ans = 3.14165 >> a(1,1)

6 ans = 3.1416

7 >> a(1,1,1)

8 ans = 3.1416

Page 29: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 29/97

Escribir matrices

• El espacio o la coma separan elementos de

la misma fila

• El retorno de carro o el punto y coma separafilas

1 2 3

4 5 6

7 8 9

Page 30: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 30/97

Ejercicio 1

1 M=[1,2,3;4,5,6;7,8,9];

Escribir 1 2 3

4 5 6

7 8 9

de otros 3 modos posibles.

S bí di

Page 31: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 31/97

Subíndices

• En Matlab el primer índice cuentaelementos en la columna

• El segundo índice cuenta elementos en la

fila• Pero  un vector es siempre fila a no ser que

se diga lo contrario.

•El truco es que no nos preocupen las filas y

las columnas, sólo los índices

M ij  = M (i , j )

N h i i d

Page 32: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 32/97

No hay quien te entienda

1 >> v(4)=22 v =

3

4 0 0 0 2

5

6 >> w(4,1)=2

7 w =

8

9 0

10 011 0

12 2

U t

Page 33: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 33/97

Un vector...

v  = (1, 2, 3, 4, 5)

1 >> v=[1,2,3,4,5];

2 >> v(4)

3 ans = 4

U t i

Page 34: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 34/97

Una matriz...

1 2 3

4 5 6

7 8 9

1 >> M=[1,2,3;4,5,6;7,8,9];

2 >> M(2,3)

3 ans = 6

P d i d t

Page 35: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 35/97

Podemos indexar con vectores

1 2 3

4 5 6

7 8 9

1 >> M([1,2],[2,3])

2 ans =

3

4 2 35 5 6

O con índices mudos

Page 36: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 36/97

O con índices mudos

1 2 3

4 5 6

7 8 9

1 >> M(2,:)

2 ans =

3

4 4 5 6

Secuencias

Page 37: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 37/97

Secuencias

• Es una abreviatura común para escribir unvector fila

• La sintaxis es

inicio:incremento:final

1 >> 0:2:10

2 ans =

3 0 2 4 6 8 10

4

5 >> 0:5

6 ans =

7 0 1 2 3 4 5

Ejercicio 2

Page 38: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 38/97

Ejercicio 2

Crear la matriz siguiente y extraer de ella la

submatriz marcada en rojo.

11 12 13 14 1521 22 23 24 25

31 32 33 34 35

41 42 43 44 45

51 52 53 54 55

Otros tipos

Page 39: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 39/97

Otros tipos

• La unidad imaginaria es i , j , I o J 

•Las cadenas de texto se introducen entre

comillas simples

• Los tipos lógicos son true y false . true es

≡0 y false es

≡0

Operadores

Page 40: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 40/97

Operadores

• Operadores matriciales +, -, *, /, ˆ

• Operadores escalares .*, ./, .ˆ

• Operadores lógios matriciales &, |, !

• Relaciones de comparación <, >, ==, <=,

>=, !=

• Relaciones lógicas &&, ||

El error más común de Matlab

Page 41: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 41/97

El error más común de Matlab

1 >> a=rand(3,3);2 >> a=rand(3,3);b=rand(3,3);

3 >> a*b

4 ans =

5 1.0297 0.9105 0.3293

6 0.9663 0.8267 0.4211

7 0.5355 0.4318 0.3279

8 >> a.*b

9 ans =

10 0.1824 0.3253 0.0563

11 0.5500 0.6003 0.1897

12 0.0458 0.0017 0.1822

El error más común de Matlab

Page 42: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 42/97

El error más común de Matlab

1 >> a=[1,2,3;4,5,6;7,8,9];2 >> a.^pi

3 ans =

4 1.0000 8.8250 31.5443

5 77.8802 156.9925 278.3776

6 451.8079 687.2913 995.0416

7 >> a^pi

8 ans =

9 1.0e+03 *10 0.69 - 0.0004i 0.85 - 0.0001i 1.01 + 0.0002i

11 1.57 - 0.0000i 1.93 - 0.0000i 2.29 + 0.0000i

12 2.45 + 0.0003i 3.01 + 0.0001i 3.57 - 0.0002i

Ejercicio 3

Page 43: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 43/97

Ejercicio 3

Control de flujo

Page 44: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 44/97

Control de flujo

• Las sentencias son palabras clave

necesarias para programar

• Son comunes a la mayoría de lenguajes de

programación• Control de flujo es el uso de bucles,

condicionales, casos...

• El control de flujo implica elencapsulamiento de una tarea.

Condicionales o if

Page 45: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 45/97

Condicionales o if

1 if cond

2 sentencias

3 elseif cond

4 sentencias

5 else

6 sentencias

7 end

Bucles o for

Page 46: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 46/97

Bucles o for

1 for var=contador

2 sentencias

3 end

• contador puede ser un vector o unasecuencia

• Para cada paso i avanza de valor en

contador• Las sentencias pueden depender o no de i

Más control de flujo

Page 47: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 47/97

Más control de flujo

case Control de casos finitos

while Bucle controlado por condición lógica

try Control de excepcionesbreak Salida de bloques

continue Idem

return vuelta al programa principal

Ejercicio 4

Page 48: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 48/97

Ejercicio 4

Contenedores

Page 49: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 49/97

Co te edo es

• Estructuras de datos. Forma de árbol

• Cell arrays. Forma de matriz• Function handles. Contenedor para unafunción.• Funciones anónimas

Estructuras de datos

Page 50: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 50/97

1 >> ed.num=1.234;

2 >> ed.str=’hola’;

3 >> ed.logic.true=1;

4 >> ed.logic.false=0;

5 >> ed

6

7 ed =

8

9 str: ’hola’

10 num: 1.234011 logic: [1x1 struct]

Cell arrays

Page 51: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 51/97

y

1 >> celda={1.234,’hola’;true,false}

2 celda =

3 [1.2340] ’hola’

4 [ 1] [ 0]5

6 >> celda{1,1}

7 ans = 1.2340

Function Handles

Page 52: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 52/97

Es capaz de contener una función.

1 >> fhsin = @sin

2 fhsin =

34 @sin

5

6 >> fhsin(pi/2)

7 ans = 1

Ejercicio 5

Page 53: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 53/97

j

Funciones anónimas

Page 54: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 54/97

Permiten crear un function handle definiendo la

función directamente.1 >> test1 = @(x) x.*sin(x)

2 test1 =

3 @(x) x .* sin (x)

4 >> test1(1)5 ans = 0.84147

6

7 >> test2 = @(x,y) exp(-(x.^2+y.^2))

8 test2 =

9 @(x, y) exp (-(x .^ 2 + y .^ 2))

10 >> test2(1,i)

11 ans = 1

Conclusiones

Page 55: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 55/97

• El lenguaje Matlab es muy limitado

• Es sencilloy su sintaxis es clara

•Sus estructuras son muy matemáticas

• Está basdo en funcionesy no conocemos

ninguna

•La biblioteca de funciones de Matlab es tan

grande como quieras pagarla.

Creación de matrices

Page 56: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 56/97

eye matriz de ceros con unos en la

diagonal

linspace Vector de elementos equiespaciados

logspace Vector de elementos con el exponente

equiespaciado

meshgrid Matrices de elementos

equiespaciados en 2D

ones Matriz de unoszeros Matriz de ceros

rand Matriz de números aleatorios

Manipulación de matrices

Page 57: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 57/97

reshape Cambia la forma de la matriz

conservando el número de elementos

transpose Traspuesta. Equivale a .’ctranspose Matriz conjugada. Equivale a ’

rot90 Gira la matriz 90 grados hacia la

izquierda

Ejercicio 6

Page 58: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 58/97Resolución de SEL

Page 59: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 59/97

Para resolver sistemas de ecuaciones lineales

contamos con un operador universal

1 >> A=[1,0;2,1];y=[2;4];

2 >> x=A\y

3 x =

4

5 2

6 0

Cálculo Simbólico

Page 60: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 60/97

• Podéis hacer operaciones simbólicas con

Matlab

Cálculo Simbólico

Page 61: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 61/97

• Podéis hacer operaciones simbólicas con

Matlab

• Que pueda hacerse no significa que tengaque hacerse

Cálculo Simbólico

Page 62: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 62/97

• Podéis hacer operaciones simbólicas con

Matlab

• Que pueda hacerse no significa que tengaque hacerse

• También podéis depilaros las cejas con una

sierra mecánica

Integración numérica

Page 63: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 63/97

quad Integración numérica. 3 argumentos

de entrada

quadl Algoritmo de integración mejoradodblquad Integración bidimensional de

funciones de dos variables

trapz Regla del trapecio

Ejercicio 7

Page 64: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 64/97Desarrollos en serie de

f i

Page 65: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 65/97

funciones

• Los coeficientes de un desarrollo en serie

son un vector

2

+ x  es 1x 

2

+ 1x  + 0, es decir [1 1 0]1 > > p = [ 1 1 0 ] ;

2 >> polyval(p,1)

3 ans = 2

4 >> roots(p)

5 ans =

6 -1

7 0

Polinomios

Page 66: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 66/97

polyval Obtiene el valor en un punto

roots Obtiene las raíces del polinomio

polyder Deriva un polinomiopolyinteg Integra un polinomio

conv Multiplica dos polinomios

residue Desarrollo en fracciones parciales.

Funciones que devuelven

li i

Page 67: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 67/97

polinomios

poly Obtiene el polinomio característico de

una matriz.

polyfit Modelo polinómico de una serie de

datos.

Representación gráfica

Page 68: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 68/97

• Representar datos es sencillo e intuitivo

• No hay que emocionarse con la

representación gráfica• Sólo veremos curvas en el plano

• ¿Necesitamos más?

Plot

Page 69: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 69/97

Representa curvas en el plano. e −x /100 sin x 

para x 

∈[0, 500]

1 >> x=linspace(0,500,100000);

2 >> plot(x,exp(-x/100).*sin(x))

El resultado

Page 70: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 70/97

-1

-0.5

0

0.5

1

0 100 200 300 400 500

Etiquetas

Page 71: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 71/97

1 >> title(’Una funcion cualquiera’)

2 >> xlabel(’Tiempo’)

3 >> ylabel(’Amplitud’)

El resultado

Page 72: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 72/97

-1

-0.5

0

0.5

1

0 100 200 300 400 500

     A    m    p     l     i     t    u     d

Tiempo

Una funcion cualquiera

Estilos

Page 73: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 73/97

1 >> x=linspace(-pi,pi,100);

2 >> plot(x,sin(x),’m:’,...

3 x,cos(x),’k^’,x,tan(x),’bx’)

4 >> axis([-pi,pi,-2,2])

5 >> grid on

6 >> legend(’linea de puntos magenta’,...

7 ’triangulos negros’,...

8 ’cruces azules’)

El resultado

Page 74: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 74/97

-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

-3 -2 -1 0 1 2 3

linea de puntos magentatriangulos negros

cruces azules

hold

Page 75: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 75/97

• La ventana gráfica se borra

automáticamente cada vez que dibujamos

algo

• Para cambiar el comportamiento anterior seusa la función hold • hold on mantiene todo lo dibujado en la pantalla• hold off vuelve al comportamiento inicial

• Para borrar la ventana gráfica usamos clf

figure

Page 76: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 76/97

• Las ventanas gráficas se manipulan con lafunción figure

• Cada ventana gráfica tiene asociada unnúmero entero

• figure se llama con un número que corresponde alde la ventana

• Si utilizamos un número que no corresponde a

ninguna ventana existente crearemos una nueva con

este número asociado• Si utilizamos un número existente activaremos la

ventana correspondiente

subplot

Page 77: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 77/97

Es el comando que permite poner varios ejes

en una misma figura

1 >> x= linspace(-pi,pi,100);2 >> subplot(2,2,1)

3 >> plot(x,sin(x))

Primero de los cuatro sectores.

El resultado

Page 78: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 78/97

-1

-0.5

0

0.5

1

-4 -3 -2 -1 0 1 2 3 4

subplot

Page 79: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 79/97

Ahora completamos los cuatro cuadrantes.

1 >> subplot(2,2,2)

2 >> plot(x,cos(x))

3 >> subplot(2,2,3)4 >> plot(x,sinh(x))

5 >> subplot(2,2,4)

6 >> plot(x,cosh(x))

El resultado

Page 80: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 80/97

0

2

4

6

8

10

12

-4 -3 -2 -1 0 1 2 3 4

-15

-10

-5

0

5

10

15

-4 -3 -2 -1 0 1 2 3 4

-1

-0.5

0

0.5

1

-4 -3 -2 -1 0 1 2 3 4

-1

-0.5

0

0.5

1

-4 -3 -2 -1 0 1 2 3 4

Otros comandos

Page 81: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 81/97

semilogx Dibuja una curva con el eje x en

escala logarítmica

semilogy Dibuja una curva con el eje y enescala logarítmica

loglog Dibuja una curva en escala

logarítmica

Ejercicio 8

Page 82: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 82/97

Representar en una misma ventana y dos

frames (uno superior y otro inferior) la función

√x sin(1/x ) x ∈ [0.001, 1]

en escala normal y en escala semilogarítmica

en el eje x.

Comandos interesantes

Page 83: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 83/97

get, set Cambia los atributos de un plot

handle

textPone texto en la figura

contour Isolíneas de una matriz de datos en

3D

griddata Interpola para el contour

Desarrollos de datos

Page 84: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 84/97

interp1 Interpolación de una serie de puntos

interp2 Interpolación de una nube de puntos

polyfit Coeficientes del polinomio de grado n con mínimo error cuadrático

fft Realiza la transformada de Fourier

interp1

Page 85: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 85/97

1 > > x = [ 1 2 3 4 5 6 7 8 ] ;

2 > > y = [ 1 4 2 5 7 4 2 7 ] ;

3 >> interp1(x,y,7.234,’spline’)

4 ans = 2.34375 >> test=@(x,y,z) interp1(x,y,z,’spline’);

6 >> test(x,y,7.234)

7 ans = 2.3437

polyfit

Page 86: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 86/97

1 > > x = [ 1 2 3 4 5 6 7 8 ] ;

2 > > y = [ 2 4 3 5 6 5 7 9 ] ;

3 >> coeff=polyfit(x,y,3);

4 >> plot(x,y,’k+’,1:0.1:8,...

5 polyval(coeff,1:0.1:8),’b-’)

El resultado

Page 87: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 87/97

2

3

4

5

6

7

8

9

1 2 3 4 5 6 7 8

Estadística descriptiva

Page 88: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 88/97

mean Media

std Desviación típica

median Medianasort Orena los elementos de menor a

mayor

center Elimina la media de una muestra

EDO

Page 89: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 89/97

• Es una de las aplicaciones más importantesdel Cálculo Numérico

• Los problemas más comunes son los

problemas de Cauchy no lineales• En ese caso la solución numérica es

esencial

•Lo más importante es saber si nuestro

problema es stiff

Stiff

Page 90: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 90/97

• Un problema es stiff cuando el pasotemporal viene determinado por la

estabilidad del esquema.

• Suelen relacionarse con problemas nolineales o condiciones de contorno muy

exigentes

•Requieren esquemas de integración

temporal implícitos

Funciones

Page 91: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 91/97

ode45 Runge-Kutta de paso variable orden

4-5

ode113 Adams multipasoode23s Esquema implícito Rosenbrock

lsode Octave

Van der Pol

Page 92: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 92/97

Un caso típico es la ecuación de Van der Pol

x  + x  + µ(x 2

− 1)x  = 0Dependiendo del valor de µ el problema va a

ser stiff o no.

Solución

Page 93: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 93/97

1 >> [tout,xout]=ode45(@vdp1,[0 20],[2 0])

2 >> plot(tout,xout(:,1))

Solución

Page 94: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 94/97

-3

-2

-1

0

1

2

3

0 5 10 15 20

Solución

Page 95: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 95/97

1 >> [tout,xout]=ode23s(@vdp1000,[0 20],[2 0])

2 >> plot(tout,xout(:,1))

Solución

Page 96: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 96/97

-3

-2

-1

0

1

2

3

0 500 1000 1500 2000 2500 3000

Ejercicio 9

Page 97: Curso de Matlab. Nivel Básico

5/17/2018 Curso de Matlab. Nivel B sico - slidepdf.com

http://slidepdf.com/reader/full/curso-de-matlab-nivel-basico 97/97