使用 pgfplot 绘制 Shekel 散兵坑(De-Jong 的第五个)函数

使用 pgfplot 绘制 Shekel 散兵坑(De-Jong 的第五个)函数

有人能帮忙如何使用 pgfplot 绘制 Foxhole 函数吗?该函数定义为:0:998004 {0:002+∑ (从 j = 1 到 j= 25) [j + [x1 − a(1j)]^6 + [x2 −a(2j)]^6 ]^(-1)}^(-1); x1, x2 in [−65:536; 65:536]

其中 a(ij) 是以下矩阵的元素

(−32 −16 0 16 32 −32 −16 ... 0 16 32

−32 −32 −32 −32 −32 −16 −16 ... 32 32 32)

我面临的困难是如何在 pgfplot 中编写矩阵部分。抱歉,我的文本格式不正确,有关函数的格式良好的定义以及函数的图的样子,请参阅: https://www.al-roomi.org/benchmarks/unconstrained/2-dimensions/7-shekel-s-foxholes-function

答案1

您的矩阵似乎只是一个嵌套循环。可以通过在此嵌套循环中累积函数来实现求和。pgfplots可能不是合适的工具,至少如果您和我一样没有耐心的话。即使对于这个相当少的样本,这也会花费很长时间。

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\begin{document}

\begin{tikzpicture}
\xdef\myf{0.02}
\foreach \X [count=\nX] in {-32,-16,0,16,32}
{\foreach \Y [count=\nY] in {-32,-16,0,16,32}
 {\xdef\myf{\myf+1/(\nX+5*(\nY-1)+(x-1*(\X))^6*(y-1*(\Y))^6)}}}
%\typeout{\myf} 
\begin{axis}[domain=-40.5:40.5,domain y=-40.5:40.5,samples=42,samples y=42]
 \addplot3[surf,z buffer=sort]{1/(\myf)};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容