espe

download espe

of 17

description

CIENCIA

Transcript of espe

  • METODOS NUMERICOS

    DERIVACION

    PROFESOR:

    ING.JOSE LUIS MARCILLO

    NOMBRE:

    Joseline Naranjo

    NIVEL:

    Cuarto

    PERIODO:

    JULIO 2013

    Metodos Numericos

  • Aplicar la formula de dos puntos adelantada al calculo de la derivada primerade f(x) = sin(x) en x = 2,13432. Comprobar que al ir reduciendo h el error sereduce de manera aproximadamente lineal con h.

    El siguiente script en MATLAB aplica la formula de dos puntos adelantadaal calculo de la derivada primera de f(x) = sin(x) en x = 2,13432 como solicitael enunciado, ademas comprueba la reduccion lineal del error.

    Para el desarrollo del script fue necesario:

    1. Delimitar los valores que h tomara, y con que intervalos:As h toma 50 valores entre 1x106 y 1x101.

    2. Conocer el valor real de la derivada:Se sabe que la derivada del seno es el coseno, por lo tanto:

    f (x) = cos(x)

    Como se pide evaluar en x = 2,13432, se tiene:

    f (2,13432) = cos(2,13432) = 0,5342

    3. Graficar el error relativo en escala logartmica.

    clear all

    clc

    f=@(x)(sin(x))

    x=2.13432

    h=linspace(1E-6,1E-1,50);

    for i=1:50

    vd(i) = ( f(x+h(i)) - f(x) ) / h(i);

    end

    vd

    t=cos(2.13432);

    for i=1:50

    er(i)= abs(100*(t-vd(i))/t);

    end

    loglog(h,er)

    As, en la ultima iteracion se tiene que la derivada de la funcion f(x) = sin(x)en x = 2,13432 es:

    f (x) = 0,5342Para comprobar que al ir reduciendo h el error se reduce de manera aproxima-damente lineal con h se observa la siguiente grafica en escala logartmica que

    1

  • contiene en el eje x los valores que tomo h y en el eje y los errores relativoscorrespondientes a cada h:

    Se aprecia una correspondencia lineal, por lo que se comprueba lo planteado enel enunciado

    2

  • Repetir el ejercicio anterior comparando la presicion de la formula de diferenciaadelantada con la retrasada. Aplicar tambien ambas formulas al calculo de laderivada de la funcion g(x) = 1/(1 + ex) en x = 1/2.

    Para cumplir con el enunciado, con los mismos principios que en el literal ante-rior, se desarrolla el siguiente script:

    f=@(x)(sin(x));

    x=2.13432;

    h=linspace(1E-6,1E-1,50);

    for i=1:50

    vd(i) = ( 3*f(x) -4*f(x-h(i)) + f(x-2*h(i)) ) / (2*h(i));

    end

    vd

    t=cos(2.13432);

    for i=1:50

    er(i)= abs(100*(t-vd(i))/t);

    end

    hold on

    loglog(h,er,r)

    Se aumenta el comando hold on para mantener la grafica realizada en elejercicio 2 para comparar los resultados. As, se tiene que la derivada de lafuncion f(x) = sin(x) en x = 2,13432 es:

    f (x) = 0,5342

    Y la comparacion de precision de la formula de diferencia adelantada con laretrasada puede apreciarse en el siguiente grafico en el que la grafica en colorazul representa los errores relativos correspondientes a cada h para la formulade diferencia adelantada y la de color rojo para la retrasada.

    Es evidente que la formula de diferencia retrasada tiene una mejor presicion

    3

  • para calcular la derivada de la funcion f(x) = sin(x) en x = 2,13432 ya que sugrafica esta en cada punto mas cerca del 0 respecto a la grafica azul.

    De igual manera, con los mismos principios usados en los dos script anterio-res, el presente script calculara la derivada de la funcion g(x) = 1/(1 + ex) enx = 1/2:

    %g(x)

    %RETRASADA

    f2=@(x)( 1 / (1+exp(x)));

    x2=0.5;

    h2=linspace(1E-6,1E-1,50);

    for i=1:50

    vd2(i) = ( 3*f2(x2) -4*f2(x2-h2(i)) + f2(x2-2*h2(i)) ) / (2*h2(i));

    end

    vd2

    %ADELANTADA

    f3=@(x)( 1 / (1+exp(x)));

    x3=0.5;

    h3=linspace(1E-6,1E-1,50);

    for i=1:50

    vd3(i) = ( f3(x3+h3(i)) - f3(x3) ) / h3(i);

    end

    vd3

    En ambos casos se tiene que la derivada de la funcion g(x) = 1/(1 + ex) enx = 1/2 es:

    g(x) = 0,5342

    4

  • Supongamos que se conoce el valor de la derivada mediante la formula de dife-rencia adelantada para tres valores de h diferentes. Es posible estimar el valordel h optimo?. Es posible estimar el error que se comete en el calculo en cadauno de los casos?. Aplicarlo al calculo de la derivada de la funcion f(x) = sin(x)en x = 0,6 usando h = 0,1, h = 0,01, y h = 0,0000000001.

    Como se sabe que:

    f (x) =f1 f0h

    f(x)h

    2

    Sera posible determinar el h optimo.As mismos se sabe que el error de truncamiento esta dado por Mh/2 en dondeM es la frontera de f (t) para un t cercano a x.Asumiendo que el error de redondeo sea 2/h. Siendo un valor impuesto porla maquina o proceso.Se tiene que el error total E, esta dado por la suma de los errores de truncamientoy redondeo:

    E =Mh

    2+

    2

    h

    Al derivar E respecto a h e igualando a cero se encontra los puntos crticos, esdecir el valor optimo de h, as:

    dE

    dh= 0 =

    M

    2 2h2

    entonces:

    h = 2

    M

    Para aplicar la formula del Error es necesario definir M y .

    = 0,5x109

    M = |f (x)| |cos(x)| 1 por lo tanto M = 1Aplicando a la funcion f(x) = sin(x) en x = 0,6 usando h = 0,1, h =0,01, y h = 0,0000000001. mediante el siguiente script:

    f=@(x)(sin(x));

    x=0.6;

    h(1)=0.1;

    h(2)=0.01;

    h(3)=0.0000000001;

    %calculo de la derivada

    for i=1:3

    d(i) = ( f(x+h(i)) - f(x) ) / h(i);

    %calculo del eror

    E(i) = h(i)/2 + (2*.5E-9)/h(i);

    end

    5

  • Se tiene los vectores (d) y (E), que contienen los valores de la primera derivaday del error respectivamente para cada h:

    d =(

    0,79575 0,82249 0,82533)

    E =(

    0,05000001 0,0050001 10,00000000005)

    Para encontrar el h optimo se reemplaza los valores de y M en la formula:

    h = 2

    M

    h = 2

    0,5x109

    1

    se tiene el valor optimo para h:

    h = 4,4724x105

    6

  • Consulta: Calcular cotas para el error de truncacion que se comete al aproxi-mar las derivadas de las funciones f(x) = 1/(1 + sin(x)) y g(x) = ln(1 + 2x).Calcular las cotas teniendo en cuenta el error de redondeo y comprobar que loserrores reales estan por debajo de lo permitido por la cota.

    Sea fk = yk + ek, donde ek es el error que se tiene al calcular f(xk), inclu-yendo los errores de medida y el error de redondeo. Entonces podemos escirbirla formula para calcular la derivada de una funcion como:

    f (x) =f(x+ h) f(x h)

    2h+ E(f, h)

    f (x) =f1 f1

    2h+ E(f, h)

    Donde el termino del error E(f, h) tendra una parte debida al error de redondeoy otra debida al error de truncamiento:

    E(f, h) =e1 e1

    2h h

    2

    3!f (c)

    Al suponer que cada error ek es de tamano , que los errores se acumulanindependientemente de los signos y que |f (x)| M , entonces obtenemos lasiguiente cota del error:

    |E(f, h)| 22h

    +Mh2

    3!

    |E(f, h)| h

    +Mh2

    6

    Cota del error para: f(x) = 1/(1 + sin(x))

    Para emplear la formula de |E(f, h)| que calcula la cota, se define el valorde:

    = 0,5x109

    y suponiendo que la derivada se va a calcular en el punto x = 0,58 el valorde M esta dado por:

    |f (x)| 6cos3(x) + 5cos(x)sin2(x) + 4cos(x)sin(x) cos(x)(sin(x) + 1)4

    1 = MAs se tiene que la cota para la presente funcion en funcion de h es:

    |E(h)| (0,5x109)

    h+h2

    6

    Para definir un valor de la cota, es necesario definir una h, as h = 0,001,entonces:

    |E| (0,5x109)

    0,001+

    (0,001)2

    6

    7

  • |E| 5x107 + 1,6667x107

    |E| 6,6667x107

    Asi la cota para el error de la funcion f(x) = 1/(1 + sin(x)) es:

    |E| 1,1667x106

    Al calcular la derivada de la funcion con las condiciones ya establecidasy calcular el error (fue necesario el calculo analtico de f (x)) mediante elsiguiente script:

    x=0.58;

    h=0.001;

    f=@(x)(1/(1+sin(x)));

    t= - ( cos(x) ) / ( (sin(x)+1)^2 );

    %calculo de la derivada

    d= ( f(x+h) - f(x-h) ) / ( 2*h )

    %calculo del error

    e= abs((t-d)/t)

    Se obtiene el siguiente resultado:

    f (x) = 0,349053034555402

    error real = 4,793181x107

    Se compueba que el error real no esta por debajo del permitido por lacota. Esto se debe a que la h usada no es la optima.

    8

  • Cota del error para: g(x) = ln(1 + 2x)

    Para emplear la formula de |E(g, h)| que calcula la cota, se define el valorde:

    = 0,5x109

    y suponiendo que la derivada se va a calcular en el punto x = 0,76 el valorde M esta dado por:

    |g(x)| | 16(2x+ 1)3

    | 1 = M

    As se tiene que la cota para la presente funcion en funcion de h es:

    |E(h)| 2(0,5x109)

    h+h2

    6

    Para definir un valor de la cota, es necesario definir una h, as h = 0,001,entonces:

    |E| (0,5x109)

    0,001+

    (0,001)2

    6

    |E| 5x107 + 1,6667x107|E| 6,6667x107

    Asi la cota para el error de la funcion g(x) = ln(1 + 2x) es: es:

    |E| 1,1667x106

    Al calcular la derivada de la funcion con las condiciones ya establecidasy calcular el error (fue necesario el calculo analtico de g(x)) mediante elsiguiente script:

    x=0.76;

    h=0.001;

    f=@(x)(log(1+2*x));

    t= 2/(2*x+1);

    %calculo de la derivada

    d= ( f(x+h) - f(x-h) ) / ( 2*h )

    %calculo del error

    e= abs((t-d)/t)

    Se obtiene el siguiente resultado:

    f (x) = 0,793650960286274

    error real = 2,09960705x107

    Se compueba que el error real no esta por debajo del permitido por lacota. Esto se debe a que la h usada no es la optima.

    9

  • Construir una tabla de derivadas primeras de la funcion g(x) definida por lasiguiente tabla en los puntos xi con la mayor precision posible mediante formulasde tres puntos.

    x g(x)1.0 1.0000001.2 0.9975021.4 0.9900251.8 0.9603982.0 0.940678

    Para lograr la mayor precision posible, se aplicara la formula encontrada enel ejercicio 4 para encontrar el valor optimo de h:

    h = 2

    M

    Para aplicar la formula es necesario definir M y .

    = 0,5x109

    As, suponiendo que la segunda derivada de la funcion g(x) 1:M = |f (x)| 1 por lo tanto M = 1

    Reemplazando los valores de y M en la formula:

    h = 2

    M

    h = 2

    0,5x109

    1

    se tiene el valor optimo para h:

    h = 4,4724x105

    Para calcular la derivada es necesario encontrar la funcion g(x), se lo hacecon la funcion interpol lagrange de esta manera:

    x=[1 1.2 1.4 1.8 2];

    y=[1 0.997502 0.990025 0.960398 0.940678];

    g=interpol_lagrange(x,y)

    As, se obtiene la funcion g(x):

    g(x) = 0,0239x4 0,1279x3 + 0,1904x2 0,0943x+ 1,0079Ahora, para calcular la primera derivada de la funcion g(x), se usara la

    formula de tres puntos adelantada para todos los xi a excepcion del ultimo enel que se usara la formula de tres puntos retrasada. Dicho calculo se lo realizacon el siguiente script, incluyendo en el la funcion g(x):

    10

  • g=@(x)((5174635971848881*x^4)/216172782113783808 -

    (3374731039133*x^3)/26388279066624 +

    (1028874356470605599*x^2)/5404319552844595200 -

    (127423046416981343*x)/1351079888211148800 +

    453909699963344279/450359962737049600);

    x=[1 1.2 1.4 1.8 2];

    h=4.4724E-5;

    %calculo de la derivada

    d(5)=( 3*g(x(5)) -4*g(x(5) -h) +g(x(5) -2*h) ) / ( 2*h );

    for i=1:4

    d(i) = ( -g(x(i) +2*h) +4*g(x(i)+h) -3*g(x(i))) / 12*h;

    end

    As con una transposicion del vector (d) obtenido, se tiene la siguiente tabla:

    x g(x) g(x)1.0 1.000000 -4.88224269487247 x1013

    1.2 0.997502 -8.14029447381825 x1012

    1.4 0.990025 -1.68314873715771 x1011

    1.8 0.960398 -3.12025175996116 x1011

    2.0 0.940678 -0.101442000252464

    11

  • Hay otra alternativa para cumplir con el enunciado del problema, usar lafuncion del ejercicio 1, de esta manera:

    >> x=[1 1.2 1.4 1.8 2];

    >> gx=[1 0.997502 0.990025 0.960398 0.940678];

    >> d=derivada_df (x,gx)

    As, se obtiene el vector (d) que contiene las derivadas primeras de la funcion(g(x)) en los puntos (x); al transponer dicho vector y ponerlo en la tabla:

    x g(x) g(x)1.0 1.000000 -0.02501.2 0.997502 -0.07481.4 0.990025 -0.29631.8 0.960398 -0.19722.0 0.940678 -0.1477

    Las diferencias entre la primera tabla y la segunda se dan por lo ya expuestoen el ejercicio 1, ademas se puede decir que la primera tabla es mas precisa quela segunda.

    12

  • Usando la formula de diferencia centrada calcular la derivada primera de lafuncion f(x) = arctan(x) en el punto x = sqrt(2) ( el valor correcto es 1/3).Utilizar diferentes valores de h y estudiar los efectos de los errores de redondeoy de truncacion.

    Para cumplir con el enunciado, con los mismos principios que en literales ante-riores, se desarrolla el siguiente script:

    f=@(x)(atan(x));

    x=sqrt(2);

    t=1/3;

    h=linspace(1E-6,1E-1,50);

    for i=1:50

    %calculo de la derivada

    d(i) = ( ( f(x+h(i)) -f(x-h(i)) ) / (2*h(i)) );

    %calculo del eror

    er(i)= abs(100*(t-d(i))/t);

    end

    loglog(h,er)

    d

    er

    As en la ultima iteracion del script para calcular la derivada de f(x) =arctan(x) en el punto x = sqrt(2) se tiene que:

    f (x) = 0,3333

    La siguiente grafica que contiene los valores de h - error relativo en escalalogartmica nos ayudara en el analisis de los errores de redondeo y truncacionpara el presente calculo.

    As, se observa que el error es bajo y aceptable (< 5 %) para todos los valo-res de h, a pesar de que se observa un cambio en la pendiente de la recta, sedice que esto se debe a que al disminuir h vamos restando valores de f(x) cadavez mas proximos y esto se traduce en un mayor error de redondeo; es as quela mejor presicion no se consigue con el valor de h mas pequeno posible, sinocon un valor que sin producir un gran error de redondeo disminuya lo suficienteel error de truncacion.

    13

  • A continuacion se analizara el porcentaje del error total que representa elerror de truncacion y de redondeo.

    De la formula para el error total E obtenida en el ejercicio 3:

    E =Mh

    2+

    2

    h

    Se sabe que el primer termino representa al error de truncamiento, y el segundoel error de redondeo, sabiendo que aproximadamente:

    = 0,5x109

    y

    M = |f (x)| | 2x(x2 + 1)2

    | |2

    2

    9| por lo tanto M 0,314

    se tiene que:

    E = 0,157h+1x109

    h

    Al separar esta formula y calcular y graficar que porcentaje del total representacada termino y sus valores, mediante el siguiente script:

    f=@(x)(atan(x));

    x=sqrt(2);

    t=1/3;

    h=linspace(1E-1,1E-6,50);

    for i=1:50

    14

  • %calculo de la derivada

    d(i) = ( ( f(x+h(i)) -f(x-h(i)) ) / (2*h(i)) );

    %calculo del error relativo

    erel(i)= abs(100*(t-d(i))/t);

    %calculo del error de truncamiento

    etru(i)=0.157*h(i);

    %calculo del error de redondeo

    ered(i)=(1E-9)/h(i);

    %calculo del error total (truncamiento + redondeo)

    etot(i)=etru(i)+ered(i);

    %calculo del porcentaje de error de truncamiento

    poetru(i)=(100*etru(i)) / etot(i);

    %calculo del porcentaje de error de redondeo

    poered(i)=(100*ered(i)) / etot(i);

    end

    subplot(1,2,1);plot(h,poetru)

    hold on

    subplot(1,2,1);plot(h,poered,r)

    subplot(1,2,2);plot(h,etru)

    hold on

    subplot(1,2,2);plot(h,ered,r)

    Se tiene el siguiente grafico:En donde la grafica de la izquierda representa los valores de h en el eje x y

    los del porcentaje del error total correspondientes a cada h en el eje y; y la de laderecha, de la misma manera los valores de h en el eje x y los valores del errorcorrespondientes a cada h en el eje y. En ambas de color azul para el error detruncamiento y de rojo para el de redondeo.

    Al analizar los graficos se puede apreciar que al ir cambiando (disminuyendo)el valor de h, al inicio el error de truncamiento no es representativo en el errortotal cuyo valor depende totalmente del error de redondeo, luego el de redondeodisminuye y el de truncamiento aumenta hasta llegar a un punto de equilibrio,aproximadamente cuando h = 1x103 en donde cada error representa la mitaddel total; el proceso disminucion-aumento continua respectivamente hasta cuan-do h = 2x103 en donde los porcentajes son lo contrario que al inicio, es decirel error total se debe al error de truncamiento y el error de redondeo tiende a 0.

    As se concluye repitiendo lo antes ya dicho: la mejor presicion no se consiguecon el valor de h mas pequeno posible, sino con un valor que sin producir ungran error de redondeo disminuya lo sifuiciente el error de truncacion.

    15

  • 16