%% Práctica 7. Integración y derivación numéricas.
% Aunque Matlab cuenta con comandos para realizar integrales y derivadas 
% simbólicamente, en ocasiones no se cuenta con la expresión 
% de la función sino sólo con algunos valores. En otras ocasiones, aunque se 
% disponga de la expresión, es costoso hallar la función derivada o la 
% primitiva, o ésta no puede expresarse usando funciones elementales.

%%
% Las fórmulas de integración y derivación numérica suelen requerir los 
% valores de la función a integrar o derivar en varios puntos. 
% Estos valores pueden estar recogidos en un vector o hallarse evaluando la
% función.
%
% En esta práctica veremos algunos métodos para hallar numéricamente 
% la integral definida y la derivada de una función en un punto.

%% Integración numérica.
% Una de las fórmulas más simples para aproximar el valor de la integral
% definida es la fórmula del trapecio. Esta fórmula aproxima el valor de la
% integral definida entre x=a y x=b por el área del trapecio definido por el
% eje OX, la recta x=a, la recta x=b y la recta que une los puntos (a,f(a))
% y (b,f(b)).
% 
a=2;
b=3;
trapecio=(b-a)*(f(a)+f(b))/2

%% Fórmula del trapecio compuesta
% Si dividimos un intervalo [a,b] en intervalos de longitud h=(b-a)/n con
% nodos xi=a+i*h, podemos aplicar a cada uno de esos intervalos la fórmula
% del trapecio y obtener la fórmula del trapecio compuesta
% (h/2)*(f(a) + 2*f(a+h) + 2*f(a+2h) + 2*f(a+3h) + ... + 2*f(a+(n-1)h) + f(b))
%
% En la función trapecioc.m se encuentra una implementación del método.

%%
% Ej 1. Incluya en la función trapecioc.m un comentario en la segunda linea
% indicando el objetivo de la función y otros comentarios explicando el 
% significado de las variables a, b y N.

%%
% Ej 2. Mediante la fórmula del trapecio compuesta, aproxime el valor de la 
% integral definida entre x=-1 y x=1 de la función f(x)=sqrt(1-x^2) usando n=2,
% n=100 y n=1000 nodos. ¿El área de qué figura se está calculando cuando n=2? 
% Sabiendo que el valor exacto de la integral es pi/2, halle el error
% absoluto de las aproximaciones.
% (Sol: 1, 1.5691, 1.5707. Errores absolutos 0.5708, 0.0017, 5.2588e-005 )

%% Fórmula de Simpson
% En la fórmula de Simpson, el valor de la integral definida se aproxima
% mediante una parábola que interpola el integrando en tres puntos.
a=-1;
b=1;
simpson=(b-a)*f(a)/6 + 4*(b-a)*f( (a+b)/2 )/6 + (b-a)*f(b)/6

%%
% Ej 3. Defina una función anónima con argumentos a y b que aproxime la integral
% de una función f (definida previamente) entre x=a y x=b usando la fórmula
% de Simpson. Use dicha fórmula para aproximar la integral definida de cos(x)
% entre 0 y pi/2.
% (Sol. 1.0023)

%% Fórmula de Simpson compuesta.
% Si dividimos un intervalo [a,b] mediante nodos 
% a=x0 < x1 < x2 < ... < xN=b y en cada uno de ellos aplicamos la regla de
% Simpson, obtendremos la regla de Simpson compuesta.
%
% Ej 4. Para h=(b-a)/N y xi=a+i*h, implemente la fórmula de Simpson 
% compuesta. (Puede inicializar un acumulador como s=f(a), y vaya sumando 
% 2*f(a+i*h)+4*f( a+(i+1/2)*h ) para i=1,2,...,N-1; por último, sume 
% 4*f( a+h/2 )+f(b). El valor aproximado de la integral es h por el valor del 
% acumulador dividido entre 6. Observe que (x0+x1)/2=a+h/2, y que 
% (a+i*h + a+(i+1)*h)/2=a+(i+1/2)*h.)
% Compruebe la fórmula aproximando el valor de la integral de sen(x) entre 
% x=0 y x=3.14159 considerando N=10. (Sol. 2.0000)

