
Sé que existe un código estándar para un esquema de Horner. Pero me gustaría obtener el siguiente cuadro.
Tengo el siguiente código pero no encuentro cómo obtengo esa pequeña línea vertical en la parte inferior derecha.
\begin{tabular}{c|cccc}
& 3 & 2 & -5 & -10 \\
& & & & \\ \hline
& & & &
\end{tabular}
Tengo otra pregunta sobre esto. El número 11 ahora está desplazado hacia la izquierda, pero quiero que sea menor que 16.
\begin{tabular}{c|cccc}
& 3 & 2 & -5 & -10 \\
2 & $\downarrow$ & 6 & 16 & 22 \\ \hline
& 3 & 8 & 11 \multicolumn{1}{c|}{} & 12
\end{tabular}
Respuesta1
\documentclass{article}
\begin{document}
$\begin{array}{c|cccc}
& 3 & 2 & -5 & -10 \\
& & & & \\ \hline
& & & \multicolumn{1}{c|}{} &
\end{array}$
\end{document}
Si quieres que quede espeso,
\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}
Respuesta2
Sólo por diversión, una macro que también calcula los coeficientes (solo se permiten números enteros).
\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}
La *
variante -solo reserva el espacio, pero no imprime los números en las filas media e inferior.