Diferenciación Numérica en Matlab

January 28, 2019 | Author: JOTARU | Category: Integral, Euclidean Vector, Numerical Analysis, Derivative, Calculus
Share Embed Donate


Short Description

códigos para diferenciar en Matlab...

Description

Universidad Nacional de Ingeniería Post-grado Ingeniería Mecánica

P.A.-2008-1

Diferenciación Numérica en Matlab Matlab puede ser usado para aproximar el proceso de integración. Comencemos con el vector  >> t=0:0.1:10; >> x1=cos(2*t); >> y=diff(x1)./diff(t);

1) Encontrar que hace la función "diff()"(">> "diff()"(" >> help diff " or ">> ">> doc diff "), "), y explique  porque la variable y sería la aproximación a la derivada de x1. Trate de dibujar el vector  y vector  y vs el vector t vector t ( ">> plot(t,y)" plot(t,y)" ). No funcionaria funcionaria porque el vector y es de diferente longitud que el vector t. Para analizar el tamaño, puede tipear  ">> size(y)" size(y)" y ">> ">> size(t)" size(t)" o podría usar ">> length(y)" length(y)" y ">> ">> length(t)", length(t)", desde que estos son vectores de una dimensión. Para resolver el tamaño incompatible, hacer que el vector  y  y tenga un elemento más, luego graficar ambas funciones. >> y(length(y)+1)=y(length(y)); >> plot(t,x1,t,y); >> legend('cos(2*t)','derivative');

2) Es la función y que ud. esperaba? Justifique? Porque normalmente no se usa la diferenciación numérica. Añadamos un ruido al coseno y vuelva a graficar. Este ruido puede ser medidas medidas experimentales. Note que la señal no luce tan mal, pero, la derivada es una mala aproximación.

x=cos(2*t)+0.1*randn(size(t)); >> y=diff(x)./diff(t); >> y(length(y)+1)=y(length(y)); >> plot(t,x,t,y) >>  plot(t,x,t,y);; >> legend('cos(2*t)+noise','derivada'); >> title('Diferenciación con ruido')

3) Explique que es lo que hace la primera línea.

Métodos Numéricos

1

Universidad Nacional de Ingeniería Post-grado Ingeniería Mecánica

P.A.-2008-1

Fórmulas de 03 puntos respectivamente, obtenemos las tres siguientes fórmulas (llamadas de "tres puntos")

Fórmula de los 05 puntos

Fórmula para la segunda derivada Con las mismas hipótesis, se puede deducir una fórmula de tres puntos para la segunda derivada

EJ

Métodos Numéricos

2

Universidad Nacional de Ingeniería Post-grado Ingeniería Mecánica 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09

P.A.-2008-1 1.00 1.010050167 1.02020134 1.030454534 1.040810774 1.051271096 1.061836547 1.072508181 1.083287068 1.094174284

Estimar  f ′(0.05) y  f ′(0.08)

SOLUCIÓN. Para estimar   f ′(0.05) se puede usar la fórmula de cinco puntos mientras que para estimar   f ′(0.08) podemos usar una fórmula de tres puntos, para ser exactos, la fórmula apropiada es la fórmula para  f ′( x1 ) . 

Estimación de  f ′(0.05) con la fórmula de cinco puntos. Seleccionamos cinco puntos de tal manera que,  x 2

=

0.05

0.00 1 0.01 1.010050167 0.02 1.02020134 0.03 0.04 0.05 0.06

1.030454534 1.040810774 1.051271096 1.061836547

1.072508181 0.07 0.08 1.083287068 0.09 1.094174284 Ahora aplicamos la fórmula, como

Métodos Numéricos

h

=

0.01

3

Universidad Nacional de Ingeniería Post-grado Ingeniería Mecánica

P.A.-2008-1

 x 1 como se esperaba ya que (e )



=

e x

Estimación de  f ′(0.08) con la fórmula de tres puntos para estimar   f ′( x1 ) . Seleccionamos tres puntos de tal manera que,  x1

=

0.00 0.01

1.00 1.010050167

0.02 0.03 0.04 0.05

1.02020134 1.030454534 1.040810774 1.051271096

0.06

1.061836547

0.08

0.0 1.072508181 7 0.0 1.083287068 8 0.0 1.094174284 9 Ahora aplicamos la fórmula, como

Como se esperaba. Observe que la precisión no es tan buena como la obtenida con la fórmula de cinco puntos.

Integración Numérica en Matlab Matlab puede también ser utilizado para aproximar el proceso de la integración, con más éxito. La figura abajo representa el proceso de aproximación de una integral.

