tikzmath 中 n 个值的和与积

tikzmath 中 n 个值的和与积

我有一张桌子

n    x1 x2 x3 x4 x5 ...
3    2  3  6  0  0  ...
4    2  3  7  42 0  ...
5    ...
6    ...
...

假设我们有 4 个数字x1,x2,x3,x4(情况"n=4")。然后必须计算前 1、2 或 3 个数字的所有可能乘积之和,其中根据定义N(1)=1

我使用名称N(1), N(2), N(3),...;然后详细说明:

Case "n=3". 
given: (x1,x2,x3) = (2,3,6)
to calc:
N(1) = 1
N(2) = x1 + x2


Case "n=4". 
given: (x1,x2,x3,x4) = (2,3,7,42)
to calc:
N(1) = 1
N(2) = x1 + x2
N(3) = x1·x2 + x1·x3 + x2·x3 

Case "n=5". 
given: (x1,x2,x3,x4,x5) = (....)
to calc:
N(1) = 1
N(2) = x1 + x2
N(3) = x1·x2 + x1·x3 + x2·x3 
N(4) = x1·x2·x3 +x1·x2·x4 +x1·x3·x4 +x2·x3·x4

.... .... .... .... 

我该怎么做?也许\usetikzlibrary{math}可以?最好的开始点是什么?

并非真正的 MWE:

\documentclass[]{book}
\usepackage{tikz}
\usetikzlibrary {math}

\begin{document}
\begin{tikzpicture}
\def\List{1,2,3}
%\def\Array{\List}

\tikzmath{
int \i;
for \i in \List {
\N{\i} = (\i)*0.5;
\N{3}=555;
};
}

\node{ \N{3} };
\end{tikzpicture}
\end{document}

答案1

我仍然不完全清楚预期的公式,但我认为这实现了

N(i,list) 仅使用前 i 个元素,所有后续元素都被忽略,因此我们可以定义

define N(i,list)=M(first-i-elements-of-list) 

define M(singleton)=1,
       M(head,rest)=head*M(rest)+product(rest)

M 的以下递归定义通过扩展起作用,因此可以与符号输入一起使用(x,y,z),也可以与数字输入 i 一起使用,从而产生一个可以通过以下方式评估的表达式\inteval

在此处输入图片描述

\documentclass{article}

\begin{document}

\ExplSyntaxOn

% 
\cs_new:Npn\cis_clist_rest:n#1{
  \cis_clist:aux:w#1
}
\cs_new:Npn\cis_clist:aux:w#1,{  }

\cs_new:Npn\cis_M:n#1 {
  \int_case:nnF {\clist_count:n{#1}}
      {{1}{1}}
      {
        \clist_item:nn{#1}{1} * (\cis_M:e{\cis_clist_rest:n{#1}})+
            \clist_use:en{\cis_clist_rest:n{#1}}{*}
        }
      }

\cs_generate_variant:Nn\clist_use:nn {en}
\cs_generate_variant:Nn\cis_M:n {e}

\let\cisM\cis_M:n
            
\ExplSyntaxOff

\parskip\baselineskip

\hrule
M(z) \quad       \cisM{z}

\hrule
M(y,z)\quad      \cisM{y,z}

\hrule
M(x,y,z)\quad      \cisM{x,y,z}

\hrule
M(2)\quad      \inteval{\cisM{2}}

\hrule
M(2,3)\quad       \inteval{\cisM{2,3}}


\hrule
M(2,3,7)\quad       \inteval{\cisM{2,3,7}}

\hrule
M(2,3,7,42)\quad       \inteval{\cisM{2,3,7,42}}

\hrule


\end{document}

相关内容