tarea 1 mbreytmann

Anuncio
DEPARTAMENTO DE MATEMATICA
MAT-270 ANÁLISIS NUMÉRICO
TAREA Nº 1.
Fecha de entrega: 9 de Abril de 2007.
Integrantes:
Matthias Breytmann
2504082-1
Felipe Hernández
2511022-6
Profesor:
1
Wilmer Bazan
INDICE
INTRODUCCION
3
OBJETIVOS
4
PREGUNTA UNO
5
PREGUNTA DOS
8
PREGUNTA TRES
9
PREGUNTA CUATRO
13
PREGUNTA CINCO
14
CONCLUSION FINAL
16
ANEXOS
17
2
INTRODUCCIÓN
La siguiente tarea consiste en la resolución de cinco problemas correspondientes a temas
tales como aritmética de punto flotante en donde se analiza la propagación del error, método de
Newton, métodos de iteración, solución de un problema de aritmética de dígitos significativos y por
último una solución a un sistema de ecuaciones no lineales.
Cabe destacar que para la resolución de los problemas se utilizaron softwares numéricos los
cuales ayudaron a realizar las iteraciones y algoritmos necesarios para encontrar las soluciones.
Es importante mencionar que al estar trabajando con un computador siempre se presentarán
errores de redondeo los cuales se deben a que la máquina realiza los cálculos únicamente con
representaciones aproximadas de los números verdaderos. Un computador realiza sus operaciones
solo con un subconjunto pequeño del sistema de números reales para poder representarlos a todos.
Este pequeño sistema contiene sólo números racionales y almacena la parte fraccionaria junto con
una parte exponencial, lo que implica que al realizar operaciones entre ellos se generarán errores.
La tarea consiste en realizar operaciones en donde se van acumulando errores los cuales
deben ser identificados y encontrar alguna solución con un error lo bastante pequeño para que sea
aceptada.
3
OBJETIVOS
•
Adquirir una noción en cuanto a los diferentes tipos de errores numéricos que se generan a
partir de la modelación de un problema, los cuales deben de estar fundamentados
correctamente con respecto a su orden de magnitud. Para obtener de esta forma un resultado
fidedigno a los intereses para los cuales se desea emplear su solución.
•
Lograr el manejo de un software matemático, con el fin de programar los algoritmos
necesarios para encontrar soluciones a problemas de mayor complejidad.
Capacitar al alumno para que tenga la capacidad de resolver problemas matemáticos, a los
que se puede ver enfrentado en su profesión o a lo largo de su carrera, a través de métodos
numéricos.
•
•
Ser capaces de interpretar los resultados y adquirir un cierto lenguaje para enfrentar
problemas de tipo ingenieril.
4
Pregunta 1
El problema consta en buscar el error absoluto y relativo para x representado como punto
flotante normalizado en base 10 y redondeado de 2 maneras diferentes.
a;i) Obtener rd ( x) − x ≤ 0,5 ⋅ 10
b −t
con rd ( x) = ε (0.α 1 ...α t ) ⋅ 10 b si α t +1 < 5
rd ( x ) − ( x ) ≤ 0,5 ⋅ 10 b − t
ε (0 , α 1 ...α t ) ⋅ 10 b − ε (0, α 1 ...α t α t +1α t + 2 ) ⋅ 10 b
(0,000 .....α t +1α t + 2 ) ⋅ 10 b
El cero se repite t veces, entonces
(0,000.....α t +1α t +2 ) ⋅10 b
= 0, α t +1 ⋅ 10 −t ⋅ 10 b
⇒ 0.α t +1 ⋅ 10 b −t ≤ 0,5 ⋅ 10 b −t
Como α t +1 < 5 se cumple la desigualdad.
t
b
b;i) Obtener rd ( x) − x ≤ 0,5 ⋅ 10 b −t con rd ( x ) = ε (0.α 1 ...α t + 10 ) ⋅ 10 si α t +1 ≥ 5
(
rd ( x ) − ( x ) = (0.α ...α
)
rd ( x ) − ( x ) = 0.α 1 ...α t + 10 − t ⋅ 10 b − (0.α 1 ...α t α t +1α t + 2 ) ⋅ 10 b
1
t
)
⋅ 10 b + 10 −t ⋅ 10 b − (0.α 1 ...α t α t +1α t + 2 ) ⋅ 10 b
= − 0.α t +1 ⋅ 10 −t ⋅ 10 b + 10 b −t
= (−0.α t +1 + 1) ⋅ 10 b −t
( − 0 , α t + 1 + 1) ⋅ 10 b − t ≤ 0 , 5 ⋅ 10 b − t
Como α t +1 ≥ 5 se cumple la desigualdad.
5
rd ( x) − x
≤ 0,5 ⋅ 10 −t con rd ( x) = ε (0.α 1 ...α t ) ⋅ 10 b si α t +1 < 5
x
a;ii) Obtener
rd ( x )− ( x )
=
x
=
(0,α1 ...α t )⋅10 b − (0,α1 ...α t α t +1α t +2 )⋅10 b
(0,α1 ...α t α t +1α t + 2 )⋅10 b
(0,α1 ...α t )− (0,α1 ...α t α t +1α t + 2 )
(0,α1 ...α t α t +1α t + 2 )
= (0,α1 ...α tα t +1α t +2 ) =
b;ii) Obtener
− (0 , 00...α t +1α t + 2 )
(0,α1 ...α t α t +1α t + 2 )
=
0, α1...α tα t +1α t + 2 ≥ 10 ⇒
−1
rd ( x) − x
≤ 0,5 ⋅ 10 −t con
x
−t
b
t
1
1
t
−t
t
1
1
t
t +1α t + 2
b
)⋅10 b
t
t +1α t + 2
)
t +1 t + 2
(− 0,00...α α
= (0,α ...α α
t
t +1α t + 2
)
Como α t +1 ≥ 5 y
α1 ≥ 1 ⇒
0, α 1 ...α t α t +1α t + 2 ≥ 10 −1
t +1 t + 2 +10
1
10
−1
t +1 t + 2
(0,α ...α +10 )− (0,α ...α α
=
(0 ,α ...α α α )
1
t
0 ,α t +1 ⋅10 − t
−t
≤
0 , 5⋅10 − t
10
−1
= 5 ⋅ 10−t
rd ( x) = ε (0.α1...α t + 10t ) ⋅10b si α t +1 ≥ 5
(0,α ...α +10 )⋅10 − (0,α ...α α
=
(0,α ...α α α )⋅10
1
=
0 ,α t +1 ⋅10 −t
0 ,α 1 ...α t α t +1α t + 2
(0, 00...α t +1α t + 2 )
Como α1 ≥ 1 ⇒
=
) = (− 0,α α ⋅10 +10 )
(0 ,α ...α α α )
−t
t +1 t + 2
1
t
6
t +1 t + 2
−t
−t
−t
⇒ (−0(,0α,αt +11...αtα+t2α⋅10t +1α+t +102 ) ) ≤
0, 5⋅10− t
10−1
= 5 ⋅10−t
Conclusión
Se puede concluir que al realizar los cálculos en los software computacionales siempre
se presentaran errores ya que el programa trabaja solo con un número finito de cifras lo que implica
que al realizar operaciones se van perdiendo datos y generando pequeños errores los que van
incrementándose a media que aumentan los cálculos.
De los errores que se analizaron cabe mencionar que el error relativo tiene mayor
precisión que el absoluto, debido a que al dividir el error absoluto por el numero de maquina, se
obtiene una expresión que abarca el tamaño del error.
7
Pregunta 2
Se probara la siguiente afirmación en base 10:
EPS
y ≤
x
B
Usando EPS = 5 * 10 − t y reemplazando en la desigualdad.
10 − t
y ≤ 5*
x
10
y ≤ 5 * 10 −( t +1) x
El valor critico de y se encuentra en el caso que y = 5 * 10 − ( t +1) x
por lo que reemplazando se
obtiene x + *(5 *10 −( t +1) x ) = x .
Debido a que la precisión máxima es 5 * 10 −t , el valor 5 * 10 − (t +1) se trunca a cero, porque es más
pequeño que la precisión máxima que puede tomar.
Se probara ahora la siguiente afirmación en base 2
EPS
x
y ≤
B
Usando EPS = 2 − t y reemplazando en la desigualdad.
2 −t
x
2
y ≤ 2 −( t +1) x
y ≤
El valor critico de y se encuentra en el caso que y = 2 − ( t +1) x
Entonces x + *2 − ( t +1) x = x
Como la máxima precisión es 2 − t , el valor 2 − (t +1) es redondeado a cero, pues esta fuera de la
precisión.
Conclusión
Se puede concluir que el sumar un numero muy pequeño con uno mas grande, el termino menor es
despreciado en la operación debido a que la computadora realiza la operación con una determinada
precisión y éste al estar muy por debajo de esa precisión mínima se redondea o se trunca a cero.
8
Pregunta 3
n
1
Sea ϕ (n ) = n![e − ∑ ]
n=0,1,2,… , n ∈ Ζ
i = 0 i!
a) Demuestre que ϕ (n ) es monótona decreciente y que
Lim ϕ (n) = 0
n → +∞
Utilizando el programa Matemática se introdujo la siguiente funcion, y luego obtenemos la grafica
de esta con el comando plot.
n
p[n _] = n!(e − ∑ i1! )
i =0
Plot[p[n],{n,0,14}]
1.75
1.5
1.25
1
0.75
0.5
0.25
2
4
6
8
10
12
14
Se ve claramente que se cumple ϕ (n + 1) < ϕ (n) por lo tanto se comprueba que la función es
monótona decreciente.
Demostración del límite:
Expandiendo e x mediante la serie de Taylor se obtiene:
ex = 1+ x +
como Rn,a
x 2 x3
xn
+
+ ... +
+ Rn ( x)
2! 3!
n!
f ( n +1) (t )
=
( x − a) n +1
(n + 1)!
t ∈ (a, x), ( x > a)
9
Centrando la serie en cero se obtiene
et
Rn , a = −
⋅ x n +1
t ∈ [0,1]
(n + 1)!
Para x = 1
1 1
1
e = 1 + 1 + + + ... + + Rn
2! 3!
n!
t
e
3
Rn = −
<
(n + 1)! (n + 1)!
n
1
3
e − ∑ = Rn <
(n + 1)!
i =0 i!
n
1
3
Multiplicando por n! se obtiene
0<e−∑ <
(n + 1)!
i = 0 i!
3 ⋅ n!
0 < Rn ⋅ n!<
(n + 1)n!
3
Por teorema del sándwich, n → +∞
0 < ϕ ( n) <
(n + 1)
Lim ϕ (n) = 0
n → +∞
b) Demostrar que ϕ (n + 1) = (n + 1)ϕ (n) − 1
n
1
ϕ (n ) = n![e − ∑ ]
i = 0 i!
n=0,1,2,…
Evaluando en (n+1) se obtiene
n +1
1
ϕ (n + 1) = (n + 1)![e − ∑ ] Descomponiendo el factorial y resolviendo n+1 en la sumatoria
i = 0 i!
se llega a
n
1
1
ϕ (n + 1) = (n + 1) ⋅ n![e − ∑ −
]
(n + 1)!
i = 0 i!
n
1
1
ϕ (n + 1) = (n + 1) ⋅ n![e − ∑ ] − [
(n + 1) ⋅ n!]
(n + 1)!
i = 0 i!
1
(n + 1) ⋅ n!]
(n + 1)!
1
ϕ (n + 1) = (n + 1) ⋅ ϕ (n) − [
(n + 1) ⋅ n!] simplificando
(n + 1) ⋅ n!
ϕ (n + 1) = (n + 1) ⋅ ϕ (n) − [
Se obtiene: ϕ (n + 1) = (n + 1) ⋅ ϕ (n) − 1
10
Utilizando el algoritmo anterior se obtienen los siguientes valors para ϕ (n )
Para
ϕ (0 ) =e-1=1.71828182
n = 0 ϕ (1) = (e − 1) − 1 = e − 2 =0.71828183
Para n = 1
ϕ (2 ) = 2(e − 2) − 1 = 2e − 5 =0.43656366
Para n = 2
ϕ (3) = 3(2e − 5) − 1 = 6e − 16 =0.30969097
Para n = 3
ϕ (4 ) = 4(6e − 16) − 1 = 24e − 65 =0.23876388
Para n = 4
ϕ (5) = 5(24e − 65) − 1 = 120e − 326 =0.19381942
Resumiendo los valores y representándolos en tabla se obtiene lo siguiente:
n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ϕ (n )
0.71828183
0.43656366
0.30969097
0.23876388
0.19381942
0.16291649
0.14041543
0.12332347
0.10991122
0.09911218
0.09023403
0.08280826
0.07650566
0.07107544
0.06640625
Observando la tabla anterior se puede corroborar al límite calculado anteriormente que la función
ϕ (n ) tiene claramente a 0.
11
c)
El algoritmo usado para calcular ϕ (15) esta en el anexo de la pregunta 3 y el resultado es
0.06640625. Se puede observar una pequeña diferencia al calcular directamente con n=15 en la
sumatoria y se obtiene 0.0662025447581982. El error relativo para este caso es entonces:
a = 0.0662025447581982
b = 0.06640625
a-b
= 0.3077 *10 −2
a
Cabe mencionar que el error que se presenta al utilizar el algoritmo es bastante grande.
d)
La fuente del error que se genera se debe al estar utilizando el algoritmo. Se produce debido
a la aproximación que hace el programa con la función exponencial, ya que ésta queda representada
en el programa por un número finito. Al estar multiplicando sucesivamente una aproximación se va
generando cada vez un error mayor. Es por esto que el algoritmo varía en comparación con
introducir el número directamente a la función original.
12
Problema 4
Al graficar la función se observa claramente que la menor solución positiva se encuentra
cercana al punto x= 2,5
1
0.8
0.6
0.4
0.2
2
4
6
8
10
12
14
-0.2
-0.4
Al aplicar el algoritmo para este método se encontró la solución de x0=2.404825558 con un error de
1.32368 ⋅ 10 −10
Para encontrar el punto solución cercano a 2.5 se utilizó el método de la bisección el cual
consiste en ir subdividiendo intervalos. Se debe lograr siempre que f(a)f(b)<0 para seguir realizando
la iteración. Éste método es muy claro desde el punto de vista conceptual claro que un
inconveniente es que converge lentamente a la solución. Sin embargo este método tiene la
importante propiedad de que siempre converge a un punto.
13
Pregunta 5
Este problema se realizó mediante la ayuda del software Matlab 7.1, el cual permitió lograr
una aproximación bastante cercana a la solución del sistema de ecuaciones no lineales.
El método utilizado fue el Método de Newton el cual basta con realizar la operación
x k = x k −1 − J −1 ( x ( k −1) ) ⋅ F ( x ( k −1) ) , e iterando una cierta cantidad de veces se logra el acercamiento al
punto solución.
Como las ecuaciones del sistema son:
α3
p = 2
T (µ1 + µ 2 )
3
− m 1 − 0, 2 = 5 ln( p ) + 8 .75 ln( µ 1 )
− m 2 − 0, 2 = 5 ln( p ) + 8 .75 ln( µ 2 )
 f 1
 
