[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
7.1 Funciones y variables para simplificación |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Cuando se invoca a asksign
, la expresión que se va a analizar es precisamente askexp
.
La llamada askinteger (expr, integer)
intenta determinar a partir de la base de datos de assume
si expr es un entero. La función askinteger
pide más información al usuario si no encuentra la respuesta,
tratando de almacenar la nueva información en la base de datos si es posible. La llamada
askinteger (expr)
equivale a askinteger (expr, integer)
.
La llamadas askinteger (expr, even)
ay askinteger (expr, odd)
intentan determinar si expr es un entero par o impar, respectivamente.
Primero intenta determinar si la expresión especificada es positiva, negativa o cero. Si no lo consigue, planteará al usuario preguntas que le ayuden a conpletar la deducción. Las respuestas del usuario son almacenadas en la base de datos durante el tiempo que dure este cálculo. El valor que al final devuelva asksign
será pos
, neg
o zero
.
La función demoivre (expr)
convierte una expresión sin modificar la variable global demoivre
.
Cuando demoivre
vale true
, los exponenciales complejos se convierten en expresiones equivalentes pero en términos de las funciones trigonométricas:
exp (a + b*%i)
se reduce a %e^a * (cos(b) + %i*sin(b))
si b
no contiene a %i
. Las expresiones a
y b
no se expanden.
El valor por defecto de demoivre
es false
.
La función exponentialize
convierte funciones trigonométricas e hiperbólicas a la forma exponencial, por lo que demoivre
y exponentialize
no pueden valer true
al mismo tiempo.
Valor por defecto: real
Si domain
vale complex
, sqrt (x^2)
permanecerá como
sqrt (x^2)
en lugar de devolver abs(x)
.
Expande la expresión expr. Los productos de sumas y de sumas con exponentes se multiplican, los numeradores de las expresiones racionales que son sumas se separan en sus respectivos términos, y las multiplicaciones (tanto las que son conmutativas como las que no) se distribuyen sobre las sumas en todos los niveles de expr.
En el caso de los polinomios es más aconsejable utilizar ratexpand
, que utiliza un algoritmo más eficiente.
Las variables maxnegex
y maxposex
controlan los máximos exponentes negativos y positivos que se van a expandir.
La llamada expand (expr, p, n)
expande expr asignando a maxposex
el valor p y a maxnegex
el n. Esto es útil para expandir sólo parte de la expresión.
La variable expon
guarda el mayor exponente negativo que será expandido automáticamente, independientemente de expand
. Por ejemplo, si expon
vale 4 entonces (x+1)^(-5)
no se expandirá automáticamente.
La variable expop
guarda el mayor exponente positivo que será expandido automáticamente. Así, (x+1)^3
se expandirá automáticamente sólo si expop
es mayor o igual que 3. Si se quiere expandir (x+1)^n
, siendo n
mayor que expop
, entonces expand ((x+1)^n)
se desarrollará sólo si maxposex
no es menor que n
.
La variable expand
utilizada con ev
provocará una expansión.
El fichero `simplification/facexp.mac'
contiene algunas funciones relacionadas con expand
(en concreto, facsum
, factorfacsum
y collectterms
, que se cargan automáticamente) y variables (nextlayerfactor
y facsum_combine
) que permiten al usuario estructurar las expresiones controlando la expansión.
En `simplification/facexp.usg' se pueden encontrar breves descripciones de estas funciones.
Se accederá a una demostración con la instrucción demo("facexp")
.
Expande la expresión expr
con respecto a las variables x_1, ..., x_n.
Todos los productos que contengan a las variables aparecen explícitamente. El resultado que se obtenga no tendr'a productos de sumas de expresiones que contengan a las variables. Los argumentos x_1, ..., x_n
pueden ser variables, operadores o expresiones.
Por defecto, no se expanden los denominadores, pero esto puede cambiarse mediante el uso de la variable expandwrt_denom
.
Esta función se carga automáticamente de `simplification/stopex.mac'.
Valor por defecto: false
La variable expandwrt_denom
controla el tratamiento de las expresiones racinales por parte de expandwrt
. Si vale true
, se expandirán tanto el numerador como el denominador de la expresión respecto de los argumentos de expandwrt
, pero si expandwrt_denom
vale false
, sólo se expandirá el numerador.
Es similar a expandwrt
, pero trata a las expresiones que son productos de una forma algo diferente. La función
expandwrt_factored
expande sólo aquellos factores de expr
que contienen a las variables x_1, ..., x_n.
Esta función se carga automáticamente de `simplification/stopex.mac'.
Valor por defecto: 0
La variable expon
guarda el mayor exponente negativo que será expandido automáticamente, independientemente de expand
. Por ejemplo, si expon
vale 4 entonces (x+1)^(-5)
no se expandirá automáticamente.
La función exponentialize (expr)
convierte las funciones trigonométricas e hiperbólicas de expr a exponenciales, sin alterar la variable global exponentialize
.
Cuando la variable exponentialize
vale true
, todas las funciones trigonométricas e hiperbólicas se convierten a forma exponencial. El valor por defecto es false
.
La función demoivre
convierte funciones trigonométricas e hiperbólicas a la forma exponencial, por lo que demoivre
y exponentialize
no pueden valer true
al mismo tiempo.
Valor por defecto: 0
La variable expop
guarda el mayor exponente positivo que será expandido automáticamente. Así, (x+1)^3
se expandirá automáticamente sólo si expop
es mayor o igual que 3. Si se quiere expandir (x+1)^n
, siendo n
mayor que expop
, entonces expand ((x+1)^n)
se desarrollará sólo si maxposex
no es menor que n
.
Valor por defecto: -1
La variable factlim
especifica el mayor factorial que será expandido automáticamente. Si su valor es -1, entonces se expandirán todos los enteros.
Mueve los factores multiplicativos que están fuera de un sumatorio hacia dentro de éste. Si el índice aparece en la expresión exterior, entonce intosum
busca un índice razonable, lo mismo que hace con sumcontract
. Se trata de la operación contraria a extraer factores comunes de los sumatorios.
En algunos caos puede ser necesario hacer scanmap (multthru, expr)
antes que intosum
.
La instrucción declare (g, lassociative)
le indica al simplificador de Maxima que g
es asociativo por la izquierda. Por ejemplo, g (g (a, b), g (c, d))
se reduce a g (g (g (a, b), c), d)
.
Es una de las propiedades de operadores de Maxima. Si la función univariante f
se declara lineal, la expansión de f(x + y)
produce f(x) + f(y)
, f(a*x)
produce a*f(x)
si a
es una constante. Si la función tiene dos o más argumentos, la linealidad se interpreta como la de sum
o integrate
, esto es, f (a*x + b, x)
produce a*f(x,x) + b*f(1,x)
si a
y b
no contienen a x
.
linear
equivale a additive
y outative
.
Véase también opproperties
.
Se pueden declarar variables de tipo mainvar
. El orden de los átomos
es: números < constantes (como %e
o %pi
) <
escalares < otras variables < "mainvars". Por ejemplo, compárese expand ((X+Y)^4)
con (declare (x, mainvar), expand ((x+y)^4))
. (Nota: Se debe tener cuidado si se quiere hacer uso de esta declaración. Por ejemplo, si se resta una expresión en la que x
ha sido declarada como mainvar
de otra en la que x
no es mainvar
, puede ser necesario volver a simplificar, ev (expr, simp)
, a fin de obtener cancelaciones. Además, si se guarda una expresión en la que x
es mainvar
, quizás sea necesario guardar también x
.)
Valor por defecto: 10000
La variable maxapplydepth
es la máxima profundidad a la que van a introducirse apply1
y apply2
.
Valor por defecto: 10000
La variable maxapplyheight
es la m2'axima altura a la que escalará applyb1
antes de detenerse.
Valor por defecto: 1000
La variable maxnegex
es el mayor exponente negativo que expandirá la función expand
. Véase también maxposex
.
Valor por defecto: 1000
La variable maxposex
es el mayor exponenteque expandirá la función expand
. Véase también maxnegex
.
La instrucción declare (f, multiplicative)
indica al simplificador de Maxima que f
is multiplicativa.
f
es univariante, cada vez que el simplificador encuentre a f
aplicad a un producto, f
se distribuirá sobre ese producto. Por ejemplo, f(x*y)
se reduciría a f(x)*f(y)
.
f
es una función de 2 o más argumentos, la multiplicabilidad se define como multiplicabilidad para el primer argumento de f
, de modo que f (g(x) * h(x), x)
se reduciría a f (g(x) ,x) * f (h(x), x)
.
Esta transformación no se realiza cuando f
se aplica a expresiones de la forma product (x[i], i, m, n)
.
Valor por defecto: true
Si negdistrib
vale true
, -1 se distribuye sobre una expresión. Por ejemplo, -(x + y)
se transforma en - y - x
. Dándole el valor false
se mostrará - (x + y)
tal cual. Esto puede ser útil, pero también peligroso; al igual que el indicador simp
, no conviene asignarle el valor false
.
Valor por defecto: true
Si negsumdispflag
vale true
, x - y
se muestra como x - y
en lugar de - y + x
. Dándole el valor false
se realiza un análisis adicional para que no se representen de forma muy diferente dos expresiones similares. Una aplicación puede ser para que a + %i*b
y a - %i*b
se representen ambas de la misma manera.
El símbolo noeval
evita la fase de evaluación de ev
. Es útil conjuntamente con otras variables globales y para poder volver a simplificar expresiones sin tener que evaluarlas otra vez.
El símbolo noun
es una de las opciones de la instrucción declare
. Hace que una función se declare como "nombre", lo que significa que no se evaluará automáticamente.
Valor por defecto: false
Si noundisp
vale true
, los nombres se muestran precedidos de un apóstrofo. Siempre debe valer true
cuando se quiera representar la definición de funciones.
El símbolo nouns
es una evflag
, lo que significa que cuando se utilice como una opción de la instrucción ev
, todas las formas nominales que aparezcan en una expresión las convierte en verbales, esto es, las evalúa. Véanse también noun
, nounify
, verb
y verbify
.
El símbolo numer
hace algunas funciones matemáticas
con argumentos numéricos se evalúen como decimales de punto flotante.
También hace que las variables de una expresión a las cuales se les ha
asignado un número sean sustituidas por sus valores.
Además, activa la variable float
.
Declara las variables x_1
, ..., x_n asignándoles los valores numéricos expr_1
, ..., expr_n
.
El valor numérico se evalúa y sustituye a la variable en cualquier expresión en la que ésta aparezca si numer
toma el valor true
. Véase también ev
.
Las expresiones expr_1
, ..., expr_n
pueden ser expresiones no necesariamente numéricas.
La variable opproperties
es la lista con las propiedades especiales de los operadores reconocidas por el simplificador de Maxima:
linear
, additive
, multiplicative
, outative
, evenfun
,
oddfun
, commutative
, symmetric
, antisymmetric
, nary
,
lassociative
, rassociative
.
Valor por defecto: true
Si opsubst
vale false
, subst
no sustituye el operdor de una expresión, de manera que (opsubst: false, subst (x^2, r, r+r[0]))
trabajará correctamente.
La instrucción declare (f, outative)
le indica al simplificador de Maxima que los factores constantes del argumento de la función f
pueden ser extraídos.
f
es univariante, cada vez que el simplificador se encuentra con f
aplicada a un producto, éste será particionado en factores que son constantes y factores que no lo son, siendo entonces los constantes extraídos de la función. Por ejemplo, f(a*x)
se reducirá a a*f(x)
siendo a
una constante. Las constantes no atómicas no serán extraídas.
f
es una función de 2 o más argumentos, esta propiedad se define como en sum
o integrate
, esto es, f (a*g(x), x)
se reducirá a a * f(g(x), x)
si a
no contiene a x
.
Las funciones sum
, integrate
y limit
han sido todas declaradas con la propiedad outative
.
La instrucción declare (f, posfun)
declara a f
como función positiva, de forma que
is (f(x) > 0)
devolverá true
.
Simplifica la expresión expr, que puede contener logaritmos, exponenciales y
radicales, convirtiéndola a una forma canónica, lo que significa que todas las expresiones funcionalmente equivalentes
se reducen a una forma única. Ciertas expresiones, sin embargo, son reducidas por radcan
a una forma regular, lo que significa que dos expresiones equivalentes no tienen necesariamente el mismo aspecto, pero su diferencia puede ser reducida por radcan
a cero.
Con algunas expresiones radcan
puede consunir mucho tiempo. Este es el coste por explorar ciertas relaciones entre las componentes de la expresión para simplificaciones basadas en factorizaciones y expansiones parciales de fracciones de exponentes.
Si %e_to_numlog
vale true
,
%e^(r*log(expr))
se reduce a expr^r
si r
es un número racional.
Si radexpand
vale false
, ciertas transformaciones se inhiben;
radcan (sqrt (1-x))
se mantiene como sqrt (1-x)
y no se reduce a %i sqrt (x-1)
, o
radcan (sqrt (x^2 - 2*x + 11))
se mantiene como sqrt (x^2 - 2*x + 1)
sin reducirse ax - 1
.
La instrucción example (radcan)
muestra algunos ejemplos.
Valor por defecto: true
La variable radexpand
controla algunas simplificaciones de radicales.
Si radexpand
vale all
, las raíces n-ésimas de los factores de un producto que sean potencias de n se extraen del símbolo radical. Por ejemplo, si radexpand
vale all
, sqrt (16*x^2)
se reduce a 4*x
.
Más concretamente, considérese sqrt (x^2)
.
radexpand
vale all
o se ha ejecutado assume (x > 0)
,
sqrt(x^2)
se reduce a x
.
radexpand
vale true
y domain
es real
(su valor por defecto),
sqrt(x^2)
se reduce a abs(x)
.
radexpand
vale false
o radexpand
vale true
y domain
es complex
,
sqrt(x^2)
no se simplifica.
Nótese que domain
sólo se tiene en cuenta si radexpand
vale true
.
Valor por defecto: false
Si radsubstflag
vale true
se permite a ratsubst
hacer la sustitución u
por sqrt (x)
in x
.
La instrucción declare (g, rassociative)
le indica al simplificador de Maxima que g
es asociativa por la derecha. Por ejemplo, g(g(a, b), g(c, d))
se reduce a g(a, g(b, g(c, d)))
.
Es el "Sequential Comparative Simplification" (método debido a Stoute).
La función scsimp
intenta simplificar expr de acuerdo con las reglas rule_1, ..., rule_n.
Si se obtiene una expresión más pequeña, el proceso se repite. En caso contrario, después de que se hayan intentado todas las simplificaciones, devuelve la respuesta original.
La instrucción example (scsimp)
muestra algunos ejemplos.
Valor por defecto: false
Si simpsum
vale true
, se simplifica el resultado de un sumatorio sum
. Esta simplificación podrá producir en ocasiones una expresión compacta. Si simpsum
vale false
o si se utiliza la forma apostrofada 'sum
, el valor es una forma nominal que representa la notación sigma habitual en matemáticas.
Combina todos los sumatorios de una suma cuyos límites inferiores y superiores difieren por constantes. El resultado es una expresión que contiene un sumatorio para conjunto de tales sumatorios. La función sumcontract
combina todos los sumatorios compatibles y utiliza uno de los índices de uno de los sumatorios si puede, si no formará un índice que sea razonable.
Puede ser necesario hacer intosum (expr)
antes que sumcontract
.
Valor por defecto: false
Si sumexpand
vale true
, productos de sumatorios y de sumatorios con exponentes se reducen a sumatorios anidados.
Véase también cauchysum
.
Ejemplos:
(%i1) sumexpand: true$ (%i2) sum (f (i), i, 0, m) * sum (g (j), j, 0, n); m n ==== ==== \ \ (%o2) > > f(i1) g(i2) / / ==== ==== i1 = 0 i2 = 0 (%i3) sum (f (i), i, 0, m)^2; m m ==== ==== \ \ (%o3) > > f(i3) f(i4) / / ==== ==== i3 = 0 i4 = 0
Valor por defecto: true
Si sumsplitfact
vale false
,
minfactorial
se aplica después de factcomb
.
La instrucción declare (h, symmetric)
le indica al simplificador de Maxima que h
es una función simétrica. Por ejemplo, h (x, z, y)
se reduce a h (x, y, z)
.
El nombre commutative
es sinónimo de symmetric
.
Devuelve true
si y sólo si expr contiene un operador o función no reconocido por el simplificador de Maxima.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Robert Dodier on diciembre, 22 2007 using texi2html 1.76.