0

I have a picture enter image description here

With Mathematica I found formula of the curve is 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

I reduce the code and draw in pgfplots. I tried

\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} 

But I don't get the result. How can I draw it in pgfplots or tikz?

7
  • What happens? Do you get an error or a wrong result?
    – cfr
    Sep 11, 2017 at 0:33
  • @cfr I got got an ill-formatted floating point number `2Y6.0e0]'. The unreadable part was near '2Y6.0e0]'. (in '6-0.21*2Y2.2171765e0]-4.43*2Y2.2171765e0]^2-2.6*2Y2.2171 765e0]^3+3.5*2Y2.2171765e0]^4+3.8*2Y2.2171765e0]^5-2.31*2Y2.2171765e0]^6-1.2*2Y 2.2171765e0]^7+1.03*2Y2.2171765e0]^8+0.43*2Y2.2171765e0]^9-0.29*2Y2.2171765e0]^ 10-0.03*2Y2.2171765e0]^11+0.04*2Y2.2171765e0]^12-0.005*2Y2.2171765e0]^13-0.001* 2Y2.2171765e0]^14+0.001*2Y2.2171765e0]^15+3.169*10^{-6}*2Y2.2171765e0]^17'). See the PGF Math package documentation for explanation. Sep 11, 2017 at 0:35
  • Related: But have some more problems (see my answer) tex.stackexchange.com/questions/35191/…
    – koleygr
    Sep 11, 2017 at 1:18
  • 1
    @koleygr Yes, with no setting at all, it runs in maximal-backwards-compatibility mode. But 1.9 is still missing fixes and features in the current version.
    – cfr
    Sep 11, 2017 at 2:15

1 Answer 1

1

You can draw something similar that shows what happens with the code:

\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}

The output is

enter image description here

If you change the domain that I have already changed from your code... you will see that you will be out of range and pgf will complain too for values that can not afford.

The output is not the original mathematica output because you have changed the numbers on the factors on products with huge exponents (like 15 and 17) and this causes huge differences.

To overcome of pgf complaints you have to redefine function (manually by a reducing factor) and so to print a (manually) scaled y axis with the real values.

Edit:

The code that can give your result is:

\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}

And it's output is:

enter image description here

But if you increase samples you will see that pgf can not handle the accuracy over x=3.

3
  • Please change ymax to 7 because I don't want to waste space for uploading one more image
    – koleygr
    Sep 11, 2017 at 2:00
  • I saw difficult with samples. Sep 11, 2017 at 9:10
  • What do you mean? pgf can not really afford such kind of numbers as far as I can understand if you mean the values over x=3... Please explain the problem or edit your question (if my answer is not good enough) or open a new question if the problem is a new problem.
    – koleygr
    Sep 11, 2017 at 9:30

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .