COMPUTACIÓN 2002 – GEOFÍSICA

PRACTICA 1b

1. Todo número complejo z = (x, y) = x+iy no nulo admite exactamente n raíces n-ésimas distintas dadas por

w_{k} = \sqrt[n]{r} [cos (\frac{θ + 2kπ}{n} ) + i sin (\frac{θ + 2kπ}{n} )]

donde k = 0, 1, 2, …, n − 1, y

r = \sqrt{x^{2} + y^{2}}, tan θ = y/x

Confeccionar un programa que calcule tales raíces dado un número complejo z. Verificar el programa calculando las raíces n-ésimas de la unidad para n = 1, 2, 3.

2. El máximo común divisor (a, b) de dos número enteros positivos a y b, con a ≥ b puede ser calculado por el algoritmo de Euclides, según el cual el máximo común divisor es igual al último resto no nulo que se obtiene por aplicación sucesiva de la división entera entre el divisor y el resto del paso anterior. Esto es,

(a, b) = (b, r_{1}) = (r_{1}, r_{2}) = ⋯ = (r_{n−1}, r_{n}) = (r_{n}, 0) = r_{n}

Implementar este algoritmo para calcular el máximo común divisor de dos números enteros cualesquiera dados, contemplando la posibilidad de que alguno de ellos, o ambos, sea negativo o cero. (Ayuda: (a, b) = (|a|, |b|) y (a, 0) = 0, pero (0, 0) no está definido).

Verificar el programa calculando (25950,1095) = 15, (252,-1324) = 4.

3. El ejercicio anterior hace uso de la operación módulo, implementada en FORTRAN mediante la función MOD. ¿Podría decir por que el siguiente programa, si bien compila, da un resultado equivocado?

      PROGRAM BUG
      INTEGER I,J
      I = 7
      J = I MOD 4
      WRITE (*,*) J
      END

Si no encuentra el error recurra a la sentencia IMPLICIT NONE.

4. En la ecuación cúbica general de tercer grado

x^{3} + a_{2}x^{2} + a_{1}x + a_{0} = 0

poniendo x = x′ − a_{2}/3, obtenemos una ecuación cúbica sin término cuadrático, cuyas raíces son las de la primera, incrementadas en −a_{2}/3. Alcanza, pues, con considerar las ecuaciones cúbicas del tipo

x^{3} + px + q = 0

donde, para simplificar, supondremos que p y q son números reales. Se sigue entonces del teorema fundamental del algebra, que esta ecuación tiene: o bien una única raíz real, o bien tres raíces reales (pudiendo coincidir dos de ellas). Estas raíces reales pueden ser calculadas exactamente como sigue.

Sea

Δ = \frac{q^{2}}{4} + \frac{p^{3}}{27}

el discriminante de la ecuación cúbica.

Si Δ > 0, entonces existe una única raíz real, x_{1}, dada por x_{1} = u_{1} + v_{1}, donde

u_{1} = sign (−\frac{q}{2} + \sqrt{Δ}) |−\frac{q}{2} + \sqrt{Δ}|^{1/3} , v_{1} = sign (−\frac{q}{2} − \sqrt{Δ}) |−\frac{q}{2} − \sqrt{Δ}|^{1/3}

Si Δ = 0, tendremos tres raíces reales (siendo dos iguales), x_{1} , x_{2} = x_{3}, dadas por

x_{1} = 2u_{1}, x_{2} = x_{3} = −u_{1}

donde

u_{1} = sign (−\frac{q}{2}) |−\frac{q}{2}|^{\frac{1}{3}}

Finalmente, si Δ < 0, habrá tres raíces reales (distintas) x_{1}, x_{2}, x_{3}, dadas por

x_{1} = 2ρ^{1/3} cos (\frac{θ}{3}), x_{2} = 2ρ^{1/3} cos (\frac{θ}{3} + \frac{2}{3}π), x_{3} = 2ρ^{1/3} cos (\frac{θ}{3} + \frac{4}{3}π)

donde

ρ = \sqrt{−\frac{p^{3}}{27}}, cos θ = −\frac{q}{2ρ}

a) Teniendo en cuenta lo anterior, confeccionar un programa que calcule las raíces reales de las ecuaciones cúbicas del tipo

x^{3} + px + q = 0

b) Compruebe el programa con los siguientes casos triviales:

x^{3} = 0, x^{3} − 1 = 0, x^{3} − x = 0

c) Encuentre las raíces reales de la ecuación

x^{3} − 3.5292x + 2.118176 = 0

(Rta: Redondeado a cinco decimales, las raíces son x_{1} = 1.43162, x_{2} = −2.1272, x_{3} = 0.69552)