Métodos Numéricos

4

Universidad Nacional de Ingeniería Post-grado Ingeniería Mecánica

P.A.-2008-1

Empecemos con el mismo vector anterior. >> t=0:0.1:10; >> x1=cos(2*t); >> y=cumsum(x1.*diff(t)); Esto no funciona porque son vectores de diferente longitud por el uso de diff(),. Por lo que tendremos que hacer lo siguiente: >> y=cumsum(x1(1:(length(x1)-1)).*diff(t)); >> y(length(y)+1)=y(length(y)); >> plot(t,x1,t,y) >> legend('cos(2*t)','integral') 1) Explicar porqué la variable y será aproximadamente el valor de la integral de x1. Puede ser que desees referir a la imagen sobre su respuesta.

2) Es la función y lo que Ud. esperabat? Justifique? Integración en presencia de ruido. Agreguemos un poco de “ruido al azar” al coseno y tracemos otra vez. Notar que no tenemos el mismo problema que tuvimos con la diferenciación. >> x=cos(2*t)+0.1*randn(size(t)); >> y=cumsum(x(1:(length(x)-1))).*diff(t); >> y(length(y)+1)=y(length(y)); >> plot(t,x1,t,y) >> legend('cos(2*t)+noise','integral');

Métodos Numéricos

5

Universidad Nacional de Ingeniería Post-grado Ingeniería Mecánica

P.A.-2008-1

>> title('Integration with a little noise')

4) Explicar porqué la diferenciación numérica es inferior a la integración en presencia de ruido. Para aclarar, considerar exactamente que es que lo hacen ambos procesos.

Symbolic Manipulations Podemos también hacer un cálculo simple (diferenciación e integración).

>> syms t >> y=cos(2*t) >> diff(y,t) >> int(y,t)

We won't be using the symbolic capabilities of MatLab in this course, but they can be quite convenient. To find out more: >> doc symbolic 5. Este código encuentra los pesos de las fórmulas de integración que están basados en los polinomios de interpolación: function A=quadcoeff(x,a,b) % QUADCOEFF coeficientes para las formulas de integración % Uso: A=QUADCOEFF(X,A,B) % Aquí sum(A.*f(X)) aproxima la integral de f(x) en [A,B]  N = length(x); V = ones(N,N); for k=2:N V(k,:) = V(k-1,:).*x(:).'; end  p = (1:N)';

Métodos Numéricos

6

Universidad Nacional de Ingeniería Post-grado Ingeniería Mecánica

P.A.-2008-1

f = (b.^p-a.^p)./p; A = V\f; a. Use el código para encontrar los coeficientes de la cuadratura

 Respuesta: A1 = ____________ , A 2 = _____________, A3=________________.  b. Encontrar los pesos para integrar en [0,1] usando n+1 igualmente espaciado (incluyendo las fronteras) en [0,1]. Cuál es el valor de n que incluye pesos negativos??  Respuesta: Pesos para n=2 son ________________________, pesos negativos aparece cuando n=_________  6. Este código calcula integrales por la regla compuesta trapezoidal: function T = traprule(f,a,b,m) % TRAPRULE Integration using trapezoid rule % Usage: TRAPRULE(FNAME,A,B,M) % This returns the integral of F=FNAME(X) % from A to B using M intervals. x = linspace(a,b,m+1); T = feval(f,a)/2 + feval(f,b)/2; for i=1:m-1 T = T + feval(f,x(i+1)); end T = (b-a)/m * T;

y este código calcula la integral usando la regla compuesta de simpson. function S = simpsonrule(f,a,b,m) % SIMPSONRULE Integration using Simpson's rule % Usage: SIMPSONRULE(FNAME,A,B,M) % This returns the integral of F=FNAME(X) % from A to B using M intervals. M should be even. x = linspace(a,b,m+1); S = feval(f,a)/3 + feval(f,b)/3; for i = 2:2:m S = S + feval(f,x(i))*4/3; end for i = 3:2:m-1 S = S + feval(f,x(i))*2/3; end S = (b-a)/m * S;

Use estos códigos para calcular usando la regla trapezoidal compuesta y la regla de Simpson compuesta. Verifique que el error es proporcional a h2 y h4, respectivamente, donde h es el ancho del sub-intervalo. El valor de la integral es

Métodos Numéricos

7

Universidad Nacional de Ingeniería Post-grado Ingeniería Mecánica

P.A.-2008-1

aproximadamente 13.725105140577548326  Respuesta: h=0.1

h=0.05

error trapezoidal

________

________  

Error de Simpson

________

________ 

Métodos Numéricos

8

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF