Simplify 简化常数

Simplify 简化常数,simplify,maxima,Simplify,Maxima,在下面的表达式中,x是变量,a、b、c、k是未定义的常数。在极大值中是否有简化常数的函数 例如 x^2-2a+b+c变成x^2+k 2^x+a/b+c^2变成2^x+k 它没有特定的功能,但我认为您可以通过免费创建一些东西。例如: (%i12) merge_constants (expr, var, newconst) := block ([freeof_var : sublist (args (expr), lambda ([e1], freeof (var, e1)))]

在下面的表达式中,x是变量,a、b、c、k是未定义的常数。在极大值中是否有简化常数的函数

例如

  • x^2-2a+b+c变成x^2+k
  • 2^x+a/b+c^2变成2^x+k

    • 它没有特定的功能,但我认为您可以通过
      免费创建一些东西。例如:

      (%i12) merge_constants (expr, var, newconst) :=
               block ([freeof_var : sublist (args (expr), lambda ([e1], freeof (var, e1)))],
                 expr - apply ("+", freeof_var) + newconst) $
      (%i13) merge_constants (x^2 - 2*a + b + c, x, k);
                                           2
      (%o13)                              x  + k
      (%i14) merge_constants (2^x + a/b + c^2, x, k);
                                           x
      (%o14)                              2  + k
      (%i15) merge_constants (sin(u) + u*cos(v) + v^2 + tan(w), u, m);
      (%o15)                       u cos(v) + sin(u) + m
      

      此函数
      merge\u constants
      只是第一次尝试。我相信有办法改进它。例如,返回
      freeof_var
      值以查看哪些内容被
      newconst
      替换。无论如何,我希望这是有用的。

      这类问题有一个解决方案。(我不确定这个答案是否应该在这里重复,这个问题是否应该作为这个问题的重复而结束,或者这个问题是否应该仅仅引用那个问题。)

      重新讨论这个话题,实际上在一定程度上是存在的。用加法项展开表达式,将公式分成两个袋子B1和B2,使B1包含x,B2包含其他剩余项,然后用B交换一个新的未知变量,如alpha。解是α加上B1中的项之和。