二元函数表

二元函数表

我有一个简单的例子,说明如何为给定函数 y=f(x) 的多个值创建迭代表,其中 xi 是使用 计算的tikzmath。见下文:

\documentclass[tikz,border=5]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{tikz}
\usepackage{amsmath}
\usepackage{fp}
\usepackage{xfp}
\usetikzlibrary{math}
\usepackage{etoolbox}
\usepackage{fp}
\usetikzlibrary{fixedpointarithmetic}
\usepackage{booktabs}
\usepackage{siunitx} 
\usepackage{expl3}
\usepackage{etoolbox}
\usetikzlibrary{calc,fpu}
\usepackage{tgbonum}
\usepackage{pgf}


\begin{document}

\tikzset{fixed point arithmetic}

\tikzmath{
    function f(\x,\y) {
        \z =  \x^2 + \y^2;
    return \z; 
    };
}

\tikzmath{
    \n=4;\p=5;
    \a=0;\b=1;
    \c=0;\d=2;
    %
    \hx=(\b-\a)/(2*\n);
    \hy=(\d-\c)/(2*\p);
    int \i; int \j; int \k;
    real \x; real \y; real \z;
    \soma2=0;
    \soma4=0;
    for \i in {0,1,...,\fpeval{2*\n}}{ 
        \x{\i} = \a + \i*\hx;
    };
    for \j in {0,1,...,\fpeval{2*\p}}{ 
        \y{\j} = \c + \j*\hy;
    };
    for \i in {0,1,...,\fpeval{2*\n}}{ 
        for \j in {0,1,...,\fpeval{2*\p}}{ 
            \z{\i,\j} = f(\x{\i},\y{\j});
        };
    };
}

\pgfkeys{/pgf/number format/.cd,fixed,precision=6,zerofill}%

\def\tmp{$i$ & $x_i$ & $y_i$ \\ \midrule}%
\edef\k{0}%
\loop
\xappto\tmp{$\k$ & $\noexpand\pgfmathprintnumber{\x{\k}}$ &  $\noexpand\pgfmathprintnumber{\y{\k}}$}%
\edef\k{\the\numexpr\k+1}%
\gappto\tmp{\\}%
\ifnum\k<\fpeval{2*\n+1}\repeat



\begin{tikzpicture}

\node at (0,0) {\parbox{20cm}{

Table of values for $z_i=f(x_i,y_i)$\\

\begin{tabular}{r|r|r}
\toprule
\tmp
\bottomrule
\end{tabular}

}};
\end{tikzpicture}
\end{document}

但是,我有一个类似的 tak,但是对于给定的两个变量的函数,例如 z=f(x,y),其中 xi 和 yj 是在 中计算的tikzmath,如您上面所见。

我的问题是:如何调整上述代码来创建一个二维表,其中每个条目都是\z{\i,\j}上述值?

答案1

我不确定我是否正确理解了你的问题。

excel如果您可以在及其计算机器中解决您的问题,那么您可以考虑使用spreadtab包的解决方案:


\documentclass{article}
\usepackage{spreadtab} % for table calculation
\usepackage{xcolor}
\usepackage{tabularray}   % you can use different tables' packages
\UseTblrLibrary{siunitx, varwidth}

\begin{document}

    \begin{table}
    \centering
\begin{spreadtab}{{tblr}{hlines, vlines,
                         colspec={cc Q[c,si={table-format=3.0}]},
                         row{1}={bg=gray!30, mode=math},
                         measure=vbox}}
@x  & @y    & @z                                            \\  
1   & 2     & \STcopy{v6}{[-2,0]*[-2,0] + [-1,0]*[-1,0]}    \\
2   & 3     &   \\  
3   & 4     &   \\
4   & 5     &   \\
5   & 6     &   \\
6   & 7     &   \\
7   & 8     &   \\
\end{spreadtab}
    \end{table}

\end{document}

在此处输入图片描述

相关内容