我知道 Horner 方案有一个标准代码。但我想获得以下表格。
我得到了下一个代码,但我找不到如何在右下角得到那条小垂直线。
\begin{tabular}{c|cccc}
& 3 & 2 & -5 & -10 \\
& & & & \\ \hline
& & & &
\end{tabular}
我对此还有另一个问题。数字 11 现在向左移动,但我希望它小于 16。
\begin{tabular}{c|cccc}
& 3 & 2 & -5 & -10 \\
2 & $\downarrow$ & 6 & 16 & 22 \\ \hline
& 3 & 8 & 11 \multicolumn{1}{c|}{} & 12
\end{tabular}
答案1
\documentclass{article}
\begin{document}
$\begin{array}{c|cccc}
& 3 & 2 & -5 & -10 \\
& & & & \\ \hline
& & & \multicolumn{1}{c|}{} &
\end{array}$
\end{document}
如果你想要厚一点的话,
\documentclass{article}
\usepackage{array}
\begin{document}
$\begin{array}{c|cccc}
& 3 & 2 & -5 & -10 \\
& & & & \\ \hline
& & & & \multicolumn{1}{!{\vrule width 1.5pt}c}{}
\end{array}$
\end{document}
答案2
只是为了好玩,一个宏也计算系数(只允许整数)。
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\horner}{smm}
{
\IfBooleanTF{#1}
{ \bool_set_false:N \l_silke_show_bool }
{ \bool_set_true:N \l_silke_show_bool }
\silke_horner:nn { #2 } { #3 }
}
\bool_new:N \l_silke_show_bool
\seq_new:N \l_silke_top_seq
\seq_new:N \l_silke_middle_seq
\seq_new:N \l_silke_bottom_seq
\seq_new:N \l_silke_temp_seq
\int_new:N \l_silke_degree_int
\tl_new:N \l_silke_remainder_tl
\cs_new_protected:Npn \silke_horner:nn #1 #2
{
\seq_set_split:Nnn \l_silke_top_seq { , } { #1 }
\int_set:Nn \l_silke_degree_int { \seq_count:N \l_silke_top_seq }
\seq_clear:N \l_silke_middle_seq
\seq_clear:N \l_silke_bottom_seq
\seq_put_right:Nn \l_silke_middle_seq { \downarrow }
\seq_put_right:Nx \l_silke_bottom_seq
{
\int_to_arabic:n { \seq_item:Nn \l_silke_top_seq { 1 } }
}
\int_step_inline:nnnn { 2 } { 1 } { \l_silke_degree_int }
{
\seq_put_right:Nx \l_silke_middle_seq
{
\int_to_arabic:n { \seq_item:Nn \l_silke_bottom_seq { ##1 - 1 } * #2 }
}
\seq_put_right:Nx \l_silke_bottom_seq
{
\int_to_arabic:n
{
\seq_item:Nn \l_silke_top_seq { ##1 }
+
\seq_item:Nn \l_silke_middle_seq { ##1 }
}
}
}
\silke_print_scheme:n { #2 }
}
\cs_new_protected:Npn \silke_print_scheme:n #1
{
\bool_if:NF \l_silke_show_bool
{
\silke_phantom:N \l_silke_middle_seq
\silke_phantom:N \l_silke_bottom_seq
}
\seq_pop_right:NN \l_silke_bottom_seq \l_silke_remainder_tl
\begin{array}{r | *{\l_silke_degree_int}{r} }
& \seq_use:Nn \l_silke_top_seq { & } \\
#1 & \seq_use:Nn \l_silke_middle_seq { & } \\
\hline
& \seq_use:Nn \l_silke_bottom_seq { & } &
\multicolumn{1}{@{\vline width 1pt}r}{\l_silke_remainder_tl}
\end{array}
}
\cs_new_protected:Npn \silke_phantom:N #1
{
\seq_clear:N \silke_temp_seq
\seq_map_inline:Nn #1 { \seq_put_right:Nn \silke_temp_seq { \phantom{##1} } }
\seq_set_eq:NN #1 \silke_temp_seq
}
\ExplSyntaxOff
\begin{document}
$\horner{3,2,-5,-10}{2}$
$\horner*{3,2,-5,-10}{2}$
$\horner{1,5,10,10,5,1}{-1}$
\end{document}
-variant*
仅保留空间,但不打印中间行和底部行的数字。