Anda di halaman 1dari 9

Instituto Tecnol ogico de L azaro C ardenas Ingenier a Electr onica Programa - Men u de Programas de Integraci on y Diferenciaci on

Asignatura: An alisis Num erico


Docente: M.C. Julio C esar Gallo Sanchez

Alumno: Jos e Armando Lara Ramos Equipo: 9

4o Semestre

Mayo 16 de 2012

Jos e Armando Lara Ramos

Programas de Integraci on y Diferenciaci on


A continuaci on se presenta un programa men u el cual contiene programas para la resoluci on de integrales y derivadas por m etodos num ericos. Los m etodos num ericos empleados por parte de la integraci on son el M etodo del Trapecio y el M etodo de Simpson. Por parte de la diferenciaci on se utiliza solo el M etodo de Extrapolaci on de Richardson, el cual puede calcular las diferenciales por diferencia hacia atr as, diferencia hacia adelante o diferencia centrada. A continuaci on se muestra el programa men u el cual llama a los dem as programas seg un sean seleccionados.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

%Conjunto de programas de an alisis num erico para calcular integrales %definidas y derivadas en punto de alguna funci on %Se limpian variables clear alto = 0; disp(Selecciona alguno de los programas para ejecutarlo: ) disp(Integraci on) disp( 1 M etodo del Trapecio) disp( 2 M etodo Simpson 1/3 y 3/8) disp(Derivaci on) disp( 3 Extrapolaci on de Richardson) %Se solicita el programa hasta recibir una opci on v alida while alto == 0 s = input(Escribe el n umero correspondiente al programa: ); switch s case 1 trapecio alto = 1; case 2 simpson alto = 1; case 3 richardson alto = 1; otherwise disp(Opci on inv alida, por favor selecciona una opci on v alida) end end

Jos e Armando Lara Ramos

A continuaci on se muestra y explica el script del programa trapecio, el cual est a limitado en cuanto a intervalos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

%Programa que calcula la integral definida de una funci on mediante %el m etodo del trapecio %A continuaci on se limpian los valores en las variables clear %A continuaci on se solicita la funci on, los l mites y los segmentos f = input(Ingrese la funci on f(x)= ,s); a = input(Ingrese el l mite inferior: ); b = input(Ingrese el l mite superior: ); %Se solicita el n umero de intervalos hasta obtener una opci on v alida alto=0; while alto == 0 n = input(Ingrese el n umero de aplicaciones del m etodo [1-20]: ); na=round(n); if na==n if n>0 if n<21 alto=1; end end end if alto==0 disp(Opci on inv alida, selecciona entre 1 y 20) end end %Posteriormente se calcula el valor del intervalo d=(b-a)/n; %Ahora se calcula la suma de las evaluaciones de la funci on en cada %intervalo sin contar el primer y el ultimo valor s=0; for i=1:n-1 s=s+subs(f,a+(i*d)); end %Se calcula posteriormente el valor definitivo de la integral definida %utilizando la f ormula del m etodo del trapecio r=(b-a)*((subs(f,a)+2*s+subs(f,b))/(2*n)); %Se despliega el resultado disp([El valor calculado de la integral definida es num2str(r)]) %Se calcula la integral m as exacta k=int(sym(f)); r1=subs(k,b)-subs(k,a); disp([El valor real de la integral definida es num2str(r1)])

A continuaci on se muestra y explica el script del programa del m etodo de Simpson, el cual est a limitado en cuanto a intervalos tambi en. N otese que no se agrega elecci on

Jos e Armando Lara Ramos

para el grado del polin omio en la aproximaci on debido a que esto est a en funci on del n umero de intervalos, el m etodo de Simpson 1/3 (apoximaci on por polinomios de segundo grado) es solo para un n umero impar de puntos, o bien, para un n umero par de intervalos. Por lo contrario el m etodo de Simpson 3/8 (aproximaci on por polinomios de tercer grado) es solo para un n umero par de puntos(a decir 4) o bien para un n umero impar de intervalos (a decir, 3). Una combinaci on de estos dos nos permite cubrir n umeros de intervalos grandes pares. En espec co en este programa para n umeros de intervalos pares, es decir, n umero de puntos impares, se aplica multiples veces el m etodo de Simpson 1/3, y si se presentan n umeros de intervalos impares, se toman 3 intervalos para aplicar ah m etodo de Simpson 3/8, lo cual nos cambia la paridad del n umero de intervalos por calcular, y posteriormente aplicamos el m etodo de Simpson 1/3 el resto de los intervalos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

%Programa que calcula la integral definida de una funci on mediante %la regla de Simpson %A continuaci on se limpian los valores en las variables clear %A continuaci on se solicita la funci on, los l mites y los segmentos f = input(Ingrese la funci on f(x)= ,s); a = input(Ingrese el l mite inferior: ); b = input(Ingrese el l mite superior: ); %Se solicita el n umero de intervalos hasta obtener una opci on v alida alto=0; while alto == 0 n = input(Ingrese el n umero de aplicaciones del m etodo [1-10]: ); na=round(n); if na==n if n>0 if n<11 alto=1; end end end if alto==0 disp(Opci on inv alida, selecciona entre 1 y 10) end end %Posteriormente se calcula el valor del intervalo d=(b-a)/n; Ip=0; Ii=0; na=round(n/2); %Se detecta la paridad del n umero de secciones if (n/2)==na %Siendo par el n umero de intervalo, basta con aplicar el M etodo de %Simpson 1/3

