声明 tikzpicture 函数

声明 tikzpicture 函数

我想声明一个函数,它将成为我想要绘制的方程的一部分。我想要绘制的方程定义为

\frac{e^{-rT}N'(d_{2})}{S\sigma\sqrt{T}}

要声明的函数是概率密度函数

N'\left (x  \right )=\frac{1}{\sqrt{2\pi}}e^{-x^2/2}

其中 x 应等于d_2,并且d_2还必须由 声明

d_{2}=\frac{ln(S/K)+(r-\frac{\sigma^2}{2})T}{\sigma\sqrt{T}})

如果可能的话,我希望能够提前定义 K、r 和 sigma,这样它们就可以作为固定值流入上述计算。对于 S(x 轴)和 T(y 轴)的值,我希望采用不同的范围,例如 S 的范围为 95 到 105,T 的范围为 0.01 到 0.3。总体结果应该是表面图,其中初始方程的结果位于 z 轴上。非常感谢,我非常希望有人能帮助我!

补充:@percusse 提供的代码运行良好,但当我尝试按照其结构逻辑对其进行修改时,出现错误。以下是修改后的代码:

\documentclass{article}
\usepackage{pgfplots}
\begin{document} 

\begin{tikzpicture}[
declare function={ Nprime(\x)                 = 1/(sqrt(2*pi))*exp(-0.5*(pow(\x,2))); 
                   d1(\x,\y,\KK,\RR,\SIG)     = (ln(\x/\KK)+(\RR+(pow(\SIG,2)/2)*\y))/(\SIG*(sqrt(\y)));
                   d2(\x,\y,\KK,\RR,\SIG)     = (ln(\x/\KK)+(\RR-(pow(\SIG,2)/2)*\y))/(\SIG*(sqrt(\y)));
                   myfun(\x,\y,\KK,\RR,\SIG)  = - (exp(-\RR*\y)*d1*Nprime(d2(\x,\y,\KK,\RR,\SIG))/(\y*(pow(\x,2))*(pow(\SIG,2))));
                 },
]
\begin{axis}[ y domain=0.01:0.3, domain=95:105,view={25}{20}, 
]
\addplot3[surf] {myfun(x,y,100,0,0.09)};
\end{axis}
\end{tikzpicture}
\end{document} 

我究竟做错了什么?

补充一点:我尝试交换 \y 和 \SIG 的值。以下是不起作用的代码

\documentclass{article}
\usepackage{pgfplots}
\begin{document} 
\begin{tikzpicture}[
declare function={ Nprime(\x)                 = 1/(sqrt(2*pi))*exp(-0.5*(pow(\x,2))); 
                   d2(\x,\SIG,\KK,\RR,\y)     = (ln(\x/\KK)+(\RR-(pow(\SIG,2)/2)*\y))/(\SIG*(sqrt(\y)));
                   myfun(\x,\SIG,\KK,\RR,\y)  = exp(-\RR*\y)*Nprime(d2(\x,\SIG,\KK,\RR,\y))/(\x*\SIG*sqrt(\y));
                 },
]
\begin{axis}[
y domain=0.01:0.09, domain=95:105, view={25}{20}, 
]
\addplot3[surf] {myfun(x,SIG,100,0,0.04)};
\end{axis}
\end{tikzpicture}
\end{document} 

有什么问题?非常感谢!

答案1

我不知道它应该是什么样子,但从你提供的常量我得到了这个

\documentclass{article}
\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}[
declare function={ Nprime(\x)                 = 1/(sqrt(2*pi))*exp(-0.5*(pow(\x,2))); 
                   d2(\x,\y,\KK,\RR,\SIG)     = (ln(\x/\KK)+(\RR-(pow(\SIG,2)/2)*\y))/(\SIG*(sqrt(\y)));
                   myfun(\x,\y,\KK,\RR,\SIG)  = exp(-\RR*\y)*Nprime(d2(\x,\y,\KK,\RR,\SIG))/(\x*\SIG*sqrt(\y));
                 },
]
\begin{axis}[y domain=0.01:0.3,domain=95:105,view={150}{20}]
\addplot3[surf] {myfun(x,y,100,0,0.09)};
\end{axis}
\end{tikzpicture}


\end{document}

在此处输入图片描述

相关内容