Vous êtes sur la page 1sur 9

SIMPSON 1/3 COMPUESTO

PROBLEMA 4
calcular dx Mediante la regla de Simpson compuesta calcula la integral con el siguiente criterio de paro: Comenzar subdividiendo el intervalo en dos partes, cuatro partes, etc. Parar cuando el valor absoluto de dos aproximaciones consecutivas sea menor que TOL = 10-6 . >Cuantas subdivisiones se necesitan?. Imprimir la aproximacion.
function S=simpson(f,a,b,m) % Datos de entrada % - f es el integrando, dado como una cadena de caracteres 'f' % - a y b son los extremos inferior y superior del intervalo de % integracion % - 2*m es el numero de subintervalos % Datos de salida % - S es la aproximacion obtenida con la regla compuesta de Simpson if a==b then S=0; return end h=(b-a)/(2*m); % nodos impares ximp=a+h*[1:2:2*m-1]; % valores de f en los nodos impares for i=1:length(ximp) fimp(i)=feval(f,ximp(i)); end %nodos pares xpar=a+h*[2:2:2*m-2]; % valores de f en los nodos pares for i=1:length(xpar) fpar(i)=feval(f,xpar(i)); end % valor aproximado de la integral mediante Simpson S=h*(feval(f,a)+feval(f,b)+4*sum(fimp)+2*sum(fpar))/3; function y=fprob3tema5(x) y=sin(x.^2); format long i=1; errf=1; while errf>=10^(-6) i=i+1; AprT(i)=simpson('fprob3tema5',0,1,i); err(i)=errf; if i>2 errf=abs(AprT(i)-AprT(i-1)); err(i)=errf; end end

'aproximacion al error absoluto' errf 'aproximacion anterior a la integral' AprT(i-1) 'aproximacion final a la integral' AprT(i) 'alcanzada tomando un numero de subintervalos igual a' 2*i

Corrida del programa >> compuesto ans = aproximacion al error absoluto errf = 8.671162116669073e-07 ans = aproximacion anterior a la integral ans = 0.310266208802792 ans = aproximacion final a la integral ans = 0.310267075919003 ans = alcanzada tomando un numero de subintervalos igual a ans = 16

PROBLEMA 5
calcular dx
function y=fprob3tema5(x) y=x/(1+x.^0.5); format long i=1; errf=1; while errf>=10^(-6) i=i+1; AprT(i)=simpson('fprob3tema5',0,1,i); err(i)=errf; if i>2 errf=abs(AprT(i)-AprT(i-1)); err(i)=errf; end end 'aproximacion al error absoluto' errf 'aproximacion anterior a la integral' AprT(i-1) 'aproximacion final a la integral' AprT(i)

'alcanzada tomando un numero de subintervalos igual a' 2*i

Corrida del programa >> compuesto ans = aproximacion al error absoluto errf = 8.517024064902401e-07 ans = aproximacion anterior a la integral ans = 0.280367542273215 ans = aproximacion final a la integral ans = 0.280368393975621 ans = alcanzada tomando un numero de subintervalos igual a ans = 26

SIMPSON 3/8 PROBLEMA 1


Obtenga

mediante un script en matlab

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)

corrida en matlab: FORMULA DE LOS TRES OCTAVOS DE SIMPSON ingrese la funcion f(x)=exp(x) ingrese el limite superior de la funcion 1

ingrese el limite inferior de la integral 0 El valor aproximado de la integral es: 1.718540153360168

PROBLEMA 2
Obtenga

mediante un script en matlab

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)

corrida en matlab: FORMULA DE LOS TRES OCTAVOS DE SIMPSON ingrese la funcion f(x)=(x^3)/(1+(x^0.5)) ingrese el limite superior de la funcion 2 ingrese el limite inferior de la integral 1 El valor aproximado de la integral es: 1.647046374967260

PROBLEMA 3
Obtenga

mediante un script en matlab

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)

FORMULA DE LOS TRES OCTAVOS DE SIMPSON ingrese la funcion f(x)=(exp(x)*sin(x))/(1+(x^2)) ingrese el limite superior de la funcion 3 ingrese el limite inferior de la integral 0 El valor aproximado de la integral es: 2.904671198427718

PROBLEMA 4
Obtenga

mediante un script en matlab reoslver por Simpson 3/8

compuesto
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)

corrida del programa: FORMULA DE SIMPSON COMPUESTO ingrese la funcion f(x)=2^x ingrese el limite superior de la integral 5 ingrese el limite inferior de la integral 0

ingrese el numero de intervalos 5 el valor aproximado de la integral es: 44.727080289043961

PROBLEMA 5
Obtenga

mediante un script en matlab reoslver por Simpson

3/8 compuesto
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)

Corrida del programa: FORMULA DE SIMPSON COMPUESTO ingrese la funcion f(x)=1+x/(1+(x^3)) ingrese el limite superior de la integral 5 ingrese el limite inferior de la integral 0 ingrese el numero de intervalos10 el valor aproximado de la integral es: 6.009570271093279

CUADRATURA DE GAUSS PROBLEMA 1


Mtodo de Cuadratura de Gauss Calcular

function y=gaussquadratura(f,a,b,TOL) h2=(b-a)/2; fm=feval(f,a+h2-sqrt(1/3)*h2); fp=feval(f,a+h2+sqrt(1/3)*h2); sab=h2*(fm+fp); [approx eest nfunc]=as(sab,f,a,b,TOL); if (nargout==0) s=sprintf('\t\t approximate value of integral:\t%.12f \n',approx); s=sprintf('%s\t\t error estimate:\t\t\t\t\t %.4e\n',s,eest ); s=sprintf('%s\t\t number of function evaluations:\t%d\n',s,nfunc+2); disp(s) else y=approx; end; return function [app,est,nf]=as(sab,f,a,b,TOL) h2=(b-a)/4; fml=feval(f,a+h2-sqrt(1/3)*h2); fpl=feval(f,a+h2+sqrt(1/3)*h2); fmr=feval(f,b-h2-sqrt(1/3)*h2); fpr=feval(f,b-h2+sqrt(1/3)*h2); sac=h2*(fml+fpl); scb=h2*(fmr+fpr); errest=abs(sab-sac-scb); if (errest<(10.0*TOL)) app=sac+scb; est=errest/10.0; nf=4; return; else [a1 e1 n1]=as(sac,f,a,a+2*h2,TOL/2.0); [a2 e2 n2]=as(scb,f,a+2*h2,b,TOL/2.0); app=a1+a2; est=e1+e2; nf=n1+n2+4; return; end;

>> a=2 a = 2 >> b=3 b = 3 >> TOL=0.1 TOL = 0.100000000000000 >> f=@(x)(1.44./x.^2)+0.24 f = @(x)(1.44./x.^2)+0.24 >> y=gaussquadratura(f,a,b,TOL) y = 0.479987234292760

PROBLEMA 2
Calcular
function y=gaussquadratura(f,a,b,TOL) h2=(b-a)/2; fm=feval(f,a+h2-sqrt(1/3)*h2); fp=feval(f,a+h2+sqrt(1/3)*h2); sab=h2*(fm+fp); [approx eest nfunc]=as(sab,f,a,b,TOL); if (nargout==0) s=sprintf('\t\t approximate value of integral:\t%.12f \n',approx); s=sprintf('%s\t\t error estimate:\t\t\t\t\t %.4e\n',s,eest ); s=sprintf('%s\t\t number of function evaluations:\t%d\n',s,nfunc+2); disp(s) else y=approx; end; return function [app,est,nf]=as(sab,f,a,b,TOL) h2=(b-a)/4; fml=feval(f,a+h2-sqrt(1/3)*h2); fpl=feval(f,a+h2+sqrt(1/3)*h2); fmr=feval(f,b-h2-sqrt(1/3)*h2); fpr=feval(f,b-h2+sqrt(1/3)*h2); sac=h2*(fml+fpl); scb=h2*(fmr+fpr); errest=abs(sab-sac-scb); if (errest<(10.0*TOL)) app=sac+scb; est=errest/10.0; nf=4; return; else [a1 e1 n1]=as(sac,f,a,a+2*h2,TOL/2.0); [a2 e2 n2]=as(scb,f,a+2*h2,b,TOL/2.0); app=a1+a2; est=e1+e2; nf=n1+n2+4; return; end;

>> a=2 a= 2 >> b=3 b= 3 >> TOL=0.1 TOL = 0.100000000000000 >> f=@(x)((x.^4)+x+1) f= @(x)((x.^4)+x+1)

>> y=gaussquadratura(f,a,b,TOL) y= 45.699652777777786

Vous aimerez peut-être aussi