我想要一个命令\simp
,它接受代数表达式 E_1 并输出 E_1 = E_2,其中 E_2 是 E_2 的简化形式。为此,我尝试使用sagetex
如下方法:
\documentclass{article}
\usepackage{sagetex}
\newcommand{\simp}[1]{$\sage{#1} = \sage{simplify(#1)}$}
\pagestyle{empty}
\begin{document}
\simp{3*x^(7-2) + 3*x^5}
\end{document}
其结果是
而不是在
。
知道如何修复此问题吗?从 Sage 的角度解决这个问题似乎并不容易,因为 Sage 似乎缺少全局保留功能:http://trac.sagemath.org/ticket/10035
那么,从 LaTeX 角度来说,有没有什么办法可以优雅地解决这个问题呢?
此方法还有另外两个小问题:
我希望当有类似内容时将其
*
打印为,但如果有则根本不打印\cdot
3*(x + y)
3*x
我不确定正确的间距(参见我的第二个输出中的差异)以及如何获取它。
我也确实想使用 Sage 来实现这种简化,而不是手工制作的乳胶溶液,因为我计划在未来做类似但更复杂的事情,因此在后台使用计算机代数系统的功能是个好主意。
答案1
我不确定我是否理解了你的问题,但我使用 sagetex 的方式与你所说的类似。以下是我处理它的方式。
\documentclass{article}
\usepackage{amsmath}
\usepackage{sagetex}
\begin{document}
\begin{sagesilent}
b1 = 3
b2 = 3
e1 = 7
e2 = 2
e3 = 5
t1 = b1*x^(e1-e2)
t2 = b2*x^e3
\end{sagesilent}
\noindent $\sage{b1}x^{\sage{e1}-\sage{e2}}+\sage{b2}x^{\sage{e3}}$\\
$\sage{b1}x^{\sage{e1-e2}}+\sage{b2}x^{\sage{e3}}$\\
$\sage{t1+t2}$\\
Therefore, $\sage{b1}x^{\sage{e1}-\sage{e2}}+\sage{b2}x^{\sage{e3}}=\sage{t1+t2}$
\end{document}
通过让 sage 在您需要时进行简化(例如获取指数或让 sage 在 \sage{b1}x^{\sage{e1-e2}} 中执行指数减法),您可以在解决方案中显示所需的步骤。这意味着您正在设置 latex 格式;如果您想要,请\cdot
输入它而不是 *。
以下是使用 Sagemath Cloud 的输出;这回答了您的问题吗?:
答案2
不确定你到底想要什么,但是我在 Sage 中做了以下操作来产生你的结果:
\documentclass{article}
\usepackage{sagetex}
\newcommand{\simp}[1]{$3x^{(7-2)} + 3x^5$}
\pagestyle{empty}
\begin{document}
\simp{#1} $= \sage{simplify(3*x^(7-2) + 3*x^5)}$
\end{document}
Sage 仍在开发中。在将其推送到 Machines 之前,我们自己应该做一些工作。这是最终的输出: