Вы находитесь на странице: 1из 17

METODOS

NUMERICOS

DERIVACION
PROFESOR:
LUIS MARCILLO
ING.JOSE
NOMBRE:
Joseline Naranjo
NIVEL:
Cuarto
PERIODO:
JULIO 2013

Metodos Numericos

Aplicar la f
ormula de dos puntos adelantada al calculo de la derivada primera
de f (x) = sin(x) en x = 2,13432. Comprobar que al ir reduciendo h el error se
reduce de manera aproximadamente lineal con h.
El siguiente script en MATLAB aplica la formula de dos puntos adelantada
al c
alculo de la derivada primera de f (x) = sin(x) en x = 2,13432 como solicita
el enunciado, adem
as comprueba la reduccion lineal del error.
Para el desarrollo del script fue necesario:
1. Delimitar los valores que h tomara, y con que intervalos:
As h toma 50 valores entre 1x106 y 1x101 .
2. Conocer el valor real de la derivada:
Se sabe que la derivada del seno es el coseno, por lo tanto:
f 0 (x) = cos(x)
Como se pide evaluar en x = 2,13432, se tiene:
f 0 (2,13432) = cos(2,13432) = 0,5342
3. Graficar el error relativo en escala logartmica.
clear all
clc
f=@(x)(sin(x))
x=2.13432
h=linspace(1E-6,1E-1,50);
for i=1:50
vd(i) = ( f(x+h(i)) - f(x) ) / h(i);
end
vd

t=cos(2.13432);
for i=1:50
er(i)= abs(100*(t-vd(i))/t);
end
loglog(h,er)
As, en la u
ltima iteraci
on se tiene que la derivada de la funcion f (x) = sin(x)
en x = 2,13432 es:
f 0 (x) = 0,5342
Para comprobar que al ir reduciendo h el error se reduce de manera aproximadamente lineal con h se observa la siguiente grafica en escala logartmica que
1

contiene en el eje 0 x0 los valores que tomo h y en el eje 0 y 0 los errores relativos
correspondientes a cada h:

Se aprecia una correspondencia lineal, por lo que se comprueba lo planteado en


el enunciado

Repetir el ejercicio anterior comparando la presicion de la formula de diferencia


adelantada con la retrasada. Aplicar tambien ambas formulas al calculo de la
derivada de la funci
on g(x) = 1/(1 + ex ) en x = 1/2.
Para cumplir con el enunciado, con los mismos principios que en el literal anterior, se desarrolla el siguiente script:
f=@(x)(sin(x));
x=2.13432;
h=linspace(1E-6,1E-1,50);
for i=1:50
vd(i) = ( 3*f(x) -4*f(x-h(i)) + f(x-2*h(i)) ) / (2*h(i));
end
vd
t=cos(2.13432);
for i=1:50
er(i)= abs(100*(t-vd(i))/t);
end
hold on
loglog(h,er,r)
Se aumenta el comando hold on para mantener la grafica realizada en el
ejercicio 2 para comparar los resultados. As, se tiene que la derivada de la
funci
on f (x) = sin(x) en x = 2,13432 es:
f 0 (x) = 0,5342
Y la comparaci
on de precision de la formula de diferencia adelantada con la
retrasada puede apreciarse en el siguiente grafico en el que la grafica en color
azul representa los errores relativos correspondientes a cada h para la formula
de diferencia adelantada y la de color rojo para la retrasada.

Es evidente que la f
ormula de diferencia retrasada tiene una mejor presicion
3

para calcular la derivada de la funcion f (x) = sin(x) en x = 2,13432 ya que su


gr
afica esta en cada punto mas cerca del 0 respecto a la grafica azul.
De igual manera, con los mismos principios usados en los dos script anteriores, el presente script calculara la derivada de la funcion g(x) = 1/(1 + ex ) en
x = 1/2:
%g(x)
%RETRASADA
f2=@(x)( 1 / (1+exp(x)));
x2=0.5;
h2=linspace(1E-6,1E-1,50);
for i=1:50
vd2(i) = ( 3*f2(x2) -4*f2(x2-h2(i)) + f2(x2-2*h2(i)) ) / (2*h2(i));
end
vd2
%ADELANTADA
f3=@(x)( 1 / (1+exp(x)));
x3=0.5;
h3=linspace(1E-6,1E-1,50);
for i=1:50
vd3(i) = ( f3(x3+h3(i)) - f3(x3) ) / h3(i);
end
vd3
En ambos casos se tiene que la derivada de la funcion g(x) = 1/(1 + ex ) en
x = 1/2 es:
g 0 (x) = 0,5342

