Busqueda de Raices MN

10
 MÉTODOS NUMÉRICOS: APLICACIONES DE BÚSQUEDA DE RAICES DE UNA FUNCIÓN Algunas técnicas para resolver ecuaciones diferenciales describiendo la deflexión de una viga uniforme, sujeta a una carga que es proporcional a la distancia desde un extremo de la viga, requieren las raíces positivas de una función f(x). Para mantener los valores funcionales dentro de un rango razonable, es mejor considerar el problema equivalente a encontrar los ceros de una función g(x). 1) Para la viga voladiza (un extremo fijo y otro libre) los parámetros requeridos son las raíces  positivas de f(x) = cosh x cos x + 1; para mantener valores funcionales dentro de un rango razonable, considere los ceros de g(x) = cos x + 1/cosh x. Encuentre los primeros cinco ceros. Solución: Graficas de funciones: f(x) = cosh x cos x + 1

description

Aplicaciones de métodos numérico en la búsqueda de raices de una función

Transcript of Busqueda de Raices MN

  • MTODOS NUMRICOS: APLICACIONES DE BSQUEDA DE RAICES DE UNA FUNCIN

    Algunas tcnicas para resolver ecuaciones diferenciales describiendo la deflexin de una viga

    uniforme, sujeta a una carga que es proporcional a la distancia desde un extremo de la viga,

    requieren las races positivas de una funcin f(x). Para mantener los valores funcionales dentro de

    un rango razonable, es mejor considerar el problema equivalente a encontrar los ceros de una

    funcin g(x).

    1) Para la viga voladiza (un extremo fijo y otro libre) los parmetros requeridos son las races

    positivas de f(x) = cosh x cos x + 1; para mantener valores funcionales dentro de un rango

    razonable, considere los ceros de g(x) = cos x + 1/cosh x. Encuentre los primeros cinco ceros.

    Solucin:

    Graficas de funciones:

    f(x) = cosh x cos x + 1

  • g(x) = cos x + 1/cosh x

    Se considerar el intervalo [0,15] del dominio pues es donde se observan se encuentran los

    primeros cinco ceros positivos.

    Se utilizar el mtodo de la biseccin, de acuerdo a ste se deben utilizar como valores iniciales

    intervalos que contengan la raz, A fin de ir ubicando cada raz se utilizarn los intervalos [1,3],

    [4,6], [7,9], [10,12], [13,15] para cada cero de la funcin g(x).Se escogen porque se observa en la

    grfica que en cada uno de esos intervalos la funcin cambia de signo, adems se encuentran entre

    mximos y mnimos para garantizar la convergencia a cada cero de la funcin.

    Se program en scilab el mtodo de la biseccin y se aplic a cada intervalo.

    En scilab se defini la funcin g(x) de la siguiente manera:

    function y=f(x)

    y=1./cosh(x) + cos(x);

    endfunction

  • El cdigo scilab para el mtodo de la biseccin es:

    function xr=biseccion(xai, xbi, tol)

    i=1;

    ea(1)=100;

    if f(xai)*f(xbi) < 0

    xa(1)=xai;

    xb(1)=xbi;

    xr(1)=(xa(1)+xb(1))/2;

    printf('It.\t\t Xa\t\t Xr\t\t Xb\t Error \n');

    printf('%2d \t %11.7f \t %11.7f \t %11.7f \n',i,xa(i),xr(i),xb(i));

    while abs(ea(i)) >= tol

    if f(xa(i))*f(xr(i))< 0

    xa(i+1)=xa(i);

    xb(i+1)=xr(i);

    end

    if f(xa(i))*f(xr(i))> 0

    xa(i+1)=xr(i);

    xb(i+1)=xb(i);

    end

    xr(i+1)=(xa(i+1)+xb(i+1))/2;

    ea(i+1)=abs((xr(i+1)-xr(i))/(xr(i+1))*100);

    printf('%2d \t %11.7f \t %11.7f \t %11.7f \t %7.3f

    \n',i+1,xa(i+1),xr(i+1),xb(i+1),ea(i+1));

    i=i+1;

    end

    else

    xr=%nan;

    printf('No existe una raiz en ese intervalo');

    end

    endfunction

  • A continuacin se muestran las ejecuciones para cada intervalo, con una tolerancia de 0.1%:

    Intervalo [1,3]:

    Intervalo [4,6]:

    Intervalo [7,9]:

    -->biseccion(7,9,0.1);

    It. Xa Xr Xb Error

    1 7.0000000 8.0000000 9.0000000

    2 7.0000000 7.5000000 8.0000000 6.667

    3 7.5000000 7.7500000 8.0000000 3.226

    4 7.7500000 7.8750000 8.0000000 1.587

    5 7.7500000 7.8125000 7.8750000 0.800

    6 7.8125000 7.8437500 7.8750000 0.398

    7 7.8437500 7.8593750 7.8750000 0.199

    8 7.8437500 7.8515625 7.8593750 0.100

    -->biseccion(4,6,0.1);

    It. Xa Xr Xb Error

    1 4.0000000 5.0000000 6.0000000

    2 4.0000000 4.5000000 5.0000000 11.111

    3 4.5000000 4.7500000 5.0000000 5.263

    4 4.5000000 4.6250000 4.7500000 2.703

    5 4.6250000 4.6875000 4.7500000 1.333

    6 4.6875000 4.7187500 4.7500000 0.662

    7 4.6875000 4.7031250 4.7187500 0.332

    8 4.6875000 4.6953125 4.7031250 0.166

    9 4.6875000 4.6914063 4.6953125 0.083

    -->biseccion(1,3,0.1);

    It. Xa Xr Xb Error

    1 1.0000000 2.0000000 3.0000000

    2 1.0000000 1.5000000 2.0000000 33.333

    3 1.5000000 1.7500000 2.0000000 14.286

    4 1.7500000 1.8750000 2.0000000 6.667

    5 1.8750000 1.9375000 2.0000000 3.226

    6 1.8750000 1.9062500 1.9375000 1.639

    7 1.8750000 1.8906250 1.9062500 0.826

    8 1.8750000 1.8828125 1.8906250 0.415

    9 1.8750000 1.8789063 1.8828125 0.208

    10 1.8750000 1.8769531 1.8789063 0.104

    11 1.8750000 1.8759766 1.8769531 0.052

  • Intervalo [10,12]:

    Intervalo [13,15]:

    Tabla resumen de resultados

    primeros ceros de la funcin g(x) = cos x + 1/cosh x con tolerancia de 0.1%

    Intervalo [1,3] [4,6] [7,9] [10,12] [13,15]

    Raz de la

    funcin g(x)

    1.8759766 4.6914063 7.8515625 10.9921875 14.1328125

    Nmero de

    iteraciones

    11 9 8 8 8

    -->biseccion(13,15,0.1);

    It. Xa Xr Xb Error

    1 13.0000000 14.0000000 15.0000000

    2 14.0000000 14.5000000 15.0000000 3.448

    3 14.0000000 14.2500000 14.5000000 1.754

    4 14.0000000 14.1250000 14.2500000 0.885

    5 14.1250000 14.1875000 14.2500000 0.441

    6 14.1250000 14.1562500 14.1875000 0.221

    7 14.1250000 14.1406250 14.1562500 0.110

    8 14.1250000 14.1328125 14.1406250 0.055

    -->biseccion(10,12,0.1);

    It. Xa Xr Xb Error

    1 10.0000000 11.0000000 12.0000000

    2 10.0000000 10.5000000 11.0000000 4.762

    3 10.5000000 10.7500000 11.0000000 2.326

    4 10.7500000 10.8750000 11.0000000 1.149

    5 10.8750000 10.9375000 11.0000000 0.571

    6 10.9375000 10.9687500 11.0000000 0.285

    7 10.9687500 10.9843750 11.0000000 0.142

    8 10.9843750 10.9921875 11.0000000 0.071

  • 2) El desplazamiento de una estructura est definida por la siguiente ecuacin para una oscilacin

    amortiguada:

    y = 8e-kt

    cos t

    donde k=0,5 y =3.

    a) Use el mtodo grfico para hacer una primera estimacin del tiempo requerido para que el

    desplazamiento disminuya a 4.

    b) Use el mtodo de Newton-Raphson para determinar la raz con error de tolerancia del 0,01%.

    c) Repita b) con el mtodo de la secante.

    Solucin:

    a) Grfica de la funcin:

    y = 8e-kt

    cos t

    Como se desea determinar el tiempo t en el cual el desplazamiento es 4, definimos una funcin f(x)

    a la cual le calcularemos el cero correspondiente, de la siguiente manera:

  • f(t) = 8e-kt

    cos t-4

    Para el mtodo de Newton-Raphson hace falta la derivada de sta funcin:

    Derivada de la funcin

    f(t) = 8e-kt

    cos t-4

    En la grfica se puede observar que el primer instante de tiempo en el cual el desplazamiento

    disminuye a 4 est en el intervalo [0.0, 0.5], el cual ser el que se aplique para los mtodos de

    bsqueda de ceros. Se selecciona ste intervalo porque es donde est contenido el desplazamiento

    de cuatro y adems est entre un mximo y un mnimo de tal manera que garantiza tendencia a la

    convergencia.

    En scilab se defini la funcin f(x) de la siguiente manera:

    Y su derivada:

    function y=df(x)

    k=0.5;

    w=3.0;

    y=-8*exp(-k*x)*(w*sin(w*x)+k*cos(w*x));

    endfunction

    function y=f(x)

    k=0.5;

    w=3.0;

    y=8*exp(-k*x)*cos(w*x)-4;

    endfunction

  • b) Se program en scilab el mtodo de Newton-Raphson y se aplic con el valor inicial del

    intervalo.

    A continuacin se muestra la ejecucin para el valor inicial del intervalo, con una tolerancia de

    0.01%:

    Intervalo [0.1, 0.5]:

    Observacin: se comienza en t=0.1 para evitar una divisin por cero en el clculo del error segn el

    cdigo del programa.

    -->newtonraphson(0.1,0.01);

    i X(i) Error aprox (i)

    0 0.1000000 100.000

    1 0.4149772 75.902

    2 0.3166610 31.048

    3 0.3151672 0.474

    4 0.3151661 0.000

    function x=newtonraphson(x0, tol);

    i=1;

    ea(1)=100;

    x(1)=x0;

    while abs(ea(i))>=tol;

    x(i+1)=x(i)-f(x(i))/df(x(i));

    ea(i+1)=abs((x(i+1)-x(i))/x(i+1)*100);

    i=i+1;

    end

    printf(' i \t X(i) Error aprox (i) \n');

    for j=1:i;

    printf('%2d \t %11.7f \t %7.3f \n',j-1,x(j),ea(j));

    end

    endfunction

  • c) Se program en scilab el mtodo de la secante y se aplic con el valor inicial del intervalo.

    A continuacin se muestra la ejecucin para el intervalo [0.1, 0.5], con una tolerancia de 0.01%:

    Intervalo [0.1, 0.5]:

    Observacin: se comienza en t=0.1 para evitar una divisin por cero en el clculo del error segn el

    cdigo del programa.

    -->secante(0.1,0.5,0.01);

    i x(i) Error aprox (i)

    0 0.1000000

    1 0.5000000 100.000

    2 0.2915269 71.511

    3 0.3142147 7.220

    4 0.3151783 0.306

    5 0.3151661 0.004

    function x=secante(x0, x1, tol)

    j=2;

    i=1;

    x(1)=x0;

    x(2)=x1;

    ea(i)=100;

    while abs(ea(i))>=tol

    x(j+1)=(x(j-1)*f(x(j))-x(j)*f(x(j-1)))/(f(x(j))-f(x(j-1)));

    ea(i+1)=abs((x(j+1)-x(j))/x(j+1))*100;

    j=j+1;

    i=i+1;

    end

    printf(' i \t\t x(i) \t Error aprox (i) \n');

    printf('%2d \t %11.7f \t \n',0,x(1));

    for k=2:j;

    printf('%2d \t %11.7f \t %7.3f \n',k-1,x(k),ea(k-1));

    end

    endfunction

  • Resumen de resultados

    Mtodo aplicado Raz de la funcin f(x) Nmero de iteraciones Error de aproximacin

    (%)

    Newton-Raphson 0.3151661 4 0.000

    Secante 0.3151661 5 0.001

    La estructura alcanza un desplazamiento de 4 al instante t=0.3151661.