deber_no6

27
 DEPARTAMENTO DE CIENCIAS EXACTAS CARRERA INGENIERIA MECANICA. ASIGNATURA:M´ et odo s Num´ er ic os . NRC: 1827 TEMA: DEBER N 6 PROFESOR: Ing. Patricio Puga r ´ ın ALUMNO: Jonathan Changoluisa PARALELO: G 301 FECHA DE ENTREGA: 22 de Febrero del 2015 SANGOLQUI-ECUADOR SEP 14 - FEB 15 1

Upload: jona-david

Post on 04-Nov-2015

230 views

Category:

Documents


2 download

DESCRIPTION

metodos

TRANSCRIPT

  • DEPARTAMENTO DE CIENCIAS EXACTAS

    CARRERA INGENIERIA MECANICA.

    ASIGNATURA:Metodos Numericos.

    NRC: 1827

    TEMA: DEBER N 6

    PROFESOR: Ing.Patricio Pugarn

    ALUMNO: Jonathan Changoluisa

    PARALELO: G 301

    FECHA DE ENTREGA: 22 de Febrero del 2015

    SANGOLQUI-ECUADOR

    SEP 14 - FEB 15

    1

  • 1. EJERCICIO: Construir una tabla de derivadas primeras de la fun-cion g(x) definida por la siguiente tabla en los puntos xi con la mayorprecision posible mediante formulas de tres puntos (Programa).

    xi g(x)

    1.0 1.000000

    1.2 0.997502

    1.4 0.990025

    1.8 0.960398

    2.0 0.940678

    %PROGRAMA TABLA DE DERIVADAS

    %ingreso de vectores x y gx

    for i=1:5

    %Para vector x

    fprintf(Ingrese el elemento x%d: ,i-1);

    x(i)=input();

    %Para vector gx

    fprintf(Ingrese el elemento g%d: ,i-1);

    gx(i)=input();

    end

    cont=interpolLagrange(x,gx);

    R=polyval(cont,1.6);

    z=-10:0.1:10;

    Graf=polyval(cont,z);

    grid on

    plot(z,Graf)

    x=1:0.2:2.4;

    gx=polyval(cont,x);

    for i=1:6 %va hasta 6 xke ahora ia hay 6 puntos

    gxp(i)=(-3*gx(i)+4*gx(i+1)-gx(i+2))/(2*0.2);

    end

    %para imprimir respuestas

    fprintf(\n TABLA DE DERIVADAS \n)

    2

  • fprintf(x(i)\t \t \t g(x) \t \t \t gA^(x) \n);

    for i=1:6

    fprintf(%4.6f \t \t %4.6f \t \t %4.6f \n,x(i),gx(i),gxp(i));

    end

    CORRIDA DEL PROGRAMA

    Ingrese el elemento x0: 1.0

    Ingrese el elemento g0: 1.000000

    Ingrese el elemento x1: 1.2

    Ingrese el elemento g1: 0.997502

    Ingrese el elemento x2: 1.4

    Ingrese el elemento g2: 0.990025

    Ingrese el elemento x3: 1.8

    Ingrese el elemento g3: 0.960398

    Ingrese el elemento x4: 2.0

    Ingrese el elemento g4: 0.940678

    TABLA DE DERIVADAS

    x(i) g(x) gA^(x)

    1.000000 1.000000 -0.000042

    1.200000 0.997502 -0.024528

    1.400000 0.990025 -0.052130

    1.600000 0.977405 -0.078254

    1.800000 0.960398 -0.098302

    2.000000 0.940678 -0.107680

    >>

    3

  • 4

  • 2. EJERCICIO: Se conocen los valores de la funcion de Bessel Jo(x)en los puntos Jo(0, 0) = 1,0000000, Jo(0, 1) = 0,99750156, Jo(0, 2) =0,99002497, Jo(0, 3) = 0,97762625, Jo(0, 4) = 0,96039823, Jo(0, 5) =0,93846981. Construir una tabla de derivadas en esos puntos con lamayor precision posible usando las formulas de tres puntos mas apro-piadas (Programa).

    Programa en Matlab

    %ingreso de vectores x y J0

    for i=1:6

    fprintf(Ingrese el elemento x%d: ,i-1);

    x(i)=input();

    fprintf(Ingrese el elemento Jo(0,%d): ,i-1);

    Jo(i)=input();

    end

    cont=Polino_Inter_Lagrange(x,Jo);

    z=-10:0.1:10;

    Graf=polyval(cont,z);

    plot(z,Graf)

    x=0:1:9;

    Jo=polyval(cont,x);

    %Primera derivada

    for i=1:6

    Jop1(i)=(-3*Jo(i)+4*Jo(i+1)-Jo(i+2))/(2*1);

    end

    for i=1:6

    Jop2(i)=(2*Jo(i)-5*Jo(i+1)+4*Jo(i+2)-Jo(i+3))/(1^2);

    end

    fprintf(\n TABLA DE DERIVADAS \n)

    fprintf(x(i)\t \t \t Jo(0,x) \t \t \t JoA^(0,x) \t \t \t Jo

    A^A^(0,x) \n);

    for i=1:6

    fprintf(%d \t \t \t %4.8f \t \t \t %4.8f \t \t \t \t

    5

  • %4.8f \n,x(i),Jo(i),Jop1(i),Jop2(i));

    end

    Corrida del Programa

    Ingrese el elemento x0: 0

    Ingrese el elemento Jo(0,0): 1

    Ingrese el elemento x1: 1

    Ingrese el elemento Jo(0,1): 0.99750156

    Ingrese el elemento x2: 2

    Ingrese el elemento Jo(0,2): 0.99002497

    Ingrese el elemento x3: 3

    Ingrese el elemento Jo(0,3): 0.97762625

    Ingrese el elemento x4: 4

    Ingrese el elemento Jo(0,4): 0.96039823

    Ingrese el elemento x5: 5

    Ingrese el elemento Jo(0,5): 0.93846981

    TABLA DE DERIVADAS

    x(i) Jo(0,x) JoA^(0,x) JoA^A^(0,x)

    0 1.00000000 -0.00000936 -0.00503417

    1 0.99750156 -0.00501552 -0.00501496

    2 0.99002497 -0.00998407 -0.00495820

    3 0.97762625 -0.01487782 -0.00486463

    4 0.96039823 -0.01966034 -0.00473499

    5 0.93846981 -0.02429592 -0.00457002

    6

  • 7

  • 3. EJERCICIO: Considerese la funcion:

    f(x) =

    0 , 1 < x < 4/5

    ex2

    , 4/5 < x < 1

    Para calcular f (4/5) Asera mejor usar una formula adelantada o unacentrada? Explique.

    SOLUCION

    Obtendriamos en primer lugar la grafica de la funcion planteada alinicio

    MATLAB

    >> x=-1:0.01:1;

    >> y=((x>-1)&(x=(4/5))&(x> plot(x,y,r*)

    Podemos ver que la grafica no es una funcion continua en el punto45 , y si queremos obtener la derivada en el punto

    45 , necesitamos los

    puntos que estan delante de este debido a que la grafica no es continuo

    8

  • como le habia demostrado anteriormente con la grafica es decir nopodemos obtener su derivada con las formulas de derivadas centradas,por tanto, Trabajemos con la formula de derivadas numericasadelantadas.

    f i =fi+1 fi

    h

    f x =fx+h fx

    hUtilizaremos un dezplazamiento constante de 0.1 es decir, h = 0,1.Entonces los puntos ha ser utilizados seran:xi+1 = 0,9 y xi = 0,8.

    f x =f(0,8 + 0,1) f(0,8)

    h

    f x =f(0,9) f(0,8)

    0,1

    Resolviendo

    f x =e(0,9)

    2 e(0,8)20,1

    f x = 0,824344La pendiente en x = 45 es

    f x = 0,824344

    9

  • 4. EJERCICIO: Considerese las siguientes funciones:

    f(x) = x3 para 0 x 1f(x) = sin(X) para 0 x pi/4f(x) = ex para 0 x 1

    Teniendo presente que:

    Longitud de una curva. La longitud de una curva y = f(x) definidasobre un intervalo [a, b] es:

    longitud = ba

    1 + (f (x))2dx

    Area de una superficie de revolucion. El area de la superficie delsolido de revolucion que se obtiene al girar alrededor del eje OXla region limitada por la curva y = f(x) y el intervalo [a, b], vienedada por:

    area = 2pi ba f(x)

    1 + (f (x))2dx

    Calcular la longitud de curva y la superficie de revolucion de las curvasdadas, tuilizando los programas para los metodos: trapecio, 3/8 desimposon y Boole. Comente los resultados.

    a) f(x) = x3 para 0 x 1Para obtener la longitud primero deberemos derivar la funcion:

    f(x) = x3

    f (x) = 3x2

    Reemplazamos en la formula de la longitud de la curva:

    L =

    ba

    1 + (3x2)2dx

    L =

    10

    1 + (9x4)dx

    Codigo en Mtalab Para todos los Metodos PROGRAMA

    function Ejercicio_4Unido(f,a,b)

    %trapecio

    n=300;

    10

  • %valor h

    h=(b-a)/n;

    fx=diff(f);

    %FUNCIONES

    fx1=(1+(fx)^2)^(1/2);

    fx2=int(fx)*fx1;

    fx1=inline(fx1);

    fx2=inline(fx2);

    %TRAPECIO

    %LONGITUD

    for i=1:n+1

    x(i)=a+(i-1)*h;

    end

    sum2=0;

    sum1=(fx1(x(1))+fx1(x(n+1)));

    for i=2:n

    sum2=sum2+(fx1(x(i)));

    end

    sum=sum1+2*sum2;

    trap=(h/2)*sum;

    fprintf(\nLongitud por el Metodo TRAPECIO: %.10f,trap);

    %AREA

    for i=1:n+1

    x(i)=a+(i-1)*h;

    end

    sum2=0;

    sum1=(fx2(x(1))+fx2(x(n+1)));

    for i=2:n

    sum2=sum2+(fx2(x(i)));

    end

    sum=sum1+2*sum2;

    trap=(h/2)*sum;

    area=2*pi*trap;

    fprintf(\nArea por el Metodo TRAPECIO: %.10f,area);

    11

  • %3/8 simpson

    %LONGITUD

    for i=1:n+1

    x(i)=a+(i-1)*h;

    end

    sum1=fx1(x(1))+fx1(x(n+1));

    sum2=0;

    for i=2:3:n-1

    sum2=sum2+(fx1(x(i)));

    end

    sum3=0;

    for i=3:3:n

    sum3=sum3+(fx1(x(i)));

    end

    sum4=0;

    for i=4:3:n-2

    sum4=sum4+(fx1(x(i)));

    end

    sum=sum1+3*sum2+3*sum3+2*sum4;

    simp=(3*h/8)*sum;

    fprintf(\n\nLongitud por el Metodo 3/8 SIMPSON: %.10f,simp);

    %area

    for i=1:n+1

    x(i)=a+(i-1)*h;

    end

    sum1=fx2(x(1))+fx2(x(n+1));

    sum2=0;

    12

  • for i=2:3:n-1

    sum2=sum2+(fx2(x(i)));

    end

    sum3=0;

    for i=3:3:n

    sum3=sum3+(fx2(x(i)));

    end

    sum4=0;

    for i=4:3:n-2

    sum4=sum4+(fx2(x(i)));

    end

    sum=sum1+3*sum2+3*sum3+2*sum4;

    simp=(3*h/8)*sum;

    area=2*pi*simp;

    fprintf(\nArea por el Metodo 3/8 SIMPSON: %.10f,area);

    %boole

    %LONGITUD

    sum2=0;

    sum3=0;

    sum4=0;

    for i=1:n+1

    x(i)=a+(i-1)*h;

    end

    sum1=fx1(x(1))+fx1(x(n+1));

    for i=2:2:n

    sum2=sum2+fx1(x(i));

    end

    for i=3:4:n-1

    sum3=sum3+fx1(x(i));

    end

    for i=5:4:n-3

    sum4=sum4+fx1(x(i));

    13

  • end

    sum=7*sum1+32*sum2+12*sum3+14*sum4;

    boole=(2*h/45)*sum;

    fprintf(\n\nLongitud por el Metodo BOOLE: %.10f,boole);

    %AREA

    sum2=0;

    sum3=0;

    sum4=0;

    for i=1:n+1

    x(i)=a+(i-1)*h;

    end

    sum1=fx2(x(1))+fx2(x(n+1));

    for i=2:2:n

    sum2=sum2+fx2(x(i));

    end

    for i=3:4:n-1

    sum3=sum3+fx2(x(i));

    end

    for i=5:4:n-3

    sum4=sum4+fx2(x(i));

    end

    sum=7*sum1+32*sum2+12*sum3+14*sum4;

    boole=(2*h/45)*sum;

    area=2*pi*boole;

    fprintf(\nArea por el Metodo BOOLE: %.10f\n,area);

    end

    14

  • Ejecucion del programa

    >> Ejercicio_4Unido(x^3,0,1)

    Longitud por el Metodo TRAPECIO: 1.5478709251

    Area por el Metodo TRAPECIO: 3.5632101593

    Longitud por el Metodo 3/8 SIMPSON: 1.5478656547

    Area por el Metodo 3/8 SIMPSON: 3.5631218537

    Longitud por el Metodo BOOLE: 1.5478656547

    Area por el Metodo BOOLE: 3.5631218520

    Los resultados obtenidos son bastantes parecidos si compara-mos la longitud de:TRAPECIO con SIMPSON su valor es exacto hasta su cuarta cifraTRAPECIO con BOOLE su valor es exacto hsta la cuarta cifraSIMPSON con BOOLE su valor exacto es diez cifras decimalesEs decir los resultados son my favorables y cada metodos es confiablede tener una resultado aceptable.Los resultados con las areas obtenemos:TRAPECIO con SIMPSON su valor es exacto hasta su tercera cifradecimalTRAPECION con BOOLE su valor exacto es hasta su tercera cifradecimalSIMPSON con BOOLE su valor exacto es hasta su sexta cifra deciaml.Es decir los Metodos que mas se aproximan es el de SIMPSON y deBOOLE dando confiabilidad para utilizarlos

    15

  • 5. EJERCICIO: Calcule un valor aproximado de ln(2) aplicando laformula del trapecio compuesta a: 1

    0

    dx

    x+ 1

    De una estimacion del error.

    Corrida del programa

    16

  • 6. EJERCICIO: La funcion

    (x) = x

    0 sen(t2)dt

    es conocida como la integral de Fresnel. Haga un grafico de la funcionen el intervalo [0,10], aplicando la formula del punto medio compuesta.

    Corrida del Programa

    17

  • 18

  • 7. EJERCICIO: Use el metodo de las diferencias finitas para aproximarla solucion de las siguientes EDO, tomando un paso h = 0,01:

    x = 2x x+ t2 1 en [0,1] con x80) = 5 y x(1) = 10 grafique lasolucion aproximada y compare con la grafica de la solucion exactax(t) = t2 + 4t+ 5

    SOLUCION

    x = 2x x+ t2 1x 2x + x = t2Discretizamos el intervalo

    h =1 0n

    0,01 =1 0n

    n = 100

    Para un punto xk, k = 2, 3, ..., 7

    xtk 2x

    tk + xtk = t

    2k 1

    Si xk = x(tk) entonces

    xk 2x

    k + xk = t

    2k 1(1)

    Sabemos que la formula en diferencias divididas centrada ordenOh2 para la segunda derivada es:

    xk =xk+1 2xk + xk1

    h2(2)

    Sabemos que la formula en diferencias divididas centrada ordenOh para la primera derivada es:

    xk =xk+1 xk1

    2h(3)

    (2)y(3)en(1)

    19

  • xk+1 2xk + xk1h2

    2xk+1 xk12h

    + xk = t2k 1

    xk+1 2xk + xk1h2

    xk+1 xk1h

    + xk = t2k 1

    xk+1 2xk + xk1 hxk+1 + hxk1 + h2xkh2

    = t2k 1xk+1 2xk + xk1 hxk+1 + hxk1 + h2xk = h2(t2k 1)xk+1(1 + h) + xk(h

    2 2) + xk1(1 h) = h2(t2k 1)k = 2

    x3(1 h) + x2(h2 2) = h2((0,01)2 1)k = 3

    x4(1 h) + x3(h2 2) + x2(1 + h) = h2((0,02)2 1)k = 4

    x5(1 h) + x4(h2 2) + x3(1 + h) = h2((0,03)2 1)k = 5

    x6(1 h) + x5(h2 2) + x4(1 + h) = h2((0,04)2 1)k = 6

    x7(1 h) + x6(h2 2) + x5(1 + h) = h2((0,05)2 1)k = 7

    x8(1 h) + x7(h2 2) + x6(1 + h) = h2((0,06)2 1)k = 100

    x100(h2 2) + x99(1 + h) = h2((0,99)2 1)

    Formamos la matriz para saber el patron de la matriz tridiagonalFormamos la matriz A:

    A =

    (h2 2) 1 + h 0 0 0 0 0 0 01 h (h2 2) 1 + h 0 0 0 0 0 00 1 h (h2 2) 1 + h 0 0 0 0 00 0 1 h (h2 2) 1 + h 0 0 0 00 0 0 1 h (h2 2) 1 + h 0 0 00 0 0 0 1 h (h2 2) 1 + h 0 00 0 0 0 0 1 h (h2 2) 1 + h 0: : : : : : : : :0 0 0 0 0 0 0 1 h (h2 2)

    20

  • X =

    x2x3x4x5x6x7x8:

    x100

    Formamos la matriz B:

    B =

    h2((0,01)2 1)h2((0,02)2 1)h2((0,03)2 1)h2((0,04)2 1)h2((0,05)2 1)h2((0,06)2 1)h2((0,07)2 1)

    :h2((0,99)2 1)

    Formamos la matriz tridiagonal

    PROGRAMA

    Por problemas de espacio debido que la matriz es de 99x99 para poder visualizarla seha puesto una de 8x8 solo con fines de demostracion que el programa TRIDIAGONALsi corre perfectamente. para la solucion obviamente ya se ha utilizado la matriz de99x99.Corrida del Programa

    21

  • A=Tridiagonal(1+0.01,0.01^2-2,1-0.01,99);

    h=0.01;

    for i=1:99

    W(i)=(h^2)*(((0.01*i)^2)-1);

    end

    W;

    B=W

    x=inv(A)*B;

    X1=[5;x;10];

    t=[0:0.01:1];

    >> cont= Polino_Inter_Lagrange(t,X1);

    z=0:0.1:1;

    X2=polyval(cont,z);

    plot(z,X2)

    GRAFICA

    Union con la exacta y la aproximada

    22

  • x + (1/t)x + (1 1/(4t2))x = 0 en [1,6] con x(1) = 1 y x(6) = 6 grafique la solucionaproximada y compare con la grafica de la solucion exacta:

    x(t) =0, 2913843206cos(t) + 1, 001299385sen(t)

    t

    SOLUCION

    x + (1t )x + (1 14t2 ) = 0

    x 2x + x = t2Discretizamos el intervalo

    h =6 1n

    0,01 =6 1n

    n = 500

    Para un punto xk, k = 2, 3, ..., 7, ...

    xtk + (1

    tk)xtk + (1

    1

    4t2k)xtk = 0

    Si xk = x(tk) entonces

    xk + (1

    tk)xk + (1

    1

    4t2k)xk = 0(1)

    23

  • Sabemos que la formula en diferencias divididas centrada orden Oh2

    para la segunda derivada es:

    xk =xk+1 2xk + xk1

    h2(2)

    Sabemos que la formula en diferencias divididas centrada orden Ohpara la primera derivada es:

    xk =xk+1 xk1

    2h(3)

    (2)y(3)en(1)

    xk+1 2xk + xk1h2

    +1

    tk(xk+1 xk1

    2h) + (1 1

    4t2k)xk = 0

    xk1(4t2k 2htk) + xk(8t2k + 4t2kh2 h2) + xk+1(4t2k + 2htk) = 0k = 2

    x1(4t22 2ht2) + x2(8t22 + 4t22h2 h2) + x3(4t22 + 2ht2) = 0

    k = 3

    x2(4t23 2ht3) + x3(8t23 + 4t23h2 h2) + x4(4t23 + 2ht3) = 0

    k = 4

    x3(4t24 2ht4) + x4(8t24 + 4t24h2 h2) + x5(4t24 + 2ht4) = 0

    k = 5

    x4(4t25 2ht5) + x5(8t25 + 4t25h2 h2) + x6(4t25 + 2ht5) = 0

    k = 6

    x5(4t26 2ht6) + x6(8t26 + 4t26h2 h2) + x7(4t26 + 2ht6) = 0

    k = 7

    x6(4t27 2ht7) + x7(8t27 + 4t27h2 h2) + x8(4t27 + 2ht7) = 0

    24

  • k = 500

    x499(4t25002ht500)+x500(8t2500+4t2500h2h2)+x501(4t2500+2ht500) = 0

    Formamos la matriz para saber el patron de la matriz tridiagonalFormamos la matriz A:

    A =

    8t22 + 4t22h2 h2 4t22 + 2ht2 0 0 0

    4t23 + 2ht3 8t23 + 4t22h2 h2 4t23 + 2ht3 0 00 4t24 + 2ht4 8t22 + 4t24h2 h2 4t24 + 2ht4 00 0 4t25 + 2ht5 8t25 + 4t25h2 h2 4t25 + 2ht5: : : : :

    PROGRAMA EN MATLAB

    function Tridiagonal_Irregular(n,a,b)

    h=(b-a)/n;

    for i=1:n-1

    for j=1:n-1

    if(i-j == -1)

    A(i,j)=4*(i*h+a)^2+2*h*(i*h+a);%diagonal arriba

    else

    if (i-j==1)

    A(i,j)=4*(i*h+a)^2-2*h*(i*h+a);%diagonal abajo

    else

    if i-j==0

    A(i,j)=4*(i*h+a)^2*h^2-8*(i*h+a)^2-h^2;%diagonal medio

    end

    end

    end

    end

    end

    V(1)=-(4*(h+a)^2-2*h*(h+a))*1;

    V(n-1)=-(4*((n-1)*h+a)^2+2*h*((n-1)*h+a))*0;

    for i=2:n-2

    V(i)=0;

    end

    y=inv(A)*V;

    y1=[1 y 0];

    x=a:h:b;

    f=Polino_Inter_Lagrange(x,y1);

    z=a:0.01:b;

    f1=polyval(f,z);

    plot(z,f1)

    end

    GRAFICA

    25

  • GRAFICA DE LA ECUACION EXACTA y LA CALCULADARojo=ExactaAzul=Calculada

    26