Как упростить log (8) / log (2) в Maxima CAS? - PullRequest
3 голосов
/ 17 октября 2019

Я хочу упростить log (8) / log (2)

Я знаю, что

log(8)/log(2) = log(2^3)/log(2) = 3*log(2)/log(2) = 3

возможно в Maxima , но у меня не работает:

Maxima 5.41.0 http://maxima.sourceforge.net
using Lisp GNU Common Lisp (GCL) GCL 2.6.12
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) log(8)/log(2);
                                    log(8)
(%o1)                               ------
                                    log(2)
(%i2) logexpand;
(%o2)                                true
(%i3) log(2^3)/log(2);
(%o3)                               log(8)
                                    ------
                                    log(2)

(%i4) logexpand;
(%o4)                                true

Я использую:

round(float(log(8)/log(2));

, но я думаю, что это не лучшее решение (я работаю с целыми числами)

Вопросы:

  1. Как это сделать?
  2. Почему это работает в Maxima doc , но не в моих Maxima?

1 Ответ

3 голосов
/ 17 октября 2019

Это работает для меня в Maxima 5.43.0:

(%i1) radcan(log(8)/log(2));
(%o1)                                  3
(%i2) radcan(log(2^3)/log(2));
(%o2)                                  3

Максима говорит, что

 -- Function: radcan (<expr>)

     Simplifies <expr>, which can contain logs, exponentials, and
     radicals, by converting it into a form which is canonical over a
     large class of expressions and a given ordering of variables; that
     is, all functionally equivalent forms are mapped into a unique
     form.  For a somewhat larger class of expressions, 'radcan'
     produces a regular form.  Two equivalent expressions in this class
     do not necessarily have the same appearance, but their difference
     can be simplified by 'radcan' to zero.

В этом контексте она разлагает число 8 и затем перемещает степень 3за пределами логарифма, что позволяет отменить оставшийся журнал 2:

(%i3) radcan(log(8));
(%o3)                              3 log(2)
...