Supongamos que se conoce el valor de la derivada mediante la formula de diferencia adelantada para tres valores de h diferentes. Es posible estimar el valor
del h
optimo?. Es posible estimar el error que se comete en el calculo en cada
uno de los casos?. Aplicarlo al calculo de la derivada de la funcion f (x) = sin(x)
en x = 0,6 usando h = 0,1, h = 0,01, y h = 0,0000000001.
Como se sabe que:

f 00 (x)h
f1 f0

h
2
Ser
a posible determinar el h optimo.
As mismos se sabe que el error de truncamiento esta dado por M h/2 en donde
M es la frontera de f 00 (t) para un t cercano a x.
Asumiendo que el error de redondeo sea 2/h. Siendo  un valor impuesto por
la m
aquina o proceso.
Se tiene que el error total E, esta dado por la suma de los errores de truncamiento
y redondeo:
M h 2
E=
+
2
h
Al derivar E respecto a h e igualando a cero se encontra los puntos crticos, es
decir el valor
optimo de h, as:
f 0 (x) =

M
2
dE
=0=
2
dh
2
h
entonces:

r

h=2
M

Para aplicar la f
ormula del Error es necesario definir M y .
 = 0,5x109
M = |f 00 (x)| |cos(x)| 1

por lo tanto M = 1

Aplicando a la funci
on f (x) = sin(x) en x = 0,6 usando h = 0,1, h =
0,01, y h = 0,0000000001. mediante el siguiente script:
f=@(x)(sin(x));
x=0.6;
h(1)=0.1;
h(2)=0.01;
h(3)=0.0000000001;
%c
alculo de la derivada
for i=1:3
d(i) = ( f(x+h(i)) - f(x) ) / h(i);
%c
alculo del eror
E(i) = h(i)/2 + (2*.5E-9)/h(i);
end
5

Se tiene los vectores (d) y (E), que contienen los valores de la primera derivada
y del error respectivamente para cada h:
d=
E=

0,79575

0,05000001

0,82249

0,0050001

0,82533

10,00000000005

Para encontrar el h
optimo se reemplaza los valores de  y M en la formula:
r

h=2
M
r
0,5x109
h=2
1
se tiene el valor
optimo para h:
h = 4,4724x105

Consulta: Calcular cotas para el error de truncacion que se comete al aproximar las derivadas de las funciones f (x) = 1/(1 + sin(x)) y g(x) = ln(1 + 2x).
Calcular las cotas teniendo en cuenta el error de redondeo y comprobar que los
errores reales est
an por debajo de lo permitido por la cota.
Sea fk = yk + ek , donde ek es el error que se tiene al calcular f (xk ), incluyendo los errores de medida y el error de redondeo. Entonces podemos escirbir
la f
ormula para calcular la derivada de una funcion como:
f 0 (x) =

f (x + h) f (x h)
+ E(f, h)
2h

f1 f1
+ E(f, h)
2h
Donde el termino del error E(f, h) tendra una parte debida al error de redondeo
y otra debida al error de truncamiento:
f 0 (x) =

E(f, h) =

h2
e1 e1
f 000 (c)
2h
3!

Al suponer que cada error ek es de tamano , que los errores se acumulan


independientemente de los signos y que |f 000 (x)| M , entonces obtenemos la
siguiente cota del error:
|E(f, h)|

2
M h2
+
2h
3!

|E(f, h)|


M h2
+
h
6

Cota del error para: f (x) = 1/(1 + sin(x))


Para emplear la f
ormula de |E(f, h)| que calcula la cota, se define el valor
de:
 = 0,5x109
y suponiendo que la derivada se va a calcular en el punto x = 0,58 el valor
de M est
a dado por:


6cos3 (x) + 5cos(x)sin2 (x) + 4cos(x)sin(x) cos(x)
000

1=M
|f (x)|

(sin(x) + 1)4
As se tiene que la cota para la presente funcion en funcion de h es:
|E(h)|

(0,5x109 ) h2
+
h
6

Para definir un valor de la cota, es necesario definir una h, as h = 0,001,


entonces:
(0,5x109 ) (0,001)2
|E|
+
0,001
6
7

|E| 5x107 + 1,6667x107


|E| 6,6667x107
Asi la cota para el error de la funcion f (x) = 1/(1 + sin(x)) es:
|E| 1,1667x106
Al calcular la derivada de la funcion con las condiciones ya establecidas
y calcular el error (fue necesario el calculo analtico de f 0 (x)) mediante el
siguiente script:
x=0.58;
h=0.001;
f=@(x)(1/(1+sin(x)));
t= - ( cos(x) ) / ( (sin(x)+1)^2 );
%c
alculo de la derivada
d= ( f(x+h) - f(x-h) ) / (
%c
alculo del error
e= abs((t-d)/t)

2*h )

Se obtiene el siguiente resultado:


f 0 (x) = 0,349053034555402
error real = 4,793181x107
Se compueba que el error real no esta por debajo del permitido por la
cota. Esto se debe a que la h usada no es la optima.

Cota del error para: g(x) = ln(1 + 2x)


Para emplear la f
ormula de |E(g, h)| que calcula la cota, se define el valor
de:
 = 0,5x109
y suponiendo que la derivada se va a calcular en el punto x = 0,76 el valor
de M est
a dado por:
16
|1=M
|g 000 (x)| |
(2x + 1)3
As se tiene que la cota para la presente funcion en funcion de h es:
|E(h)|

2(0,5x109 ) h2
+
h
6

Para definir un valor de la cota, es necesario definir una h, as h = 0,001,


entonces:
(0,5x109 ) (0,001)2
|E|
+
0,001
6
7
|E| 5x10 + 1,6667x107
|E| 6,6667x107
Asi la cota para el error de la funcion g(x) = ln(1 + 2x) es: es:
|E| 1,1667x106
Al calcular la derivada de la funcion con las condiciones ya establecidas
y calcular el error (fue necesario el calculo analtico de g 0 (x)) mediante el
siguiente script:
x=0.76;
h=0.001;
f=@(x)(log(1+2*x));
t= 2/(2*x+1);
%c
alculo de la derivada
d= ( f(x+h) - f(x-h) ) / (
%c
alculo del error
e= abs((t-d)/t)

2*h )

Se obtiene el siguiente resultado:


f 0 (x) = 0,793650960286274
error real = 2,09960705x107
Se compueba que el error real no esta por debajo del permitido por la
cota. Esto se debe a que la h usada no es la optima.

Construir una tabla de derivadas primeras de la funcion g(x) definida por la


siguiente tabla en los puntos xi con la mayor precision posible mediante formulas
de tres puntos.
x
g(x)
1.0 1.000000
1.2 0.997502
1.4 0.990025
1.8 0.960398
2.0 0.940678
Para lograr la mayor precision posible, se aplicara la formula encontrada en
el ejercicio 4 para encontrar el valor optimo de h:
r

h=2
M
Para aplicar la f
ormula es necesario definir M y .
 = 0,5x109
As, suponiendo que la segunda derivada de la funcion g(x) 1:
M = |f 00 (x)| 1

por lo tanto M = 1

Reemplazando los valores de  y M en la formula:


r

h=2
M
r
0,5x109
h=2
1
se tiene el valor
optimo para h:
h = 4,4724x105
Para calcular la derivada es necesario encontrar la funcion g(x), se lo hace
con la funci
on interpol lagrange de esta manera:
x=[1 1.2 1.4 1.8 2];
y=[1 0.997502 0.990025 0.960398 0.940678];
g=interpol_lagrange(x,y)
As, se obtiene la funci
on g(x):
g(x) = 0,0239x4 0,1279x3 + 0,1904x2 0,0943x + 1,0079
Ahora, para calcular la primera derivada de la funcion g(x), se usara la
f
ormula de tres puntos adelantada para todos los xi a excepcion del u
ltimo en
el que se usar
a la f
ormula de tres puntos retrasada. Dicho calculo se lo realiza
con el siguiente script, incluyendo en el la funcion g(x):
10

g=@(x)((5174635971848881*x^4)/216172782113783808 (3374731039133*x^3)/26388279066624 +
(1028874356470605599*x^2)/5404319552844595200 (127423046416981343*x)/1351079888211148800 +
453909699963344279/450359962737049600);
x=[1 1.2 1.4 1.8 2];
h=4.4724E-5;
%c
alculo de la derivada
d(5)=( 3*g(x(5)) -4*g(x(5) -h) +g(x(5) -2*h) ) / ( 2*h );
for i=1:4
d(i) = ( -g(x(i) +2*h) +4*g(x(i)+h) -3*g(x(i))) / 12*h;
end
As con una transposici
on del vector (d) obtenido, se tiene la siguiente tabla:
x
1.0
1.2
1.4
1.8
2.0

g(x)
1.000000
0.997502
0.990025
0.960398
0.940678

g 0 (x)
-4.88224269487247 x1013
-8.14029447381825 x1012
-1.68314873715771 x1011
-3.12025175996116 x1011
-0.101442000252464

11

Hay otra alternativa para cumplir con el enunciado del problema, usar la
funci
on del ejercicio 1, de esta manera:
>> x=[1 1.2 1.4 1.8 2];
>> gx=[1 0.997502 0.990025 0.960398 0.940678];
>> d=derivada_df (x,gx)
As, se obtiene el vector (d) que contiene las derivadas primeras de la funcion
(g(x)) en los puntos (x); al transponer dicho vector y ponerlo en la tabla:
x
1.0
1.2
1.4
1.8
2.0

g(x)
1.000000
0.997502
0.990025
0.960398
0.940678

g 0 (x)
-0.0250
-0.0748
-0.2963
-0.1972
-0.1477

