从最大值表达式

时间:2017-08-25 14:09:03

标签: maxima

假设在(wx)Maxima会话中我有以下

f:sin(x);
df:diff(f,x);

现在我想让它输出一个包含类似内容的文本文件,例如

  

如果$ f(x)= \ sin(x)$,则$ f ^ \ prime(x)= \ cos(x)$。

我找到了textex1函数,但我认为我需要一些额外的字符串处理才能完成我想要的工作。

任何帮助表示感谢。

编辑:进一步澄清。

Auto Multiple Choice是一款可以帮助您创建和管理问卷的软件。要声明问题,可以使用LaTeX语法。从AMC的documentation,问题如下:

\element{geographie}{
\begin{question}{Cameroon}
    Which is the capital city of Cameroon?
    \begin{choices}
    \correctchoice{Yaoundé}
    \wrongchoice{Douala}
    \wrongchoice{Abou-Dabi}
    \end{choices}
\end{question}
}

可以看出,它只是LaTeX。现在,通过一些修改,我可以将这个例子变成一个数学问题

\element{derivatives}{
\begin{question}{trig_fun_diff_1}
    If $f(x)=\sin(x)$ then $f^\prime(0)$ is
    \begin{choices}
    \correctchoice{$1$}
    \wrongchoice{$-1$}
    \wrongchoice{$0$}
    \end{choices}
\end{question}
}

这是我想要的那种输出。比方说,我会有一个函数列表然后执行一个循环来计算它们的导数等等。

2 个答案:

答案 0 :(得分:1)

嗯,tex是TeX输出功能。它可以通过texput(参见)在某种程度上进行自定义。

关于通过字符串操作进行后处理,我不推荐它。但是,如果您想沿着这条路前进,可以通过load(sregex)访问正则表达式函数。不幸的是,它还没有记录;有关示例,请参阅sregex.lisp的注释标题(在Maxima安装中的某个位置)。

答案 1 :(得分:1)

好的,回答您的更新问题。我的建议是将问题和答案作为表达式使用 - 首先构建问题列表,然后在结构中列出所需的列表,然后输出TeX文件作为最后一步。使用表达式通常比使用字符串更清晰,更简单。

E.g。这是一种简单的方法。我将使用3来定义一个结构,以便我可以按名称引用它的部分。

defstruct

你也可以写

defstruct (question (name, datum, item, correct, incorrect));

myq1 : new (question);
myq1@name : "trig_fun_diff_1";
myq1@datum : f(x) = sin(x);
myq1@item : 'at ('diff (f(x), x), x = 0);
myq1@correct : 1;
myq1@incorrect : [0, -1];

我不知道哪种形式对您更方便。

然后你可以创建一个与此类似的输出函数:

myq1 : question ("trig_fun_diff_1", f(x) = sin(x), 
                 'at ('diff (f(x), x), x = 0), 1, [0, -1]);

其中tex_question (q, output_stream) := (printf (output_stream, "\\begin{question}{~a}~%", q@name), printf (output_stream, "If $~a$, then $~a$ is:~%", tex1 (q@datum), tex1 (q@item)), printf (output_stream, "\\begin{choices}~%"), /* make a list comprising correct and incorrect here */ /* shuffle the list (see random_permutation) */ /* output each correct or incorrect here */ printf (output_stream, "\\end{choices}~%"), printf (output_stream, "\\end{question}~%)); output_stream返回的输出流(见)。

可能需要尝试不同的东西才能让衍生品以您想要的格式输出。我的建议是将其逻辑放入输出函数中。

使用表达式的一个副作用是输出除TeX之外的一些表示(例如纯文本,XML,HTML)是直截了当的。这可能会或可能不会对您的项目变得重要。