Beim Zeichnen einer Titrationskurve (mathematische Funktion siehe unten) gibt pgfplot einem zum Teil falschen Graph. Was mache ich falsch?

Open in Online-Editor
\documentclass{standalone}
  \usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
  xmin=0,
  xmax=0.02,
  ymin=0,
  ymax=14,
  ylabel={pH},
  axis x line=bottom,
  axis y line=left,
  ]
\addplot[domain=0:0.02, samples=1001,]{-log10(-0.5*(-0.01+\x)/(0.1+\x)+sqrt(0.25*((-0.01+\x)/(0.1+\x))^2+10^(-14)))};
\end{axis}
\end{tikzpicture}
\end{document}

alt text

gefragt 12 Mär '16, 21:02

Solarflare's gravatar image

Solarflare
3612
Akzeptiert-Rate: 0%

bearbeitet 12 Mär '16, 22:30

esdd's gravatar image

esdd
17.8k284257

Du bewegst Dich da höchstwahrscheinlich an der Grenze der Rechengenauigkeit. Wir hatten AFAIR früher schon solche Probleme. Da leider häufig pgfplots als einziges Thema angegeben wird, statt das etwas genauer einzugrenzen, ist es leider nicht so einfach, das wieder zu finden.

(12 Mär '16, 22:10) saputello

Wie @saputello vermute ich auch, dass das ein Genauigkeitsproblem ist. Im log File bekomme ich auch jede Menge Hinweise in der Art

NOTE: coordinate (1Y1.004e-2],3Y0.0e0]) has been dropped because it is unbounde d (in y). (see also unbounded coords=jump).

Lasse ich stattdessen gnuplot rechnen, erhalte ich

alt text

Code:

Open in Online-Editor
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
  xmin=0,
  xmax=0.02,
  ymin=0,
  ymax=14,
  ylabel={pH},
  axis x line=bottom,
  axis y line=left,
  ]
  \addplot[domain=0:0.02, samples=1001] 
    gnuplot{-log10(-0.5*(-0.01+x)/(0.1+x)+sqrt(0.25*((-0.01+x)/(0.1+x))^2+10^(-14)))};
\end{axis}
\end{tikzpicture}
\end{document}

Dafür muss gnuplot installiert sein und --shell-escape beim Kompilieren gesetzt werden.

Permanenter link

beantwortet 12 Mär '16, 22:40

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×298

gestellte Frage: 12 Mär '16, 21:02

Frage wurde gesehen: 6,455 Mal

zuletzt geändert: 12 Mär '16, 22:40