问题 停止最大值从询问正,负或零


有没有办法告诉maxima一个表达总是积极的?下面是一个示例代码段,它会让maxima向表达式提出问题 sin(a)*x

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

12881
2018-01-12 07:04


起源



答案:


您可以使用 assume。从Maxima自己的文档:

     - 功能:假设(,...,)
     将谓词,...添加到当前上下文。
     如果谓词与谓词中的谓词不一致或冗余
     当前上下文,它不会添加到上下文中。上下文
     从每次调用累加谓词'assume'。

     `assume'返回一个列表,其元素是添加的谓词
     上下文或原子“冗余”或“不一致”在哪里
     适用。

     谓词,......,只能是表达式
     使用关系运算符`='和`>'。
     谓词不能是字面上的平等“=”或字面上的不平等
     `#'表达式,也不能是谓词函数
     `integerp”。

     形式为`和......和'的复合谓词
     是公认的,但不是'或......或'。 `不
     '如果是关系谓词,则被识别。
     表达式'not(and)'和`not
     (或)'不被承认。

     千里马的演绎机制不是很强;有许多
     “是”无法确定的明显后果。这是
     一个已知的弱点。

     “假设”评估其论点。

     另见`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

13
2018-01-12 07:13



我不知道假设对表达式有效,但你是对的,添加这些行回答了我的问题:假设(cos(a)> = 0);假设(x> 0); - Willem
有办法搞定 solve 只返回变量为正的解决方案? assume 没用。 - endolith


答案:


您可以使用 assume。从Maxima自己的文档:

     - 功能:假设(,...,)
     将谓词,...添加到当前上下文。
     如果谓词与谓词中的谓词不一致或冗余
     当前上下文,它不会添加到上下文中。上下文
     从每次调用累加谓词'assume'。

     `assume'返回一个列表,其元素是添加的谓词
     上下文或原子“冗余”或“不一致”在哪里
     适用。

     谓词,......,只能是表达式
     使用关系运算符`='和`>'。
     谓词不能是字面上的平等“=”或字面上的不平等
     `#'表达式,也不能是谓词函数
     `integerp”。

     形式为`和......和'的复合谓词
     是公认的,但不是'或......或'。 `不
     '如果是关系谓词,则被识别。
     表达式'not(and)'和`not
     (或)'不被承认。

     千里马的演绎机制不是很强;有许多
     “是”无法确定的明显后果。这是
     一个已知的弱点。

     “假设”评估其论点。

     另见`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

13
2018-01-12 07:13



我不知道假设对表达式有效,但你是对的,添加这些行回答了我的问题:假设(cos(a)> = 0);假设(x> 0); - Willem
有办法搞定 solve 只返回变量为正的解决方案? assume 没用。 - endolith