%%
% Ej 5. Usando la fórmula de integración del trapecio compuesta aproxime la
% integral de la función x(t)=t^3-t^2+t+2 entre t=0 y t=2.2 considerando
% n=5. Aproxime la misma integral mediante la fórmula de Simpson compuesta 
% también para n=5. Sabiendo que el valor exacto de la integral es 
% 68453/7500, ¿cuál de los dos resultados se ha aproximado más al valor
% exacto?
% (Sol. Trapecio compuesta = 9.2903. Simpson compuesta = 9.1271.)

%%
% Ej 6. La energía de una señal x(t) en un intervalo [a,b] es la integral definida 
% de |x(t)|^2 entre t=a y t=b. Se quiere hallar la energía de la señal x(t)= 
% exp(-L*t)*cos(2*pi*t) en el intervalo [-1, 1] para L=1 y L=2. Aproxime ambas 
% integrales mediante la fórmula de Simpson compuesta con N=50.  
% (El valor absoluto se puede calcular con abs).
% (Sol. para L=1, E=1.8582, para L=2, E=7.4501 )

%% Derivación numérica.
% La fórmula de la diferencia central permite aproximar la derivada de una
% función en un punto a partir de dos evaluaciones de dicha función.
difc=@(x,h) (f(x+h)-f(x-h))/(2*h)

%%
% Ej 7. Emplee la fórmula definida para aproximar la derivada de la función
% f(x)=sqrt(1-x^2) en el punto x=sqrt(2)/2 para h=0.01
% (Sol. -1.0002)

%%
% Ej 8. El script malp.m usa la fórmula de la diferencia central para aproximar
% la derivada de f(x)=sqrt(1-x^2) en el punto x=sqrt(2)/2 para distintos 
% valores h=10^(-i).
% Modifique el programa para que pueda representarse en el eje horizontal 
% los valores de i y en el eje vertical el valor absoluto del error absoluto
% cometido.
% Vuelva a modificar el programa para que en el eje vertical se muestre
% log10(abs(y)) donde y=(-1)-derivadaap es el error absoluto cometido. 
% Observe que un valor de h más pequeño no da necesariamente menor error. 
% De los valores h empleados, ¿cuáles dan el error más pequeño?
% (Sol. h=10^(-6), h=10^(-7).)

%%
% Ej 9. Modifique el script malp.m para aproximar el valor de la derivada de 
% f(x)=exp(x) en el punto x=0. Sabiendo que el resultado exacto es 
% f '(0)=exp(0)=1 ¿qué valor de h da el error más pequeño?
% (Cap 6. Diez lecciones de cálculo numérico. Sanz-Serna)
% (Sol. h=10^(-5) )

%%
% Ej 10. Implemente la fórmula de cinco puntos dada por la siguiente expresión

%   f(x-2h)    -2*f(x-h)    2*f(x+h)   -f(x+2h) 
%  --------- + --------- + --------- + ---------
%     12h         3h          3h          12h  

%%
% Use la fórmula para hallar la derivada de la función f(x)=exp(x) en x=1
% para h=10^(-3).
% Sabiendo que el valor exacto de la derivada es exp(1) ¿qué error absoluto
% se comete al considerar el valor que da la fórmula de cinco puntos?
% (Sol. 5.0182e-013 )

%% Derivación e integración numéricas mediante interpolación y aproximación.
% Una manera de hallar una derivada o una integral definida a partir de los
% valores de una función consiste en hallar un polinomio interpolante o una
% aproximación (como hemos hecho en la práctica 5 y 6) y derivar o integrar
% la función interpolante o la función de aproximación.
%
% En el siguiente ejercicio se aproxima una derivada a partir de un ajuste
% parabólico de unos datos.

%%
% Ej 11. Se quiere estudiar una señal y=f(x) continua mediante un ajuste parabólico a partir de los siguientes datos de muestreo.

x=[1;  3;  4;  5;  7;  9];
y=[2.96;  7.1;  7.9;  8.34;  7.05;  3.04];

%%
% i) Halle el ajuste parabólico de los datos.
%
% ii) Usando la parábola obtenida, halle una aproximación a la derivada de
% la señal en x=2 y en x=5. (Sol. 2.0065, 0.0080).
%
% iii) Usando de nuevo la parábola, halle una aproximación a la integral
% definida entre 0 y 10 de la señal. (Sol. 55.6671).

% Ecuaciones Diferenciales y Cálculo Numérico. (A. Palomares)
% Grado en Ingeniería de Tecnologías de Telecomunicación.
disp(date)