0

最大值输入

2*sqrt(2)

默认返回输出

2^(3/2)

我怎样才能让 Maxima 只返回 2*sqrt(2) ?

(我在 tex() 函数中使用它。)

4

3 回答 3

0

你可以这样做:

(%i1) matchdeclare(n_, integerp,m_, integerp)$
      tellsimp(n_*sqrt(m_), n_*sqrt(box(m_)))$

之后:

(%i3) 2*sqrt(2);
(%o3) 2 √2

(%i4) sqrt(3)*9;
(%o4) 9 √3

你会注意到输出中平方根符号下的数字是红色的,因为 box()。但是如果你选择 wxMaxima 中的表达式,然后弹出“Copy LaTeX”,你会得到你想要的,例如

\[2\,\sqrt{2}\]

不幸的是,如果您尝试使用 tex(2*sqrt(2)) 来获取 TeX 代码,那么您会得到$$2\,\sqrt{\boxed{2}}$$

于 2015-01-07T20:10:02.730 回答
0

据我所知,没有办法阻止 Maxima 简化2*sqrt(2)2^(3/2),但有两个可能难以使用的例外情况:

(1) 完全关闭简化。但这会禁用所有简化,例如1 + 1简化为2. 但是,如果您想尝试一下:只需输入simp : false;.

(2) 禁用sqrt(2)2^(1/2)via的简化:lisp (setf (get '%sqrt 'operators) nil)但是 Maxima 在很大程度上不知道如何处理sqrt

我不推荐其中任何一种。

于 2014-07-08T23:01:44.320 回答
0

你可以尝试类似的东西

simp: false;
tex(2*sqrt(2));
block code...;
simp: true;

这样您就不必永久禁用简化。

于 2014-07-09T22:49:03.067 回答