有没有办法告诉最大值一个表达式总是积极的?这是一个示例片段,它导致 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)确实起作用!