Derivación e integración de funciones
Transcripción
Derivación e integración de funciones
Universidad Politécnica de Madrid–Escuela Técnica Superior de Ingenieros Industriales Grado en Ingeniería en Tecnologías Industriales. Curso 2015-2016-3º Matemáticas de Especialidad–Ingeniería Eléctrica 1/49 Derivación e integración de funciones José Luis de la Fuente O’Connor [email protected] [email protected] Clase_derivación_integración_funciones_2016.pdf Índice 2/49 Introducción Derivación numérica de funciones Fórmulas centradas de segundo orden o superior Extrapolación de Richardson Fórmulas derivadas del polinomio de interpolación de Newton Derivación simbólica con Matlab Integración de funciones Fórmulas de Newton-Cotes Fórmulas abiertas y cerradas Método de Romberg Cuadratura de Gauss-Legendre Cuadratura adaptativa 3/49 Introducción Como sabemos: La derivada de una función en un punto es el valor del límite, si existe, del cociente incremental de dicha función en el punto cuando el incremento de la variable tiende a cero. f 0 .x/ D df .x/ f .x C h/ D lKım h!0 dx h f .x/ Es una medida de la rapidez con la que cambia el valor de dicha función según cambie el valor de su variable independiente. La derivación numérica evalúa numéricamente la derivada de una función a partir de valores numéricos de dicha función, sin necesidad por tanto de conocer la expresión analítica de dicha derivada. Es muy sensible a pequeñas perturbaciones en los datos o a la precisión de estos. fect For example, two functions shown below have Mientras que la integración produce un efecto very similar definite integrals but very different 4/49 de amortiguación de las oscilaciones en los......datos, la derivación evidencia esas oscilaciones. .................... ............ ..... ....... .................. .. .............................. . ....... ....... . . . . . . .... . ........... .............. ...... . . . ..... . . . . . . . . . . . . ..... ..... . . ........... . . . ....... ..... . . ..... . . . . . . . . . ............................................................................................................................................................................................ Las dos funciones de la figura tienen integrales muy parecidas mientras que sus derivadas en distintos puntos pueden diferir bastante. Si se necesita derivar funciones cuyos 46 valores se conocen sólo en un conjunto dado de puntos concretos, lo más aconsejable es ajustar alguna función continua a esos puntos y derivar luego la función obtenida. Si los datos presentan un cierto patrón de continuidad, se puede interpolar una función. Si se sabe que tienen ruido, lo más probable es que se requiera una aproximación mediante mínimos cuadrados o splines. Derivación numérica de funciones 5/49 Para calcular numéricamente la derivada de f W R ! R se puede considerar una aproximación intuitiva de su definición: f 0.x/ D df .x/ f .x C h/ D lKım h!0 dx h f .x/ D f .x C h/ h f .x/ es decir, la línea secante (o cuerda) en dos puntos próximos. Geométricamente se pueden considerar tres variantes Geométricamente se pueden considerar tres variantes f(x+h) f(x) x f 0 .x/ D Aproximación x+h f .x C h/ h f(x) Fórmula adelantada f(xíh) f(xíh) f(x) xíh f .x/ f(x+h) f 0 .x/ D x f .x/ f .x h Fórmula atrasada xíh h/ f 0 .x/ D x f .x C h/ x+h f .x 2h Fórmula centrada h/ , Consideremos el desarrollo en serie de Taylor, 6/49 f 00 .x/ 2 f 000 .x/ 3 f .x C h/ D f .x/ C f .x/h C h C h C 2 6 f 00 .x/ 2 f 000 .x/ 3 0 f .x h/ D f .x/ f .x/h C h h C 2 6 0 Si despejamos de la primera igualdad f 0.x/ se obtiene la fórmula hacia adelante de su aproximación: f 0 .x/ D f .x C h/ h f 00 .x/ f .x C h/ h C 2 h f .x/ f .x/ más un resto de primer orden: O.h/. Si despejamos de la segunda igualdad, igualmente f 0.x/, se obtiene la fórmula hacia atrás de su aproximación: 0 f .x/ D f .x/ f .x h h/ f 00 .x/ f .x/ C h C 2 más un resto también de primer orden: O.h/. f .x h h/ 7/49 Restando las dos desigualdades y despejando f 0.x/ se llega a la fórmula centrada: 0 f .x/ D f .x C h/ f .x 2h h/ f 000 .x/ 2 f .x C h/ f .x h C 6 2h h/ : El resto en este caso es de segundo orden, O.h2/. Sumando las dos desigualdades y despejando f 00.x/ se obtiene la fórmula centrada de la segunda derivada: 00 f .x/ D f .x C h/ f .x C h/ 2f .x/ C f .x h2 2f .x/ C f .x h2 con un resto de segundo orden, O.h2/. f .4/ .x/ 2 h C 12 h/ h/ ; 8/49 En el cálculo numérico de derivadas en entornos de precisión finita se cometen errores significativos. Por ejemplo, la aproximación de las derivadas de e x produce estos resultados: h f .x/ D e x; x D 1 f .xCh/ f .x/ h error f .x/ f .x h/ h f .xCh/ f .x h/ 2h error f .xCh/ 2f .x/Cf .x h/ h2 1e-01 1e-02 1e-03 1e-04 1e-05 1e-06 1e-07 1e-08 1e-09 1e-10 1e-11 1e-12 1e-13 1e-14 2.718281828459046 2.718281828459046 2.718281828459046 2.718281828459046 2.718281828459046 2.718281828459046 2.718281828459046 2.718281828459046 2.718281828459046 2.718281828459046 2.718281828459046 2.718281828459046 2.718281828459046 2.718281828459046 2.858841954873879 2.731918655787080 2.719641422532781 2.718417747078483 2.718295419912308 2.718283186986525 2.718281963964841 2.718281777447373 2.718281599811689 2.718278935276429 2.718270053492232 2.718270053492233 2.713385072183882 2.664535259100375 0.140560126414833 0.013636827328035 0.001359594073736 0.000135918619438 0.000013591453263 0.000001358527479 0.000000135505795 0.000000051011673 0.000000228647357 0.000002893182616 0.000011774966813 0.000011774966813 0.004896756275163 0.053746569358670 2.586787173020957 2.704735610978304 2.716923140478667 2.718145918900738 2.718268237122956 2.718280469604650 2.718281693070423 2.718281866265215 2.718282043900898 2.718283376168528 2.718314462413217 2.718714142702083 2.722266856380883 2.753353101070388 2.722814563947418 2.718327133382692 2.718282281505724 2.718281832989611 2.718281828517632 2.718281828295587 2.718281828517632 2.718281821856294 2.718281821856293 2.718281155722479 2.718292257952725 2.718492098097158 2.717825964282383 2.708944180085382 0.004532735488372 0.000045304923646 0.000000453046678 0.000000004530565 0.000000000058586 0.000000000163458 0.000000000058586 0.000000006602752 0.000000006602752 0.000000672736567 0.000010429493679 0.000210269638112 0.000455864176663 0.009337648373664 2.720547818529218 2.718304480877620 2.718282054114951 2.718281777447373 2.718278935276430 2.717381875072532 2.708944180085381 -8.881784197001249 -444.0892098500623 -44408.92098500623 -4440892.098500623 -444089209.8500624 -88817841970.01249 -8881784197001.250 Como vimos al hablar de errores, estos disminuyen a medida que aumenta h desde valores próximos a la precisión de la máquina, alcanzan un mínimo, aproximadamente en h D log10.eps/=2 para la derivada adelantada y atrasada, y luego aumentan otra vez debido a los errores de redondeo y la precisión de la máquina en las operaciones. 9/49 Un pequeño script de Matlab para calcular esa tabla y ver gráficamente la evolución del error es este. % Fichero Derivadas_ex_1.m para simular derivación de e^x h = 1; e=exp(1); f=fopen(’Salida_derivadas_1’,’w’); for i=1:14 h=h/10; der1 = (exp(1+h)-e)/h; err1=abs(der1-e); der2=(e-exp(1-h))/h; der3 = (exp(1+h)-exp(1-h))/2/h; err2=abs(der3-e); der4 = (exp(1+h)-2*e+exp(1-h))/(h*h); fprintf(f,’%6.0e %18.15f %18.15f %18.15f %18.15f %18.15f ’,... ’%18.15f %18.15f\n’,h,e,der1,err1,der2,der3,err2,der4); end fclose(’all’); h=0.5; R=zeros(32,3); for i=1:32 fd=(exp(1+h)-e)/h; cd=(exp(1+h)-exp(1-h))/(2*h); R(i,:)=[h abs(fd-e) abs(cd-e)]; h=h/2; end loglog(R(:,1),R(:,2),’+’,R(:,1),R(:,3),’or’) legend(’Derivadas avanzadas’,’Derivadas centradas’,’Location’,’NorthWest’); xlabel(’h’); ylabel(’error’); %axis([0 1 0.95 2]); 100 Derivadas avanzadas Derivadas centradas 10 -2 10-4 error 10-6 10-8 10-10 10-12 10-10 10-8 10-6 10-4 h 10-2 100 Fórmulas centradas de segundo orden o superior A la ya conocida de O.h2/ vamos añadir la de cuarto orden. Se desarrollan en serie de Taylor f .x ˙ 2h/ y f .x ˙ h/: 2 3 4 f .x C 2h/ D f .x/ C f 0 .x/2h C f 00 .x/ 4h2Š C f 000 .x/ 8h3Š C f .4/ .x/ 16h C O.h5 / 4Š f .x 2 2h/ D f .x/ f 0 .x/2h C f 00 .x/ 4h2Š h/ D f .x/ f 0 .x/h C f 00 .x/ h2Š 2 3 4 f 000 .x/ 8h3Š C f .4/ .x/ 16h C O.h5 / 4Š 3 4 f .x C h/ D f .x/ C f 0 .x/h C f 00 .x/ h2Š C f 000 .x/ h3Š C f .4/ .x/ h4Š C O.h5 / f .x 2 3 4 f 000 .x/ h3Š C f .4/ .x/ h4Š C O.h5 / Restando dos a dos: f .x C 2h/ f .x C h/ f .x f .x 3 C O.h5 / 2h/ D f 0 .x/4h C f 000 .x/ 16h 3Š h/ 3 D f 0 .x/2h C f 000 .x/ 2h3Š C O.h5 /: Restando a la primera diferencia la segunda multiplicada por 8 f .x C2h/ 8f .x Ch/ C 8f .x h/ f .x 2h/ Df 0 .x/ .4h 16h/ C O.h5 /; y de aquí a f 0 .x/ D f .x C 2h/ C 8f .x C h/ 8f .x 12h h/ C f .x 2h/ C O.h4 /: 10/49 11/49 Otras fórmulas centradas de segundo y cuarto orden son las que siguen (notación fk D f .x C kh/, k D 3, 2, 1, 0, 1, 2, 3). Fórmulas centradas de orden O.h2 / f 00 .x/ f 000 .x/ f .4/ .x/ f 0 .x/ f1 f 1 2h f1 2f0 Cf 1 h2 f2 2f1 C2f 1 f 2h3 f2 4f1 C6f0 4f h4 2 1 f 2 Fórmulas centradas de orden O.h4 / f 00 .x/ f 000 .x/ f .4/ .x/ f 0 .x/ f2 C8f1 8f 1 Cf 2 12h f2 C16f1 30f0 C16f 1 f 2 12h2 f3 C8f2 13f1 C13f 1 8f 2 Cf 3 8h3 f3 C12f2 39f1 C56f0 39f 1 C12f 6h4 2 f 3 Se pueden también obtener fórmulas parecidas para las derivadas adelantadas y atrasadas. 12/49 Extrapolación de Richardson Lewis Fry Richardson, Reino Unido, 1881-1953. Su idea es extrapolar el valor de f .0/ calculando el valor de f a varios pasos h de distancia de f .0/ de cara conocer el comportamiento de esa función cuando h ! 0. Supongamos que para algún p y r, r > p, es f .h/ D a0 C a1hp C O.hr / según tiende h ! 0 . Supongamos que se conocen los valores de p y r, pero no los de a0 y a1 (precisamente f .0/ D a0 es lo que se quiere obtener). También supondremos que se ha calculado ya f para dos pasos h y h=q, siendo q cualquier entero positivo. 13/49 Se tendrá que f .h/ D a0 C a1hp C O.hr / f .h=q/ D a0 C a1.h=q/p C O.hr / D a0 C a1q p p h C O.hr /: Éste es una sistema de dos ecuaciones lineales con dos incógnitas: a0 y a1. Si se resuelve, se obtiene que a0 D f .h/ C f .h/ q f .h=q/ r C O.h /; p 1 cuya precisión ahora es O.hr /, mejor que la anterior O.hp /, pues r > p. 14/49 Ejemplo Usaremos la extrapolación de Richardson para mejorar la precisión con la que se calcula la derivada de sen.x/ en x D 1. Utilizando la fórmula adelantada de derivación se tiene que F .h/ D a0 C a1h C O.h2/ por lo que aquí p D 1 y r D 2. Si se usan los valores h D 0;5 y h D 0;25 (es decir q D 2), se tiene que F .h/ D F .h=2/ D sen.1 C h/ h sen.1/ D sen.1;5/ sen.1/ D 0;312048 0;5 sen.1;25/ sen.1/ D 0;430055: 0;25 Extrapolated value is then given by 15/49 F (0) = a0 = F (h) + F (h) − F (h/2) (1/2) − 1 El valor extrapolado es= entonces 2F (h/2) − F (h) = 0.548061 4 El valor extrapolado es entonces FF.h/ .h/ F F .h=2/ .h=2/ D 2F .h=2/ F .h/ D 0;548061; F .0/ D a D F .h/ C 0 2F .h=2/ F .h/ D 0;548061; F .0/ D a0 D F .h/ C .1=2/ 1 D .1=2/ 1 For comparison, correctly rounded result is given frente exacto es cos.1/ 0;540302. frente al exacto esquecos.1/ DD0;540302. byal que cos(1) = 0.540302 F. ...... . 1.0 ... .. Valor extrapolado .. ... .. ...... ......... ..... Valores ... calculados 0.5•... .............................•......................... . . ..................... .. •. .. .. .. ........................................................................................... h 0 0.25 0.5 21/63 57 Fórmulas basadas en el polinomio de interpolación de Newton 16/49 Se utiliza cuando se trata de derivar una función de la que se conocen sólo unos datos. En especial cuando esos datos están desigualmente espaciados. A esos datos, .x0; f .x0//, .x1; f .x1// ; : : :, se les interpola el polinomio de Newton p.x/ D b0 C b1.x x0/ C b2.x x0/.x x1/ donde b0 D f .x0/; f .x1/ b1 D x1 f .x0/ y b2 D x0 f .x2 / f .x1 / x2 x1 x2 f .x1 / f .x0 / x1 x0 x0 Luego se deriva el polinomio y se evalúa para los distintos puntos: p 0 .x/Db1 Cb2 .x x0 /C.x x1 / que para xDx0 ; p 0 .x0 /Db1 Cb2 .x0 x1 /: : 17/49 Las derivadas adelantadas, centradas y atrasadas, en x0 por ejemplo, se pueden calcular haciendo en ese polinomio x1 D x0 C h y x2 D x0 C 2h. Con la notación abreviada, b1 D f1 f0 h ; b2 D f2 f1 h f1 f0 h 2h D f0 2f1 C f2 : h2 A partir de ahí, p 0.x0/ D b1 Cb2.x0 D 3f0 C4f1 f2 ; 2h x1 / D b 1 b2h D 2 f12hf0 f0 2f1 Cf2 h 2h2 D que es la fórmula adelantada. Para x1 D x0 C h y x2 D x0 h se tendría la fórmula centrada y con x1 D x0 h y x2 D x0 2h la atrasada. 18/49 Derivación simbólica con Matlab Con las utilidades simbólicas de Matlab se pueden obtener las fórmulas simbólicas de las derivadas de diversas funciones. Por ejemplo: » syms x; » f=sin(3*x); » f1=diff(f) f1 = 3*cos(3*x) » f2=sin(x)^7 f2 = sin(x)^7 » f3=diff(f2) f3 = 7*cos(x)*sin(x)^6 19/49 Aquí se pueden ver gradient y lo que permite obtener. % Fichero Derivada_quiver_1.m g=@(x,y) y-x-2*x.^2-2.*x.*y-y.^2; [x,y]=meshgrid(-2:.1:0, 1:.1:3); z=g(x,y); figure, mesh(x,y,z) [gx,gy]=gradient(z,0.25); figure % cs=contour(x,y,z); clabel(cs); hold on quiver(x,y,-gx,-gy); hold off 3 -5 -3 2.8 -4 2.6 2.4 -2 2.2 2 -1 1.8 1.6 0 1 1.4 0 1.2 -1 1 -2 -1.8 -1.6 -1.4 -1.2 -1 -0.8 -0.6 -0.4 -0.2 0 20/49 Índice Introducción Derivación numérica de funciones Integración de funciones Fórmulas de Newton-Cotes Fórmulas abiertas y cerradas Método de Romberg Cuadratura de Gauss-Legendre Cuadratura adaptativa Integración de funciones 21/49 Dada una función f W R ! R su integral definida en Œa b, I.f / D l b f .x/ dx; a se define como el límite de las sumas de Riemann, Rn D n X i D1 .xi C1 xi / f .ti /; Georg Friedrich Bernhard Riemann, Alemania, 18261866. x1 D a; xnC1 D b; xi ti xi C1 cuando la partición en subintervalos de Œa; b se hace muy fina. La integral de Lebesgue generaliza la noción de la integral de Riemann para extender el concepto de área bajo una curva e incluir funciones discontinuas. Henrí Léon Lebesgue, Francia 1875-1941 La integración numérica, o cuadratura, se refiere al cálculo numérico de esa integral. Es necesaria cuando: 22/49 1. La función f .x/ sólo se conoce en punto concretos. 2. No se conoce la primitiva de la función f .x/. R =2 p R 1 x2 3. La primitiva no es calculable: 0 e dx o 0 1 C cos2.x/ dx. 4. Aunque se conozca la primitiva de la función, su cálculo es tan costoso que es mejor usar un método aproximado o más sencillo para calcularla. 5. Otras causas : : : Para integrar una función f .x/ complicada, se puede sustituir por un polinomio pn.x/ que interpola puntos concretos de aquella en el intervalo dado y luego se realiza la integración exacta de este polinomio. Se llama grado de precisión de la fórmula de integración al máximo grado de los polinomios que son integrados exactamente por dicha fórmula. 23/49 Para calcular numéricamente el valor de una integral se recurre por lo general a un sumatorio de ciertos valores de la función, o de una aproximación, en unos puntos llamados nodos, xi , multiplicados por unos coeficientes de ponderación denominados pesos, wi : ˇ a b f .x/ dx D n i wi f .xi /: iD1 Esta sustitución supone cambiar un sumatorio infinito (la integral) por un sumatorio finito, por lo que se producirá un error de truncamiento. Fórmulas de Newton-Cotes Roger Cotes, Inglaterra, 16821716. 24/49 Obtenidas a partir del polinomio de interpolación de Newton de la función a integrar con argumentos igualmente espaciados (fórmula de diferencias finitas). Regla del trapecio pol. primer grado Z Regla de Simpson pol. segundo grado Z Regla de Simpson 83 pol. tercer grado Z Regla de Boole pol. cuarto grado Z x1 x0 f .x/dx h .f0 C f1 / 2 error D h3 00 f ./ 12 f .x/dx h .f0 C 4f1 C f2 / 3 error D h5 .4/ f ./ 90 f .x/dx 3h .f0 C 3f1 C 3f2 C f3 / 8 error D 3h5 .4/ f ./ 80 f .x/dx 2h .7f0 C 32f1 C 12f2 C 32f3 C 7f4 / error D 45 x1 x0 x1 x0 x1 x0 donde fk indica f .x0 C kh/. 8h7 .6 f ./ 945 El cálculo de los errores de las restantes fórmulas de New Fórmula compuesta del trapecio es bastante laborioso y no se incluye en estas trasparenci Interpretación gráfica de la regla trapezoidal y las dos reg Resulta de aplicar la regla o fórmula del trapecio —polinomio de primer grado— Simpson: 25/49 a los m subintervalos en el que se divide el original Œa; b. ˇ a b m l i f .x/ dxD i D1 xi xi f .x/ dx h h .f0 Cf1 / C C .fm 1 Cfm / 2 2 1 h D .f0 C 2f1 C 2f2 C C 2fm 2 1 C fm / : Fórmulas abiertas y cerradas El error que se comete es ˇ a b 26/49 0 f .x/ dx D hB @ 2 m i 1 .fi 1 C C fi /A b a 12 h2 f 00 ./: iD1 Pongamos todo en un script de Matlab para calcular solución es ln.2/. function T = trapezrule(f,a,b,m) % Integración trapecio compuesto x = linspace(a,b,m+1); % subintervalos function f = intfun_1(x) T = (f(a)+f(b))/2; % comienzo y final % Función que se integra for i = 1:m-1 f = 1./(1+x); T = T + f(x(i+1)); % interior intervalo end end T = T*(b-a)/m; % multiplica por h end 1 Z 0 1 dx cuya .1 C x/ >> for k=0:8 disp(trapezrule(@intfun_1,0,1,2^k)) end 0.750000000000000 0.708333333333333 0.697023809523809 0.694121850371850 0.693391202207527 0.693208208269249 0.693162438883403 0.693150995228108 0.693148134232443 >> log(2) ans = 0.693147180559945 de Newton-Cotes (4/4) Distancia entre puntos h=(ba)/2M k ETSII-UPM 27/49 los errorescompuesta de las restantes fórmulas de Newton-Cotes Thomas Simpson, Inglaterra, Fórmula del Simpson borioso y no se incluye en estas trasparencias. 1710-1761. n gráfica de la regla trapezoidal y las dos reglas de Sigue estrategia la fórmula del trapecio, pero ajustando una parábola Error de la la misma regla de Simpsondecompuesta: a tres puntos de cada subintervalo. Interpretación geométrica: Si Œa; b se subdivide en m intervalos, habrá 2m C 1 puntos de abscisas xi D a C ih, i D 0; 1; : : : ; 2m. La distancia entre los puntos será h D .b a/=2m. 28/49 La integral es l m l i b f .x/ dxD a i D1 xi f .x/ dx xi 1 h .f0 C4f1 Cf2/ C 3 h h C .f2 C4f3 Cf4/ C C .f2m 2 C4f2m 1 Cf2m/ 3 3 h D .f0 C 4f1 C 2f2 C 4f3 C 2f4 C 2f2m 3 El error que se comete, 0 ˇ b a f .x/ dx D m i hB @ 3 i D1 2 C 4f2m 1 C f2m/ : 1 .f2i 2 C 4f2i 1 C C f2i /A b a 4 .4/ h f ./: 180 Hagámoslo en Matlab para 1 Z 0 1 dx. 1Cx function I = simpson_1(f,a,b,n) % Integración de f en [a,b] con la regla de Simpson en n+1 % puntos igualmente espaciados h = (b-a)/n; xi = a:h:b; I = (h/3)*(f(xi(1))+2*sum(f(xi(3:2:end-2)))+4*sum(f(xi(2:2:end)))+f(xi(end))); end >> for k=0:8 disp(simpsons(@intfun_1,0,1,2^k)) end 1.166666666666667 0.694444444444444 0.693253968253968 0.693154530654531 0.693147652819419 0.693147210289823 0.693147182421455 0.693147180676343 0.693147180567221 >> log(2) ans = 0.693147180559945 Si lo probamos: La precisión es apreciablemente superior. 29/49 function f = intfun_1(x) % Función que se integra f = 1./(1+x); end cepto de fórmula de integración abierta 30/49 Se llama abierta a una fórmula de integración numérica que no evalúa la unción integrando en uno o y en cerradas los dos extremos del intervalo. Fórmulas abiertas Las fórmulas abiertas son útiles cuando no se conoce la función en un extremo tiene un valor infinito (integrales impropias). Se llama abierta a una fórmula de integración numérica que no evalúa la función Un caso de gran interés práctico son las fórmulas de Adams, que utilizan n integrando en uno o en los dos extremos del intervalo. untos, pero sólo desean calcular la integral en el último tramo (ver figuras) Newton-Cotes abierta NewtonCotes cerrada on-Cotes ms Las fórmulas abiertas son útiles cuando no se conoce la función en un extremo o tiene un valor infinito (integrales impropias). 31/49 La regla del punto medio, aplicable a funciones cuya segunda derivada es continua en Œa; b, es muy útil en estos casos. l x0 x1 h3 00 f .x/ dx D hf .w/ C f .c/; 24 donde h D .x1 x0/, w es el punto medio, es decir x0 C h=2 y c está entre x0 y x1. Su versión compuesta es 1 0 l a b B f .x/ dx D h @ m i i D1 C .b f .wi /A C a/h2 00 f .c/: 24 Ejemplo Aproximemos compuesta; m D 10. l 0 1 sen.x/ dx con la regla del punto medio x Los puntos medios son 0;05, 0;15; : : : ; 0;95 y la formula daría lo que sigue: ˇ 1 ! 10 X f .x/ dx 0;1 f .mi / D 0;94620858: 0 1 No está mal; la cifra correcta con 15 dígitos es >> syms x; >> f = sin(x)/x f = sin(x)/x >> F = int(f, x) F = sinint(x) >> int(f, x, 0, 1) ans = sinint(1) >> format long >> sinint(1) ans = 0.946083070367183 0;946083070367183. 32/49 33/49 Otra regla útil aplicable a las fórmulas de Newton-Cotes es x4 ˇ x0 4h 2f .x1/ f .x/ dx D 3 donde h D .x4 x0 < c < x 4 . 14h5 .4/ f .x2/ C 2f .x3/ C f .c/; 45 x0/=4, x1 D x0 C h, x2 D x0 C 2h, x3 D x0 C 3h y Existen bastantes otras, por ejemplo, ˇ x6 6h 41h7 .6/ f .x/ dx D 11f .x1 / 14f .x2 /C26f .x3 / 14f .x4 /C11f .x5 / C f .c/; 20 140 x0 donde x0 < c < x6. unción integrando en uno o en los dos extremos del intervalo. Las fórmulas abiertas son útiles cuando no se conoce la función en un extremo o tiene un valor infinito (integrales impropias). Un caso de gran interés práctico son lasJohn fórmulas de Adams, que utilizan n Couch Adams, Reino puntos, pero sólo desean calcular la integral el último tramo (ver figuras) Unido, en 1819-1892. 34/49 Un caso de apreciable interés práctico son las fórmulas de Adams que utilizan n on-Cotes puntos, pero sólo desean calcular la integral en el último tramo (como se aprecia en la figura). ms Adams abierta Adams cerrada 35/49 Método de Romberg Werner Romberg, Alemania, 1909-2003. Está basado en la extrapolación de Richardson. Permite mejorar recursivamente la aproximación de las fórmulas compuestas con poco trabajo adicional. Se divide Œa; b en un número de subintervalos potencia de 2: 1, 2, 4, 8; : : : y se calculan las integrales con la fórmula del trapecio. Los resultados se denominan R11, R21, R31; : : : Ri1. A partir de estas integrales, mediante extrapolación de Richardson, se calculan otras R22, R32; : : : ; Ri2, de error menor: O.h4/. 36/49 Por ejemplo, si se desea trabajar con i D 4, y el valor de la función en f .a/ D f1, f2, f3, f4, f5, f6, f7, f8, f9 D f .b/, se tendrá que R11 D b a 2 .f .a/ C f .b// D R21 D h2 2 f .a/ C f .b/ C 2f h1 2 .f1 C f9 / aCb 2 D D 1 R 2 11 C h2 f5 R31 D h3 .f1 2 C 2f3 C 2f5 C 2f7 C f9 / D 1 R 2 21 C h3 .f3 C f7 / R41 D D h4 2 h2 2 .f1 C 2f5 C f9 / f1 C 2f2 C 2f3 C 2f4 C 2f5 C 2f6 C 2f7 C f9 1 R 2 31 C h4 .f2 C f4 C f6 C f8 / Las extrapolaciones que se hacen son, a partir de Richardson, R22 R32 R42 22 R21 R11 D 3 22 R31 R21 D 3 22 R41 R31 D 3 Con una fórmula de recurrencia para cada coeficiente j k, k > 1, 4k 1Rj;k 1 Rj 1;k 1 Rj k D : 4k 1 1 Al final se llega a una tabla general R11 R21 R22 R31 R32 R33 R41 R42 R43 R44 ::: ::: 37/49 Programa con el método de Romberg y su uso para 2 Z ln.x/ dx: 38/49 1 function R = romberg(f, a, b, n) % Calcula una integral definida en el intervalo [a,b] % con la tabla de n filas de la fórmula de Romberg R = zeros(n,n); h = (b-a)./(2.^(0:n-1)); R(1,1) = (b-a)*(f(a)+f(b))/2; for i = 2:n subtotal = 0; for j=1:2^(i-2) subtotal = subtotal + f(a+(2*j-1)*h(i)); end R(i,1) = R(i-1,1)/2+h(i)*subtotal; for k=2:i R(i,k)=(4^(k-1)*R(i,k-1)-R(i-1,k-1))/(4^(k-1)-1); end end end >> romberg(@log,1,2,4) ans = 0.346573590279973 0 0 0 0.376019349194069 0.385834602165434 0 0 0.383699509409442 0.386259562814567 0.386287893524509 0 0.385643909952095 0.386292043466313 0.386294208843096 0.386294309086248 >> 2*log(2)-1 ans = 0.386294361119891 >> format short e >> romberg(@log,1,2,5) ans = 3.4657e-001 0 0 0 0 3.7602e-001 3.8583e-001 0 0 0 3.8370e-001 3.8626e-001 3.8629e-001 0 0 3.8564e-001 3.8629e-001 3.8629e-001 3.8629e-001 0 3.8613e-001 3.8629e-001 3.8629e-001 3.8629e-001 3.8629e-001 >> 2*log(2)-1-ans(5,5) ans = 1.8772e-010 >> syms x; >> f = log(x) f = log(x) >> F = int(f, x) F = x*(log(x) - 1) >> int(f, x, 1, 2) ans = log(4) - 1 >> format long >> log(4)-1 ans = 0.386294361119891 % Comprobación del resultado numérico % Hagamos todo de forma simbólica % Primitiva de la integral Método Gauss-Legendre Cuadratura dede Gauss-Legendre (1/6) Andrien-Marie 39/49 Legendre, Francia, 1752-1833. ETSII-UPM Características del método de Gauss-Legendre Se permite variar la posición de los nodos para mejorar el orden del método. Se trabaja en un intervalo de integración normalizado [−1, 1]. En este procedimiento se permite variar la posición de los nodos para mejorar la Con n puntos de integración y n pesos por determinar se pueden satisfacer 2n precisión delcondiciones, resultado.como por ejemplo integrar exactamente las 2n primeras potencias de x (desde x0 a x2n−1). Con esto el método será de orden 2n−1 pues integrará exactamente cualquier polinomio de dicho grado. cómo se puedeuna obtener mejor aproximación con sólo Las En la figura se siguientes muestrafiguras cómomuestran se puede obtener mejor aproximación con dos nodos haciendo que no sean los extremos del intervalo. dos nodos haciendo que no sean los extremos del intervalo. -1 1 -1 Se trabaja en un intervalo de integración normalizado: Œ 1; 1. 1 40/49 La fórmula general de la cuadratura de Gauss-Legendre es ˇ 1 1 f .x/ dx n i ci f .xi /; i D1 donde los nodos, xi , son las raíces de los polinomios de Legendre de grado n en el intervalo Œ 1; 1. Los coeficientes, o pesos, ci , están tabulados para integrar exactamente polinomios de hasta grado 2n 1. Con n puntos de integración, y n pesos por determinar, se pueden satisfacer 2n condiciones, como por ejemplo integrar exactamente las 2n primeras potencias de x, desde x 0 a x 2n 1. Con esto el método será de orden 2n 1 de precisión pues integrará exactamente cualquier polinomio de dicho grado. 41/49 n 2 3 15C2 30 q 35p 2 30 - 15 35 q p 15 2 30 q 35p 15C2 30 35 4 5 p - 1=3 p 1=3 p - 3=5 0 p 3=5 q p nodos xi = -0,57735026918963 = 0,57735026918963 = -0,77459666924148 = 0,00000000000000 = -0,77459666924148 = -0,86113631159405 = -0,33998104358486 = 0,33998104358486 = 0,86113631159405 -0,93246951420315 -0,66120938646626 -0,23861918608320 0,23861918608320 0,66120938646626 0,93246951420315 coeficientes ci 1 = 1,00000000000000 1 = 1,00000000000000 5=9 = 1,55555555555555 8=9 = 1,88888888888888 5=9 = 1,55555555555555 p 90 5 3 180 p 90C5 3 180 p 90C5 3 180 p 90 5 3 180 = 0,34785484513745 = 0,65214515486255 = 0,65214515486255 = 0,34785484513745 0,17132449237917 0,36076157304814 0,46791393457269 0,46791393457269 0,36076157304814 0,17132449237917 Nodos y pesos, n D 2; : : : 5, para la cuadratura de Gauss-Legendre Ejemplo Aproximemos con cuadratura de Gauss-Legendre la integral l El valor exacto con 14 dígitos es 1 e x2 2 42/49 dx: 1 1,71124878378430. >> format long >> syms x; >> f = exp(-x^2/2) f = exp(-x^2/2) >> int(f, x, -1, 1) ans = 2^(1/2)*pi^(1/2)*erf(2^(1/2)/2) >> double(ans) ans = 1.711248783784298 Con dos nodos, la aproximación es l 1 e 1 x2 2 dx c1 f .x1 / C c2 f .x2 / D 1 f . Con tres nodos 59 f . p 8 5 3/5/ C 9 f .0/ C 9 f . p 1/3/ C 1 f . p 3/5/ p 1/3/ 1,69296344978123: 1,71202024520191. Con cuatro c1f .x1/ C c2f .x2/ C c3f .x3/ C c4f .x4/ 1,71122450459949: Para calcular en Œa; b los n nodos y pesos de Gauss-Legendre. function [x,w]=lgwt(N,a,b) % Calcula los N nodos y pesos de Gauss-Legendre en el intervalo [a,b] % para el cálculo de integrales definidas. % Si se quiere calcular la integral de f(x) es ese intervalo % calcular el valor de f(x) en todos los puntos del vector x. % La integral es sum(f.*w); N=N-1; N1=N+1; N2=N+2; xu=linspace(-1,1,N1)’; y =cos((2*(0:N)’+1)*pi/(2*N+2))+(0.27/N1)*sin(pi*xu*N/N2); L =zeros(N1,N2); % Matriz Legendre-Gauss Vandermonde Lp=zeros(N1,N2); % Derivada de LGVM % Calcula ceros del Polinomio de Legendre de orden N+1 (Newt.-Rap) y0=2; while max(abs(y-y0))>eps % Tolerancia de nuevos puntos: eps L(:,1) =1; Lp(:,1)=0; L(:,2) =y; Lp(:,2)=1; for k=2:N1 L(:,k+1)=((2*k-1)*y.*L(:,k)-(k-1)*L(:,k-1))/k; end Lp = (N2)*( L(:,N1)-y.*L(:,N2) )./(1-y.^2); y0 = y; y = y0-L(:,N2)./Lp; end x=(a*(1-y)+b*(1+y))/2; % Pasar de [-1,1] to [a,b] w=(b-a)./((1-y.^2).*Lp.^2)*(N2/N1)^2; % Cálculos de pesos end Calculemos la integral del ejemplo anterior, >> [x,w]=lgwt(6,-1,1); >> f=exp(-(x.^2)/2); >> sum(f.*w) ans = 1.711248771041351 l Con 8 nodos y con la rutina de integración quad de Matlab: 1 e x2 2 dx. 1 >> [x,w]=lgwt(8,-1,1); >> sum(exp(-(x.^2)/2).*w) ans = 1.711248783780728 >> quad(’exp(-(x.^2)/2)’,-1,1,1.e-14) ans = 1.711248783784298 43/49 44/49 Para aproximar una integral en un intervalo cualquiera Œa; b se tiene que ! l b n .b a/ zi C .b C a/ b a X : ci f f .x/ dx 2 2 a iD1 Aproximemos por ejemplo la integral l 2 ln.x/ dx 1 usando cuadratura de Gauss-Legendre. De la ecuación anterior, l 2 l 1 zC3 1 ln.x/ dx D ln dz: 2 2 1 1 Con cuatro nodos, la aproximación es 0,38629449693871. Comparada con la exacta, 2 ln 2 1, es decir 0,38629436111989, no está nada mal. 45/49 Integrales múltiples La cuadratura de Gauss se puede utilizar para realizar integrales múltiples aplicándola sucesivamente a cada una de las variables, como por ejemplo: Z 1Z 1 Z 1 Z 1X n n X ci f .i ; / d D ci f .i ; / d f .; / d d D 1 1 1 i D1 i D1 1 n n n X n X X X D ci cj f .i ; j / D ci cj f .i ; j /: iD1 j D1 iD1 j D1 46/49 Cuadratura adaptativa La idea es utilizar una táctica “divide y vencerás” subdividiendo el intervalo de integración según los tramos de variabilidad de la función. Se comienza dividiendo Œa; b en dos subintervalos iguales y se utilizaR la fórmula b de Simpson con h D .b a/=2 para calcular una aproximación I1 a f .x/dx. Rm Se hace lo mismo con h=2 para obtener IL donde m D .a C b/=2. Luego, por extrapolación de Richardson, se calcula I2 D IL C IR e I3 D I2 C I215I1 . a f .x/dx y IR Rb m f .x/dx, Si recordamos los errores que se cometían con la fórmula de Simpson, Z b h h5 .4/ f .x/dx D .f0 C 4f1 C f2/ f .c0/; 3 90 a para dos subintervalos b Z a f .x/dx D IL h5 f .4/ .c1 / 32 90 D IL C IR C IR 47/49 h5 f .4/ .c2 / 32 90 h5 f .4/ .c3 / : 16 90 Restando este resultado de la expresión anterior queda I1 .IL C IR / D h5 f .4/ .c0 / 90 h5 f .4/ .c3 / 16 90 15 3 f .4/ .c3 / h 90 : 16 Como el error de I1 .IL C IR / es 15 veces el de la aproximación IL C IR de la integral, se comprueba si ˇ ˇ ˇI1 .IL C IR / ˇ < 15 t ol y si no lo es, se dividen los dos subintervalos Œa; m y Œm; b en dos cada uno hasta que se llegue a la precisión adecuada. 48/49 Pasemos a Matlab esta forma de operar. function [q fnct] = quadadapt(f,a,b,tol) % Evalua la integral de f(x) en [a,b] global fnct % Veces que se evalúa la función if nargin<4 || isempty(tol), tol=1.e-6; end fnct = 0; c = (a+b)/2; fa = f(a); fc = f(c); fb = f(b); fnct = fnct+3; q = quadstep(f,a,b,tol,fa,fc,fb); end function q = quadstep(f,a,b,tol,fa,fc,fb) % Subfunction recurrente de quadadapt global fnct h = b-a; c = (a+b)/2; fd = f((a+c)/2); fe = f((c+b)/2); fnct = fnct+2; q1 = h/6 * (fa+4*fc+fb); q2 = h/12 * (fa+4*fd+2*fc+4*fe+fb); if abs(q2-q1) <= tol q = q2+(q2-q1)/15; else qa = quadstep(f,a,c,tol,fa,fd,fc); qb = quadstep(f,c,b,tol,fc,fe,fb); q = qa + qb; end end Si lo utilizamos para integrar 2 ˇ 2 7 >> f1_Heath_2=@(x)sin(1./x)+3/2; >> [q fnct]=quadadapt(f1_Heath_2,2/(7*pi),2/pi,1.e-14) q = 0.984511912667507 fnct = 3949 %% Comprobación con cuadratura adaptativa de Simpson de MATLAB >> [q2 fnct1]=quad(f1_Heath_2,2/(7*pi),2/pi,1.e-14) q2 = 0.984511912667507 fnct1 = 2069 %% Cuadratura adaptativa de Lobatto de MATLAB >> [q2 fnct1]=quadl(f1_Heath_2,2/(7*pi),2/pi,1.e-14) q2 = 0.984511912667507 fnct1 = 1308 %% Con syms de Matlab >>syms x a b >> f=sin(1./x)+3/2; >> I=int(f,2/(7*pi),2/pi); >> double(I) ans = 0.984511912667507 49/49 3 1 C dx, se obtiene esto: sen x 2 sin(1/x)+3/2 2.5 2 1.5 1 0.5 0.1 0.15 0.2 0.25 0.3 0.35 x 0.4 0.45 0.5 0.55 0.6 El número de veces que se evalúa la función es sensiblemente diferente con los métodos probados.