Jos e Armando Lara Ramos

33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

%A continuaci on se suman separadamente los intervalos impares y pares p=0; q=0; for i=1:n-1 s=round(i/2); if (i/2)==s q=q+subs(f,a+(i*d)); else p=p+subs(f,a+(i*d)); end end %Se calcula posteriormente el valor definitivo de la integral definida Ip=(b-a)*((subs(f,a)+4*p+2*q+subs(f,b))/(3*n)); else %En caso de ser impar el n umero de secciones, se utilizar a una %aplicaci on del M etodo de Simpson 3/8 para cambiar la paridad %del n umero de secciones y despu es aplicar al resto %M etodo de Simpson 1/3 m ultiples veces if n==1; disp(No se puede aproximar un polin omio y luego integrarlo) disp(por el M etodo de Simpson con solo 1 secci on(2 puntos)) return end if n>=3 %Se aplica una vez el m etodo de Simpson 3/8 Ii=(3*d)*((subs(f,a)+(3*subs(f,a+d))+(3*subs(f,a+(2*d)))+subs(f,a+(3*d)))/8); if n>3 p=0; q=0; for i=4:n-1 s=round(i/2); if (i/2)==s q=q+subs(f,a+(i*d)); else p=p+subs(f,a+(i*d)); end end %Se aplican las veces m ultiples necesarias el m etodo de %Simpson 1/3 Ip=((n-3)*d)*((subs(f,a+(3*d))+4*q+2*p+subs(f,b))/(3*(n-3))); end end end I=Ip+Ii; %Se despliega el resultado disp([Por M. Simpson el valor de la integral definida es num2str(I)])

Jos e Armando Lara Ramos


%Se calcula una integral m as exacta k=int(sym(f)); Ie=subs(k,b)-subs(k,a); disp([El valor real de la integral definida es num2str(Ie)])

79 80 81 82

Jos e Armando Lara Ramos

A continuaci on se presenta el programa del m etodo de Extrapolaci on de Richardson


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

%Programa que calcula la derivada en un punto por el %M etodo de Extrapolaci on de Richardson %A continuaci on se limpian los valores en las variables clear %A continuaci on se solicita la funci on, el punto a evaluar y %el tama~ no del intervalo f = input(Ingrese la funci on f(x)= ,s); x = input(Ingrese el punto x donde se desee la derivada: ); h1 = input(Ingrese el tama~ no del intervalo h1: ); h2=h1/2; %Se calcula el intervalo m as peque~ no %Se calculan las evaluaciones de la funci on en puntos necesarios fxm2h1=subs(f,x-(2*h1)); fxmh1=subs(f,x-h1); fxMh1=subs(f,x+h1); fxM2h1=subs(f,x+(2*h1)); fx=subs(f,x); fxm2h2=subs(f,x-(2*h2)); fxmh2=subs(f,x-h2); fxMh2=subs(f,x+h2); fxM2h2=subs(f,x+(2*h2)); %Posteriormente se solicita la diferenciaci on a realizar disp(1 Diferenciaci on hacia adelante); disp(2 Diferenciaci on hacia atr as); disp(3 Diferenciaci on centrada); %Se calculan las derivadas en el punto pedido con dos intervalos h1 y h2 %dependiendo de la diferenciaci on seleccionada alto=0; while alto == 0 s = input(Escribe el n umero de la diferenciaci on que desee: ); switch s case 1 Dxh1=((-1*fxM2h1)+(4*fxMh1)+(-3*fx))/(2*h1); Dxh2=((-1*fxM2h2)+(4*fxMh2)+(-3*fx))/(2*h2); alto = 1; case 2 Dxh1=((fxm2h1)+(-4*fxmh1)+(3*fx))/(2*h1); Dxh2=((fxm2h2)+(-4*fxmh2)+(3*fx))/(2*h2); alto = 1; case 3 Dxh1=((-1*fxM2h1)+(8*fxMh1)+(-8*fxmh1)+(fxm2h1))/(12*h1); Dxh2=((-1*fxM2h2)+(8*fxMh2)+(-8*fxmh2)+(fxm2h2))/(12*h2); alto = 1; otherwise

Jos e Armando Lara Ramos

44 45 46 47 48 49 50 51 52 53 54 55

disp(Opci on inv alida, por favor selecciona una opci on v alida) end end %Posteriormente se calcula el valor de la derivada en ese punto %mediante la f ormula de Richardson ya conocida Daprox=((4/3)*Dxh2)-((1/3)*Dxh1); %Se despliega el resultado disp([El valor de la derivada en ese punto es: num2str(Daprox)]) %Se calcula la derivada en ese punto m as exacta k=diff(sym(f)); de=subs(k,x); disp([El valor real de la derivada en ese punto es : num2str(de)])

En seguida se muestran ejecuciones del programa eligiendo distintas opciones y subprogramas como ejemplos.

Figura 1: Programa en ejecuci on

Jos e Armando Lara Ramos

Figura 2: Programa en ejecuci on