是否可以使用 TikZ 数据可视化绘制复杂函数?

是否可以使用 TikZ 数据可视化绘制复杂函数?

是否可以使用 TikZ 数据可视化绘制复杂函数?

我有一个传递函数G(s)=2/(20*s+1)^5*2/s。拉普拉斯逆函数转换给出
g(t)=4-(e^(-t/20)*(3840000+192000*t+4800*t^2+80*t^3+t^4))/960000或扩展
g(t)=-(e^(-t/20)*t^4)/960000-(e^(-t/20)*t^3)/12000-1/200*e^(-t/20)*t^2-1/5*e^(-t/20)*t-4*e^(-t/20)+4并且我必须g在巨大的间隔上进行绘图[0,280]

梅威瑟:

\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{datavisualization.formats.functions}

\begin{document}

  \begin{tikzpicture}
    \datavisualization[
                       scientific axes={clean},
                       all axes = grid,
                       x axis = {label = $t$},
                       y axis = {label = $y(t)$},
                       visualize as smooth line
                      ]
    data[format = function]
    {
     var x : interval[0 : 280];
     %func y = 4 - (exp(-\value x/20) * (3840000 + 192000 * \value x + 4800 * \value x^2 + 80 * \value x^3 + \value x^4))/960000;
     func y = -(exp(-\value x/20) * \value x^4)/960000 - (exp(-\value x/20) * \value x^3)/12000 - (exp(-\value x/20) * \value x^2)/200 - (exp(-\value x/20) * \value x)/5 - 4 * exp(-\value x/20) + 4;
    };
  \end{tikzpicture}

\end{document}

我自然会收到

尺寸太大。

错误,很明显。

我已经问过了相似的问题。解决方案是减少间隔,但现在不可能了。结果应该是

图1

有没有办法重现这个情节TikZ datavisualization

提前感谢您的帮助和努力!

答案1

是的。您可以使用/pgf/data/evaluator密钥在本地安装fpu以进行解析。\pgfmathparseFPU本地打开的宏fpu取自这里

\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{datavisualization.formats.functions}
\newcommand{\pgfmathparseFPU}[1]{\begingroup%
\pgfkeys{/pgf/fpu,/pgf/fpu/output format=fixed}%
\pgfmathparse{#1}%
\pgfmathsmuggle\pgfmathresult\endgroup}
\begin{document}

  \begin{tikzpicture}
    \datavisualization[
                       scientific axes={clean},
                       all axes = grid,
                       x axis = {label = $t$},
                       y axis = {label = $y(t)$},
                       visualize as smooth line,
                       /pgf/data/evaluator=\pgfmathparseFPU
                      ]
    data[format = function]
    {
     var x : interval[0 : 280];
     %func y = 4 - (exp(-\value x/20) * (3840000 + 192000 * \value x + 4800 * \value x^2 + 80 * \value x^3 + \value x^4))/960000;
     func y = -(exp(-\value x/20) * \value x^4)/960000 - (exp(-\value x/20) * \value x^3)/12000 - (exp(-\value x/20) * \value x^2)/200 - (exp(-\value x/20) * \value x)/5 - 4 * exp(-\value x/20) + 4;
    };
  \end{tikzpicture}

\end{document}

在此处输入图片描述

当然,第一个功能也有效。

\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{datavisualization.formats.functions}
\newcommand{\pgfmathparseFPU}[1]{\begingroup%
\pgfkeys{/pgf/fpu,/pgf/fpu/output format=fixed}%
\pgfmathparse{#1}%
\pgfmathsmuggle\pgfmathresult\endgroup}
\begin{document}

  \begin{tikzpicture}
    \datavisualization[
                       scientific axes={clean},
                       all axes = grid,
                       x axis = {label = $t$},
                       y axis = {label = $y(t)$},
                       visualize as smooth line,
                       /pgf/data/evaluator=\pgfmathparseFPU
                      ]
    data[format = function]
    {
     var x : interval[0 : 280];
     func y = 4 - (exp(-\value x/20) * (3840000 + 192000 * \value x + 4800 * \value x^2 + 80 * \value x^3 + \value x^4))/960000;
     %func y = -(exp(-\value x/20) * \value x^4)/960000 - (exp(-\value x/20) * \value x^3)/12000 - (exp(-\value x/20) * \value x^2)/200 - (exp(-\value x/20) * \value x)/5 - 4 * exp(-\value x/20) + 4;
    };
  \end{tikzpicture}

\end{document}

相关内容