霍纳方案与表格

霍纳方案与表格

我知道 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*仅保留空间,但不打印中间行和底部行的数字。

在此处输入图片描述

相关内容