0% encontró este documento útil (0 votos)
4 vistas9 páginas

Métodos de Integración en Matlab

Este documento presenta ejemplos de programas en Matlab para aproximar integrales usando diferentes reglas numéricas como la regla del trapecio, Simpson y Romberg. Se pide modificar el programa de Romberg para incluir una tolerancia de error.

Cargado por

Daniel Velez ヅ
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas9 páginas

Métodos de Integración en Matlab

Este documento presenta ejemplos de programas en Matlab para aproximar integrales usando diferentes reglas numéricas como la regla del trapecio, Simpson y Romberg. Se pide modificar el programa de Romberg para incluir una tolerancia de error.

Cargado por

Daniel Velez ヅ
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1. 2.

PRACTICA 8 Hacer un programa en Matlab para la regla de trapecio, Simpson, Regla de los 3/8. Hacer un programa en matlab de la regla del trapecio compuesto, Simpson compuesto Solucin a las preguntas 1, 2 y 5.
clear; format long fprintf('\n\t::::::::::PROGRAMADO POR: Obed Gmer Cruz Campos::::::::::\n'); while 1 disp('[1] TRAPECIO SIMPLE (h>0)') disp('[2] TRAPECIO COMPUESTO(h<0)') disp('[3] FORMULA DE SIMPSON SIMPLE') disp('[4] FORMULA DE LOS TRES OCTAVOS DE SIMPSON') disp('[5] FORMULA DE SIMPSON COMPUESTO') disp('[6] INTEGRACION DE ROMBERG') disp('[7] ROMBERG MODIFICADO') disp('[8] VOLVER') elecc3 = input('ELIGA OPCION '); switch elecc3 case 1 clc; clear; fprintf('\t\tTRAPECIO SIMPLE\n') funcion=input('ingrese la funcion \n f(x)=','s'); b=input('ingrese el limite superior de la integral\n'); a=input('ingrese el limite inferior de la integral\n'); h=b-a; x=a; f=eval(funcion); x=b; f= (f+eval(funcion))*(h/2); fprintf('El valor aproximado es: %10.15f\n\n',f) case 2 clc; clear; fprintf('\t\tTRAPECIO COMPUESTO\n') funcion=input('ingrese la funcion \n f(x)=','s'); b=input('ingrese el limite superior de la integral\n'); a=input('ingrese el limite inferior de la integral\n'); n=input('ingrese el numero de intervalos\n'); h=(b-a)/n; f=0; for k=1:n-1 x=a+h*k; f=f+eval(funcion); end f=2*f; x=a; f=f+eval(funcion); x=b; f=f+eval(funcion); f=(h/2)*(f); fprintf('El valor aproximado es: %10.15f\n\n',f) case 3 clc; clear; fprintf('\t\tFORMULA DE SIMPSON SIMPLE\n') funcion=input('ingrese la funcion \n f(x)=','s'); b=input('ingrese el limite superior de la funcion\n');

a=input('ingrese el limite inferior de la integral\n'); h=(b-a)/2; x=a; f=eval(funcion); x=b; f=f+eval(funcion); x=a+h; f=f+ 4*(eval(funcion)); f=(h/3)*f; fprintf('El valor aproximado de la integral es: %10.15f\n\n',f) case 4 clc; clear; fprintf('\t\tFORMULA DE LOS TRES OCTAVOS DE SIMPSON\n') funcion=input('ingrese la funcion \n f(x)=','s'); b=input('ingrese el limite superior de la funcion\n'); a=input('ingrese el limite inferior de la integral\n'); h=(b-a)/3; x=a; f=eval(funcion);x=a+h; f=f+3*(eval(funcion)); x=a+2*h; f=f+3*(eval(funcion)); x=b; f=f+eval(funcion); f=(3*h/8)*f; fprintf('El valor aproximado de la integral es: %10.15f\n\n',f) case 5 clc; clear; fprintf('\t\tFORMULA DE SIMPSON COMPUESTO\n') funcion=input('ingrese la funcion \n f(x)=','s'); b=input('ingrese el limite superior de la integral\n'); a=input('ingrese el limite inferior de la integral\n'); n=input('ingrese el numero de intervalos'); h=(b-a)/(2*n); f=0; for k=1:n-1 x=a+h*(2*k); f=f+eval(funcion); end f1=0; for k=1:n x=a+h*(2*k-1); f1=f1+eval(funcion); end f=2*f+4*f1; x=a; f=f+eval(funcion); x=b; f=f+eval(funcion); f=(h/3)*f; fprintf('el valor aproximado de la integral es: %10.15f\n\n',f) case 6 clc; clear; fprintf('\t\tINTEGRACION DE ROMBERG\n') funcion=input('ingrese la funcion \n f(x)=','s'); b= input('ingrese el lmite superior de la integral \n'); a= input('ingrese el lmite inferior de la integral \n'); n= input('ingrese el nmero de intervalos\n'); h=(b-a); M=1; J=0; R=zeros(n,n); x=a;

