Clase integracion matlab

dhanniell 8,963 views 6 slides Sep 26, 2014
Slide 1
Slide 1 of 6
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6

About This Presentation

matlab para ingenieross


Slide Content

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 “quadrature” se 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
@
),(YXtrapz
espaciado de los datos
datos a integrar

Integración numérica 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 función a integra debe definirse en forma simbólica mediante el comando inline o a través de
un archivo m. Por ejemplo, para integrar la función y = x
2
+5, entre los límites [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 más argumentos, tales como, tolerancia del cálculo(tol), la posibilidad de
imprimir los resultados de las iteraciones (trace) e incluir parámetros adicionales para la función (p1
p2,...)tal como se muestra a continuación:

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

Para quadl, quad8 rigen las mismas recomendaciones.



Integrales dobles:


En Matlab pueden calcularse numéricamente 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, ...)
),,( bafunciónquad
función a integrar
límite inferior
del intervalo
límite superior
del intervalo

Integración numérica con MatLab

Mario R. ROSENBERGER
3 de 6

donde:
fun es una función declarada del tipo inline o a través 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 cálculo numérico
method: especifica el método de cálculo
p1, p2 ,...: son parámetros adicionales que se pueden utilizar en el cálculo.


Ejemplos:

1). usando un función definica con inline:

>>dblquad(inline('y*sin(x) + x*cos(y)'),0, 1, 0,1)
ans =
0.65058433794530

2). usando una función 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 función definida en un archivo_m.

>> dblquad(‘esta’,0, 1, 0,1, [], @quadl)
ans =
0.65058433946982

En el ejemplo nº 3 los corchetes vacíos “[]” indican que no se modifica el parámetro tolerancia,
empleándose el valor predeterminado


Atención al orden de las variables de integración: estas siguen el orden alfabético. Para los
ejemplos siguientes se define la función:
f(x,y) = y
2
*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

Integración numérica 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, también debemos cambiar los límites de integración, ya que sino
darán 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 límites de integración
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 límites de integración
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.



Integración de Polinomios:


Un comando específico, polyint, permite calcular la integral analítica de polinomios, el formato se
indica a continuación:

polyint (p , k)

donde:

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

>> p = [1 3 4];
polyint(p)

ans =
0.33333 1.5 4 0

eso se interpreta como:

Integración numérica con MatLab

Mario R. ROSENBERGER
5 de 6
p = 1*x
2
+ 3*x + 4
y
ans = 0.3333*x
3
+ 1.5*x
2
+ 4*x + 0



Integración simbólica:

El comando int permite calcular la integral de funciones en forma simbólica, su formato es el siguiente:

int (fun , v)

donde:
fun: es la función 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

más 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 simbólicamente


El comando int además permite calcular la integral definida de
una función, tal como:




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

b
a
dvvf)(

Integración numérica con MatLab

Mario R. ROSENBERGER
6 de 6

donde:
fun: es la función que se desea integrar.
v: es la variable sobre la que se quiere integrar
a y b son los límites de integración



El programa asume de forma predeterminada la variable x como incógnita, 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