4
Departamento de Matemática Aplicada. Prácticas de Matemáticas II. Curso 2014/15. Práctica 4. Integración Numérica 1. Integración Numérica. Repaso de Fórmulas Fórmula de los trapecios: Siendo h = ba n y denotando y i = f (x i ), i =0, 1, 2, ..., n, la siguiente fórmula nos aproxima el valor de la correspondiente integral definda b a y dx = h 2 (y 0 +2y 1 +2y 2 + ... +2y n2 +2y n1 + y n ) El error viene dado por la expresión: R = nh 3 12 y ′′ (ξ)= (b a)h 2 12 y ′′ (ξ)= (b a) 3 12n 2 y ′′ (ξ) donde ξ [a, b]. Método de Euler: Consideremos una ecuación diferencial de primer orden con valor inicial, es decir, y = f (x, y), y(x 0 )= y 0 Construimos una partición uniforme del intervalo [x 0 ,x n ] con n +1 puntos: x 0 <x 1 < ... < x n1 <x n , h = x i x i1 , i. El siguiente algoritmo nos da los valores aproximados de la solución de la ecuación diferencial para cada x i y i+1 = y i + hf (x i ,y i ), i =0, 1, 2, ..., n 1. Método de RK2 o PC2: Partiendo de la misma situación que en el caso anterior, el algoritmo del método RK2 es: y i+1 = y i + h 2 (k 1 + k 2 ), i =0, 1, 2, ..., n 1. Siendo: k 1 = f (x i ,y i ) k 2 = f (x i + h, y i + hf (x i ,y i )) 2. Ejercicios 1. Calcula mediante la fórmula de los trapecios la integral 2 1 f (x)dx , utilizando la siguiente tabla que nos da los valores y i = f (x i ) correspondientes a una malla de puntos igualmente espaciados del intervalo [1, 2]. x i 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 y i 1.000 0.909 0.833 0.769 0.714 0.667 0.625 0.588 0.555 0.526 0.5 Para ello utiliza el siguiente archivo trapeciosp.m que nos calcula el valor de la integral de una función f mediante la fórmula de los trapecios, a partir de un conjunto de puntos igualmente espaciados y de los valores de la función en dichos puntos. 1

INTEGRACIÓN EN MATLAB

Embed Size (px)

DESCRIPTION

Integración en matlab