Se obtiene F ( p, µ1 , µ 2 ) =  f 2 
 f 3
 
α3
− p3
T ( µ1 + µ 2 )
f 2 = 5 ln( p) + 8.75 ln( µ1 ) + m1 + 0,2
f 3 = 5 ln( p ) + 8.75 ln( µ 2 ) + m2 + 0,2
f1=
con
2
Y la matriz jacobiana J(x) para este sistema es

 − p3

 5
J ( p , µ1 , µ 2 ) = 
 p
 5
 p

−
α3
T 2 ( µ1 + µ 2 ) 2
8,75
µ1
0
−

α3

2
2
T ( µ1 + µ 2 ) 
0
8.75
µ2






Entonces con estos datos se puede realizar el Método de Newton para sistemas. Con la ayuda del
programa Matlab se logra invertir la matriz jacobiana tantas veces como sea necesario y realizar
x k = x k −1 − J −1 ( x ( k −1) ) ⋅ F ( x ( k −1) ) .
El punto inicial x0 = (0.5,2,2) se eligió mediante la ayuda del programa Maple en el cual se pudo
graficar las funciones implícitas y encontrar una solución aproximada.
14
Entonces se introduce en el programa x0 y éste realiza las iteraciones correspondientes hasta lograr
una aproximación lo mas cercana posible a x. Se tomó como máximo un error relativo
x k − x ( k −1)
< 10 −10 .
q=
x
k
El programa que se realizó arroja como solución el punto.
p= 0.15877514186010
µ1 = 1.73104208506590
µ 2 =1.40918187114396
Después de realizar 8 iteraciones y presenta un error relativo q= 2.821988760697672 ⋅ 10 −14 , lo cual
es un resultado aceptable debido al error que es prácticamente mínimo.
Conclusión
Se puede decir que el método de Newton requiere un valor inicial lo suficientemente preciso
y debe existir siempre J −1 ( pto) , en el problema realizado no se presentaron problemas debido a
que se eligió un punto lo bastante cercano y es por eso que se pudo realizar la inversión de la matriz
jacobiana. Se concluye además que al dar un punto inicial lo bastante preciso el método converge
rápidamente a la solución (en el problema realizo solo 8 iteraciones).
15
Conclusión final
Se concluye que al realizar operaciones matemáticas con la ayuda de computadores se
presentan siempre errores que provienen de las aproximaciones que realiza éste.
El análisis numérico identifica estos errores y si es posible se pueden corregir mediante el
uso de los métodos. Es por esto que se deben realizar algoritmos con la menor cantidad de
operaciones entre éstos con el fin de reducir dicha propagación del error.
Los objetivos de esta tarea se cumplieron y se logró entender e interpretar los problemas a
los que se enfrentaron.
16
ANEXO
Pregunta 3:
El siguiente algoritmo realiza la iteración para calcular ϕ (n)
a=1;
for n = 1:15;
a=a*n;
a2=1;
suma=1;
for j = 1:n;
a2=a2*j;
suma=suma+(1/a2);
end
p=a*exp(1)-suma*a;
p
end
El programa arroja los siguientes valores de la función ϕ (n + 1) = (n + 1)ϕ (n) − 1 :
p=
p=
p=
p=
p=
p=
p=
p=
p=
p=
p=
p=
p=
p=
0.71828182845905
0.43656365691809
0.30969097075427
0.23876388301710
0.19381941508550
0.16291649051277
0.14041543358871
0.12332346869516
0.10991121840198
0.09911218471825
0.09023402631283
0.08280825614929
0.07650566101074
0.07107543945313
p = 0.06640625000000
( valor de ϕ (15) utilizando algoritmo encontrado en b.)
Evaluando directamente se obtiene lo siguiente:
n
p[n _] = n!(e − ∑ i1! )
i =0
p[15]//N
0.066202544758198
(valor de ϕ (15) al evaluarlo directamente)
17
Anexo
Pregunta 4
Se definió la función en el programa Mathematica y luego se realizo el siguiente algoritmo:
X0=-2 e y0=5 representa el primer intervalo que se subdivide sucesivamente. K es el número de
iteraciones que realiza. E0=100 representa el error inicial
El programa arroja los siguientes resultados:
xr30
2.404825560
2.710906825 ´ 10- 7
xr31
2.404825557
1.355453414 ´ 10- 7
xr32
2.404825558
6.777267066 ´ 10- 8
xr33
2.404825557
3.388633534 ´ 10- 8
xr34
2.404825558
1.694316767 ´ 10- 8
xr35
2.404825558
8.471583835 ´ 10- 9
xr36
2.404825558
4.235791917 ´ 10- 9
xr37
2.404825558
2.117895959 ´ 10- 9
xr38
2.404825558
1.058947979 ´ 10- 9
xr39
2.404825558
5.294739897 ´ 10- 10
xr40
2.404825558
2.647369948 ´ 10- 10
xr41
2.404825558
1.323684974 ´ 10- 10
*Nota: Se copiaron los últimos resultados ya que los otros no son importantes.
El último valor es la aproximación a la solución con su respectivo error a su derecha.
18
Anexo
Pregunta 5:
Algoritmo utilizado para resolver el sistema no lineal
al=4.6;
t=88;
m1=4.2;
m2=6.0;
x0=[0.5;2;2];
i=1
while i<1000,
p=x0(1);
u1=x0(2);
u2=x0(3);
f1=al^3/(t^2*(u1+u2)) -p^3;
f2=5*log(p)+8.75*log(u1)+m1+0.2;
f3=5*log(p)+8.75*log(u2)+m2+0.2;
J=[-3*p.^2 -al.^3/(t.^2*(u1+u2).^2) -al.^3./(t.^2*(u1+u2).^2); 5./p 8.75./u1 0;5./p 0
8.75./u2];
Jinv=J^(-1);
F=[f1;f2;f3];
xsiguiente=x0-Jinv*F;
k=xsiguiente-x0;
q=norm(k,inf)/norm(xsiguiente,inf);
{q es el error relativo}
if q<10^-10,
break
end
x0=xsiguiente;
i=i+1;
end
x0
q
i
El programa arroja como resultado
x0 =
0.15877514186010
1.73104208506590
1.40918187114396
q=
2.821988760697672e-014
i=
8
19
Descargar