derivaciÓn e integraciÓn numÉrica

8
Pr 1 Derivación e Integración Numérica Jaime Martínez Verdú Página 1 Función para aproximación de integrales mediante la regla del trapecio En esta parte de la práctica se confeccionará el código de programación para la obtención de la integral aproximada de una función empleando para ello el método del trapecio. La declaración de la función se ha realizado introduciendo como argumentos la función objetivo fx (recordar que se introduce entrecomillado como un vector de caracteres), el paso h y los extremos del intervalo de integración a y b. Además, la salida de la función es el valor de la integral aproximada declarada con el nombre integral_trapecio. Para evitar que el usuario introduzca un valor del paso h incorrecto, se han preparado unas líneas de código con la intención de impedir que el código se ejecute para un valor erróneo de paso h. Para ello se emplea la función rem y abs, de modo que obtengamos el resto de la división entre la diferencia positiva entre los extremos y el paso. Por lo tanto, si se introdujera un valor de h incorrecto, el programa quedaría “encerrado” en un bucle de repetición a la espera de que el usuario acertara con un valor correcto de h. El cuerpo del programa queda claramente dividido en dos partes, la obtención de los valores extremos del método y la de los valores centrales. Para la obtención de los valores extremos empleamos valor=subs(fx,'x',a) y valor=subs(fx,'x',b). En cambio, para obtener el valor de las áreas interiores empleamos un bucle donde se “machaca” el valor de la suma de las áreas con el suyo propio más la nueva área añadida. Al final, se obtiene el valor del resultado multiplicando por h/2. function integral_trapecio=mitrapecio(fx,h,a,b) % Comprobación de que el valor de h debe ser un divisor exacto de|b-a| while rem(abs(b-a),h)~=0 h=input('Nos has introducido un paso válido. Inténtalo de nuevo:'); end %Calculamos los términos de la integral valor=subs(fx,'x',a); for i=a+h:h:b-h valor=valor+2*subs(fx,'x',i); end valor=valor+subs(fx,'x',b); integral_trapecio=valor*h/2; return

Upload: jaime-martinez-verdu

Post on 18-Dec-2014

2.521 views

Category:

Documents


3 download

DESCRIPTION

 

