Siguiente: Paquete rducon, Anterior: Paquete functs, Subir: simplification [Índice general][Índice]
El paquete ineq
contiene reglas de simplificación para desigualdades
Una sesión de ejemplo:
(%i1) load("ineq")$ Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. Warning: Putting rules on '+' or '*' is inefficient, and may not work. (%i2) a>=4; /* a sample inequality */ (%o2) a >= 4 (%i3) (b>c)+%; /* add a second, strict inequality */ (%o3) b + a > c + 4 (%i4) 7*(x<y); /* multiply by a positive number */ (%o4) 7 x < 7 y (%i5) -2*(x>=3*z); /* multiply by a negative number */ (%o5) - 2 x <= - 6 z (%i6) (1+a^2)*(1/(1+a^2)<=1); /* Maxima knows that 1+a^2 > 0 */ 2 (%o6) 1 <= a + 1 (%i7) assume(x>0)$ x*(2<3); /* assuming x>0 */ (%o7) 2 x < 3 x (%i8) a>=b; /* another inequality */ (%o8) a >= b (%i9) 3+%; /* add something */ (%o9) a + 3 >= b + 3 (%i10) %-3; /* subtract it out */ (%o10) a >= b (%i11) a>=c-b; /* yet another inequality */ (%o11) a >= c - b (%i12) b+%; /* add b to both sides */ (%o12) b + a >= c (%i13) %-c; /* subtract c from both sides */ (%o13) - c + b + a >= 0 (%i14) -%; /* multiply by -1 */ (%o14) c - b - a <= 0 (%i15) (z-1)^2>-2*z; /* determining truth of assertion */ 2 (%o15) (z - 1) > - 2 z (%i16) expand(%)+2*z; /* expand this and add 2*z to both sides */ 2 (%o16) z + 1 > 0 (%i17) %,pred; (%o17) true
Debe tenerse cuidado con el uso de paréntesis que incluyan desigualdades;
si se escribe (A > B) + (C = 5)
el resultado es A + C > B + 5
,
pero A > B + C = 5
es un error sintáctico y (A > B + C) = 5
es una cosa completamente diferente.
Ejecútese disprule (all)
para ver la lista completa de las
reglas definidas.
Maxima preguntará al usuario cuando desconozca el signo de una cantidad que multiplica a una desigualdad.
Los fallos más comunes son:
eq: a > b; 2*eq; % - eq;
Otro problema es el producto de una desigualdad por cero.
Si se escribe x*some_inequality
y Maxima pregunta por
el signo de x
y se responde que vale zero
(o z
),
el programa devuelve x*some_inequality
sin hacer uso de la
información de que x
es 0. En tal caso se debería
escribir ev (%, x: 0)
, ya que la base de datos sólo será utilizada
para fines comparativos y no para evaluar x
.
El usuario puede apreciar que las respuestas son más lentas al cargarse este paquete,
ya que el simplificador deberá examinar más reglas que cuando no se hace uso del
paquete, por lo que puede ser conveniente borrar estas reglas cuando ya no se haga
uso de ellas. Ejecútese kill (rules)
para eliminar todas las reglas
(incluidas las definidas por el usuario); también es posible eliminar
parte de ellas o utilizar remrule
sobre una reglas específica.
Nótese que si se carga este paquete después de haber definido otras reglas
de igual nombre,se borrarán las antiguas. Las reglas de este paquete son:
*rule1
, ..., *rule8
,
+rule1
, ..., +rule18
,
debiéndose encerrar entre comillas el nombre de la reglas para referenciarse a ellas,
como en remrule ("+", "+rule1")
para eliminar la primera regla sobre "+"
,
o disprule ("*rule2")
para mostrar la definición de la segunda regla
multiplicativa.
Siguiente: Paquete rducon, Anterior: Paquete functs, Subir: simplification [Índice general][Índice]