1. “Un sistema experto desarrollado en el
software Mathematica para analizar
funciones de R en R”
VII FAST WORKSHOP ON APPLIED AND COMPUTATIONAL MATHEMATICS
Robert Ipanaqué Chero
ripanaquec@unp.edu.pe
http://www.unp.edu.pe/pers/ripanaque
Trujillo, 08 de Enero de 2014
1
2. Introducción
Esta presentación describe el nuevo sistema experto
Functions, codificado en el lenguaje de programación del
Mathematica v.9.0. Este sistema experto amplía las
capacidades del Mathematica para analizar funciones reales
de variable real.
Específicamente se ha conseguido mejorar las gráficas de las
funciones definidas a trozos, implementar comandos para
realizar operaciones concernientes al álgebra de funciones y
automatizar el cálculo de la función inversa.
La descripción se hace mostrando, inicialmente, los comandos
con los que cuenta el Mathematica para analizar funciones y
luego se muestran los comandos incorporados en el nuevo
sistema experto; de esta manera el lector puede comparar las
salidas obtenidas.
2
3. El Mathematica
El Mathematica es un Sistema de Álgebra Computacional
(SAC), es decir, es un programa de ordenador que facilita el
cálculo simbólico (trabaja con ecuaciones y fórmulas
simbólicamente, en lugar de numéricamente).
Cálculo numérico: 4 + 36 − 1 −→ 39
Cálculo simbólico: 7x − 3x + 6 −→ 4x + 6
Mathematica
Una característica muy importante del Mathematica es que efectúa la reducción de cuantificadores. Esto puede apreciarse al calcular el dominio de la
siguiente función.
Reduce ∃y y =
√
2
Out[1]= 3 < x ≤ 1 + 3
In[1]:=
2|x|−x 2 +2
√
x(3x−2)
, Reals
3
4. Comandos del Mathematica para analizar
funciones
Comando PiecewiseExpand
Mathematica
Expansión de una expresión con Piecewise anidado en una función con un
solo Piecewise.
Piecewise[{{Piecewise[{{1, x < 1}}, 2], x > 0}}, 3]
1 x <1
x >0
2 True
Out[1]=
3
True
In[2]:= PiecewiseExpand[%]
1 0<x <1
2
x ≥1
Out[2]=
3
True
In[1]:=
4
5. Mathematica
Conversión de un arreglo de funciones especiales a trozos en un único objeto
Piecewise.
In[3]:=
Out[3]=
Piecewise[{{Max[x, x 2 ], −2 < x < 2},
{UnitStep[x], True}}]
Max x, x 2 −2 < x < 2
UnitStep[x] True
PiecewiseExpand[%]
x ≥2
1
x
0≤x ≤1
Out[4]=
x 2 −2 < x < 0 ∨ 1 < x < 2
0
True
In[4]:=
5
6. Mathematica
Expansión de una función con un número infinito de trozos sobre un intervalo
acotado.
PiecewiseExpand[Floor[x], 0 < x < 4]
1 1≤x <2
2 2≤x <3
Out[5]=
3 x ≥3
0 True
In[5]:=
6
8. Mathematica
Gráfica de una función obtenida al incluir algunas opciones de Plot.
x − Floor[2x] −1 ≤ x < 1
x
1≤x <4
2 + Floor[x]
In[7]:=
f [x_]:=
In[8]:=
Plot[ f [x], {x, −2, 5}, PlotRange → All, · · · ]
5
4
3
Out[8]=
2
1
-1
1
2
3
4
8
9. Suma de funciones
Mathematica
Resultado incorrecto de la suma de dos funciones a trozos.
In[9]:=
f [x_]:=
7x − 3 −3 < x < 0
2x + 8 0 ≤ x < 5
2x − 6 −2 < x < 2
x2 − 2 2 ≤ x < 4
In[11]:= PiecewiseExpand[f [x] + g[x]]
−2 < x < 0
9(x − 1)
2(x + 4)
4≤x <5
2(2x + 1)
0≤x <2
Out[11]=
7x − 3
−3 < x ≤ −2
2
x + 2x + 6
2≤x <4
0
True
In[10]:=
g[x_]:=
9
10. Producto de funciones
Mathematica
Resultado aparentemente correcto; sin embargo, note que los dominios parciales están en desorden y que el producto no debería estar definido para
x ∈ [0, 4] (en este caso tiene el valor 0).
In[12]:=
f [x_]:=
7x − 3 −3 < x < 0
2x + 8 0 ≤ x < 5
2x − 6 −2 < x < 2
x2 − 2 2 ≤ x < 4
In[14]:= PiecewiseExpand[f [x] ∗ g[x]]
0≤x <2
4(x − 3)(x + 4)
2(x − 3)(7x − 3) −2 < x < 0
Out[14]=
2≤x <4
2(x + 4) x 2 − 2
0
True
In[13]:=
g[x_]:=
10
11. Cociente de funciones
Mathematica
Resultado incorrecto del cociente de dos funciones a tozos.
In[15]:=
f [x_]:=
7x − 3 −3 < x < 0
2x + 8 0 ≤ x < 5
2x − 6 −2 < x < 2
x2 − 2 2 ≤ x < 4
In[17]:= PiecewiseExpand[f [x] ∗ g[x]]
Indeterminate x ≥ 5 ∨ x ≤ −3
x+4
0≤x <2
x−3
7x−3
−2 < x < 0
Out[17]=
2(x−3)
2(x+4)
2≤x <4
x 2 −2
ComplexInfinity
True
In[16]:=
g[x_]:=
11
12. Composición de funciones
Mathematica
Resultado incorrecto de la composición de dos funciones a tozos.
In[18]:=
f [x_]:=
7x − 3 −3 < x < 0
2x + 8 0 ≤ x < 5
2x − 6 −2 < x < 2
x2 − 2 2 ≤ x < 4
In[20]:= PiecewiseExpand[Composition[f , g][x]]
3
7(2x − 6) − 3
2 <x <2
√
2−2 +8
2 x
2≤x < 7
√
Out[20]=
8
2 ≤ x < 7 ∨ x ≥ 4 ∨ x ≤ −2
0
True
In[19]:=
g[x_]:=
12
13. Inversa de una función
Mathematica
Resultado aparentemente correcto de la inversa de una función; sin embargo,
no hay información con respecto al dominio de definición de dicha inversa.
√
h[x_]:= x 2 + 7 + x
In[22]:= InverseFunction[h][x]
In[21]:=
Out[22]=
x 2 −7
2x
13
14. El sistema experto Functions
Comando PwExpand
Mathematica
Expansión de una expresión con Piecewise anidado en una función con un
solo Piecewise.
Piecewise[{{Piecewise[{{1, x < 1}}, 2], x > 0}}, 3]
1 x <1
x >0
2 True
Out[1]=
3
True
In[2]:= PwExpand[%]
x ≤0
3
1
0<x <1
Out[2]=
x ≥1
2
Null True
In[1]:=
14
15. Mathematica
Conversión de un arreglo de funciones especiales a trozos en un único objeto
Piecewise.
In[3]:=
Out[3]=
Piecewise[{{Max[x, x 2 ], −2 < x < 2},
{UnitStep[x], True}}]
Max x, x 2 −2 < x < 2
UnitStep[x] True
PwExpand[%]
0≤x ≤1
x
2
x
−2 < x < 0 ∨ 1 < x < 2
Out[4]=
0
x ≤ −2
1
x ≥2
Null True
In[4]:=
15
16. Mathematica
Expansión de una función con un número infinito de trozos sobre un intervalo
acotado.
PwExpand[Floor[x], 0 < x < 4]
0<x <1
0
1
1≤x <2
2
2≤x <3
Out[5]=
3
3≤x <4
Null True
In[5]:=
16
18. Mathematica
Gráfica de una función obtenida al incluir algunas opciones propias de Plot,
conjuntamente con la opción EndsSize.
In[7]:=
f [x_]:=
In[8]:=
x − Floor[2x] −1 ≤ x < 1
x
1≤x <4
2 + Floor[x]
PwPlot[ f [x], {x, −2, 5}, EndsSize → 5, PlotRange → All, · · · ]
5.
4.5
3.5
3.
Out[8]=
2.
1.5
1.
0.5
-1.-0.5
-0.5
0.5 1.
2.
3.
4.
18
19. Suma de funciones
Mathematica
Resultado correcto de la suma de dos funciones a trozos.
In[9]:=
f [x_]:=
7x − 3 −3 < x < 0
2x + 8 0 ≤ x < 5
In[10]:=
g[x_]:=
2x − 6 −2 < x < 2
x2 − 2 2 ≤ x < 4
(f + g)[x]
9x − 9
−2 < x < 0
4x + 2
0≤x <2
Out[11]=
2 + 2x + 6
2≤x <4
x
Null
True
In[11]:=
19
20. Producto de funciones
Mathematica
Resultado correcto del producto de dos funciones a trozos.
In[12]:=
f [x_]:=
7x − 3 −3 < x < 0
2x + 8 0 ≤ x < 5
In[13]:=
g[x_]:=
2x − 6 −2 < x < 2
x2 − 2 2 ≤ x < 4
(f ∗ g)[x]
−2 < x < 0
14x 2 − 48x + 18
4x 2 + 4x − 48
0≤x <2
Out[14]=
3 + 8x 2 − 4x − 16
2≤x <4
2x
Null
True
In[14]:=
20
21. Cociente de funciones
Mathematica
Resultado correcto del cociente de dos funciones a tozos.
In[15]:=
f [x_]:=
7x − 3 −3 < x < 0
2x + 8 0 ≤ x < 5
In[16]:=
g[x_]:=
2x − 6 −2 < x < 2
x2 − 2 2 ≤ x < 4
In[17]:=
(f /g)[x]
3−7x
6−2x
x+4
Out[17]=
x−3
2(x+4)
x 2 −2
Null
−2 < x < 0
0≤x <2
2≤x <4
True
21
22. Composición de funciones
Mathematica
Resultado correcto de la composición de dos funciones a tozos.
In[18]:=
f [x_]:=
7x − 3 −3 < x < 0
2x + 8 0 ≤ x < 5
In[19]:=
g[x_]:=
2x − 6 −2 < x < 2
x2 − 2 2 ≤ x < 4
(f ◦ g)[x]
3
2
14x − 45 2 < x <√
2+4
Out[20]=
2x
2≤x < 7
Null
True
In[20]:=
22
23. Inversa de una función
Mathematica
Resultado correcto de la inversa de una función.
In[21]:=
√
h[x_]:= x 2 + 7 + x
IFunction[{h[x] x > 0 , x]
√
x 2 −7
x> 7
2x
Out[22]=
Null
True
In[22]:=
23
24. Mathematica
Resultado correcto de la inversa de una función a trozos.
2x + 1 x ≤ 0
IFunction
,x
x2 + 1 x > 0
x−1
x ≤1
√ 2
Out[23]=
x −1 x >1
Null
True
In[23]:=
24
25. Bibliografía
I PANAQUÉ , R. Y V ELESMORO, R., Breve Manual del
Mathematica 5.1, Eumed.net, 2005,
http://www.eumed.net/libros-gratis/2005/ric2/ric2.pdf
W IKIPEDIA, Mathematica,
http://es.wikipedia.org/wiki/Mathematica
W OLFRAM M ATHEMATICA D OCUMENTATION C ENTER,
Element,
http://reference.wolfram.com/mathematica/ref/Element.html
W OLFRAM M ATHEMATICA D OCUMENTATION C ENTER,
Exists,
http://reference.wolfram.com/mathematica/ref/Exists.html
W OLFRAM M ATHEMATICA D OCUMENTATION C ENTER,
ForAll,
http://reference.wolfram.com/mathematica/ref/ForAll.html
25