TRANSCRIPT

  • 1. Pr 1 Derivacin e Integracin Numrica Funcin para aproximacin de integrales mediante laregla del trapecio En esta parte de la prctica se confeccionar el cdigo de programacin parala obtencin de la integral aproximada de una funcin empleando para ello elmtodo del trapecio. La declaracin de la funcin se ha realizado introduciendocomo argumentos la funcin objetivo fx (recordar que se introduce entrecomilladocomo un vector de caracteres), el paso h y los extremos del intervalo de integracina y b. Adems, la salida de la funcin es el valor de la integral aproximadadeclarada con el nombre integral_trapecio. Para evitar que el usuario introduzca un valor del paso h incorrecto, se hanpreparado unas lneas de cdigo con la intencin de impedir que el cdigo se ejecutepara un valor errneo de paso h. Para ello se emplea la funcin rem y abs, de modoque obtengamos el resto de la divisin entre la diferencia positiva entre losextremos y el paso. Por lo tanto, si se introdujera un valor de h incorrecto, elprograma quedara encerrado en un bucle de repeticin a la espera de que elusuario acertara con un valor correcto de h. El cuerpo del programa queda claramente dividido en dos partes, laobtencin de los valores extremos del mtodo y la de los valores centrales. Para laobtencin de los valores extremos empleamos valor=subs(fx,x,a) yvalor=subs(fx,x,b). En cambio, para obtener el valor de las reas interioresempleamos un bucle donde se machaca el valor de la suma de las reas con elsuyo propio ms la nueva rea aadida. Al final, se obtiene el valor del resultado multiplicando por h/2.function integral_trapecio=mitrapecio(fx,h,a,b)% Comprobacin de que el valor de h debe ser un divisor exacto de|b-a|while rem(abs(b-a),h)~=0h=input(Nos has introducido un paso vlido. Intntalo de nuevo:);end%Calculamos los trminos de la integralvalor=subs(fx,x,a);for i=a+h:h:b-hvalor=valor+2*subs(fx,x,i);endvalor=valor+subs(fx,x,b);integral_trapecio=valor*h/2;return Jaime Martnez Verd Pgina 1
  • 2. Pr 1 Derivacin e Integracin Numrica Funcin para aproximacin de integrales mediante laregla del Simpson En esta ocasin se confeccionar el cdigo de programacin para laobtencin de la integral aproximada de una funcin empleando para ello la regla deSimpson. La declaracin de la funcin se ha realizado introduciendo comoargumentos la funcin fx, el paso h y los extremos del intervalo de integracin a yb. Adems, la salida de la funcin es integral_simpson. Para evitar que el usuario introduzca un paso incorrecto se ha preparadounas lneas de cdigo con la intencin de impedir que el cdigo se ejecute para unvalor errneo de paso h. El planteamiento es semejante al del caso anterior. El cuerpo del programa queda claramente dividido en dos partes, laobtencin de los valores extremos del mtodo y la de los valores centrales. Para laobtencin de los valores extremos empleamos valor=subs(fx,x,a) yvalor=subs(fx,x,b). En cambio, para obtener el valor de las reas interioresempleamos un bucle donde se machaca el valor de la suma de las reas con elsuyo propio ms la nueva rea aadida. En esta ocasin el cdigo tiene una curiosidad puesto que los trminosinteriores van alternndose. Para contemplar este caso en el cdigo es necesariorealizar una comprobacin para averiguar si el contador es par o impar. Si el valordel contador es divisible por dos, entonces estamos en un elemento interior de laforma f1, f3, f5, por lo que es necesario multiplicarlo por 4. En caso contrario semultiplica por 2. Al final, se obtiene el valor del resultado multiplicando por h/3.function integral_simpson=misimpson(fx,h,a,b)% Comprobacin de que el valor de h debe ser un divisor exacto de |b-a|while rem(abs(b-a),h)~=0 h=input(No has introducido un paso vlido. Intntalo de nuevo:);end%Calculamos los trminos de la integralvalor=subs(fx,x,a);j=2;for i=a+h:h:b-h if(rem(j,2)==0) valor=valor+4*subs(fx,x,i); else valor=valor+2*subs(fx,x,i); end j=j+1;endvalor=valor+subs(fx,x,b);integral_simpson=valor*h/3;return Jaime Martnez Verd Pgina 2
  • 3. Pr 1 Derivacin e Integracin Numrica Funcin para aproximacin de integrales mediante elmtodo de Romberg En esta prctica se confeccionar el cdigo de programacin para laobtencin de la integral aproximada de una funcin empleando para ello el mtodode Romberg. La declaracin de la funcin se ha realizado introduciendo comoargumentos la funcin fx, el paso h y los extremos del intervalo de integracin a y by el valor del k-simo. Adems, la salida de la funcin es integral_simpson. Debe comentarse un aspecto. El valor de h introducido ser el valor de(2^(k-1))*h por lo que es un aspecto a tenerse en cuenta. Para evitar que el usuario introduzca un paso incorrecto se ha preparadounas lneas de cdigo con la intencin de impedir que el cdigo se ejecute para unvalor errneo de paso h. Para ello se emplea la funcin rem y abs, de modo queobtengamos el resto de la divisin entre la diferencia positiva entre los extremos yel paso. A continuacin, se machaca el valor de (2^(k-1))*h a h para empezar por elprimer elemento de la aproximacin. A continuacin, inicializamos el valor de lamatriz donde se colocarn los valores procedentes del algoritmo. El cuerpo del programa queda claramente dividido en tres partes, laobtencin de los valores de la primera columna del algoritmo, el resto de valores yel volteo de la matriz para que visualmente se represente como el mtodo. En la primera parte del cdigo se empleaR(i,1)=mitrapecio(fx,h*2^(i-1),a,b) para calcular los primeros elementosempleando la regla del trapecio. En la segunda parte del cdigo se calculan el resto de casillas de modo que,aplicando R(i,j)=(4^(j-1)*R(i,j-1)-R(i+1,j-1))/(4^(j-1)-1) seconsigue calcular el resto de cdigos. Vase que se trata de la frmula de la pgina21 donde el trmino k de la frmula se ha implementado empleando j-1, R(i,j-1)hace referencia al trmino de la frmula k-1-simo para paso h y el trminoR(i+1,j-1) hace referencia al k-1-simo para paso 2h. Finalmente, se procede a invertir la matriz para que se asemeje a la matrizestudiada en teora. Jaime Martnez Verd Pgina 3
  • 4. Pr 1 Derivacin e Integracin Numricafunction integral_romberg=miromberg(fx,h,a,b,k)while rem(abs(b-a),h)~=0 h=input(No has introducido un paso vlido. Intntalo de nuevo:);endh=h/2^(k-1);%Calculamos los trminos de la integralR=zeros(k,k);i=1;while (i