![限制 pgf 图中变量](https://linux22.com/image/319266/%E9%99%90%E5%88%B6%20pgf%20%E5%9B%BE%E4%B8%AD%E5%8F%98%E9%87%8F.png)
我正在尝试绘制以下函数的“水平曲线”:
其中变量受到限制,使得 x、y 为非负数,并且 x+y 小于或等于 1。换句话说,这是一个向量 (x(1),x(2),x(3)) 的函数,所有元素的总和为 1。因此,例如,我想要设置 z=0.5 并绘制 z 不同值的函数。如果有人有这种参数化的简单示例,那将非常有帮助。
\documentclass[border=3pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
view/h=135,
axis lines=center,
xmax=1.5,
ymax=1.5,
zmax=1.5,
ytick={1},
xlabel={$x_{1}$},
ylabel={$x_{2}$},
zlabel={$x_{3}$},
]
\addplot3[patch,blue!70!black!50,forget plot]
coordinates
{
(1,0,0)
(0,1,0)
(0,0,1)
};
\addplot3[no markers,red!90!black]
coordinates
{
(0.25,0.1,0.45)
(0.2,0.1,0.4)
(0.24,0.36,0.4)
(0.16,0.32,0.62)
(0.12,0.3,0.58)
(0.1,0.26,0.64)
};
\addplot3[domain=0:0.5,y domain=0:0.5, red, thick,samples=50] {x*ln(3*x)+y*ln(3*y)+(1-x-y)*ln(3*(1-x-y)) };
\node[fill=red!90!black,inner sep=1pt,circle,label={180:$Y$}]
at (axis cs:0.1,0.26,0.64) {};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
我不确定我是否正确理解了数学问题,因为你谈论的是两个不同的 $z$ 值。我假设等式左边的 $z$ 与右边的相同,写为 $(1-xy)$,并用右边的替换左边的。然后问题就简化为两个变量。接下来,我将左边的 $z$ 移到等式的右边,因此现在显示为 $0 = x ln[3x] + y ln[3y] + (1-xy) ln[3(1-xy)] - (1-xy)$。
不幸的是,变量不能分开,因此,通过给出例如 $x$ 值,您必须在外部程序中求解相应的 $y$ 值。这是一项相当容易的任务,因为它是一个简单的根搜索。
有了 $x$ 和 $y$ 值,就可以再次计算相应的 $z$ 值,然后绘制结果。这里我使用了库,您ternary
可以pgfplots
在PGFPlots 手册第 487 页第 5.13 节(v1.13)。
\documentclass[border=2mm]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{
pgfplots.ternary,
}
\begin{document}
\begin{tikzpicture}
\begin{ternaryaxis}[
xlabel=$x$,
ylabel=$y$,
zlabel=$z$,
min=0,
max=1,
ternary limits relative=false,
smooth,
no markers,
]
\addplot3+ [thick] table {
x y z
1.000E-10 5.813E-01 4.187E-01
2.500E-02 6.280E-01 3.470E-01
5.000E-02 6.457E-01 3.043E-01
1.000E-01 6.542E-01 2.458E-01
1.500E-01 6.444E-01 2.056E-01
2.000E-01 6.237E-01 1.763E-01
2.500E-01 5.954E-01 1.546E-01
3.000E-01 5.611E-01 1.389E-01
3.500E-01 5.217E-01 1.283E-01
4.000E-01 4.777E-01 1.223E-01
4.500E-01 4.291E-01 1.209E-01
5.000E-01 3.753E-01 1.247E-01
5.500E-01 3.147E-01 1.353E-01
6.000E-01 2.425E-01 1.575E-01
6.250E-01 1.974E-01 1.776E-01
6.500E-01 1.294E-01 2.206E-01
6.525E-01 7.179E-02 2.757E-01
6.350E-01 3.269E-02 3.323E-01
6.120E-01 1.251E-02 3.755E-01
5.813E-01 1.000E-10 4.187E-01
};
\end{ternaryaxis}
\end{tikzpicture}
\end{document}