有没有办法告诉最大值一个表达式总是积极的?这是一个示例片段,它导致 maxima 询问表达式的问题sin(a)*x
:
声明([a,x,y],真实); ca: cos(a) = (x / (sqrt(x*x + y*y))); a1: 解决(ca,a)[1]; 解决(a1,y);
有没有办法告诉最大值一个表达式总是积极的?这是一个示例片段,它导致 maxima 询问表达式的问题sin(a)*x
:
声明([a,x,y],真实); ca: cos(a) = (x / (sqrt(x*x + y*y))); a1: 解决(ca,a)[1]; 解决(a1,y);
您可以使用assume
. 来自Maxima自己的文档:
-- 函数:假设 (, ..., ) 将谓词 , ... 添加到当前上下文。 如果谓词与中的谓词不一致或冗余 当前上下文,它不会添加到上下文中。上下文 从每次调用“assume”中累积谓词。 `assume' 返回一个列表,其元素是添加到的谓词 上下文或原子“冗余”或“不一致”,其中 适用的。 谓词 , ..., 只能是表达式 使用关系运算符 `=' 和 `>'。 谓词不能是文字相等 `=' 或文字不等式 `#' 表达式,也不能是谓词函数,例如 '整数'。 ` and ... and ' 形式的复合谓词 被识别,但不是 ` 或 ... 或 '。`不是 ' 如果是关系谓词则被识别。 'not ( and )' 和 'not 形式的表达式 ( 或 )' 无法识别。 千里马的扣减机制不是很强;有许多 不能由“是”确定的明显后果。这是 一个已知的弱点。 `assume' 评估它的论点。 参见“is”、“facts”、“forget”、“context”和“declare”。
Examples:
(%i1) assume (xx > 0, yy < -1, zz >= 0);
(%o1) [xx > 0, yy < - 1, zz >= 0]
(%i2) assume (aa < bb and bb < cc);
(%o2) [bb > aa, cc > bb]
(%i3) facts ();
(%o3) [xx > 0, - 1 > yy, zz >= 0, bb > aa, cc > bb]
(%i4) is (xx > yy);
(%o4) true
(%i5) is (yy < -yy);
(%o5) true
(%i6) is (sinh (bb - aa) > 0);
(%o6) true
(%i7) forget (bb > aa);
(%o7) [bb > aa]
(%i8) prederror : false;
(%o8) false
(%i9) is (sinh (bb - aa) > 0);
(%o9) unknown
(%i10) is (bb^2 < cc^2);
(%o10) unknown
当关系运算符的两边都有空格时,“假设”有效。换句话说,在我的例子中:假设(L> 0)不起作用,但假设(L > 0)确实起作用!