Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Basico
Basico
Nivel Bsico
Guillem Borrell i Nogueras
18 de marzo de 2011
Antes de empezar
Guillem Borrell i Nogueras. http://iimyo.forja.rediris.es/ Introduccin Informal a Matlab y Octave Matemticas en Ingeniera con Matlab y Octave Transparencias y ejercicios de este curso Material de otros cursos
Funcionamiento
Visitar la pgina del curso Descargarse la hoja de ejercicios Parar el vdeo para intentar el ejercicio antes que se de la solucin.
Recordad...
Qu es Matlab?
Un lenguaje de programacin Un lenguaje de programacin interpretado Un lenguaje de programacin interactivo Usar Matlab == Programar en Matlab
Qu no es Matlab
Una hoja de clculo Un programa de clculo simblico. Matlab 1 puede hacer 0 erf (x) dx = 0.486 pero no erf (x) dx = x erf (x) +
ex
2
Qu signica interpretado?
Un intrprete es un programa. Es como un actor que hace todo lo que le dice un guin Muy parecido a la una calculadora. Es interactivo.
>>
Algunas mentiras
Para ser ingeniero aeronutico no es necesario saber programar. Programar es difcil. Programar bien es fcil. Los ingenieros programan bien En la vida basta un lenguaje de programacin mientras se domine.
Un autoengao
Problema:
Representar I(y), la integral de la funcin de Bessel
y
I(y ) =
0
J2.5 (x) dx
con y [1, 5]
1 2 3 4 5 6
El resultado
1.2
0.8
0.6
0.4
0.2
1 2 3 4 5 6
Es una herramienta realmente til? Se usa masivamente en la industria? Por qu? Cunto cuesta Matlab? Es la nica solucin?
Octave
Implementacin 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
El lenguaje Matlab
Caracteres especiales
1 2 3 4 5 6 7 8 9 10 11 12 13 >> % Este comando sera ignorado >> hola % Hola,Matlab! ans = hola >> hola; >> hola, que tal ans = hola ans = que tal >> hola, ... que tal ans = hola ans = que tal
El directorio de trabajo
Matlab puede ejecutar archivos con cdigo Matlab puede cargar archivos de datos La biblioteca de funciones est formada por archivos con cdigo. Matlab busca en sus directorios de sistema ms el directorio de trabajo Variable path
Funciones. Sintaxis
Scripts
Un script es un programa Un programa es una secuencia de instrucciones ejecutables Un programa no depende de variables externas Tambin 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.
El resultado
2
1.5
0.5
-0.5
-1
-1.5
-2 -3 -2 -1 0 1 2 3
En Matlab todo es una funcin Cada funcin contiene una pequea ayuda Para consultar la ayuda existe la funcin help
1 help eig
Tipos
Es importante diferenciar los conceptos de Tipo Cualquier elemento de un cdigo tiene un tipo: caracteres, nmeros, matrices... Variable Identicador asignado a un tipo o a un contenedor Argumento Variable de entrada o salida de una unidad de programa
Tipos numricos
Tipo por defecto: arrays n-dimensionales de doble precisin Simple precisin Enteros de varios bits
Mira qu curioso
1 2 3 4 5 6 7 8
>> a = pi a = 3.1416 >> a(1) ans = 3.1416 >> a(1,1) ans = 3.1416 >> a(1,1,1) ans = 3.1416
Escribir matrices
El espacio o la coma separan elementos de la misma la El retorno de carro o el punto y coma separa las 1 2 3 4 5 6 7 8 9
Ejercicio 1
1 M=[1,2,3;4,5,6;7,8,9];
Escribir
1 2 3 4 5 6 7 8 9
Subndices
En Matlab el primer ndice cuenta elementos en la columna El segundo ndice cuenta elementos en la la Pero un vector es siempre la a no ser que se diga lo contrario. El truco es que no nos preocupen las las y las columnas, slo los ndices Mij = M(i, j)
>> w(4,1)=2 w = 0 0 0 2
Un vector...
v = (1, 2, 3, 4, 5)
1 >> v=[1,2,3,4,5]; 2 >> v(4) 3 ans = 4
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
1 2 3 4 5 6 7 8 9
1 >> M([1,2],[2,3]) 2 ans = 3 4 2 3 5 5 6
1 2 3 4 5 6 7 8 9
1 >> M(2,:) 2 ans = 3 4 4 5
Secuencias
1 2 3 4 5 6 7
10
Ejercicio 2
Crear la matriz siguiente y extraer de ella la submatriz marcada en rojo. 11 12 13 14 15 21 22 23 24 25 31 32 33 34 35 41 42 43 44 45 51 52 53 54 55
Otros tipos
La unidad imaginaria es i, j, I o J Las cadenas de texto se introducen entre comillas simples Los tipos lgicos son true y false. true es 0 y false es 0
Operadores
Operadores matriciales +, -, *, /, Operadores escalares .*, ./, . Operadores lgios matriciales &, |, ! Relaciones de comparacin <, >, ==, <=, >=, != Relaciones lgicas &&, ||
Ejercicio 3
Control de ujo
Las sentencias son palabras clave necesarias para programar Son comunes a la mayora de lenguajes de programacin Control de ujo es el uso de bucles, condicionales, casos... El control de ujo implica el encapsulamiento de una tarea.
Condicionales o if
1 2 3 4 5 6 7
Bucles o for
1 for var=contador 2 sentencias 3 end
contador puede ser un vector o una secuencia Para cada paso i avanza de valor en contador Las sentencias pueden depender o no de i
Ms control de ujo
Control de casos nitos Bucle controlado por condicin lgica Control de excepciones Salida de bloques Idem vuelta al programa principal
Ejercicio 4
Contenedores
Estructuras de datos. Forma de rbol Cell arrays. Forma de matriz Function handles. Contenedor para una funcin.
Funciones annimas
Estructuras de datos
1 2 3 4 5 6 7 8 9 10 11 >> >> >> >> >> ed.num=1.234; ed.str=hola; ed.logic.true=1; ed.logic.false=0; ed
Cell arrays
1 2 3 4 5 6 7
Function Handles
Ejercicio 5
Funciones annimas
Permiten crear un function handle deniendo la funcin directamente.
1 2 3 4 5 6 7 8 9 10 11 >> test1 = @(x) x.*sin(x) test1 = @(x) x .* sin (x) >> test1(1) ans = 0.84147 >> test2 = @(x,y) exp(-(x.^2+y.^2)) test2 = @(x, y) exp (-(x .^ 2 + y .^ 2)) >> test2(1,i) ans = 1
Conclusiones
El lenguaje Matlab es muy limitado Es sencilloy su sintaxis es clara Sus estructuras son muy matemticas Est basdo en funcionesy no conocemos ninguna La biblioteca de funciones de Matlab es tan grande como quieras pagarla.
Creacin de matrices
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 unos zeros Matriz de ceros rand Matriz de nmeros aleatorios
Manipulacin de matrices
reshape Cambia la forma de la matriz conservando el nmero de elementos transpose Traspuesta. Equivale a . ctranspose Matriz conjugada. Equivale a rot90 Gira la matriz 90 grados hacia la izquierda
Ejercicio 6
Resolucin de SEL
Clculo Simblico
Clculo Simblico
Podis hacer operaciones simblicas con Matlab Que pueda hacerse no signica que tenga que hacerse
Clculo Simblico
Podis hacer operaciones simblicas con Matlab Que pueda hacerse no signica que tenga que hacerse Tambin podis depilaros las cejas con una sierra mecnica
Integracin numrica
quad Integracin numrica. 3 argumentos de entrada quadl Algoritmo de integracin mejorado dblquad Integracin bidimensional de funciones de dos variables trapz Regla del trapecio
Ejercicio 7
x 2 + x es 1x 2 + 1x + 0, es decir [1 1 0]
1 2 3 4 5 6 7 >> p = [1 1 0]; >> polyval(p,1) ans = 2 >> roots(p) ans = -1 0
Polinomios
Obtiene el valor en un punto Obtiene las races del polinomio Deriva un polinomio Integra un polinomio Multiplica dos polinomios Desarrollo en fracciones parciales.
poly Obtiene el polinomio caracterstico de una matriz. polyt Modelo polinmico de una serie de datos.
Representacin grca
Representar datos es sencillo e intuitivo No hay que emocionarse con la representacin grca Slo veremos curvas en el plano Necesitamos ms?
Plot
El resultado
1
0.5
-0.5
Etiquetas
El resultado
Una funcion cualquiera
1
0.5
Amplitud
-0.5
Tiempo
Estilos
1 2 3 4 5 6 7 8
>> x=linspace(-pi,pi,100); >> plot(x,sin(x),m:,... x,cos(x),k^,x,tan(x),bx) >> axis([-pi,pi,-2,2]) >> grid on >> legend(linea de puntos magenta,... triangulos negros,... cruces azules)
El resultado
2 linea de puntos magenta triangulos negros cruces azules 1.5
0.5
-0.5
-1
-1.5
-2 -3 -2 -1 0 1 2 3
hold
La ventana grca se borra automticamente cada vez que dibujamos algo Para cambiar el comportamiento anterior se usa la funcin hold
hold on mantiene todo lo dibujado en la pantalla hold off vuelve al comportamiento inicial
figure
Las ventanas grcas se manipulan con la funcin figure Cada ventana grca tiene asociada un nmero entero
figure se llama con un nmero que corresponde al
de la ventana
Si utilizamos un nmero que no corresponde a
ninguna ventana existente crearemos una nueva con este nmero asociado Si utilizamos un nmero existente activaremos la ventana correspondiente
subplot
El resultado
1
0.5
-0.5
-1 -4 -3 -2 -1 0 1 2 3 4
subplot
El resultado
1 1
0.5
0.5
-0.5
-0.5
-1 -4 -3 -2 -1 0 1 2 3 4
-1 -4 -3 -2 -1 0 1 2 3 4
15
12
10
10
-5
-10
-15 -4 -3 -2 -1 0 1 2 3 4
0 -4 -3 -2 -1 0 1 2 3 4
Otros comandos
semilogx Dibuja una curva con el eje x en escala logartmica semilogy Dibuja una curva con el eje y en escala logartmica loglog Dibuja una curva en escala logartmica
Ejercicio 8
Representar en una misma ventana y dos frames (uno superior y otro inferior) la funcin x sin(1/x) x [0.001, 1]
Comandos interesantes
get, set Cambia los atributos de un plot handle text Pone texto en la gura contour Isolneas de una matriz de datos en 3D griddata Interpola para el contour
Desarrollos de datos
interp1 Interpolacin de una serie de puntos interp2 Interpolacin de una nube de puntos polyfit Coecientes del polinomio de grado n con mnimo error cuadrtico fft Realiza la transformada de Fourier
interp1
1 2 3 4 5 6 7
>> x=[1 2 3 4 5 6 7 8]; >> y=[1 4 2 5 7 4 2 7]; >> interp1(x,y,7.234,spline) ans = 2.3437 >> test=@(x,y,z) interp1(x,y,z,spline); >> test(x,y,7.234) ans = 2.3437
polyfit
1 2 3 4 5
>> x=[1 2 3 4 5 6 7 8]; >> y=[2 4 3 5 6 5 7 9]; >> coeff=polyfit(x,y,3); >> plot(x,y,k+,1:0.1:8,... polyval(coeff,1:0.1:8),b-)
El resultado
9
Estadstica descriptiva
Media Desviacin tpica Mediana Orena los elementos de menor a mayor center Elimina la media de una muestra mean std median sort
EDO
Es una de las aplicaciones ms importantes del Clculo Numrico Los problemas ms comunes son los problemas de Cauchy no lineales En ese caso la solucin numrica es esencial Lo ms importante es saber si nuestro problema es stiff
Stiff
Un problema es stiff cuando el paso temporal viene determinado por la estabilidad del esquema. Suelen relacionarse con problemas no lineales o condiciones de contorno muy exigentes Requieren esquemas de integracin temporal implcitos
Funciones
ode45 Runge-Kutta de paso variable orden 4-5 ode113 Adams multipaso ode23s Esquema implcito Rosenbrock lsode Octave
Un caso tpico es la ecuacin de Van der Pol x + x + (x 2 1)x = 0 Dependiendo del valor de el problema va a ser stiff o no.
Solucin
Solucin
3
-1
-2
-3
10
15
20
Solucin
Solucin
3
-1
-2
-3
500
1000
1500
2000
2500
3000
Ejercicio 9