Está en la página 1de 7

Examen Final Análisis Numérico

Diego Abraham Olvera Mendoz


05 de Enero del 2019

Programas Los programas presentados para los ejercicios 1 al 4 en este ex-


amen fueron escritos tratando de seguir los estándares de FORTRAN 77 en la
medida de lo posible. El último programa es un script que puede ser ejecutado
en software Octave.
1. La distribución normal es muy empleada en estadística y está dada por
!
2
1 (x − µ)
f (x; µ, σ) = √ exp − .
2πσ 2σ 2

(a) La función de error se dene por


x
2 2
erf (x) = √ e−t dt
π
0

Demuestre que la función de distribución acumulativa para la distribución


normal x 
F (x; µ, σ) = f (t; µ, σ) dt
−∞

se puede escribir como


 
x−µ
1 + erf √

F (x; µ, σ) = .
2

Demostración
Sustituyendo tenemos
x x 2
! x  2 !
1 (t − µ) 1 t−µ
F (x; µ, σ) = f (t; µ, σ) dt = √ exp − dt = √ exp − dt.
2πσ 2σ 2 2πσ 2σ
−∞ −∞ −∞

Realizando un cambio de variable tenemos que w = t−µ




y dw = √1 dt.


Despejando dt = 2σdw.

1
Si t → −∞ entonces el numerador es un número negativo muy grande y
w → −∞.
√ .
Si t = x entonces w = x−µ

x−µ

 2σ √
1 
2
F (x; µ, σ) = √ exp − (w) 2σdw
2πσ
−∞

x−µ

 2σ
1 
2

=√ exp − (w) dw
π
−∞

x−µ

0  2σ
1 
2
 1 
2

=√ exp − (w) dw + √ exp − (t) dt
π π
−∞ 0
0  
Resolviendo primero √1
π −∞
exp − (w)
2
dw haciendo w = √z ,
2
dw =
,w2 sustituimos para resolver
2
dz z

2
= 2

0 0
z2
 
1 
2
 1
√ exp − (w) dw = √ exp − dz
π 2π 2
−∞ −∞

0
 
 2
1 2 z
= √ exp − dz 
2 2π 2
−∞
 2 ∞ 0
 2
La integral puede escribirse como 2
−∞
exp − z
2 dz = −∞
exp − z2 dz
∞   √
y el resultado es −∞ exp − z2 dz = 2π .
2

Entonces sustituyendo en el lado izquierdo tenemos


0
 
2
1 1 √
 
1 2 z 1
√ exp − dz  = √ 2π = .
2 2π 2 2 2π 2
−∞

Continuando con la integral del lado derecho


 x−µ


 2σ
1 1 2 
2
 
= +  √ exp − (t) dt
2 2  π 
0

  
1 1 x−µ
= + erf √
2 2 2σ

2
 
x−µ
1 + erf √

= = F (x; µ, σ)
2
(b) El nombre del programa es NCDF.f. Pueden usarse los siguientes val-
ores x = 1.644853, µ = 0, σ = 1 y obtenemos F (x; µ, σ) = 0.9499.

(c) El nombre del programa es INVNCDF.f. Pueden usarse los valores


obtenidos en el inciso anterior y obtendremos x ingresando p = F (x; µ, σ) =
0.9499 cuando el programa lo solicite.
2. Demuestre que las dos raíces x1 y x2 de ax2 + bx + c = 0 están dadas por

−b ± b2 − 4ac c
x1 = , x2 =
2a ax1

Demostración
Si x2 es solución de ax2 + bx + c = 0 entoces
2
ac2 c2 + bcx1 + acx21
  
c c bc
a +b +c= 2 + +c= =0
ax1 ax1 2
a x1 ax1 ax21

con x1 = −b+sgn(b) b2 −4ac
2a la ecuacion anterior se convierte en:
 √  √ 2
−b+sgn(b) b2 −4ac −b+sgn(b) b2 −4ac
c2 + bc 2a + ac 2a
 √ 2
−b+sgn(b) b2 −4ac
a 2a

Desarrollando las potencias y productos tenemos:


 √   √ 
−b2 c+sgn(b)bc b2 −4ac b2 −2sgn(b)b b2 −4ac+sgn(b)b2 −4ac
c2 + 2a + ac (2a) 2
 √ 
b2 −2sgn(b)b b2 −4ac+sgn(b)b2 −4ac
a (2a)2

√ √ 2
b2 c sgn(b)bc b2 −4ac 2 sgn(b)2abc b2 −4ac 4a2 c2
c2 − 2a + 2a  + ab c
4a2 − 4a2 + sgn(b)ab
4a2
c
− 4a2
= 2

2 −4ac+sgn(b)b2 −4ac

a b −2sgn(b)b b (2a) 2

√ √
b2 c 2 2 2 b2 −4ac
c2 − c2 + 4a + b4ac − b2ac + sgn(b)bc2a b −4ac − sgn(b)2bc4a
=  2 √
2 −4ac+sgn(b)b2 −4ac

a b −2sgn(b)b b (2a) 2

0
=  √ 2 = 0.
−b+sgn(b) b2 −4ac
a 2a

Estas fórmulas se emplean para evitar


√ errores numéricos cuando la difer-
encia entre |b| y el discriminante b2 − 4ac es muy pequeña, por lo que

−b + sgn(b) b2 − 4ac
6= 0.
2a

3
El programa que hace uso de estas formulas es QuadraticEq.f. La tol-
erancia que debe cumplir la diferencia para hacer uso de las formulas
expustas es de 0.01.Ingresando los coecientes a = 101
, b = 5 , c = 1001

