DERIVACIÓN E INTEGRACIÓN NUMÉRICA

3,360 views
3,105 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,360
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
85
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

DERIVACIÓN E INTEGRACIÓN NUMÉRICA

  1. 1. Pr 1 – Derivación e Integración Numérica Función para aproximación de integrales mediante laregla del trapecio En esta parte de la práctica se confeccionará el código de programación parala obtención de la integral aproximada de una función empleando para ello elmétodo del trapecio. La declaración de la función se ha realizado introduciendocomo argumentos la función objetivo fx (recordar que se introduce entrecomilladocomo un vector de caracteres), el paso h y los extremos del intervalo de integracióna y b. Además, la salida de la función 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 líneas de código con la intención de impedir que el código se ejecutepara un valor erróneo de paso h. Para ello se emplea la función rem y abs, de modoque obtengamos el resto de la división entre la diferencia positiva entre losextremos y el paso. Por lo tanto, si se introdujera un valor de h incorrecto, elprograma quedaría “encerrado” en un bucle de repetición a la espera de que elusuario acertara con un valor correcto de h. El cuerpo del programa queda claramente dividido en dos partes, laobtención de los valores extremos del método y la de los valores centrales. Para laobtención 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 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)~=0h=input(Nos has introducido un paso válido. Inténtalo de nuevo:);end%Calculamos los términos 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 Martínez Verdú Página 1
  2. 2. Pr 1 – Derivación e Integración Numérica Función para aproximación de integrales mediante laregla del Simpson En esta ocasión se confeccionará el código de programación para laobtención de la integral aproximada de una función empleando para ello la regla deSimpson. La declaración de la función se ha realizado introduciendo comoargumentos la función fx, el paso h y los extremos del intervalo de integración a yb. Además, la salida de la función es integral_simpson. Para evitar que el usuario introduzca un paso incorrecto se ha preparadounas líneas de código con la intención de impedir que el código se ejecute para unvalor erróneo de paso h. El planteamiento es semejante al del caso anterior. El cuerpo del programa queda claramente dividido en dos partes, laobtención de los valores extremos del método y la de los valores centrales. Para laobtención 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 más la nueva área añadida. En esta ocasión el código tiene una curiosidad puesto que los términosinteriores van alternándose. Para contemplar este caso en el código es necesariorealizar una comprobación 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)% 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(No has introducido un paso válido. Inténtalo de nuevo:);end%Calculamos los términos 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 Martínez Verdú Página 2
  3. 3. Pr 1 – Derivación e Integración Numérica Función para aproximación de integrales mediante elmétodo de Romberg En esta práctica se confeccionará el código de programación para laobtención de la integral aproximada de una función empleando para ello el métodode Romberg. La declaración de la función se ha realizado introduciendo comoargumentos la función fx, el paso h y los extremos del intervalo de integración a y by el valor del k-ésimo. Además, la salida de la función 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 líneas de código con la intención de impedir que el código se ejecute para unvalor erróneo de paso h. Para ello se emplea la función rem y abs, de modo queobtengamos el resto de la división entre la diferencia positiva entre los extremos yel paso. A continuación, se machaca el valor de (2^(k-1))*h a h para empezar por elprimer elemento de la aproximación. A continuación, inicializamos el valor de lamatriz donde se colocarán los valores procedentes del algoritmo. El cuerpo del programa queda claramente dividido en tres partes, laobtención 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 método. En la primera parte del código 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 código 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 códigos. Véase que se trata de la fórmula de la página21 donde el término k de la fórmula se ha implementado empleando j-1, R(i,j-1)hace referencia al término de la fórmula k-1-ésimo para paso h y el términoR(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 teoría. Jaime Martínez Verdú Página 3
  4. 4. Pr 1 – Derivación e Integración Numéricafunction integral_romberg=miromberg(fx,h,a,b,k)while rem(abs(b-a),h)~=0 h=input(No has introducido un paso válido. Inténtalo de nuevo:);endh=h/2^(k-1);%Calculamos los términos de la integralR=zeros(k,k);i=1;while (i<=k) R(i,1)=mitrapecio(fx,h*2^(i-1),a,b); i=i+1;endi=1;j=2;while(j<=k) while(i<=k-j+1) R(i,j)=(4^(j-1)*R(i,j-1)-R(i+1,j-1))/(4^(j-1)-1); i=i+1; end i=1; j=j+1;endi=1;T=zeros(k,k);while(i<=k) T(i,:)=R(1+k-i,:); i=i+1;endTintegral_romberg=T(k,k);return Jaime Martínez Verdú Página 4
  5. 5. Pr 1 – Derivación e Integración Numérica Función para aproximación de integrales mediante elmétodo de Richardson El programa para implementar informáticamente el método de Richardsonpara obtener la segunda derivada de una función dada en un punto usandoesquemas hacia delante de orden O(h4) es el siguientefunction integral_richardson=mirichardson(fx,h,a,o)if (nargin~=4) disp(Se ha confundido. Esta función tiene 4 parámetros.) fx=input(Introduzca fx: ); h=input(Introduzca el paso h: ); a=input(Introduzca el punto donde quiere conocer la derivada: ); o=input(Introduzca el orden: );endk=(o-2)/2;%Calculamos los términos de la integralR=zeros(k,k);i=1;while (i<=k) R(i,1)=(subs(fx,a+2*h*2^(i-1))-2*subs(fx,a+h*2^(i-1))+subs(fx,a))/(h*2^(i-1))^2; i=i+1;endi=1;j=2;while(j<=k) while(i<=k-j+1) R(i,j)=(4^(j-1)*R(i,j-1)-R(i+1,j-1))/(4^(j-1)-1); i=i+1; end i=1; j=j+1;endi=1;T=zeros(k,k);while(i<=k) T(i,:)=R(1+k-i,:); i=i+1;endTintegral_richardson=T(k,k);return En la primera parte del programa se procede a comprobar que se hanindicado cuatro variables. Primeramente, emplearemos una línea de código paracalcular el valor de k en función del orden deseado (según apuntes de teoría). Secrea posteriormente una matriz donde se almacenarán todos los valores deseados.Una vez creada la matriz, se emplea un bucle para generar los valores de laprimera columna empleando la expresión para las diferencias hacia delante:R(i,1)=(subs(fx,a+2*h*2^(i-1))-2*subs(fx,a+h*2^(i-1))+subs(fx,a))/(h*2^(i-1))^2; Posteriormente se emplea la misma línea de código que en el método deRomberg puesto que el algoritmo es el mismo. Finalmente se voltea la matriz y seobtiene la integral de Richardson. Jaime Martínez Verdú Página 5
  6. 6. Pr 1 – Derivación e Integración Numérica El programa anterior podemos modificarlo del siguiente modo:function [secdevRich,T]=mirichardsonimp(fx,h,a,o,e)if (nargin~=5) disp(Se ha confundico. Esta función tiene 4 parámetros.) fx=input(Introduzca fx: ); h=input(Introduzca el paso h: ); a=input(Introduzca el punto donde quiere conocer la derivada: ); o=input(Introduzca el orden: ); e=input(Introduzca el error deseado: );endk=(o-2)/2;%Calculamos los términos de la integralR=zeros(k,k);i=1;while (i<=k) R(i,1)=(subs(fx,a+2*h*2^(i-1))-2*subs(fx,a+h*2^(i-1))+subs(fx,a))/(h*2^(i-1))^2; if (abs(subs(diff(fx,x,2),a)-R(i,1))<e) secdevRich=R(i,1); break end i=i+1;endif i==k+1; i=1; j=2; while(j<=k) while(i<=k-j+1) R(i,j)=(4^(j-1)*R(i,j-1)-R(i+1,j-1))/(4^(j-1)-1); if abs(subs(diff(fx,x,2),a)-R(i,j))<e secdevRich=R(i,j); break end i=i+1; end if abs(subs(diff(fx,x,2),a)-R(i,j))<e secdevRich=R(i,j); break end i=1; j=j+1; endi=1;T=zeros(k,k);while(i<=k) T(i,:)=R(1+k-i,:); i=i+1;endTendreturn Este código incluye una variación respecto al anterior puesto que ahora seintroduce como dato también el error deseado. Por tanto, el programa calcularátérminos hasta que encuentre el valor cuyo error sea inferior al deseado. Una vezcomentados todos los programas sólo queda comentar que ante alguna dudarespecto de la resolución o cualquier corrección por favor comunícamelo.Finalmente, Mavi me gustaría agradecerte tu ayuda en las prácticas y la granlabor realizada. Jaime Martínez Verdú Página 6
  7. 7. Pr 1 – Derivación e Integración Numérica Bibliografía1. Burden, Richard L., "Análisis numérico", México International Thomson Editores op.19982. Mathews, John H., "Métodos numéricos con MATLAB", Madrid [etc.] Prentice Hall 19993. Chapra, Steven C., "Métodos numéricos para ingenieros", México [etc.] McGraw-Hill cop. 19994. Kincaid, David, "Análisis numérico las matemáticas del cálculo científico", Buenos Aires [etc.] Addison-Wesley Iberoamericana cop.19945. Amigó García, José María, "Métodos numéricos", [Alicante] Universidad Miguel Hernández D.L. 20026. Nakamura, Shoichiro, "Análisis numérico y visualización gráfica con MATLAB", Naucalpan de Juárez (México) Prentice-Hall Hispanoamericana cop. 1997 Jaime Martínez Verdú Página 7
  8. 8. Pr 1 – Derivación e Integración Numérica Tabla de contenidosFunción para aproximación de integrales mediante la regla del trapecio ................. 1Función para aproximación de integrales mediante la regla del Simpson ................ 2Función para aproximación de integrales mediante el método de Romberg ............. 3Función para aproximación de integrales mediante el método de Richardson ......... 5Bibliografía .................................................................................................................. 7Tabla de contenidos ..................................................................................................... 8Tabla de software ........................................................................................................ 8 Tabla de softwareintegral_trapecio=mitrapecio ...................................................................................... 1integral_simpson=misimpson ..................................................................................... 2integral_romberg=miromberg ..................................................................................... 4integral_richardson=mirichardson ............................................................................. 5[secdevRich,T]=mirichardsonimp ............................................................................... 6 Jaime Martínez Verdú Página 8

×