clase integracion

6
Análisis Numérico Universidad Nacional de Misiones Mario R. ROSENBERGER 1 de 6 Integración numérica con MatLab Matlab cuenta con las siguientes comandos para calcular la integral de una serie de datos en numérica: quad Método Simpson 1/3, recursivo* y adaptativo** quadl Método Gauss-Lobatto recursivo* y adaptativo** dblquad Evalúa numéricamente la integral doble triplequad Evalúa numéricamente la integral triple quad8 Método de Newton-Cotes 8 panel rule ¿Método de Simpson 3/8? y adaptativo**. trapz Método del trapecio. La palabra inglesa “quadraturese usa para designar el cálculo de un área encerrada por una función y los ejes de coordenadas, es decir, el valor de la integral definida. De allí el nombre de estos comandos. Quadrature es los que nosotros llamamos integración numérica. De la lista el comando quad8 se considera obsoleto y se recomienda emplear el método quadl. Trapz es el único comando que acepta datos sueltos, los demás trabajan con funciones declaradas en forma simbólica. * Recursividad implica que la función realiza una referencia a si misma para calcular nuevos valores de la imagen. ** Adaptativo indica que el tamaño de los intervalos varía para minimizar el error de la aproximación. El comando “trapz” El formato de este comando se describe en el esiguiente esquema: Donde: X es una vector columna que indica los valores de abscisas de los datos cuya integral se quiere calcular. Y es un vector o matriz donde cada columna es una serie de datos a integrar. Algunos ejemplos de implementación: >> trapz([ 1 1 1 1]) ans = 3 >> trapz([0 1 2 6],[ 1 1 1 1]) ans = 6 >> trapz([0 1 2 6]',[ 1 1 1 1]) ans = Comandos utilizados en esta guía quad quadl dbquad inline polyint int @ ) , ( Y X trapz espaciado de los datos datos a integrar

Upload: cristopher-castro

Post on 16-Dec-2015

214 views

Category:

Documents


1 download

DESCRIPTION

integracion

TRANSCRIPT

  • Anlisis Numrico Universidad Nacional de Misiones

    Mario R. ROSENBERGER 1 de 6

    Integracin numrica con MatLab

    Matlab cuenta con las siguientes comandos para calcular la integral de una serie de datos en numrica: quad Mtodo Simpson 1/3, recursivo* y adaptativo**

    quadl Mtodo Gauss-Lobatto recursivo* y adaptativo**

    dblquad Evala numricamente la integral doble

    triplequad Evala numricamente la integral triple

    quad8 Mtodo de Newton-Cotes 8 panel rule Mtodo de Simpson 3/8? y adaptativo**.

    trapz Mtodo del trapecio.

    La palabra inglesa quadrature se usa para designar el clculo de un rea encerrada por una funcin y los ejes de coordenadas, es decir, el valor de la integral definida. De all el nombre de estos comandos. Quadrature es los que nosotros llamamos integracin numrica.

    De la lista el comando quad8 se considera obsoleto y se recomienda emplear el mtodo quadl. Trapz es el nico comando que acepta datos sueltos, los dems trabajan con funciones

    declaradas en forma simblica. * Recursividad implica que la funcin realiza una referencia a si misma para calcular nuevos valores de la imagen. ** Adaptativo indica que el tamao de los intervalos vara para minimizar el error de la aproximacin. El comando trapz

    El formato de este comando se describe en el esiguiente esquema: Donde: X es una vector columna que indica los valores de abscisas de los datos cuya integral se quiere calcular. Y es un vector o matriz donde cada columna es una serie de datos a integrar. Algunos ejemplos de implementacin: >> trapz([ 1 1 1 1]) ans = 3 >> trapz([0 1 2 6],[ 1 1 1 1]) ans = 6 >> trapz([0 1 2 6]',[ 1 1 1 1]) ans =

    Comandos utilizados en esta gua

    quad quadl

    dbquad inline

    polyint int @

    ),( YXtrapz

    espaciado de los datos datos a integrar

  • Integracin numrica con MatLab

    Mario R. ROSENBERGER

    2 de 6

    6 >> trapz([0 1 2 6]',[ 1 1 1 1; 2 2 2 2 ]') ans = 6 12 El comando quad El formato del comando quad admite los argumentos, tal como se muestra en el siguiente esquema:

    La funcin a integra debe definirse en forma simblica mediante el comando inline o a travs de un archivo m. Por ejemplo, para integrar la funcin y = x2+5, entre los lmites [0,1], puede escribirse: >> quad('x.^2+5',0,1) ans = 5.3333 y utilizando un archivo m, llamado fun.m y definido como :

    function y=fun(x) y= x.^2+5;

    >> quad('fun',0,1) ans = 5.3333 o q = quad(@fun,0,1) q = 5.3333

    Este comando admite ms argumentos, tales como, tolerancia del clculo(tol), la posibilidad de

    imprimir los resultados de las iteraciones (trace) e incluir parmetros adicionales para la funcin (p1 p2,...)tal como se muestra a continuacin:

    q = quad( fun , a , b , tol , trace , p1 , p2 , ...)

    Para quadl, quad8 rigen las mismas recomendaciones. Integrales dobles:

    En Matlab pueden calcularse numricamente integrales dobles, para ello se usa el comando dblquad, el formato de dicho comando es como sigue:

    q = dblquad ( fun, xmin, xmax, ymin, ymax, tol, method, p1, p2, ...)

    ),,( bafuncinquad

    funcin a integrar lmite inferior del intervalo

    lmite superior del intervalo

  • Integracin numrica con MatLab

    Mario R. ROSENBERGER

    3 de 6

    donde: fun es una funcin declarada del tipo inline o a travs de un archivo m. xmin ; xmax : son los valores extremos de la variable x ymin; ymax : son los valores extremos de la variable y tol : es la tolerancia para el clculo numrico method: especifica el mtodo de clculo p1, p2 ,...: son parmetros adicionales que se pueden utilizar en el clculo. Ejemplos: 1). usando un funcin definica con inline: >>dblquad(inline('y*sin(x) + x*cos(y)'),0, 1, 0,1) ans = 0.65058433794530 2). usando una funcin definida en un archivo_m. function out = esta(x,y) out = y*sin(x) + x*cos(y); >> dblquad(@esta,0, 1, 0,1) ans = 0.65058433794530 3). otra manera de invocar una funcin definida en un archivo_m. >> dblquad(esta,0, 1, 0,1, [], @quadl) ans = 0.65058433946982

    En el ejemplo n 3 los corchetes vacos [] indican que no se modifica el parmetro tolerancia,

    emplendose el valor predeterminado

    Atencin al orden de las variables de integracin: estas siguen el orden alfabtico. Para los ejemplos siguientes se define la funcin: f(x,y) = y2*x de tres diferentes maneras. >> a=inline('y^2.*x') a = Inline function: a(x,y) = y^2.*x >> a2=inline('x*y^2); >> a3=inline(y*x.^2); >> a, dblquad(a,1.3,1.4,2.1,2.2) a = Inline function: a(x,y) = y^2.*x ans = 0.062415

  • Integracin numrica con MatLab

    Mario R. ROSENBERGER

    4 de 6

    >> a2, dblquad(a2,1.3,1.4,2.1,2.2) a2 = Inline function: a2(x,y) = x*y^2 ans = 0.062415

    Pero si cambiamos y por x, tambin debemos cambiar los lmites de integracin, ya que sino darn valores diferentes. Comparar los dos ejemplos que siguen: >> a3, dblquad(a3,1.3,1.4,2.1,2.2) % se invirtieron las variables pero no los lmites de integracin a3 = Inline function: a3(x,y) = y*x.^2 ans = 0.039202 >> a3, dblquad(a4,2.1,2.2, 1.3,1.4) % aqu se invirtieron las variables y los lmites de integracin a3 = Inline function: a3(x,y) = y*x.^2 ans = 0.062415 Posibles mensajes de error: 'Minimum step size reached' indicates that the recursive interval subdivision has produced a subinterval whose length is on the order of roundoff error in the length of the original interval. A nonintegrable singularity is possible. 'Maximum function count exceeded' indicates that the integrand has been evaluated more than 10,000 times. A nonintegrable singularity is likely. 'Infinite or Not-a-Number function value encountered' indicates a floating point overflow or division by zero during the evaluation of the integrand in the interior of the interval. Integracin de Polinomios: Un comando especfico, polyint, permite calcular la integral analtica de polinomios, el formato se indica a continuacin:

    polyint (p , k) donde:

    p es el polinomio definido como vector fila y k es una constante de integracin, cuyo valor predeterminado es 0 (cero).

    >> p = [1 3 4]; polyint(p) ans = 0.33333 1.5 4 0 eso se interpreta como:

  • Integracin numrica con MatLab

    Mario R. ROSENBERGER

    5 de 6

    p = 1*x2 + 3*x + 4 y

    ans = 0.3333*x3 + 1.5*x2 + 4*x + 0 Integracin simblica: El comando int permite calcular la integral de funciones en forma simblica, su formato es el siguiente:

    int (fun , v) donde: fun: es la funcin que se desea integrar. v: es la variable sobre la que se quiere integrar Una variable: >> syms x >> int(x^2) ans = 1/3*x^3 ms de una variable: >> syms v x >> int(v*x^2) ans = 1/3*v*x^3 >> int(v*x^2,x) ans = 1/3*v*x^3 >> int(v*x^2,v) ans = 1/2*v^2*x^2 >> int(v*x^2,v)+int(v*x^2,x) ans = 1/2*v^2*x^2+1/3*v*x^3 Integral definida resuelta simblicamente El comando int adems permite calcular la integral definida de una funcin, tal como:

    y el formato es: int (f,v,a,b)

    ba dvvf )(

  • Integracin numrica con MatLab

    Mario R. ROSENBERGER

    6 de 6

    donde: fun: es la funcin que se desea integrar. v: es la variable sobre la que se quiere integrar a y b son los lmites de integracin El programa asume de forma predeterminada la variable x como incgnita, entonces puede usarse:

    int ( f, a, b)

    por ejemplo: >> int(x^2,1,3) ans = 26/3 integrales dobles empleando funciones int anidadas: Si anidamos dos comandos int podremos calcular integrales doble. Por anidar se entiende poner un comando como elemento sobre el que se aplica otro comando del mismo tipo, es decir, un comando dentro de otro. por ejemplo: >> syms x y >> int ( int (x.^2 * y, x, 1.3, 1.4) , y, 2.1, 2.2 ) ans = 23521/600000 >> eval (ans) ans = 0.03920166666667