13

有没有办法告诉最大值一个表达式总是积极的?这是一个示例片段,它导致 maxima 询问表达式的问题sin(a)*x

声明([a,x,y],真实);
 ca: cos(a) = (x / (sqrt(x*x + y*y)));
 a1: 解决(ca,a)[1];
 解决(a1,y);
4

2 回答 2

14

您可以使用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
于 2013-01-12T07:13:19.013 回答
-1

当关系运算符的两边都有空格时,“假设”有效。换句话说,在我的例子中:假设(L> 0)不起作用,但假设(L > 0)确实起作用!

于 2021-01-19T12:34:45.673 回答