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
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