Unidad 1: Introducción y conceptos
básicos
•
Introducción al paquete y al lenguaje (Matlab/GnuOctave).
Conceptos esenciales. Línea de comandos.
•
Operaciones elementales.
•
Variables.
•
Funciones elementales.
•
Vectores. Operaciones con vectores. Vectorización.
•
Representación gráfica de funciones.
•
Scripts.
Aplicaciones en física:
•
Descripción y representación del movimiento de una partícula.
Trayectorias: r(t), v(t), a(t).
•
Derivación numérica elemental. Velocidad y aceleración.
•
Integración numérica elemental.
Introducción
NOTA: Para la realización del curso se requieren conocimientos básicos de Windows, OS o linux.
MATLAB/GnuOctave/Scilab
http://www.mathworks.es/products/matlab/
MATLAB® es un lenguaje de alto nivel y un entorno interactivo para el cálculo
numérico, la visualización y la programación. Mediante MATLAB, es posible analizar datos, desarrollar algoritmos y crear modelos o aplicaciones. El lenguaje, las herramientas y las funciones matemáticas incorporadas permiten explorar diversos enfoques y llegar a una solución antes que con hojas de cálculo o lenguajes de programación tradicionales, como pueden ser C/C++ o Java™.
http://www.mathworks.es/videos/matlab-overview-61923.html?type=shadow&language=es Matlab: o entorno interactivo, o editor, o lenguaje de programación, o compilador, o ejecución de programas, o debuger, o …
Operaciones elementales MATLAB como una calculadora
>>
help
>>
doc
http://www.maths.dundee.ac.uk/~ftp/na-reports/MatlabNotes.pdf http://www.mathworks.es/academia/student_center/tutorials/launchpad.html http://www.octave.orgOperaciones elementales:
+
-
*
/
^
Ejercicio 1.1: Realiza una serie de cálculos elementales, por ejemplo:
>> 4+2 >> 2*pi
>> 10+43/2 >> 6*1.0004e20/9^9
>> (10+43)/2 >> 103^2.4+4*3.7-1.2/4^1.2 >> 3.1416^3.1416 >> -2^0.5
Unidad 1: Introducción y conceptos
básicos
•
Introducción al paquete y al lenguaje (Matlab/GnuOctave).
Conceptos esenciales. Línea de comandos.
•
Operaciones elementales.
•
Variables.
•
Funciones elementales.
•
Vectores. Operaciones con vectores. Vectorización.
•
Representación gráfica de funciones.
•
Scripts.
Aplicaciones en física:
•
Descripción y representación del movimiento de una partícula.
Trayectorias: r(t), v(t), a(t).
•
Derivación numérica elemental. Velocidad y aceleración.
•
Integración numérica elemental.
Variables MATLAB como una calculadora
Ejercicio 1.2: Repetir ejercicio 1.1 usando variables.
Matlab puede almacenar números en varibles y operar con ellas:
>> a = 4
>> b = 7
>> c = a + b
>> milesima = a – b + 3.001
>> a = 0.032
>> c = a + b
a
b
c
4
7
11
El ordenador guarda en una parte de su RAM un valor y le asigna un nombre. Ese valor se puede sobrescribir.a
0.032
Nombre de las variables:
Cualquier combinación de letras (excepto ñ) y números empezando por una letra.
También se puede usar el guion bajo " _ ". Sin espacios.
Hasta 63 caracteres.
Consejo: Usar nombres con significado.
Variables predefinidas:
ans
pi = 3.141592654... = π eps = 2.22044...e-16 = 2-54
i unidad imaginaria √-1 (también j) inf
Variables MATLAB como una calculadora
Variables predefinidas:
Cambiar el valor de una variable predefinida y recuperar su valor: >> i
>> i=2 >> clear i >> i
clear se puede usar con cualquier variable (ver la ayuda).
Mirar también que hacen who, whos y clc. En la ventana Workspace se pueden ver también las variables que están definidas por el usuario en ese momento.
Visualización de valores,
format
:
Mirar en la ayuda el comando format.
Probar sumar, por ejemplo, 1000000000 + 1 y ver el resultado con format short y format long. Mirar que hace ; al final de un expresión.
Caracteres:
Las variables también pueden tener un valor alfanumérico: >> texto=‘hola’
Funciones elementales MATLAB como una calculadora
Matlab incluye una gran cantidad de funciones predefinidas, entre ellas todas las funciones matemáticas elementales sin() cos() tan() exp() log() sqrt() ...
Ejercicio 1.3: calcular log2(108), exp(log(9)), sin(asin(0.7)), tan(pi/3)-sin(pi/3)/cos(pi/3), …
Ejercicios MATLAB como una calculadora Ejercicio 1.4: Hacer los siguientes cálculos:
1) Define en una variable un ángulo cualquiera en grados, entre 0 y 90, ej. xg = 33 2) Cambia a radianes, xr
3) Calcula el seno, coseno y tangente de ese ángulo xr, ej. sx,cx,tx
4) Para los valores obtenidos, calcular las funciones inversas: asin(sx), acos(cx) y atan(tx) 5) Finalmente cambia el resultado de esas operaciones a grados.
Repetir este cálculo para varios ángulos iniciales: xg= 56, 24, 78, etc.
Probar con otros ángulos fuera del primer cuadrante (ej. 120, -234, 245…).
Ejercicio 1.5: Comprobar para varios ángulos si las siguientes identidades son correctas: 1) tan(x/2) = sqrt [ (1-cos(x) ) / ( 1 + cos(x) ) ]
2) tan(2x) = 2 tan(x) / ( 1 – tan2(x) )
3) sin(2x) = 2 sin(x) cos(x)
Ejercicios MATLAB como una calculadora Ejercicio 1.6: Estimar numéricamente el límite
lim (x→0) [ sin( π x) / x ]
Para ello observar el comportamiento del cociente [ sin( π x) / x ] para valores de x acercándose a cero.
Ejercicio 1.7: Usar help o doc para ver para que sirven los comandos diary y save, y para aprender a usarlos.
Unidad 1: Introducción y conceptos
básicos
•
Introducción al paquete y al lenguaje (Matlab/GnuOctave).
Conceptos esenciales. Línea de comandos.
•
Operaciones elementales.
•
Variables.
•
Funciones elementales.
•
Vectores. Operaciones con vectores. Vectorización.
•
Representación gráfica de funciones.
•
Scripts.
Aplicaciones en física:
•
Descripción y representación del movimiento de una partícula.
Trayectorias: r(t), v(t), a(t).
•
Derivación numérica elemental. Velocidad y aceleración.
•
Integración numérica elemental.
Vectores Conceptos básicos
Se pueden almacenar un conjunto de número en una sola variable indexada, es decir en un vector:
>> a = [ 0.25 0.33 0.5 0.66 ] >> a(2)
>> a(3) >> a(2:3)
Otras formas de definir vectores: >> a = [0.25,0.33,0.5,0.66] >> b = [1 2 3 4 5 6] >> b = [1:6] >> b = [1:1:6] >> c = [1:2:6] >> v = [1:-0.1:0] >> vv = 0:1/3:3
a
0.25
1
0.33
2
0.50
3
0.66
4
También se pueden definir las componentes: >> b = [1:1:6]
>> b(3) = 0.5
O extraerlas del vector: >> b(5) = []
O usar vectores para crear otros: >> a=[-2,-1,0],b=[1,2]
>> ab=[a b]
Crear vectores cuyo conjunto de valores está espaciado uniformemente: >> vector = [valor_inicial:espaciado:valor_final] >> vector = linspace(valor_inicial,valor_final,numero_elementos) >> xgrid = linspace(-2,2,10) >> help logspace vector(1)=valor_inicial vector(N)=valor_final N=numero_elementos Índices enteros y positivos
Vectores Operaciones con vectores
Vector “columna” y transponer vectores: >> a = [0.25;0.33;0.5;0.66]
>> b=[1:6] >> b’
Transponer vectores complejos: >> acomp=[1+i, -4, 2-3.5*i]
>> acomp’ Se pueden realizar operaciones con vectores:
>> k=[0.1:0.3:1.9] >> 3*k >> k-sqrt(3) >> length(k) >> norm(k) >> sort(k) >> v = [1, 2, 3], x = [5, 6, 7]; >> u = v+x >> u = v*x’ >> u = dot(v,x) >> u = cross(v,x)
y también elemento a elemento: >> v*x >> v.*x >> v^2 >> v.^2 >> v/x >> v./x >> acomp=[1+i, -4, 2-3.5*i] >> acomp.’
Las funciones admiten vectores como argumentos:
>> k=[0.1:0.3:1.9] >> sin(k)
>> log(k)
Definir vectores a partir de partes de otros vectores:
>> v = [1, 2, 3],u = [5, 6, 7] >> u1 = [3*u-v, 2*v]
Ejercicios Vectores Ejercicio 1.8: Crear un vector a de 10 elementos que contenga los primeros números impares y uno b de la misma dimensión que contenga los primeros pares.
Ejercicio 1.10: Genera un vector con el año de celebración de los juegos olímpicos empezando en Londres 2012 y finalizando en Londres 1948.
Con una sola línea de comando muestra las fechas de uno de cada tres juego empezando por 1948.
Ejercicio 1.9: Repite el ejercicio 1.4 y 1.5 usando vectores.
Ejercicio 1.11: Escribe en Matlab una expresión para calcular el ángulo entre dos vectores v1 y v2. Aplica esa expresión para el caso de los vectores v1 = (1, 2, 3) ; v2 = (3, 2, 1).
Ejercicio 1.12: Usar help de Matlab para conocer que hacen las siguientes funciones:
Unidad 1: Introducción y conceptos
básicos
•
Introducción al paquete y al lenguaje (Matlab/GnuOctave).
Conceptos esenciales. Línea de comandos.
•
Operaciones elementales.
•
Variables.
•
Funciones elementales.
•
Vectores. Operaciones con vectores. Vectorización.
•
Representación gráfica de funciones.
•
Scripts.
Aplicaciones en física:
•
Descripción y representación del movimiento de una partícula.
Trayectorias: r(t), v(t), a(t).
•
Derivación numérica elemental. Velocidad y aceleración.
•
Integración numérica elemental.
Representación gráfica plot
Representar sen(x) entre 0 y 2π: >> x = [0:2*pi/100:2*pi];
>> x = linspace(0,2*pi,100); >> y=sin(x);
>> plot(x,y);
x e y son dos vectores del mismo tamaño. >> plot(x,cos(x));
Colores, tipos de líneas, símbolos: >> y=x.^2;
>> plot(x,y,'r'); >> plot(x,y,'--g'); >> plot(x,y,'*');
Varias gráficas en la misma figura: >> plot(x,cos(x),x,sin(x)); >> plot(x,cos(x),'r',x,sin(x),'k'); hold >> plot(x,cos(x),'k') >> hold on >> plot(x,cos(x).^2,'r') >> close all >> plot(x,cos(x),'k') >> hold on >> plot(x,cos(x).^2,'r') >> hold off >> plot(x,sin(x),'b')
Representación gráfica plot
Título, leyenda, ejes:
>> plot(x,cos(x),'r',x,sin(x),'k')
>> title('Ejemplo representación gráfica'); >> xlabel('x(radianes)')
>> ylabel('y')
>> pos = 0; % pos=-1,0,...,4, ej. 0
>> legend('y = sen(x)', 'y = cos(x)', pos) >> text(5,0.6,'texto en la grafica')
% Comentario (En Scilab ;)
Límites de los ejes:
axis([xmin, xmax, ymin, ymax])
axis equal, axis square, axis tight
Grid:
figure(i): Genera una ventana e identifica la figura como i.
>> x = linspace(0,2*pi,100); >> figure(1)
>> plot(x,sin(x)) >> figure(2) >> plot(x,cos(x))
Representación gráfica plot
Varias figuras: subplot. >> x = linspace(0,2*pi,100); >> subplot(1,2,1), plot(x,sin(x)) >> subplot(1,2,2), plot(x,cos(x))
subplot(filas totales,columnas totales,id del subplot)
Representación de funciones, fplot: >> close all; clear all
>> fplot('x^2-3*x',[0,5],'r')
Guardar las gráficas:
>> print -dDEVICE NAMEFILE
Unidad 1: Introducción y conceptos
básicos
•
Introducción al paquete y al lenguaje (Matlab/GnuOctave).
Conceptos esenciales. Línea de comandos.
•
Operaciones elementales.
•
Variables.
•
Funciones elementales.
•
Vectores. Operaciones con vectores. Vectorización.
•
Representación gráfica de funciones.
•
Scripts.
Aplicaciones en física:
•
Descripción y representación del movimiento de una partícula.
Trayectorias: r(t), v(t), a(t).
•
Derivación numérica elemental. Velocidad y aceleración.
•
Integración numérica elemental.
Scripts ficheros .m
Matlab edita, lee y ejecuta una lista de comandos (programa) que se pueden almacenar en ficheros con extesión .m
Scripts ficheros .m
Input: introducir valores, que el programa pide. Ejemplos:
x = input('x= ')
y = input('introduce valor de y') Output: disp
doc disp
clear all
Conviene empezar todos los programas con la instrucción clear all y close all para
eliminar de la memoria los valores asignados en cálculos anteriores a todas las variables. Ellipsis
Para poder continuar escribiendo la misma instrucción en la siguiente línea del programa. Ejemplo:
sumita = 1 + 2 ... + 3 + 4 + 5
Ejercicios Gráficas
Ejercicio 1.13: Representar f(x) = x2 exp(-x) usando solid lines y símbolos
Ejercicio 1.15: Tiro Parabólico. Escribe un programa para analizar gráficamente el
movimiento de un proyectil para diversos valores iniciales (input) de la velocidad, v0 (en m/s), y del ángulo, a (en grados), de lanzamiento.
(a) Para los valores iniciales v0=10 m/s y a=60, dibujar la trayectoria del proyectil (y en función de x, y(x)), y la velocidad vertical en función del tiempo, vy(t).
(b) Analizar la conservación de la energía. Pintar en una misma gráfica la energía cinética, la energía potencial y la energía total en función del tiempo, Ec(t), Ep(t) y ET(t) (tomar m = 5 kg).
Ejercicio 1.14: Representar en una misma figura en diferentes gráficas y=sen(x), y2=sen2(x), y3=sen3(x) e y4=sen4(x).
Ejercicio 1.16: Retocar el programa del ejercicio anterior (Tiro parabólico) para dibujar en una misma gráfica la trayectoria para 5 ángulos iniciales diferentes, con valores
equi-espaciados entre 15 y 75 grados. Dibuja cada curva en un color diferente.
A partir de ahora todas las gráficas deben estar bien realizas y con un formato
adecuado, indicando los nombres de los ejes INCLUYENDO SIEMPRE LAS UNIDADES, con límites adecuados, etiquetas equiespaciadas y si es necesario leyenda, título,… y que se vea todo bien
Unidad 1: Introducción y conceptos
básicos
•
Introducción al paquete y al lenguaje (Matlab/GnuOctave).
Conceptos esenciales. Línea de comandos.
•
Operaciones elementales.
•
Variables.
•
Funciones elementales.
•
Vectores. Operaciones con vectores. Vectorización.
•
Representación gráfica de funciones.
•
Scripts.
Aplicaciones en física:
•
Descripción y representación del movimiento de una partícula.
Trayectorias: r(t), v(t), a(t).
•
Derivación numérica elemental. Velocidad y aceleración.
•
Integración numérica elemental.
Derivación numérica Definición Definición: si h es un número pequeño:
h
x
f
h
x
f
x
f
h
0lim
h
x
f
h
x
f
x
f
D
x
f
h
Diferencia finita hacia delante (Forward difference)
h
h
x
f
x
f
x
f
D
x
f
h
Diferencia finita hacia atrás (Backward difference)
h
h
x
f
h
x
f
x
f
D
x
f
h*
2
Derivación numérica Definición
Diferencia finita hacia delante (Forward difference)
h
h
x
f
x
f
x
f
D
x
f
h
Diferencia finita hacia atrás (Backward difference)
h
h
x
f
h
x
f
x
f
D
x
f
h*
2
Diferencia finita centrada (Central difference)
h
x
f
h
x
f
x
f
D
x
f
h
x
f(x)
h
f(x+h)
x+h
x-h
f(x-h)
Derivación numérica ¿Cómo lo programamos?
Diferencia finita hacia delante (Forward difference)
h
x
f
h
x
f
x
f
D
x
f
h
Ejercicio 1.17: Escribir un programa (script) que calcule la derivada numérica hacia delante de f(x) = cos(x) entre 0 y 2π. Representarla gráficamente y comparar con la solución analítica.
Tendremos que calcular un conjunto de datos equiespaciados xi, yi con yi=cos(xi) y de ellos la derivada numérica como otro conjunto de datos xi, Dhyi con Dhyi=(yi+1-yi)/(xi+1-xi)
Algoritmo: • Definir el intervalo [a,b] y el número de puntos del mallado en x, N • Generar el vector x donde a ≤ xi ≤ b, i =1:N
• Generar el vector y donde yi = f(xi), i =1:N
• Calcular el vector dx donde dxi = xi+1-xi, i =1:N-1 • Calcular el vector dy donde dyi = yi+1-yi, i =1:N-1 • Calcular el vector Dhy donde Dhyi = dyi/dxi, i =1:N-1 • Representar el conjunto (xi, Dhyi), i =1:N-1
Derivación numérica ¿Cómo lo programamos?
Diferencia finita hacia delante (Forward difference)
h
x
f
h
x
f
x
f
D
x
f
h
Ejercicio 1.17: Escribir un programa (script) que calcule la derivada numérica hacia delante de f(x) = cos(x) entre 0 y 2π. Representarla gráficamente y comparar con la solución analítica.
Tendremos que calcular un conjunto de datos equiespaciados xi, yi con yi=cos(xi) y de ellos la derivada numérica como otro conjunto de datos xi, Dhyi con Dhyi=(yi+1-yi)/(xi+1-xi)
Programa: % Intervalo a = 0; b= 2*pi; N=20; % Vectores x e y x=linspace(a,b,N); y=cos(x); % Diferencias finitas: il=1:N-1; dx=x(il+1)-x(il); dy=y(il+1)-y(il); Dhy=dy./dx; % Representación Gráfica plot(x(1:N-1),Dhy,'r') hold on Df=-sin(x); plot(x(1:N-1),Df(1:N-1),'bo') % Formato de la figura …
Derivación numérica Ejercicio 1.18: Completar el ejercicio anterior calculando y representado las diferencias hacia atrás y centradas.
Ejercicio 1.19: Calcular la derivada numérica de f(x) = cos(x) en x = π/6 para h = 0.1. Calcular el error cometido. Repetir el cálculo para h = 0.05, 0.025, 0.0125, 0.00625 y 0.003125. Analizar cómo se va reduciendo el error al disminuir h.
Hacer el mismo cálculo para los tres métodos explicados. ¿Qué método es mejor?
Ejercicio 1.20: Calcula y dibuja en el intervalo x=[0,5] la derivada de la función:
f(x) = exp(x) cos(x)/(1+ x4). Usar loglog y semilogy para representar la derivada en x=[0,50].
Ejercicios
Ejercicio 1.21: Calcular numéricamente la velocidad y aceleración en función del tiempo partiendo de la posición x(t) e y(t) del ejercicio 1.15, tiro parabólico.
Unidad 1: Introducción y conceptos
básicos
•
Introducción al paquete y al lenguaje (Matlab/GnuOctave).
Conceptos esenciales. Línea de comandos.
•
Operaciones elementales.
•
Variables.
•
Funciones elementales.
•
Vectores. Operaciones con vectores. Vectorización.
•
Representación gráfica de funciones.
•
Scripts.
Aplicaciones en física:
•
Descripción y representación del movimiento de una partícula.
Trayectorias: r(t), v(t), a(t).
•
Derivación numérica elemental. Velocidad y aceleración.
•
Integración numérica elemental.
Integración numérica Definición Problema general:
b
af
x
dx
f
I
• f(x) is known.• A set of points {xi,fi=f(xi)} (i=0,n) of f(x) is known.
The method that we are going to explain in this lesson can not be generalized for any f(x), for example f should not be grouped in “peaks”, it should be characterized by a single scale, etc. Furthermore, for the case of a known set of points, these should equidistant. In any other case, techniques for solving differential equations should be used.
Equidistant points formula: Trapezoidal, Simpson, Bode and higher order rules.
• Newton-Cotes formulas: We approach the function f(x) by a polynomial.
• Trapezoidal rule: Lineal Interpolation:
0 1 1 0 0 1 1x
x
y
x
x
y
x
x
x
P
x
dx
x
x
f
x
f
x
h
f
f
h
f
c
f
x x '' 3 1 0 1 0 0 112
2
1
2
1
2
1
2
1
1 0
Integración numérica Regla del trapezoide
• Newton-Cotes formulas
• Trapezoidal rule: Lineal Interpolation:
1 0 0 12
1
2
1
1 0x
f
x
f
x
x
dx
x
f
x x• Extended Trapezoidal rule:
n n n b ac
f
a
b
h
f
f
f
f
h
dx
x
f
'' 2 1 1 012
2
1
...
2
1
f
T
nIntegración numérica Regla del trapezoide
• Extended Trapezoidal rule:
n n n b ac
f
a
b
h
f
f
f
f
h
dx
x
f
'' 2 1 1 012
2
1
...
2
1
f
T
nEjercicio 1.22: Escribir un programa (script) que calcule la integral numérica usando la regla del trapezoide de f(x) = sen(x) entre 0 y π/2. Usar varios números de intervalos: ir duplicando n desde n=1 a n=256. Calcular el error y analizar su comportamiento en función de n.
c
f
h
f
f
f
h
dx
x
f
x x 4 5 2 1 012
3
1
3
4
3
1
2 0
Integración numérica Regla del Simpson
• Newton-Cotes formulas
• Simpson rule (polynomial of degree 2):
• Extended Simpson rule:
n n b af
x
dx
h
f
f
f
f
f
3
f
1
3
4
...
3
4
3
2
3
4
3
1
1 3 2 1 0
f
S
n
n c f a b h 4 4 180 Ejercicio 1.23: Repetir el ejercicio anterior usando la regla de Simpson. ¿Qué método es más preciso?
Integración numérica Ejercicio 1.24: Calcula la integral, en el intervalo x=[0,5], de la función:
f(x) = exp(x) cos(x)/(1+ x4 )
Ejercicio 1.25: Calcular la siguiente integral:
𝐸 𝑘 = 1 − 𝑘2sin2 θ π
2 0
𝑑θ
para varios valores de k y a continuación representar la función E(k). Ejercicios
Ejercicio 1.26: Suponer que tenemos un partícula cuya velocidad en el intervalo de tiempo T = [0:10s], viene dada por:
𝑣𝑥 𝑡 = 𝑣0 + 𝑘𝑡 𝑣𝑦 𝑡 = 𝐴cos ω𝑡
Una vez escogido un valor de los parámetros v0, k, A y ω, dibujar una gráfica de su trayectoria en el plano (x,y).