Citation preview

  • Departamento de Matemtica Aplicada.Prcticas de Matemticas II. Curso 2014/15.

    Prctica 4. Integracin Numrica

    1. Integracin Numrica. Repaso de Frmulas

    Frmula de los trapecios:

    Siendo h = ban y denotando yi = f(xi), i = 0, 1, 2, ..., n, la siguiente frmula nos aproximael valor de la correspondiente integral denda

    ba

    y dx =h

    2(y0 + 2y1 + 2y2 + ...+ 2yn2 + 2yn1 + yn)

    El error viene dado por la expresin:

    R = nh3

    12y() = (b a)h

    2

    12y() = (b a)

    3

    12n2y()

    donde [a, b].

    Mtodo de Euler:

    Consideremos una ecuacin diferencial de primer orden con valor inicial, es decir,

    y = f(x, y), y(x0) = y0

    Construimos una particin uniforme del intervalo [x0, xn] con n+ 1 puntos:

    x0 < x1 < ... < xn1 < xn, h = xi xi1, i.El siguiente algoritmo nos da los valores aproximados de la solucin de la ecuacin diferencial

    para cada xi

    yi+1 = yi + hf(xi, yi), i = 0, 1, 2, ..., n 1.

    Mtodo de RK2 o PC2:

    Partiendo de la misma situacin que en el caso anterior, el algoritmo del mtodo RK2 es:

    yi+1 = yi +h

    2(k1 + k2), i = 0, 1, 2, ..., n 1.

    Siendo:k1 = f(xi, yi)

    k2 = f(xi + h, yi + hf(xi, yi))

    2. Ejercicios

    1. Calcula mediante la frmula de los trapecios la integral 21f(x)dx , utilizando la siguiente

    tabla que nos da los valores yi = f(xi) correspondientes a una malla de puntos igualmenteespaciados del intervalo [1, 2].

    xi 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2yi 1.000 0.909 0.833 0.769 0.714 0.667 0.625 0.588 0.555 0.526 0.5

    Para ello utiliza el siguiente archivo trapeciosp.m que nos calcula el valor de la integralde una funcin f mediante la frmula de los trapecios, a partir de un conjunto de puntosigualmente espaciados y de los valores de la funcin en dichos puntos.

    1

  • Archivo trapeciosp.m

    function T=trapeciosp(x,y)

    % funcin que calcula mediante la frmula de los trapecios

    % la integral de una funcin f de la que se conocen los

    % valores en unos puntos igualmente espaciados x(i),

    % es decir y(i)=f(x(i)).

    % La integral se calcula entre el primer y ltimo punto

    h=x(2)-x(1);

    n=length(x)-1;

    T=0.5*h*(y(1)+y(n+1)+2*sum(y(2:n)));

    Sabiendo que los puntos proceden de la funcin f(x) = 1/x , aplica la regla de los

    trapecios para calcular 21

    dxx utilizando n subintervalos de la misma longitud en los que se

    subdivide el intervalo [1, 2], con n = 3, n = 6 y n = 11.

    Para ello se puede utilizar la funcin anterior calculando la malla de puntos xi y losvalores yi = f(xi) sobre la malla de puntos, o modicar un poco el archivo anterior. Sihacemos esto ltimo obtenemos el siguiente archivo trapecios.m que nos calcula el valorde la integral de una funcin f en un intervalo [a, b] mediante la frmula de los trapecios,a partir de la funcin, los extremos del intervalo y el nmero de subintervalos de la mismalongitud en los que se subdivide el intervalo dado.

    Archivo trapecios.m

    function T=trapecios(a,b,n,f)

    % funcin que calcula la integral de f en [a,b] con la regla

    % de los trapecios y con n subintervalos iguales

    h=(b-a)/n; x=[a:h:b]; % se genera la malla de puntos

    y=f(x); % se generan los valores f(x(i)) sobre la malla

    T=0.5*h*(y(1)+y(n+1)+2*sum(y(2:n)));

    2. Se sabe que 10

    dx

    1 + x2=

    4

    Utilizando alguna de las funciones anteriores, obtn el valor aproximado de la integral por elmtodo de los trapecios dividiendo el intervalo en n partes iguales con n = 4, n = 8, n = 16,n = 32, n = 64. Calcula, a priori, una cota de los errores que esperas obtener para cada n.(De esta forma se puede obtener una aproximacin al valor de , con exactitud prejada).Comprueba tus armaciones sobre las cotas del error.

    3. Utilizando las funciones anteriores calcula la siguiente integral

    P (X 1) = 12

    1

    ex2/2dx,

    con un error menor que 103, sin calcular ninguna cota del error de integracin apriori. Para ello, empieza con n = 4 intervalos, luego con n = 8, n = 16 .... Para cuandolo creas conveniente. Explica las razones que te han hecho parar, y por qu crees que turesultado es correcto para la precisin indicada.

    2

  • 4. El mtodo de Euler proporciona un mecanismo para calcular aproximaciones numricas a lasolucin de una ecuacin diferencial. Para un problema de valores iniciales (PVI) de la forma

    y = f(x, y)y(x0) = y0

    el mtodo de Euler funciona del siguente modo: A partir de los datos iniciales conocidos(x0, y0), y de h, que es el parmetro que dene la malla computacional para la variableindependiente, hay que calcular

    yn+1 = yn + h f(xn, yn) (1)

    para n 0.La implementacin en Matlab de este proceso es como sigue:

    Archivo ee.m

    function [x,y]=ee(f,x0,y0,h,xf)

    % f es la funcin f(x, y) que especifica la ecuacin diferencial

    % y que es necesario definir previamente

    % x es el vector que contiene a la malla computacional

    % y es el vector que contiene a la solucin aproximada

    % x0,y0 son los datos iniciales

    % h es el paso de malla

    % [x0,xf] es el intervalo computacional

    N=round((xf-x0)/h); % N es el nmero de intervalos

    % en la malla

    x0+N*h % se comprueba por precaucin que x0+N*h=xf

    y(1)=y0; % datos iniciales que se introducen

    x(1)=x0; % en la llamada de la funcin

    % bucle de clculo de la solucin aproximada

    for n=1:N

    y(n+1)=y(n)+ h*f(x(n),y(n));

    x(n+1)=x(n)+h;

    end

    Aplica la frmula (1), realizando manualmente los clculos, al siguiente problema de valoresiniciales

    y = y xy(0) = 2

    para aproximar el valor de la solucin para x = 3, utilizando una malla de puntos igualmenteespaciados con paso h = 1. Repite los clculos para una malla con paso h = 0,5.

    a) Utiliza ahora la funcin de Matlab denida antes para calcular las aproximaciones conh = 1. Compara los valores que has obtenido en tus clculos manuales con los obtenidosutilizando el cdigo en Matlab. Utiliza de nuevo la funcin para renar los valoresobtenidos: Considera ahora mallas con h = 0,5, h = 0,25 y h = 0,125.

    Dibuja las soluciones obtenidas en cada una de las mallas consideradas con el comandoplot.

    3

  • b) Mirando nica y exclusivamente los valores de la solucin aproximada en las mallasutilizadas cuantos dgitos correctos podras garantizar para la solucin aproximada enx = 2, ? Y para x = 3?

    Utiliza tambien el cdigo para obtener valores en mallas mas nas: Rena, dividiendosucesivamente por 2 el paso de malla hasta que el resultado del clculo para y(2) en tresmallas consecutivas tenga 4 dgitos coincidentes. Haz una tabla con el paso de malla y laaproximacin a y(2) obtenida para ese paso de malla. Para qu pasos de malla sucedeque estas aproximaciones tienen 3 dgitos signicativos coincidentes?

    5. El mtodo RK2 (tambin llamado PC2 o mtodo de Heun) es un mtodo de segundo orden.Una programacin sencilla en Matlab de este mtodo se consigue modicando el programaque has confeccionado para el mtodo de Euler explcito. La modicacin consiste en sustituirlas lneas:

    y(n+1)=y(n)+h*f(x(n),y(n));

    x(n+1)=x(n)+h;

    por

    k1=f(x(n),y(n));

    ytil=y(n)+ h*k1;

    x(n+1)=x(n)+h;

    k2=f(x(n+1),ytil);

    y(n+1)=y(n)+.5*h*(k1+k2);

    Y as se obtiene un nuevo archivo archivo rk2.m

    Razona que esta modicacin recupera la frmula que dene el mtodo de segundo orden.Utiliza el mtodo de segundo orden para resolver numricamente el PVI del problema anterior:Repite los clculos de cada uno de los apartados del problema anterior utilizando el mtodo desegundo orden. Comenta las diferencias observadas al responder a cada uno de los apartados.

    6. Aproxima el valor de la solucin del problema de valores iniciales

    y = x2 + y, y(0) = 1

    en el punto x = 0,5, utilizando los dos mtodos numricos comentados antes: el mtodo deEuler y el RK2. Utiliza las funciones de Matlab denidas antes para calcular las aproxima-ciones con h = 0,25 y despus rena, dividiendo sucesivamente por 2 el paso de malla hastaque el resultado del clculo para y(0,5) en tres mallas consecutivas tenga 3 dgitos coinci-dentes. Haz una tabla con el paso de malla y la aproximacin a y(0,5) obtenida para ese pasode malla para cada uno de los mtodos. Compara los resultados obtenidos entre si, y con elvalor exacto y(0,5) = 1,69616.

    4