【问题标题】:Maxima. How to prevent degree calculations千里马。如何防止度数计算
【发布时间】:2020-06-25 03:43:52
【问题描述】:

是否有可能阻止幂数表达式中的所有计算?也许通过预处理表达式或添加tellimp规则?还是其他方式?

例如,到

distrib (10 ^ 10 * (x + 1)); 

产生:

1000000000 x + 1000000000

改为发出:

10 ^ 10 * x + 10 ^ 10

同样

factor (10 ^ 10 * x + 10 ^ 10);

返回:

10 ^ 10 * (x + 1);

就像

factor(200);
2^3*5^2

代表数字的力量,只是永久的?

【问题讨论】:

    标签: numbers calculation maxima simplification


    【解决方案1】:

    有趣的问题,虽然我没有看到一个好的解决方案。这是我作为实验尝试的东西,即以因子形式显示整数。我正在使用 Maxima 5.44.0 + SBCL。

    (%i1) :lisp (defun integer-formatter (x) ($factor x))
    INTEGER-FORMATTER
    (%i1) :lisp (setf (get 'integer 'formatter) 'integer-formatter)
    INTEGER-FORMATTER
    (%i1) (x + 1000)^3;
                                           3  3 3
    (%o1)                            (x + 2  5 )
    (%i2) 10^10*(x + 1);
                                    2 5  2 5
    (%o2)                         (2    5   ) (x + 1)
    

    这只是对显示的修改;内部表示只是一个整数。

    (%i3) :lisp $%
    ((MTIMES SIMP) 10000000000 ((MPLUS SIMP) 1 $X))
    

    这似乎有点笨拙,因为例如2^(2*5)*5^(2*5) 并不比 10000000000 更容易理解。

    另一个问题是10^10 上的算术是否可以被抑制,因此它实际上保持为10^10,并且在内部不表示为10000000000。我很确定那会很困难。不幸的是,Maxima 不太擅长收回应用的身份,尤其是用于执行算术和其他操作的内置身份。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多