Ejemplos de utilización del paquete RLSCF

Fernando Gómez Lanza1998

Si deseamos hacer ejecutable este cuaderno debemos descargar el archivo RLSCF.m en el directorio  ExtraPackages u otro leído por Mathematica. Utilizable sólo para versión 3.0 o superior.

<< RLSCF.m

Principales funciones del paquete.

LSFun[f[x], {x, xmin, xmax}]

Localiza puntos (no intervalos) de discontinuidad comprendidos entre xmin  y  xmax. No aplicar a funciones definidas por intevalos de forma global.

PlotFR[f[x], {x, xmin, xmax}, opciones]

Representa gráficamente f[x] evitando sus discontinuidades. Las opciones son del tipo Plot, optativas.

Objeto y limitaciones

El objeto del paquete es representar correctamente aquellas funciones reales de una variable que presenten puntos de discontinuidad o raíces complejas que  Plot no puede tratar. PlotFR representa correctamente funciones que contengan logaritmos, funciones trigonométricas e hiperbólicas, raíces, fracciones algebraicas y definidas por intervalos. No es aplicable con garantías de exito cuando en el argumento de logaritmos trigonométricas o hiperbólicas, aparecen nuevamente estas mismas funciones.

Localización de discontinuidades

f[x_] := Tan[x/2] + 1;

Las posibles discontinuidades que presenta f[x] en el intervalo [-10,10] son obtenidas por

LSFun[f[x], {x, -10, 10}]

Representación gráfica

Funciones p[x]/q[x]

f[x_] := 
      (4)/(x^5 - 13  x^4 + 50  x^3 - 50  x^2 - 51  x + 63)

Plot[f[x], {x, -5, 10}, PlotRange -> {{-5, 10}, {-5, 5}}]

PlotFR[f[x], {x, -5, 10}, PlotRange -> {{-5, 10}, {-5, 5}}]

Discontinuidades periódicas

f[x_] := Tan[x/2] + 1;

Plot[f[x], {x, -10, 10}]

PlotFR   obtiene la representación correcta,

PlotFR[f[x], {x, -10, 10}]

g[x_] := 1/(2*Cos[x] - 1)

Plot[g[x], {x, -10, 10}, PlotRange -> {{-10, 10}, {-5, 5}}]

PlotFR[g[x], {x, -10, 10}, 
      PlotRange -> {{-10, 10}, {-5, 5}}]

En la siguiente función las infinitas discontinuidades se concentran en el entorno de 2

h[x_] := Tan[1/(x - 2)];

Plot[h[x], {x, 0, 4}, PlotRange -> {{0, 4}, {-5, 5}}]

Para ver más de 10 deberemos incrementar el valor  vlkmax.
vlkmax=10    por defecto.

PlotFR[h[x], {x, 0, 4}, PlotRange -> {{0, 4}, {-5, 5}}]

Haciendo  un zoom al gráfico anterior podemos observar más discontinuidades.

k[x_] := 1/(Tan[x] - 1)

Plot[k[x], {x, -10, 10}]

PlotFR[k[x], {x, -10, 10}]

Funciones exponenciales, a^(f[x])

g[x_] := 1/(x - 1) + 2^(1/(x - 5))

Plot[g[x], {x, -10, 10}, PlotRange -> {{-10, 10}, {-5, 5}}]

PlotFR[g[x], {x, -10, 10}, 
      PlotRange -> {{-10, 10}, {-5, 5}}]

Funciones logarítmicas

f[x_] := 3/Log[(x - 1)]

Plot[f[x], {x, -10, 10}]

PlotFR[f[x], {x, -10, 10}]

Funciones tipo x^(1/3)

Problema sugerido por Teodoro Morimoto.

g[x_] := (x - 3)^(2/5);

En este tipo de funciones, aparecen raíces complejas que Plot no puede representar. En nuestro ejemplo esto sucede cuando  x<3

Plot[g[x], {x, -10, 10}, PlotRange -> {{-10, 10}, {-3, 3}}]

PlotFR transforma la función de modo que Mathematica considere sólo las raíces reales.

PlotFR[g[x], {x, -10, 10}, 
      PlotRange -> {{-10, 10}, {-3, 3}}]

Funciones definidas por intervalos

Tomemos una función definida por intervalos y con presencia de funciones discontinuas en los mismos,

h[x_] := 
      Which[x < -3, -5, -3 < x < 3, 
        15/((x - 2)*(x + 1)), 3 < x <= 7, Cot[x - 4], x > 7, 
        2  x - 5];

Plot[h[x], {x, -10, 10}]

Esta versión de PlotFR puede analizar correctamente funciones con un Which, como podemos ver al representar h[x]

PlotFR[h[x], {x, -10, 10}]

Comprobación de limitaciones:

LSFun[h[x], {x, -10, 10}]

presenta más discontinuidades de las que realmente existen en funciones definidas por intervalos. Además, quellas funciones (trigonométriccas, hiperbólicas) cuyo argumento las vuelve a contener, pueden producir errores en la representación,

Plot[Tan[Tan[x] + 1], {x, -1, 1}]

PlotFR[Tan[Tan[x] + 1], {x, -1, 1}]

y aunque ocasionalmente PlotFR pueda evitar alguna discontinuidad suele funcionar mal en un intervalo mayor

PlotFR[Tan[Tan[x] + 1], {x, -5, 5}]