Las diferencias entre la primera tabla y la segunda se dan por lo ya expuesto


en el ejercicio 1, adem
as se puede decir que la primera tabla es mas precisa que
la segunda.

12

Usando la f
ormula de diferencia centrada calcular la derivada primera de la
funci
on f (x) = arctan(x) en el punto x = sqrt(2) ( el valor correcto es 1/3).
Utilizar diferentes valores de h y estudiar los efectos de los errores de redondeo
y de truncaci
on.
Para cumplir con el enunciado, con los mismos principios que en literales anteriores, se desarrolla el siguiente script:
f=@(x)(atan(x));
x=sqrt(2);
t=1/3;
h=linspace(1E-6,1E-1,50);
for i=1:50
%c
alculo de la derivada
d(i) = ( ( f(x+h(i)) -f(x-h(i)) ) / (2*h(i))
%c
alculo del eror
er(i)= abs(100*(t-d(i))/t);
end
loglog(h,er)

);

d
er
As en la u
ltima iteraci
on del script para calcular la derivada de f (x) =
arctan(x) en el punto x = sqrt(2) se tiene que:
f 0 (x) = 0,3333
La siguiente gr
afica que contiene los valores de h - error relativo en escala
logartmica nos ayudar
a en el analisis de los errores de redondeo y truncacion
para el presente c
alculo.
As, se observa que el error es bajo y aceptable (< 5 %) para todos los valores de h, a pesar de que se observa un cambio en la pendiente de la recta, se
dice que esto se debe a que al disminuir h vamos restando valores de f(x) cada
vez m
as pr
oximos y esto se traduce en un mayor error de redondeo; es as que
la mejor presici
on no se consigue con el valor de h mas pequeno posible, sino
con un valor que sin producir un gran error de redondeo disminuya lo suficiente
el error de truncaci
on.

13

A continuaci
on se analizara el porcentaje del error total que representa el
error de truncaci
on y de redondeo.
De la f
ormula para el error total E obtenida en el ejercicio 3:
E=

M h 2
+
2
h

Se sabe que el primer termino representa al error de truncamiento, y el segundo


el error de redondeo, sabiendo que aproximadamente:
 = 0,5x109
y
M = |f 00 (x)| |

2x
2 2
|

|
|
(x2 + 1)2
9

por lo tanto M 0,314

se tiene que:
1x109
h
Al separar esta f
ormula y calcular y graficar que porcentaje del total representa
cada termino y sus valores, mediante el siguiente script:
E = 0,157h +

f=@(x)(atan(x));
x=sqrt(2);
t=1/3;
h=linspace(1E-1,1E-6,50);
for i=1:50
14

%c
alculo de la derivada
d(i) = ( ( f(x+h(i)) -f(x-h(i)) ) / (2*h(i)) );
%c
alculo del error relativo
erel(i)= abs(100*(t-d(i))/t);
%c
alculo del error de truncamiento
etru(i)=0.157*h(i);
%c
alculo del error de redondeo
ered(i)=(1E-9)/h(i);
%c
alculo del error total (truncamiento + redondeo)
etot(i)=etru(i)+ered(i);
%c
alculo del porcentaje de error de truncamiento
poetru(i)=(100*etru(i)) / etot(i);
%c
alculo del porcentaje de error de redondeo
poered(i)=(100*ered(i)) / etot(i);
end
subplot(1,2,1);plot(h,poetru)
hold on
subplot(1,2,1);plot(h,poered,r)
subplot(1,2,2);plot(h,etru)
hold on
subplot(1,2,2);plot(h,ered,r)
Se tiene el siguiente gr
afico:
En donde la gr
afica de la izquierda representa los valores de h en el eje x y
los del porcentaje del error total correspondientes a cada h en el eje y; y la de la
derecha, de la misma manera los valores de h en el eje x y los valores del error
correspondientes a cada h en el eje y. En ambas de color azul para el error de
truncamiento y de rojo para el de redondeo.
Al analizar los gr
aficos se puede apreciar que al ir cambiando (disminuyendo)
el valor de h, al inicio el error de truncamiento no es representativo en el error
total cuyo valor depende totalmente del error de redondeo, luego el de redondeo
disminuye y el de truncamiento aumenta hasta llegar a un punto de equilibrio,
aproximadamente cuando h = 1x103 en donde cada error representa la mitad
del total; el proceso disminucion-aumento contin
ua respectivamente hasta cuando h = 2x103 en donde los porcentajes son lo contrario que al inicio, es decir
el error total se debe al error de truncamiento y el error de redondeo tiende a 0.
As se concluye repitiendo lo antes ya dicho: la mejor presicion no se consigue
con el valor de h m
as pequeno posible, sino con un valor que sin producir un
gran error de redondeo disminuya lo sifuiciente el error de truncacion.

15

16

Вам также может понравиться