我正在尝试使用 pgfplots 绘制带有以下代码的图形
\begin{tikzpicture}
\begin{axis}[
axis lines = left,
xlabel = $n$,
ylabel = {$p_{n}$},
]
\pgfmathsetmacro{\P}{520000}
\pgfmathsetmacro{\m}{3162.28}
\pgfmathsetmacro{\r}{1.0045}
\addplot [
domain=1:300,
samples=300,
color=red,
]
{100 - 100*((\r - 1)*(\P\r^(\x - 1)-\m*((\r^\x - 1)/(\r - 1)))/\m};
\addlegendentry{$p$}
\end{axis}
\end{tikzpicture}
我怀疑问题出在我的函数解析上,但我不确定。我用计算器测试了几个函数值,我的公式似乎是正确的,或者至少产生的值与图完全不同。任何输入/评论都将不胜感激。
答案1
pgf 没有隐式乘法。这意味着像 这样的操作2\x
会产生错误。更糟糕的是,\P\r
会扩展为5200001.0045
,因此你的$Pr^{n-1}$
会变成$(10P+r)^{n-1}$
,从而导致绘制出一个巨大的数字。相反,你想写\P*\r^(\x-1)
。
出于类似的原因,(\r)^\x
如果您有负数,您也会想要\r
。否则,-2^\x
将被解释为-(2^\x)
。但这似乎不是问题。