我目前正在学习代数课程,我发现自己正在输入多项式
$a_nx^n+\ldots+a_1x+a_0$
一遍又一遍,我想知道我是否可以为这种多项式形式创建一个快捷方式,这样我就可以控制我想要的系数和变量。
我知道多项式包存在,但我似乎无法将“ldots”纳入它提供的命令中。
答案1
我认为您需要一个接受两个参数的宏:系数的“名称”和幂项底数的“名称”。名称一般都是单个字母,对吗?(您在评论中指出,多项式的最高阶和最低阶始终分别为n
和0
。)\pn
以下示例中调用的宏满足这些条件。
顺便说一句,二元运算符(例如+
)之间使用的印刷省略号通常为\cdots
,而不是\ldots
。(字母“c”和“l”分别表示居中(在数学线上)或低的(在印刷基线上)。
\documentclass{article}
%% The following macro must be used only in math mode:
\newcommand\pn[2]{#1_n #2^n + \cdots + #1_1 #2 + #1_0}
\begin{document}
$\pn{a}{x}$
$\pn{\lambda}{z}$
$\pn{\alpha}{\xi}$
\end{document}
附录解决OP的后续请求:假设并非所有多项式都是阶数n
,但事实上大多数多项式都是阶数n
。在这种情况下,修改\pn
宏使其采用3个而不是2个参数是有意义的,并且附加参数n
默认采用该值。
\documentclass{article}
%% The following macro must be used only in math mode:
\newcommand\pn[3][n]{#2_{#1} #3^{#1} + \cdots + #2_1 #3 + #2_0}
\begin{document}
$\pn{a}{x}$ % use default order (n) of polynomial
$\pn[4]{\lambda}{z}$
$\pn[q]{\alpha}{\xi}$
\end{document}
答案2
语法相当简单:
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\poly}{O{}}
{
\group_begin:
\keys_set:nn { poly } { #1 }
\kam_poly:
\group_end:
}
\keys_define:nn { poly }
{
degree .tl_set:N = \l__poly_degree_tl,
var .tl_set:N = \l__poly_var_tl,
coef .tl_set:N = \l__poly_coef_tl,
reverse .bool_set:N = \l__poly_reverse_bool,
degree .initial:n = n,
var .initial:n = x,
coef .initial:n = a,
reverse .default:n = true,
}
\cs_new_protected:Nn \kam_poly:
{
\bool_if:NTF \l__poly_reverse_bool
{
\l__poly_coef_tl \sb { 0 } +
\l__poly_coef_tl \sb { 1 } \l__poly_var_tl +
\dots +
\l__poly_coef_tl \sb { \l__poly_degree_tl }
\l__poly_var_tl \sp { \l__poly_degree_tl }
}
{
\l__poly_coef_tl \sb { \l__poly_degree_tl }
\l__poly_var_tl \sp { \l__poly_degree_tl } +
\dots +
\l__poly_coef_tl \sb { 1 } \l__poly_var_tl +
\l__poly_coef_tl \sb { 0 }
}
}
\ExplSyntaxOff
\begin{document}
$\poly$
$\poly[var=z]$
$\poly[var=t,degree=m,coef=b]$
$\poly[var=t,degree=m,coef=b,reverse]$
\end{document}
可以按任意顺序指定键,这样你就无需记住哪个参数先出现;默认值为
var = x
degree = n
coef = a
你也可以使用以下方式进行简写:
\newcommand{\polybtn}{\poly[var=t,coef=b,degree=n]}
答案3
我建议\poly{ax^n}
\newcommand\poly[1]{\dopoly#1^n^\relax}
\def\dopoly#1#2^#3^#4\relax{#1_{#3}#2^{#3} + \dots + #1_{1}#2 + #1_{0}}
您可以使用\poly{ax}
或\poly{ax^n}
。