View
358
Download
7
Category
Preview:
Citation preview
UNIVERSIDAD DE LAS FUERZASARMADAS - ESPE
Departamento de Ciencias Exactas
INTEGRACION Y DERIVACION NUMERICA
Autor:
Andres Cardenas
Ingeniero:
Jose Luis Marcillo
2013 - 2014
I. DERIVACION NUMERICA
El deber de derivacion e integracion debe ser desarrollado por medio de matlab y presentar el deber en Latex, el debersera entregado el dia del examen al comandante de cada curso.
1. Escribir una funcion MATLAB df(x) que admita como entradas un vector de puntos x y los valodes de una funcion f enlos mismos, y que calcule el valor de la derivada primera en los mismos utilizando la formula de diferencia adelantada.Para calcular el valor en el extremo superior debe usarse la formula de diferencia retrasada.
El codigo utilizado es el siguiente:
function ejercicio1
clc
clear all
fprintf(’Derivacion Numerica\n’);
n=input(’Ingrese el numero de puntos que va a ingresar: ’);
h=input(’\nIngrese el valor de h: ’);
x=1:n;
y=1:n;
d=1:n;
for i=1:n
fprintf(’\nIngrese el valor de x %d: ’,i-1);
x(i)=input(’’);
fprintf(’\nIngrese el valor de f(x %d): ’,i-1);
y(i)=input(’’);
end
y1=polyfit(x,y,n-1);
%syms m;
display(y1);
%y2=poly2sym(y1,m);
%display(y2);
fprintf(’Derivada con diferencia adelantada\n’);
for i=1:n-1
d(i)=( polyval(y1,x(i)+h)-polyval(y1 ,x(i)))/h;
fprintf(’f´(x %d)= %.4f\n’,i-1,d(i));
end
fprintf(’Derivada con diferencia retrasada\n’);
d(n)=( polyval(y1,x(i))-polyval(y1,x(i)-h))/h;
fprintf(’f´(x %d)= %.4f\n’,n-1,d(n));
El programa admite como entrada los valores de x, f(x) con lo cual interpola y obtiene los coeficientes delpolinomio interpolador, donde luego de evaluar los f(xi) nos arroja resultados de las primeras derivadas.
2. Aplicar la formula de dos puntos adelantada al calculo de la derivada primera de f(x) = sinx en x = 2,13432.Comprobar que al ir reduciendo h el error se reduce de manera aproximadamente lineal con h.
El codigo utilizado es el siguiente:
function ejercicio2
clc
clear all
fprintf(’Derivacion Numerica\n’);
fprintf(’Derivada con diferencia adelantada\n’);
syms x
f=’sin(x)’;
xo =2.13432;
h=input(’\nIngrese el valor de h: ’);
der =1:7;
disp(der);
m=xo:xo:7*xo;
for i=1:7
der(i)=(subs(f,x,xo*(i)+h)-subs(f,x,xo*(i)))/h;
end
f1=diff(sym(f));
d=subs(f1,x,m);
error=(d-der);
error=error ./d;
display(error);
display(m);
display(der);
h1=h:h:7*h;
xx=linspace(h,h*7);
p=polyfit(h1 ,error ,1)
z=polyval(p,xx);
error=abs(error);
plot(xx ,z,h1 ,error ,’ro’);
Una vez corrido el programa obtenemos los siguientes resultados, y la grafica donde se evidencia el comporta-miento del error en funcion de h:
3. Repetir el ejercicio anterior comparando la precision de la formula de diferencia adelantada con la retrasada. Aplicartambien ambas formulas al calculo de la derivada de la funcion g(x) = 1
(1+ex)en x = 1
2.
El codigo utlizado:
function ejercicio3
clc
clear all
fprintf(’Derivacion Numerica\n’);
fprintf(’Derivada con diferencia adelantada\n’);
syms x
f=’1/(1+ exp(x))’;
xo=1/2;
h=input(’\nIngrese el valor de h: ’);
der=(subs(f,x,xo+h)-subs(f,x,xo))/h;
fprintf(’Derivada con diferencia adelantada: %.4f\n’,der);
der1=(subs(f,x,xo)-subs(f,x,xo -h))/h;
fprintf(’Derivada con diferencia atrasada: %.4f\n’,der1);
f1=diff(sym(f));
d=subs(f1,x,xo);
error=abs((d-der)/d);
error1=abs((d-der1)/d);
fprintf(’Error con diferencia adelantada: %f\n’,error);
fprintf(’Error con diferencia atrasada: %f\n’,error1);
if(error == error1)
fprintf(’El error es igual’);
else
if error >error1
fprintf(’El error de la diferencia retrasada es menor que la diferencia adelantada ’);
else
fprintf(’El error de la diferencia adelantada es menor que la diferencia retrasada ’);
end
end
El programa nos arroja a la pantalla lo siguiente:
4. Supongamos que se conoce el valor de la derivada mediante la formula de diferencia adelantada para tres valores de hdiferentes. ¿Es posible estimar el valor del h optimo? ¿Es posible estimar el error que se comete en el calculo en cadauno de los casos?. Aplicarlo al calculo de la derivada de la funcion f(x) = senx en x=0.6 usando h=0.1, h=0.01 yh=0.0000000001.
Solucion
El mejor valor que se le puede dar a b es aquel que este mas proximo a cero. En otras palabras h→ 0.
Es posible unicamente cuando se conoce el valor real de la derivada de la funcion original.
Los resultados que nos arroja Matlab son:
Calculo con h = 0,1
Calculo con h = 0,01
Calculo con h = 0,0000000001
5. Calcular la derivada de la funcion f(x) = tan(x) en x=3.14 usando h=0.1 y h=0.01. Comparar el resultado con elvalor exacto. ¿Es buena la aproximacion? ¿Por que?.
El valor de la derivada utilizando derivaicion numerica es muy bueno, porque el error estimado osila entre 0 y0.33 por ciento por lo tanto es una muy buena aproximacion.
El calculo con h=0.01 nos arroja un error del 0 por lo tanto es mucho mas preciso que si utilizamos h=0.1
El codigo utilizado es el siguiente:
function DerivacionAdelante
clc
clear all
syms x
h=0;
y=input(’Ingrese la funcion que desea derivar: ’);
xi=input(’Ingrese el punto en el cual desea calcular la derivada: ’);
while(h<=0)
h=input(’Ingrese h: ’);
if(h<=0)
display(’h debe ser mayor a cero’)
end
end
vreal=subs(diff(y),x, xi);
vaproximado =(subs(y,x,xi+h)-subs(y,x,xi))/h;
vreal2=subs(diff(diff(y)),x, xi);
vaproximado2 =(subs(y,x,xi+2*h) -2*subs(y,x,xi+h)+subs(y,x,xi))/(h^2);
error=abs((vreal -vaproximado)/vreal)*100;
error2=abs((vreal2 -vaproximado2)/vreal2)*100;
fprintf(’\nValor real 1ra derivada: %.4f\n’,vreal)
fprintf(’Valor aproximado 1ra derivada: %.4f\n’,vaproximado)
fprintf(’Error: %.2f %\n’,error)
fprintf(’\nValor real 2da derivada: %.4f\n’,vreal2)
fprintf(’Valor aproximado 2da derivada: %.4f\n’,vaproximado2)
fprintf(’Error: %.2f %\n’,error2)
La aplicacion en Matlab nos inidica lo siguiente:
6. Calcular cotas para el error de truncacion que se comete al aproximar las derivadas de las funciones f(x) = 11+senx
y g(x) = log(1 + 2x) . Calcular las cotas teniendo en cuenta el error de redondeo y comprobar que los errores realesestan por debajo de lo permitido por la cota. Las formulas mas utilizadas son las que emplean tres y cinco puntos deevaluacion. Las siguientes formulas se obtienen de las formulas de 3 puntos:
Si tomamos nodos equidistantes para aproximar f0(x) con x1 = x, x2 = x + h y x3 = x + 2h, con h > 0 deacuerdo con la formula anterior tenemos:
f ′(x) =−3f(x) + 4f(x+ h)− f(x+ 2h)
2h+h2
3f (3)(α)
que se conoce como formula progresiva de tres puntos.
Si los nodos son x1 = x− 2h, x2 = x− h y x3 = x, con h > 0 de acuerdo con la formula anterior tenemos:
f ′(x) =f(x− 2h)− 4f(x− h) + 3f(x)
2h+h2
3f (3)(α)
se conoce como formula regresiva de tres puntos.
Si tomamos x1 = x − h, x2 = x y x3 = x + h para aproximar f0(x), nos queda lo que se conoce como formulacentrada de tres puntos.
f ′(x) =f(x+ h)− f(x− h)
2h− h2
6f (3)(α)
Observemos que la cota del error en este ultimo caso es aproximadamente la mitad que en los otros dos casos,ademas esta formula necesita menos evaluaciones de f que la anterior.El error de truncamiento, si f (3)(α) no cambia muy rapidamente, tiende a cero a la misma velocidad que h2.Ahora bien de acuerdo al ejemplo anterior no es aconsejable elegir h demasiado pequeno, por lo que sera utildisponer de formulas que aproximen f ′(x) y que tengan un error de truncamiento de orden mayor al dado.
f(x) = 11+sin(x)
g(x) = ln(1 + 2x)
7. Construir una tabla de derivadas primeras de las funcion g(x) definida por la siguiente tabla en los puntos xj con lamayor precision posible mediante formulas de tres puntos.
x g(x)1.0 1.0000001.2 0.9975021.4 0.9900251.8 0.9603982.0 0.940678
Solucion y Calculos
Para la solucion de este ejercicio utilizaremos el programa que se realizo en el ejercicio numero 1, donde ingresamosel numero de puntos que deseamos y sus respectivas imagenes, el programa determina el polinomio interpolador,evalua las derivadas en esos puntos y nos devuelve los valores.
Codigo a utilizarse:
function ejercicio1
clc
clear all
fprintf(’Derivacion Numerica\n’);
n=input(’Ingrese el numero de puntos que va a ingresar: ’);
h=input(’\nIngrese el valor de h: ’);
x=1:n;
y=1:n;
d=1:n;
for i=1:n
fprintf(’\nIngrese el valor de x %d: ’,i-1);
x(i)=input(’’);
fprintf(’\nIngrese el valor de f(x %d): ’,i-1);
y(i)=input(’’);
end
y1=polyfit(x,y,n-1);
%syms m;
display(y1);
%y2=poly2sym(y1,m);
%display(y2);
fprintf(’Derivada con diferencia adelantada\n’);
for i=1:n-1
d(i)=( polyval(y1,x(i)+h)-polyval(y1 ,x(i)))/h;
fprintf(’f´(x %d)= %.4f\n’,i-1,d(i));
end
fprintf(’Derivada con diferencia retrasada\n’);
d(n)=( polyval(y1,x(i))-polyval(y1,x(i)-h))/h;
fprintf(’f´(x %d)= %.4f\n’,n-1,d(n));
Con estos valores podremos completar el cuadro de las primeras derivadas.
x g(x) g’(x)1.0 1.000000 -0.00671.2 0.997502 -0.03081.4 0.990025 -0.05691.8 0.960398 -0.9662.0 0.940678 -0.0897
8. Usando la formula de diferencia centrada calcular la derivada primera de la funcion f(x) = arctanx en el punto x =√
2(el valor correcto es 1
3. Utilizar diferentes valores de h y estudiar los efecctos de los errores de redondeo y de truncacion.
Codigo a utilizarse
function DerivacionCentrada
clc
clear all
syms x
h=0;
y=input(’Ingrese la funcion que desea derivar: ’);
xo=input(’Ingrese el punto en el cual desea calcular la derivada: ’);
while(h<=0)
h=input(’Ingrese h: ’);
if(h<=0)
display(’h debe ser mayor a cero’)
end
end
vreal=subs(diff(y),x,xo);
vaproximado1 =(subs(y,x,xo+h)-subs(y,x,xo -h))/(2*h);
vaproximado2 =(-subs(y,x,xo+2*h)+8* subs(y,x,xo+h) -8*subs(y,x,xo-h)+subs(y,x,xo -2*h))/(12*h);
error1=abs((vreal -vaproximado1)/vreal)*100;
error2=abs((vreal -vaproximado2)/vreal)*100;
fprintf(’Valor real: %.8f\n’,vreal)
fprintf(’Valor aproximado de orden O(h^2): %.8f\n’,vaproximado1)
fprintf(’Valor aproximado de orden O(h^4): %.8f\n’,vaproximado2)
fprintf(’Error1: %.8f\n’,error1)
fprintf(’Error2: %.8f\n’,error2)
La aplicacion en Matlab nos muestra lo siguientePara h=0.1
Para h=0.01
Podemos observar en este ejemplo que el error disminuye a medida que h disminuye.
9. Deducir una formula de cinco puntos que utilice los valores de la funcion en lo puntos x, x+h, x+2h, x+3h y x-h paracalcular f ′(x).
Para la deduccion de la funcion con esos valores se empesara con la expacion de la serie de Taylor
f(x) = fn∗hn
n!
f(x+ 3h) = f(x) + f ′(x)h+ f ′′∗h2
2!+ f ′′′∗h3
3!
f(x+ 3h) = f(x) + f ′(x)h+ h2
2!∗ f(x+h)−2f(x)+f(x−h)
h2 + h3
3!∗ f(x+3h)−3f(x+2h)+f(x+h)−f(x)
h3
f ′(x) = −3f(x−h)+f(x)−6f(x+h)+3f(x+2h)+5f(x+3h)6h
II. INTEGRACION NUMERICA
1. Construya programas en MATLAB para las reglas compuestas: rectangulo, trapecio y Simpson”.
Para el desarollo de los siguientes ejercicios a desarollado, se emplearan los programas proporcionados por cadauno de los equipos.
PROGRAMA PARA TRAPECIO SIMPLE
clear all;
clc;
syms x
res=’s’;
while res~=’n’
fprintf(’Escuela Politecnica del Ejercito\n’);
fprintf(’ Metodos numericos\n’);
fprintf(’\n\t~~~~~~~~.:" INTEGRACION NUMERICA ":.~~~~~~~~ ’)
fprintf(’\n\t~~~~.:" REGLA DEL TRAPECIO ":.~~~~\n’)
fprintf(’Calculo de la integral por el Metodo del Trapecio\n\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;
fa= (f+eval(funcion))*(h/2);
fprintf(’El valor aproximado es: %10.15f\n\n’,fa)
fun=inline (funcion);
absc=a:0.001:b;
ezplot(fun ,absc);
grid on
ylabel(’F(x)’)
xlabel(’x’)
title(’Grafica de la funcion ’)
fprintf(’\n\nDesea ingresar otra funcion? (s o n)\n’)
res=input(’’,’s’);
while res~=’s’ && res~=’n’&&res~=’S’ && res~=’N’
fprintf(’s o n! \n’)
res=input(’’,’s’);
end
aprox =0;a=0;b=0;n=0;
end
PROGRAMA PARA TRAPECIO COMPUESTO
function trapecio_compuesto ()
syms x
res=’s’;
while res~=’n’
clc
fprintf(’Escuela Politecnica del Ejercito\n’);
fprintf(’ Metodos numericos\n’);
fprintf(’Integrantes :\n’);
fprintf(’\tMarco Paredes\n’);
fprintf(’\tJuan Paredes\n’);
fprintf(’\tJorge Martınez\n’);
fprintf(’\tLuis Roman\n\n’);
fprintf(’\n\t~~~~~~~~.:" INTEGRACION NUMERICA ":.~~~~~~~~ ’)
fprintf(’\n\t~~~~.:" REGLA DEL TRAPECIO COMPUESTO ":.~~~~\n’)
f=input(’\nIngrese la funcion: ’,’s’);
fprintf(’\tDigite los limites de integracion :\n(intervalo en que se evaluara el
valor numerico de la integral de la funcion)\n’)
a=input(’ a= ’);
b=input(’ b= ’);
fprintf(’\tDigite el numero de subintervalos :\n(partes en los que se dividira la
funcion dentro del intervalo)\n’)
n=input(’ n= ’);
fprintf(’\nFuncion: ’);
disp(f)
fprintf(’De a= %.2f’,a);
fprintf(’\t->\tHacia b= %.2f’,b);
fun=inline(f);
absc=a:0.001:b;
ezplot(fun ,absc);
grid on
ylabel(’F(x)’)
xlabel(’x’)
title(’Grafica de la funcion ’)
h=(b-a)/n;
aprox=fun(a)+fun(b);
for i=1:n-1
x=a+i*h;
aprox=aprox +2*fun(x);
end
aprox=(h/2)*aprox;
fprintf(’\n\nLa integral de la funcion en el intervalo [ %.2f, %.2f]( lımites), con n
= %.f\n’,a,b,n)
fprintf(’\nEs aproximadamente : %f’,aprox);
fprintf(’\n\nDesea ingresar otra funcion? (s o n)\n’)
res=input(’’,’s’);
while res~=’s’ && res~=’n’&&res~=’S’ && res~=’N’
fprintf(’s o n! \n’)
res=input(’’,’s’);
end
aprox =0;a=0;b=0;n=0;
end
PROGRAMA PARA SIMPSON 1/3 SIMPLE
function simpsonuntercio
clc
clear all
fprintf(’********************************* INTEGRACION NUMERICA SIMPSON 1/3
*****************************\n\n’)
syms x
y1=input(’ingrese la funcion: \n’)
a=input(’ingrese el limite inferior: \n’)
b=input(’ingrese el limite superior: \n’)
c= (b+a)*0.5
h=(b-a)*0.5
fxa=subs(y1 ,x,a)
fxb=subs(y1 ,x,b)
fxc=subs(y1 ,x,c)
int=(h/3)*(fxa+4* fxc+fxb)
integral=quadl(inline(char(y1)),a,b)
error=(integral -int)/integral;
disp(error)
fprintf(’la integral es: %.4f’,int)
hold on
grid on
absc=a:0.0001:b;
plot(absc ,subs(y1 ,x,absc),’r’);
xlabel(’X’)
ylabel(’Y’)
PROGRAMA PARA SIMPSON 1/3 COMPUESTO
function simpsonunterciocompuesto
clc
clear all
fprintf(’*************************** INTEGRACION NUMERICA SIMPSON 1/3 COMPUESTO
*****************************\n\n’)
syms x
y1=input(’Ingrese la funcion: \n’)
a=input(’Ingrese el limite inferior: \n’)
b=input(’Ingrese el limite superior: \n’)
n=3
while(mod(n,2) ~=0)
n=input(’Ingrese el numero de subintervalos (deben ser multiplos de 2): \n’)
end
v=1:n+1;
div=(b-a)/n
fv=1:n+1
for k=1:n+1
v(k)=a+div*(k-1)
fv(k)=subs(y1,x,v(k));
end
disp(v)
disp(fv)
h=(b-a)*0.5
fxa=subs(y1 ,x,a)
fxb=subs(y1 ,x,b)
acu1=0
for i=3:2:n
disp(i)
acu1=acu1+fv(i)
end
acu2=0
for j=2:2:n
disp(j)
acu2=acu2+fv(j)
end
int=(b-a)*(( fxa+2* acu1 +4* acu2+fxb)/(3*n))
y2=(x)y1;fprintf(’la integral es: hold ongrid
onabsc=a:0.0001:b;plot(absc,subs(y1,x,absc),’r’);xlabel(’X’)ylabel(’Y’)
PROGRAMA PARA SIMPSON 3/8 SIMPLE
function simpsontresoctavos
clc
clear all
fprintf(’*************************** INTEGRACION NUMERICA SIMPSON 3/8
*****************************\n\n’)
syms x
y1=input(’Ingrese la funcion: \n’);
a=input(’Ingrese el limite inferior: \n’);
b=input(’Ingrese el limite superior: \n’);
n=3;
v=1:n+1;
h=(b-a)/n;
fv=1:n+1;
for k=1:n+1
v(k)=a+h*(k-1);
fv(k)=subs(y1,x,v(k));
end
disp(v);
disp(fv);
fxa=subs(y1 ,x,a);
fxb=subs(y1 ,x,b);
int=(b-a)*(( fxa+3*fv(2)+3*fv(3)+fxb)/(8));
%q=quad(y1 ,0,1);
fprintf(’la integral es: %.4f’,int);
grid on
hold on
absc=a:0.001:b;
for i=a:0.001:b
plot(i,subs(y1,x,i),’b’);
end
plot(absc ,subs(y1 ,x,absc),’r’);
area(subs(y1 ,x,absc));
xlabel(’X’)
ylabel(’Y’)
PROGRAMA PARA SIMPSON 3/8 COMPUESTO
function simpsontresoctavos
clc
clear all
fprintf(’*************************** INTEGRACION NUMERICA SIMPSON 1/3 COMPUESTO
*****************************\n\n’)
syms x
y1=input(’Ingrese la funcion: \n’)
a=input(’Ingrese el limite inferior: \n’)
b=input(’Ingrese el limite superior: \n’)
n=4
while(mod(n,3) ~=0)
n=input(’Ingrese el numero de subintervalos (debe ser multiplo de 3): ’)
end
v=1:n+1;
div=(b-a)/n
fv=1:n+1
for k=1:n+1
v(k)=a+div*(k-1)
fv(k)=subs(y1,x,v(k))
end
disp(v)
disp(fv)
h=(b-a)/n
fxa=subs(y1 ,x,a)
fxb=subs(y1 ,x,b)
acu1=0
for i=2:3:n
disp(i)
acu1=acu1+fv(i)
end
acu2=0
for j=3:3:n
disp(j)
acu2=acu2+fv(j)
end
acu3=0
for i=4:3:n-1
disp(i)
acu3=acu3+fv(i)
end
int =(3/8)*h*(fxa+3* acu1 +3* acu2 +2* acu3+fxb)
%q=quad(y1 ,0,1);
fprintf(’la integral es: %.4f’,int)
hold on
grid on
absc=a -1:0.0001:b+2;
plot(absc ,subs(y1 ,x,absc),’r’);
xlabel(’X’)
ylabel(’Y’)
2. Aproxime cada una de las siguientes integrales, utilizando los programas desarrollados.
∫ 1
−1(1 + x2)−1dx Solucion
∫ 2
02xcon(x)dx Solucion
∫ π0sin(2x)e−xdx Solucion
3. Considere las siguientes funciones:
x3 para0 ≤ x ≤ 1
sin(x) para0 ≤ x ≤ π4
e−x para0 ≤ x ≤ 1
Teniendo presente que:
Longitud de una curva. La longitud de una curva y=f(x) definida sobre un intervalo [a,b] es:
longitud =∫ ba
√1 + (f ′(x))2dx
Area de una superficie de revolucion. El area de la superficie del solido de revolucion se obtiene al girar alrededordel eje OX la region limitada por la curva y=f(x) y el intevalo [a,b], viene dada por:
area = 2π∫ baf(x)
√1 + (f ′(x))2dx
Calcula la longitud de curva y la superficie de revolucion de las curvas dadas, utilizando las reglas compuestas.Realize, ademas, un analisis del error cometido por cada uno de los metodos. Mostrar las graficas.
f(x) = x3 para 0 ≤ x ≤ 1
f ′(x) = 3x2
longitud =
∫ 1
0
g(x)dx
=
∫ 1
0
√1 + 9x4dx
g′(0,5) = 1,8
g′′(0,5) = 8,208
g(4)(0,5) = −119,88
area =
∫ 1
0
h(x)dx
=
∫ 1
0
2πx3√
1 + 9x4
h′(0,5) = 1,1625
h′′(0,5) = 7,476
h(4)(0,5) = 199,1831
f(x) = sin(x) para 0 ≤ x ≤ π/4
f ′(x) = cos(x)
longitud =
∫ π/4
0
g(x)dx
=
∫ π/4
0
√1 + cos2(x)dx
g′(π/8) = −0,2596
g′′(π/8) = −0,5689
g(4)(π/8) = 1,9084
area =
∫ π/4
0
h(x)dx
=
∫ π/4
0
2πsen(x)√
1 + cos2(x)dx
h′(π/8) = 7,2786
h′′(π/8) = −7,6564
h(4)(π/8) = 38,6602
f(x) = e−x para 0 ≤ x ≤ 1
f ′(x) = −e−x
longitud =
∫ 1
0
g(x)dx
=
∫ 1
0
√1 + e−2xdx
g′(0,5) = −0,3145
g′′(0,5) = 0,5444
g(4)(0,5) = 0,8749
area =
∫ 1
0
h(x)dx
=
∫ 1
0
2πe−x√
1 + e−2xdx
h′(0,5) = −5,6558
h′′(0,5) = 8,9296
h(4)(0,5) = 37,5192
Al ingresar las funciones, sus lımites, y luego ponerlas como argumentos de los programas modificados:
f1l=@(x)(sqrt(1+9*x^4));f1a=@(x)(2*pi*x^3*sqrt(1+9*x^4));a1=0;b1=1;[l1r e1r]=int_rec2(f1l,a1,b1,1E5,1.8)[l1t e1t]=int_trap2(f1l,a1,b1,1E5,8.208)[l1s e1s]=int_simp2(f1l,a1,b1,1E5,-119.88)[a1r e1r]=int_rec2(f1a,a1,b1,1E5,1.1625)[a1t e1t]=int_trap2(f1a,a1,b1,1E5,7.476)[a1s e1s]=int_simp2(f1a,a1,b1,1E5,199.18)f2l=@(x)(sqrt(1+(cos(x))^2));f2a=@(x)(2*pi*sin(x)*sqrt((1+(cos(x))^2)));a2=0;b2=pi/4;[l2r e2r]=int_rec2(f2l,a2,b2,1E5,-0.2596)[l2t e2t]=int_trap2(f2l,a2,b2,1E5,-0.5689)[l2s e2s]=int_simp2(f2l,a2,b2,1E5,1.9084)[a2r e2r]=int_rec2(f2a,a2,b2,1E5,7.2786)[a2t e2t]=int_trap2(f2a,a2,b2,1E5,-7.6564)[a2s e2s]=int_simp2(f2a,a2,b2,1E5,38.6602)f3l=@(x)(sqrt(1+(exp(-2*x))));f3a=@(x)(2*pi*exp(-x)*sqrt(1+(exp(-2*x))));a3=0;b3=1;[l3r e3r]=int_rec2(f3l,a3,b3,1E5,-0.3145)[l3t e3t]=int_trap2(f3l,a3,b3,1E5,0.5444)[l3s e3s]=int_simp2(f3l,a3,b3,1E5,0.8749)[a3r e3r]=int_rec2(f3a,a3,b3,1E5,-5.6558)[a3t e3t]=int_trap2(f3a,a3,b3,1E5,8.9296)[a3s e3s]=int_simp2(f3a,a3,b3,1E5,37.5192)
Se obtiene los siguientes resultados para la longitud:
f1(x) f2(x) f3(x)rectangulo cuadratura 1.5478 1.0581 1.1927
error 9x10−6 8x10−7 1.57x10−6
trapecio cuadratura 1.5478 1.0581 1.1927error 6.84x10−11 2.29x10−12 4.53 x10−12
simpson cuadratura 1.5478 1.0581 1.1927error 4.16x10−22 1.98x10−24 3.03x10−24
y los siguientes resultados para el area:
f1(x) f2(x) f3(x)rectangulo cuadratura 3.5632 2.4224 4.8492
error 5.81x10−6 2.24x10−5 2.82x10−5
trapecio cuadratura 3.5629 2.4224 4.8492error 6.23x10−11 3.09x10−11 7.44x10−11
simpson cuadratura 3.5630 2.4224 4.8492error 6.916x10−22 4.01x10−23 1.3x10−22
Graficas
erl =[9E-6 8E-7 1.57E-6];
etl =[6.84E-11 2.29E-12 4.53E-12];
esl =[4.16E-22 1.98E-24 3.03E-24];
era =[5.81E-6 2.24E-5 2.82E-5];
eta =[6.23E-11 3.09E-11 7.44E-11];
esa =[6.916E-22 4.01E-23 1.3E-22];
x=1:3;
plot(x,erl);hold on;
plot(x,etl ,’c’);
plot(x,esl ,’y’);
plot(x,era);
plot(x,eta ,’c’);
plot(x,esa ,’g’);
ylabel(’Error ’)
grid on
Erect =(b− a)h
2f ′(c) h
b− aM
Etrap =(b− a)h2
12f ′′(c) h
b− aM
Esimp =(b− a)h4
180f (4)(c) h
b− a2M
Regla del rectangulo
disp(’Rectangulo compuesta ’)
syms x;
f=input(’Ingrese la funcion: ’);
a=input(’Ingrese a: ’);
b=input(’Ingrese b: ’);
t=input(’Ingrese t: ’);
[ int ] = int_rec( f,a,b,t )
h=(b-a)/t;
x=linspace(a,b,t);
int =0;
for i=1:t
int=int+h*f(x(i));
end
Regla del trapecio
disp(’Trapecio compuesta ’)
syms x;
f=input(’Ingrese la funcion: ’);
a=input(’Ingrese a: ’);
b=input(’Ingrese b: ’);
t=input(’Ingrese t: ’);
[ int ] = int_trap( f,a,b,t )
h=(b-a)/t;
x=linspace(a,b,t+1);
int= (h/2)*(f(a) +f(b));
for i=2:t-1
int=int + h*( f( x(i) ) );
end
Regla de Simpson
disp(’Simpson compuesta ’)
syms x;
f=input(’Ingrese la funcion: ’);
a=input(’Ingrese a: ’);
b=input(’Ingrese b: ’);
t=input(’Ingrese t: ’);
[ int ] = int_simp( f,a,b,M )
h=(b-a)/(2*M);
x=linspace(a,b, 2*M + 1);
int= (h/3)*(f(a) +f(b));
for i=2:M-1
int= int + ((2*h)/3)*(f(x(2*i)));
end
for i=2:M
int= int + ((4*h)/3)*(f(x(2*i-1)));
end
4. Determine las constantes wo, w1 y w2 de manera que:
∫ 2
0g(t)dt = wog(0) + w1g(1) + w2g(2)
Sea exacta para las funciones g(t)=1, g(t)=t, g(t)=t2
g(t) = 1g(0) = 1, g(1) = 1, g(2) = 1∫ 2
0
g(t)dt =
∫ 2
0
dt
= t
∣∣∣∣20
= 2
por lo tanto:2 = w0 + w1 + w2
g(t) = tg(0) = 0, g(1) = 1, g(2) = 2∫ 2
0
g(t)dt =
∫ 2
0
tdt
=t2
2
∣∣∣∣20
= 2
por lo tanto:2 = w1 + 2w2
g(t) = t2
g(0) = 0, g(1) = 1, g(2) = 4∫ 2
0
g(t)dt =
∫ 2
0
t2dt
=t3
3
∣∣∣∣20
=8
3
por lo tanto:8
3= w1 + 4w2
Armando el sistema con las 3 ecuaciones f(w) encontradas, se tiene:{w0 + w1 + w2 = 20 + w1 + 2w2 = 20 + w1 + 4w2 = 8
3
Resolviendo el sistema se obtienen los valores de las costantes:
w0 =1
3w1 =
4
3w2 =
1
3
5. Use la relacion f(x0 + ht)=g(t) y el cambio de variable x = xo + ht con dx = hdt para transladar la regla de Simpsondesde [0,2] hasta el intervalo [x0, x2].
Si se sabe que el polinomio interpolador de Lagrange para M = 2, que es el corespondiente a la regla de Simpson es:
P2(x) = f0(x− x1)(x− x2)
(x0 − x1)(x0 − x2)+ f1
(x− x0)(x− x2)
(x1 − x0)(x1 − x2)+ f2
(x− x0)(x− x1)
(x2 − x0)(x2 − x1)
Puesto que f0, f1, y f2 son constantes a la hora de integrar, las relaciones dadas en la parte de arriba quedan, en estecaso:
∫ x2
x0
f(x)dx ≈ f0
∫ x2
x0
(x− x1)(x− x2)
(x0 − x1)(x0 − x2)dx+ f1
∫ x2
x0
(x− x0)(x− x2)
(x1 − x0)(x1 − x2)
+ f2
∫ x2
x0
(x− x0)(x− x1)
(x2 − x0)(x2 − x1)
∫ x2
x0
f(x)dx ≈ f0
∫ x2
x0
(x− x1)(x− x2)
(x0 − x1)(x0 − x2)dx+ f1
∫ x2
x0
(x− x0)(x− x2)
(x1 − x0)(x1 − x2)
+ f2
∫ x2
x0
(x− x0)(x− x1)
(x2 − x0)(x2 − x1)∫ x2
x0
f(x)dx ≈ f0
∫ 2
0
h(t− 1)h(t− 2)
(0− h)(0− 2h)dx+ f1
∫ 2
0
h(t− 0)h(t− 2)
(h− 0)(h− 2h)dx
+ f2
∫ 2
0
h(t− 0)h(t− 1)
(2h− 0)(2h− h)
= f0
∫ 2
0
h(t− 1)h(t− 2)
(−h)(−2h)dx+ f1
∫ 2
0
h(t)h(t− 2)
(h)(−h)dx
+ f2
∫ 2
0
h(t)h(t− 1)
(2h)(h)
=f02
∫ 2
0
(t2 − 3t+ 2)hdt− f1∫ 2
0
(t2 − 2t)hdt+f22
∫ 2
0
(t2 − t)hdt
=hf02
∫ 2
0
(t2 − 3t+ 2)dt− hf1∫ 2
0
(t2 − 2t)dt+hf22
∫ 2
0
(t2 − t)dt
=hf02
(t3
3− 3t2
2+ 2t) |20 −hf1(
t3
3− t2) |20 +
hf22
(t3
3− t2
2) |20
=hf02
(8
3− 12
2+ 4)− hf1(
8
3− 4) +
hf22
(8
3− 4
2)
=h
3(f0 + 4f1 + f2)
∫ x2
x0
f(x)dx ≈ h
3(f0 + 4f1 + f2)
6. Determine en cada uno de los siguientes casos, el numero m y el tamano de los subintervalos h de manera que la regladel trapecio y la de Simpson (conciderar cada regla por separado) con m subintervalos nos permita obtener la integraldada con una presicion de 5x10−9.∫ π\6
−π\6 cos(x)dx∫ 3
21
5−xdx∫ 2
0xe−xdx
∫ π/6−π/6 cos(x)dx
Para la regla del trapecio
f(x) = cos(x)
f ′′(x) = −cos(x)
c = {max(|f ′′(x)|)/x ∈ [−π/6, π6]}= 0
|f ′′(c)| ≤ |f ′′(0)| = 1
reemplazando |f ′′(c)| en la formula del error:
ETrap =(b− a)f ′′(c)
12h2
=(π/6 + π/6)1
12h2
=π
36h2
la precision que nos pide el enunciado es de 5x10−9, entonces el error E deber ser menor o igual que dicha precision, ademaspara este caso h = 5/M , asa se tiene:
ETrap ≤ 5x10−9
π
36h2 ≤ 5x10−9
25π
36M2≤ 5x10−9
25π
36(5)x10−9 ≤ M2
20888, 56 ≤ M
pero como M debe, necesariamente se un numero entero, se aproxima al inmediato entero superior:
M = 20889
luego reemplazar el valor de M en h = 5/M :
h =5
M
=5
20889= 0,00023936
Para la regla de Simpson
f(x) = cos(x)
f (4)(x) = cos(x)
c = {max(|f (4)(x)|)/x ∈ [−π/6, π6]}= 0
|f (4)(c)| ≤ |f (4)(0)| = 1
reemplazando |f (4)(c)| en la formula del error:
ESimp =(b− a)f (4)(c)
180h4
=(π/6 + π/6)1
180h4
=π
540h4
la precision que nos pide el enunciado es de 5x10−9, entonces el error E deber ser menor o igual que dicha precision, ademaspara este caso h = 5/2M , asa se tiene:
ESimp ≤ 5x10−9
π
540h4 ≤ 5x10−9
625π
540(16)M4≤ 5x10−9
625π
540(16)(5)x10−9 ≤ M4
82, 108 ≤ M
pero como M debe, necesariamente se un numero entero, se aproxima al inmediato entero superior:
M = 83
luego reemplazar el valor de M en h = 5/2M :
h =5
2M
=5
2(83)
= 0,03012048193∫ 3
21
5−xdx
Para la regla del trapecio
f(x) =1
5− x
f ′′(x) =−2
(x− 5)3
c = {max(|f ′′(x)|)/x ∈ [2, 3]}= 3
|f ′′(c)| ≤ |f ′′(3)| = 0,25
reemplazando |f ′′(c)| en la formula del error:
ETrap =(b− a)f ′′(c)
12h2
=(3− 2)0,25
12h2
=1
48h2
la precision que nos pide el enunciado es de 5x10−9, entonces el error E deber ser menor o igual que dicha precision, ademaspara este caso h = 5/M , asa se tiene:
ETrap ≤ 5x10−9
1
48h2 ≤ 5x10−9
25
48M2≤ 5x10−9
25
48(5)x10−9 ≤ M2
10206, 20 ≤ M
pero como M debe, necesariamente se un numero entero, se aproxima al inmediato entero superior:
M = 10207
luego reemplazar el valor de M en h = 5/M :
h =5
M
=5
10207= 0,000489859
Para la regla de Simpson
f(x) =1
5− x
f (4)(x) =−24
(x− 5)5
c = {max(|f (4)(x)|)/x ∈ [2, 3]}= 3
|f (4)(c)| ≤ |f (4)(3)| = 0,75
reemplazando |f (4)(c)| en la formula del error:
ESimp =(b− a)f (4)(c)
180h4
=(3− 2)0,75
180h4
=1
240h4
la precision que nos pide el enunciado es de 5x10−9, entonces el error E deber ser menor o igual que dicha precision, ademaspara este caso h = 5/2M , asa se tiene:
ESimp ≤ 5x10−9
1
240h4 ≤ 5x10−9
625
240(16)M4≤ 5x10−9
625
240(16)(5)x10−9 ≤ M2
75, 53 ≤ M
pero como M debe, necesariamente se un numero entero, se aproxima al inmediato entero superior:
M = 76
luego reemplazar el valor de M en h = 5/M :
h =5
2M
=5
2(76)
= 0,03289473684∫ 2
0xe−xdx
Para la regla del trapecio
f(x) = xe−x
f ′′(x) =x− 2
ex
c = {max(|f ′′(x)|)/x ∈ [0, 2]}= 0
|f ′′(c)| ≤ |f ′′(0)| = 2
reemplazando |f ′′(c)| en la formula del error:
ETrap =(b− a)f ′′(c)
12h2
=(2− 0)2
12h2
=1
3h2
la precision que nos pide el enunciado es de 5x10−9, entonces el error E deber ser menor o igual que dicha precision, ademaspara este caso h = 5/M , asa se tiene:
ETrap ≤ 5x10−9
1
3h2 ≤ 5x10−9
25
3M2≤ 5x10−9
25
3(5)x10−9 ≤ M2
40824, 82 ≤ M
pero como M debe, necesariamente se un numero entero, se aproxima al inmediato entero superior:
M = 40825
luego reemplazar el valor de M en h = 5/M :
h =5
M
=5
40825= 0,000122473
Para la regla de Simpson
f(x) = xe−x
f (4)(x) =x− 2
ex
c = {max(|f (4)(x)|)/x ∈ [0, 2]}= 0
|f (4)(c)| ≤ |f (4)(0)| = 4
reemplazando |f (4)(c)| en la formula del error:
ESimp =(b− a)f (4)(c)
180h4
=(2− 0)4
180h4
=2
45h4
la precision que nos pide el enunciado es de 5x10−9, entonces el error E deber ser menor o igual que dicha precision, ademaspara este caso h = 5/2M , asa se tiene:
ESimp ≤ 5x10−9
2
45h4 ≤ 5x10−9
2(625)
45(16)M4≤ 5x10−9
2(625)
45(16)(5)x10−9 ≤ M2
136, 506 ≤ M
pero como M debe, necesariamente se un numero entero, se aproxima al inmediato entero superior:
M = 137
luego reemplazar el valor de M en h = 5/M :
h =5
2M
=5
2(137)
= 0,01824817518
Recommended