f1=eval(funcion); x=b; f2=eval(funcion); R(1,1)=h*(f1+f2)/2; while (J<(n-1)) J=J+1; h=h/2; s=0; for p=1:M x=a+h*(2*p-1); f3=eval(funcion); s=s+f3; end R(J+1,1)=(1/2)*(R(J,1))+h*s; M=2*M; for k =1:J R(J+1,k+1)=R(J+1,k)+(R(J+1,k)-R(J,k))/(4^k-1); end end R fprintf('La aproximacion buscada es: %10.15f\n\n', R(J+1,J+1)) case 7 clc; clear; fprintf('\t\tINTEGRACION DE ROMBERG\n') funcion=input('ingrese la funcion \n f(x)=','s'); b=input('Ingrese el limite superior:\n'); a=input('Ingrese el limite inferior:\n'); n=input('Ingrese el numero de particiones:\n'); tol=input('Ingrese la tolerancia:\n'); M=1; h=b-a; err=1; J=0; R=zeros(4,4); x=a; f_a=eval(funcion); x=b; f_b=eval(funcion); R(1,1)=h*(f_a+f_b)/2; disp(' quad err h') while((err>tol)&(J<n))|(J<4) J=J+1; h=h/2; s=0; for p=1:M x1=a+h*(2*p-1); x=x1; f_x1=eval(funcion); s=s+f_x1; end R(J+1,1)=R(J,1)/2+h*s; M=2*M; for K=1:J

R(J+1,K+1)=R(J+1,K)+(R(J+1,K)-R(J,K))/(4^K-1); end err=abs(R(J,J)-R(J+1,K+1)); fprintf('%10.9f %10.9f %10.9f\n',R(J+1,J+1),err,h) end disp('LA MATRIZ TRIANGULAR INFERIOR ES:') disp(R) disp('El error es para el numero de particiones:') disp(err) disp('El tamao de la ultima particion es:') disp(h) disp('La respuesta es:') disp(R(J+1,J+1)) otherwise clc fprintf('\n\t::::::::::Derechos: Obed Gmer Cruz Campos::::::::::\n'); fprintf('\t::::::::::::::::::UNHEVAL-FICA-2008:::::::::::::::::\n'); fprintf('\n :::::::::::::::::::::::GRACIAS::::::::::::::::::::::\n'); break end end

3.

Hallar la integral usando la regla de trapecio, regla Simpson, regla de los 3/8, compare los resultados con el valor real.

Se concluye que la mejor aproximacin de de los tres octavos:

4.

Considere use la regla de Simpson compuesto con n=4 y n=8,para aproximar la integral, compare con su valor real. Para n =4

Para n = 8

Valor real

5.

Programa: La integracin por Romberg.


function romberg global fun fun=input('ingrese la funcion\n','s'); b=input('ingrese el limite superior de la integral\n'); a=input('ingrese el limite inferior de la integral\n'); n=input('ingrese el numero de intervalos\n'); h=(b-a); M=1; J=0; R=zeros(n,n); x=a; f1=eval(fun); x=b; f2=eval(fun); R(1,1)=h*(f1+f2)/2; while(J<(n-1)) J=J+1; h=h/2; s=0 for p=1:M x=a+h*(2*p-1); f3=eval(fun) s=s+f3; end R(J+1,1)=(1/2)*(R(J,1))+h*s; M=2*M for k=1:J R(J+1,k+1)=R(J+1,k)+(R(J+1,k)-R(J,k))/(4^k-1) end end i=R(J+1,J+1)

6.

Considere , Use la integracin de Romberg para hallar la integracin aproximada con n=6. Usando el programa se obtiene:

7.

Modificar el programa de integracin de Romberg, para aproximar. Cuando la tolerancia Modificando el programa de Romberg:
clc; clear; fprintf('\t\tINTEGRACION DE ROMBERG MODIFICADO\n') funcion=input('ingrese la funcion \n f(x)=','s'); b=input('Ingrese el limite superior:\n'); a=input('Ingrese el limite inferior:\n'); n=input('Ingrese el numero de particiones:\n'); tol=input('Ingrese la tolerancia:\n'); M=1; h=b-a; err=1; J=0; R=zeros(4,4); x=a; f_a=eval(funcion); x=b; f_b=eval(funcion); R(1,1)=h*(f_a+f_b)/2; disp(' quad err h') while((err>tol)&(J<n))|(J<4) J=J+1; h=h/2; s=0; for p=1:M x1=a+h*(2*p-1); x=x1; f_x1=eval(funcion); s=s+f_x1; end R(J+1,1)=R(J,1)/2+h*s; M=2*M; for K=1:J R(J+1,K+1)=R(J+1,K)+(R(J+1,K)-R(J,K))/(4^K-1); end err=abs(R(J,J)-R(J+1,K+1)); fprintf('%10.9f %10.9f %10.9f\n',R(J+1,J+1),err,h) end disp('LA MATRIZ TRIANGULAR INFERIOR ES:') disp(R) disp('El error es para el numero de particiones:') disp(err) disp('El tamao de la ultima particion es:') disp(h) disp('La respuesta es:') disp(R(J+1,J+1))

Evaluando el programa

También podría gustarte