我有一个简单的例子,说明如何为给定函数 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}