el programa utiliza la formula alterntiva para calcular x2 . El resultado es


x1 = −49.9979... y x2 = −2.0000...E − 03.

El programa también es capaz



de calcular raíces complejas utilizando la
formlua cuadrática x = −b± 2a
b2 −4ac
y no la formula alternativa.
3. El algoritmo de Gauss-Jordan utilizado en el programa GaussJ.f es el
propuesto en Numerical Recipies in Fortran 77.
Ingresando el sistema
Ax = b
    
0 1 1 x1 1
 1 1 1   x2  =  2 
1 1 0 x3 2
El programa solicita la dimensión n de la matriz A cuadrada y cada
elemento aij . El número de vectores columna solución para este ejercicio
es 1 y los elementos son solicitados como bi1 . La solución al sistema que
muestra el programa es:
x1 = 1
x2 = 1 .
x3 = 0

4. Las ecuaciones del algoritmo de Crout factorizan una matriz cuadrada


 
a11 a12 ... a1j
 a21 a22 ... a2j 
A= . .. .. ..  , i = j = 1, 2, · · · , N
 
 .. . . . 
ai1 ai2 ... aij

en dos matrices A = LU donde L es una matriz triangular inferior y U es


una matriz triangular superior.
Si N = 4 tenemos

   
α11 0 0 0 β11 β12 β13 β14
 α21 α22 0 0   0 β22 β23 β24 
L=  yU = .
 α31 α32 α33 0   0 0 β33 β34 
α41 α42 α43 α44 0 0 0 β44

4
La factorización LU de Crout nos permite hacer αii = 1, i = 1, 2, . . . N .
Al tener los valores de los elementos de la diagonal de L podemos entonces
resolver el sistema de N 2 ecuaciones para factorizar
 
β11 β12 β13 β14
 α21 β22 β23 β24 
A = LU = 
 α31

α32 β33 β34 
α41 α42 α43 β44

haciendo los siguientes pasos:


• Asignar αii = 1, i = 1, 2, . . . N .
• Para cada j = 1, 2, 3, . . . , N hacer los siguientes procedimientos.
 Primero, para i = 1, 2, . . . , j calculamos
i−1
X
βij = aij − αik βkj .
k=1

Cuando i = 1 el termino de la sumatoria es igual a 0.


 Segundo, para i = j + 1, j + 2, . . . , N resolvemos
j−1
!
1 X
αij = aij − αik βkj .
βjj
k=1

 Realizar ambos cálculos antes de avanzar al siguiente valor de j .

El programa que utiliza estas formulas para factorizar A y resolver el


sistema Ax = b es CROUT.f.
El programa realiza un ejemplo con una matriz
 
1 1 0 3
 2 1 −1 1 
A= .
 3 −1 −1 2 
−1 2 3 −1

Utilizando la subrutina ludcmp obtenemos


 
1 1 0 3
 2 −1 −1 −5 
A = LU = 
 3
.
4 3 13 
−1 −3 0 −13

Resolvemos el sistema haciendo substitucion hacia atras a U y substitución

5
hacia adelante a L en la subrutina lubksb que devuelve
 
3
 −1 
 0 .
x= 

5. Haga un programa que resuelva sistemas de ecuaciones sobredeterminados.


Consideremos la matriz rectangular
 
a11 a12 a13 ... a1j
 a21 a22 a23 ... a2j  i = 1, 2, . . . , m
A= .

.. .. ..  ,

con
 .. . . ... .  j = 1, 2, . . . n
ai1 ai2 ai3 . . . aij

Se dice que un sistema Ax = b es sobredetermindo cuando m > n. Es


decir cuando se tienen más ecuaciones que incógnitas. Para este tipo de
sistemas no existe una solución, lo que se busca es un vector solución que de
la mejor aproximacion para cada una de las ecuaciones del sistema Ax =
b. El problema lineal de mínimos cuadrados se acerca a la optimizacion
encontrando un vector x con la mínima norma del vector residual r =
b − Ax.
La solución de mínimos cuadrados de Ax = b es el vector x que hace de
krk2 = kb − Axk2 un mínimo
2
min kb − Axk
xRn

Realizando la factorización QR de A, la solucion al sistema se obtiene


resolviendo
Rx = Qt b.

No fue posible realizar un programa en FORTRAN para solucionar sis-


temas sobredeterminados. El principal problema fue la factorización QR
utilizando la transformacion de Householder. Se optó por este método de
ortonnormalización ya que el método de Gram-Schmidt no es recomend-
able para métodos númericos por problemas de acumulación de redondeo.

Se presenta un script SimpleMinsqrtWithQR.m de Octave para la solu-


cion de sistemas sobredeterminados. Se hace uso de la función qr(A) que
utiliza subrutinas de LAPACK para calcular la factorización QR.
Como ejemplo resolvemos el sistema Ax = bcon
   
3 −1 0
A= 4 2  y b= 2 
0 1 1

6
La factorización A = QR es
   
−0.60000 0.71554 0.35777 −5.00000 −1.00000
Q =  −0.80000 −0.53666 −0.26833  R =  0.00000 −2.23607 
0.00000 −0.44721 0.89443 0.00000 0.00000
 
−1.60000
Qt b =  −1.52053 
0.35777
El vector óptimo a ser solución se obtiene realizando una division izquierda
en el script
x = R \ Qt b.
En Octave, si el sistema no es cuadrado, o si la matriz de coecientes es
singular, la division izquierda calcula una solución de norma mínima
 
0.18400
x= .
0.68000

También podría gustarte