maxima - 如何获得最大值来有效地简化日志

标签 maxima

我有一个 maxima 脚本,可以生成术语,在运行 logcontract 后,我​​得到一个包含许多该类型术语的表达式

log((A^n)/(B^n))

其中 A 和 B 都是非平凡表达式

如何获得最大值将其重新排列为n*log(A/B),以便我可以根据log(A/B)执行变量替换和因子计算

我明确需要它的形式为log(A/B),而不是log(A)-log(B)

A 和 B 可以假设为正。

最佳答案

好的,拿两个。这是另一种通过模式匹配的方法。

(%i1) matchdeclare ([aa, bb, nn], all);
(%o1)                         done
(%i2) defrule (mylogrule, log((bb^nn)/(aa^nn)), nn*log(bb/aa));
                                 nn
                               bb           bb
(%o2)          mylogrule : log(----) -> log(--) nn
                                 nn         aa
                               aa
(%i3) log(A^4/B^4);
                                  4
                                 A
(%o3)                        log(--)
                                  4
                                 B
(%i4) apply1 (%o3, mylogrule);
                                  A
(%o4)                       4 log(-)
                                  B
(%i5) log(A^k/B^k);
                                  k
                                 A
(%o5)                        log(--)
                                  k
                                 B
(%i6) apply1 (%o5, mylogrule);
                                A
(%o6)                       log(-) k
                                B

请注意,apply1 会查找 log(...) 表达式,并在复杂表达式中应用规则(不仅仅是顶级运算符为 的表达式)日志)。

我将规则写为 log(bb^nn/aa^nn) 因为 log(aa^nn/bb^nn) 结果为 - nn*log(bb/aa) ...这没有错,但很不方便。可能与参数匹配的顺序有关;我没有调查。

关于maxima - 如何获得最大值来有效地简化日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63921339/

相关文章:

Maxima - 分段函数的微分

plot - 如何创建带有最大值的 slider 的图?

clojure - 如何将复杂的递归从 clojure 转换为 maxima?

input - 简单输入变音符号和上标

Maxima - "expt"是什么?

matrix - Maxima:简化矩阵分量

MySQL - 在没有 LIMIT 或 JOIN 的情况下选择指定搜索的最大值

expression - 如何在Maxima中添加表达式和进行数值计算?

maxima - 强制重新评估最大变量