1.11 Evitando la aritmética compleja

Al construir el gráfico de algunas funciones, como f(x) = x^(1/3), en un dominio que incluya números negativos --- claramente f(x) está bien definida para números negativos--- puede ser que el resultado que produce Mathematica sea inesperado.

Plot[x^(1/3), {x, -4, 4}]

Entre los mensajes de error se indica que x^(1/3) no es un número real para x= -3.999999667, etc.  Y efectivamente,como puede observarse a continuación, para  Mathematica números comoFormBox[RowBox[{RowBox[{(, RowBox[{-, 4.}], )}], ^, (1/3)}], TraditionalForm]son complejos:

RowBox[{RowBox[{(, RowBox[{-, 4.}], )}], ^, (1/3)}]

El problema se produce por la definición que Mathematica da a las raíces de índice impar de los números negativos. Como para cada número real a hay un número real y dos complejos que satisfacen la ecuación x^3 = a,  cualquiera de estos tres valores puede ser la raíz cúbica de a.

RowBox[{Solve, [, RowBox[{RowBox[{x^3, ==,  , RowBox[{-, 8.}]}], ,, x}], ]}]

RowBox[{RowBox[{(, RowBox[{-, 8.}], )}], ^, (1/3)}]

De hecho entre las raíces mostradas en el ejemplo anterior, Mathematica elige la raíz principal, es decir, la raíz con el menor argumento positivo. Para un número complejo z=a+bi, su parte real es a,  su parte imaginaria b y su argumento es el ángulo  -π < θ < π  tal que z = r (Cos(θ)+ Sin(θ)I ).  En el caso de las tres raíces de la ecuación FormBox[RowBox[{x^3, =, RowBox[{-, 8.}]}], TraditionalForm], la raiz con menor argumento positivo es 1.0+1.73205I, entonces FormBox[RowBox[{RowBox[{RowBox[{(, RowBox[{-, 8.}], )}], ^, (1/3)}], =, RowBox[{1., +, RowBox[{1.73205, I,  }]}]}], TraditionalForm].

RowBox[{{, RowBox[{Arg[-2], ,, RowBox[{Arg, [, RowBox[{1., -, RowBox[{1.73205, I}]}], ]}], ,, RowBox[{Arg, [, RowBox[{1., +, RowBox[{1.73205, I}]}], ]}]}], }}]

Este tipo de problemas se resuelve indicándole a Mathematica que estamos interesados sólo en los resultados reales. Para ello se debe activar la biblioteca  RealOnly, como se muestra a continuación.

Needs["Miscellaneous`RealOnly`"]

Plot[x^(1/3), {x, -4, 4}] ;


Created by Mathematica  (September 23, 2008)