3D プロットに log y 軸が必要ですが、生成されたプロットも負の y 範囲 (軸ラベルではなく、y ドメイン) にあるようです。y ドメインは -1:1 のようです (実際そうですが、"10^y" -> y ドメイン = 0.1:10 (コード内のコメントを参照) なので、動作するはずだと思いました)。
私のコードにはこの投稿を使用しました: 対数 x 軸と y 軸を持つ 3D 表面プロット
プロット 1 - 線形 y 軸、プロット 2 - 対数 y 軸 (試行)
MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepackage{tikz}
\begin{document}
\begin{figure}[h!]
\begin{tikzpicture}
\begin{axis}
[scale = 1,
xlabel = {$\sigma$},
xmin = -10, xmax = 10,
ylabel = {$\omega$},
ymin = 0.1, ymax = 10,
zlabel={$A$},
zmin = -40, zmax = 20,
colormap/viridis]
\addplot3[
surf,
samples=40,
domain=-1:10,
domain y=0:10]
(x, y, {20*log10(1/sqrt(((1.40845*y)+(2*x*y))^2+(1+(1.40845*x)+x^2-y^2)^2))});
\end{axis}
\end{tikzpicture}
\caption{Plot 1}
\end{figure}
\begin{figure}[h!]
\begin{tikzpicture}
\begin{axis}
[scale = 1,
xlabel = {$\sigma$},
xmin = -10, xmax = 10,
ylabel = {$\omega$},
ymin = 1e-1, ymax = 1e1,
zlabel={$A$},
zmin = -40, zmax = 20,
ymode=log, %added ymode
colormap/viridis]
\addplot3[
surf,
samples=40,
domain=-1:10,
domain y=-1:1] %new y-domain (10^y in the next line)
(x, 10^y, {20*log10(1/sqrt(((1.40845*y)+(2*x*y))^2+(1+(1.40845*x)+x^2-y^2)^2))});
\end{axis}
\end{tikzpicture}
\caption{Plot 2}
\end{figure}
\end{document}
次のようなものを期待しています (Mathematica で生成されたプロット - 対数 y 軸を使用):
答え1
あまりにも複雑に考えすぎているようです。それに応じて適応するだけでdomain y
、望ましい結果が得られます...ymin
ymax
% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
view={50}{50},
width=\axisdefaultwidth,
height=5cm,
xlabel={$\sigma$},
xmin=-1, xmax=10,
ylabel={$\omega$},
ymin=1e-1, ymax=1e1,
zlabel={$A$},
zmin=-40, zmax=20,
ymode=log,
colormap/viridis,
]
\addplot3[
surf,
samples=40,
domain=-1:10,
domain y=0.1:10, % <-- adapted
% (no need to use a parametric plot)
] {20*log10(1/sqrt(((1.40845*y)+(2*x*y))^2+(1+(1.40845*x)+x^2-y^2)^2))};
\end{axis}
\end{tikzpicture}
\end{document}
答え2
方程式の y を 10^y ごとに代入すると、より類似した結果が得られると思います。次を参照してください。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[scale = 1,
xlabel = {$\sigma$},
xmin = -10, xmax = 10,
ylabel = {$\omega$},
ymin = 1e-1, ymax = 1e1,
zlabel={$A$},
zmin = -40, zmax = 20,
ymode=log, %added ymode
view={60}{45},
colormap/viridis]
\addplot3[
surf,
samples=100,
domain=-1:9,
domain y=-1:1] %new y-domain (10^y in the next line)
(x, 10^y, {20*log10(1/sqrt(((1.40845*(10^y))+(2*x*(10^y)))^2+(1+(1.40845*x)+x^2-
(10^y)^2)^2))});
\end{axis}
\end{tikzpicture}
\end{document}
オレンジ色の表面の下部にある丸い形は、表面をトリミングしてより連続したプロットを作成する Mathematica の機能である可能性があります。または、tikz を使用すると、F(x,y,z)= G(x,y,z)-h(x,y,z) などの他の数学関数の減算を実行して、目的の表面形状を実現できます。