표 형식의 Horner 구성표

표 형식의 Horner 구성표

나는 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 *는 공간을 예약하지만 중간 및 아래쪽 행의 숫자를 인쇄하지 않습니다.

여기에 이미지 설명을 입력하세요

관련 정보