Você está na página 1de 8

Universidad Nacional de Ingeniera Post-grado Ingeniera Mecnica

P.A.-2008-1

Diferenciacin Numrica en Matlab


Matlab puede ser usado para aproximar el proceso de integracin. Comencemos con el vector >> t=0:0.1:10; >> x1=cos(2*t); >> y=diff(x1)./diff(t); 1) Encontrar que hace la funcin "diff()"(">> help diff" or ">> doc diff"), y explique porque la variable y sera la aproximacin a la derivada de x1. Trate de dibujar el vector y vs el vector t (">> plot(t,y)" ). No funcionaria porque el vector y es de diferente longitud que el vector t. Para analizar el tamao, puede tipear ">> size(y)" y ">> size(t)" o podra usar ">> length(y)" y ">> length(t)", desde que estos son vectores de una dimensin. Para resolver el tamao incompatible, hacer que el vector y tenga un elemento ms, luego graficar ambas funciones. >> y(length(y)+1)=y(length(y)); >> plot(t,x1,t,y); >> legend('cos(2*t)','derivative'); 2) Es la funcin y que ud. esperaba? Justifique? Porque normalmente no se usa la diferenciacin numrica. Aadamos un ruido al coseno y vuelva a graficar. Este ruido puede ser medidas experimentales. Note que la seal no luce tan mal, pero, la derivada es una mala aproximacin. 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); >> legend('cos(2*t)+noise','derivada'); >> title('Diferenciacin con ruido') 3) Explique que es lo que hace la primera lnea.

Mtodos Numricos

Universidad Nacional de Ingeniera Post-grado Ingeniera Mecnica

P.A.-2008-1

Frmulas de 03 puntos respectivamente, obtenemos las tres siguientes frmulas (llamadas de "tres puntos")

Frmula de los 05 puntos

Frmula para la segunda derivada Con las mismas hiptesis, se puede deducir una frmula de tres puntos para la segunda derivada

EJ

Mtodos Numricos

Universidad Nacional de Ingeniera Post-grado Ingeniera Mecnica 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 Estimar f (0.05) y f (0.08) 1.00 1.010050167 1.02020134 1.030454534 1.040810774 1.051271096 1.061836547 1.072508181 1.083287068 1.094174284

P.A.-2008-1

SOLUCIN. Para estimar f (0.05) se puede usar la frmula de cinco puntos mientras que para estimar f (0.08) podemos usar una frmula de tres puntos, para ser exactos, la frmula apropiada es la frmula para f ( x1 ) . Estimacin de f (0.05) con la frmula 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 frmula, como h = 0.01

Mtodos Numricos

Universidad Nacional de Ingeniera Post-grado Ingeniera Mecnica como se esperaba ya que (e x )1 = e x

P.A.-2008-1

Estimacin de f (0.08) con la frmula de tres puntos para estimar f ( x1 ) . Seleccionamos tres puntos de tal manera que, x1 = 0.08

0.00 0.01 0.02 0.03 0.04 0.05 0.06

1.00 1.010050167 1.02020134 1.030454534 1.040810774 1.051271096 1.061836547

0.0 1.072508181 7 0.0 1.083287068 8 0.0 1.094174284 9 Ahora aplicamos la frmula, como

Como se esperaba. Observe que la precisin no es tan buena como la obtenida con la frmula de cinco puntos. Integracin Numrica en Matlab Matlab puede tambin ser utilizado para aproximar el proceso de la integracin, con ms xito. La figura abajo representa el proceso de aproximacin de una integral.

Mtodos Numricos

Universidad Nacional de Ingeniera Post-grado Ingeniera Mecnica

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 funcin y lo que Ud. esperabat? Justifique? Integracin 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 diferenciacin. >> 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');

Mtodos Numricos

Universidad Nacional de Ingeniera Post-grado Ingeniera Mecnica >> title('Integration with a little noise')

P.A.-2008-1

4) Explicar porqu la diferenciacin numrica es inferior a la integracin en presencia de ruido. Para aclarar, considerar exactamente que es que lo hacen ambos procesos.

Symbolic Manipulations
Podemos tambin hacer un clculo simple (diferenciacin e integracin).

>> 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 cdigo encuentra los pesos de las frmulas de integracin que estn basados en los polinomios de interpolacin: function A=quadcoeff(x,a,b) % QUADCOEFF coeficientes para las formulas de integracin % 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)';

Mtodos Numricos

Universidad Nacional de Ingeniera Post-grado Ingeniera Mecnica f = (b.^p-a.^p)./p; A = V\f;

P.A.-2008-1

a. Use el cdigo para encontrar los coeficientes de la cuadratura

Respuesta: A1 = ____________ , A2 = _____________, A3=________________. b. Encontrar los pesos para integrar en [0,1] usando n+1 igualmente espaciado (incluyendo las fronteras) en [0,1]. Cul es el valor de n que incluye pesos negativos?? Respuesta: Pesos para n=2 son ________________________, pesos negativos aparece cuando n=_________ 6. Este cdigo 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 cdigo 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 cdigos 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 Mtodos Numricos 7

Universidad Nacional de Ingeniera Post-grado Ingeniera Mecnica aproximadamente 13.725105140577548326 Respuesta: h=0.1 ________ ________ h=0.05 ________ ________

P.A.-2008-1

error trapezoidal Error de Simpson

Mtodos Numricos

Você também pode gostar