如何防止最大值将 2*sqrt(2) 的输出重写为 2^(3/2)?

问题描述 投票:0回答:4

的最大输入
2*sqrt(2)

默认返回输出

2^(3/2)

如何让 Maxima 返回 2*sqrt(2) ?

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

output tex maxima simplification
4个回答
0
投票

据我所知,没有办法阻止 Maxima 将

2*sqrt(2)
简化为
2^(3/2)
,有两个可能难以使用的例外:

(1) 完全关闭简化。但这会禁用所有简化,例如

1 + 1
简化为
2
。但如果你想尝试一下:只需输入
simp : false;
.

(2) 通过

sqrt(2)
禁用
2^(1/2)
:lisp (setf (get '%sqrt 'operators) nil)
的简化但是Maxima在大多数情况下不知道如何处理
sqrt
.

我不推荐其中任何一个。


0
投票

你可以尝试类似的东西

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

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


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”,你会得到你想要的,e。 g.

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

不幸的是,如果您尝试 tex(2*sqrt(2)) 来获取 TeX 代码,您将得到

$$2\,\sqrt{\boxed{2}}$$


0
投票

另一个技巧是使用非交换乘法

.
而不是
*
并关闭
dotconstrules

(%i1) texput(".", " ", nary)$

(%i2) 2 . sqrt(2), dotconstrules: false;
(%o2)                             2 . sqrt(2)
(%i3) tex(%)$
$$2 \sqrt{2}$$

我认为这个解决方案可能有用,因为您可以避免在表达式的一部分进行简化,而在另一部分仍然像往常一样简化:

(%i4) 2 . sqrt(2) * sqrt(4) / 2, dotconstrules: false;
(%o4)                             2 . sqrt(2)
© www.soinside.com 2019 - 2024. All rights reserved.