如何在 pgfplots 或 tikz 中绘制此图形?

如何在 pgfplots 或 tikz 中绘制此图形?

我有一张照片在此处输入图片描述

数学我发现曲线的公式是 6.12465 - 0.206646 x - 4.42686 x^2 - 2.58476 x^3 + 3.53276 x^4 + 3.78595 x^5 - 2.30475 x^6 - 1.91715 x^7 + 1.0322 x^8 + 0.430597 x^9 - 0.286308 x^10 - 0.0251744 x^11 + 0.040756 x^12 - 0.00530342 x^13 - 0.00183667 x^14 + 0.000649826 x^15 - 0.0000757694 x^16 + 3.16808*10^-6 x^17

我减少了代码并画了出来pgfplots。我试过了

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\usepackage{fouriernc}
\begin{document}
\begin{tikzpicture}
\begin{axis}
    [
    declare function={Y(\x)=6-0.21*\x -4.43*\x^2 -2.6*\x^3 +3.5*\x^4 +3.8*\x^5 -2.31*\x^6 -1.2*\x^7 +1.03*\x^8 +0.43*\x^9 -0.29*\x^10 -0.03*\x^11 +0.04*\x^12 -0.005*\x^13 -0.001*\x^14 +0.001*\x^15  + 3.169*10^{-6}*\x^17;},
    axis lines = center,
    xlabel=$x$,ylabel=$y$,
        domain=-2.5:4.5,
        ymin=-4,
        ymax=6.2,
        xmin=-3,
        xmax=4.2,
    samples=100,xtick distance=1,
ytick distance=2,unit vector ratio*=1 1 1,
    width=11cm,
    grid=major,
    grid style={gray!30}
    ]
       \addplot [black, thick] {Y(x)};
       \addplot [black, mark=*,only marks,samples at={0,-1,1,-2,2}] {Y(x)};
       \node at (axis cs:-0.25, -0.25) {$O$} ;
\end{axis}
\end{tikzpicture}
\end{document} 

但我没有得到结果。我该如何在pgfplots或中绘制它tikz

答案1

你可以画一些类似的图来展示代码发生的情况:

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\def\func(#1){6-0.21*#1 -4.43*#1^2 -2.6*#1^3 +3.5*#1^4 +3.8*#1^5 -2.31*#1^(6) -1.2*#1^(7) +1.03*#1^(8) +0.43*#1^(9) -0.29*#1^(10) -0.03*#1^(11) +0.04*#1^(12) -0.005*#1^(13) -0.001*#1^(14) +0.001*#1^(15) + 3.169*10^(-6)*#1^(17)}%

\begin{document}
\begin{tikzpicture}
\begin{axis}[
        axis lines = center,
    xlabel=$x$,ylabel=$y$,
        domain=-1.35:1.4,
        ymin=-4,
        ymax=10.2,
        xmin=-3,
        xmax=4.2,
    samples=100,xtick distance=1,
ytick distance=2,unit vector ratio*=1 1 1,
    width=11cm,
    grid=major,
    grid style={gray!30}
    ]
    \addplot [blue] {\func(x)};
           \addplot [black, mark=*,only marks,samples at={0,-1,1,-2,2}] {\func(x)};
       \node at (axis cs:-0.25, -0.25) {$O$} ;
\end{axis}
\end{tikzpicture}
\end{document}

输出为

在此处输入图片描述

如果您更改我已经从您的代码中更改的域……您会发现您将超出范围,并且 pgf 也会抱怨无法承受的值。

输出不是原始的数学输出,因为您改变了具有巨大指数(例如 15 和 17)的乘积上的因子的数字,这会导致巨大的差异。

为了克服 pgf 投诉,您必须重新定义函数(手动通过减少因子)并打印具有真实值的(手动)缩放的 y 轴。

编辑:

可以给出结果的代码是:

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\def\func(#1){6.12465 - 0.206646*#1 - 4.42686*#1^2 - 2.58476*#1^3 + 3.53276*#1^4 + 3.78595*#1^5 - 2.30475*#1^6 - 1.91715*#1^7 + 1.0322*#1^8 + 0.430597*#1^9 - 0.286308*#1^10 - 0.0251744*#1^11 + 0.040756*#1^12 - 0.00530342*#1^13 - 0.00183667*#1^14 + 0.000649826*#1^15 - 0.0000757694*#1^16 + 3.16808*(10^(-6))*#1^17}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
        axis lines = center,
    xlabel=$x$,ylabel=$y$,
        domain=-2.2:3.5,
        ymin=-4,
        ymax=10.2,
        xmin=-3,
        xmax=4.2,
    samples=100,xtick distance=1,
ytick distance=2,unit vector ratio*=1 1 1,
    width=11cm,
    grid=major,
    grid style={gray!30}
    ]
    \addplot [blue] {\func(x)};
           \addplot [black, mark=*,only marks,samples at={0,-1,1,-2,2}] {\func(x)};
       \node at (axis cs:-0.25, -0.25) {$O$} ;
\end{axis}
\end{tikzpicture}
\end{document}

它的输出是:

在此处输入图片描述

但是如果增加样本,您会发现 pgf 无法处理 x=3 以上的精度。

相关内容