Hallo zusammen,

folgender Code sollte Entropy der Binomialverteilung für n=1,..,5 plotten, tut es aber nicht. Wo ist das Problem?

Öffne in Overleaf
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[scale=1]
    % Axis
    \node (1) at (0,6.5) {$H(x)$};
    \node (2) at (7.5,0) {$p$};
    \begin{axis}[
        samples=100,
        smooth,
        domain=0.01:0.99,
        ]
            \foreach \N in {1,...,5} {%
            \addplot+ [mark = none] gnuplot[raw gnuplot] {%
                set samples 100;
                b(k, n, p) = n!/(k!*(n-k)!)*p**k*(1-p)**(n-k);
                plot[0.01:0.99] sum [k=0:\N] -b(k,\N,x)*log2(b(k,\N,x))
            };
            \addlegendentryexpanded{$B_\N$}
        }
        \end{axis}
\end{tikzpicture}
\end{document}
Dieser Frage ist "Community-Wiki" markiert.

gefragt 17 Feb, 16:36

Romaxx's gravatar image

Romaxx
11
Akzeptiert: 0%

bearbeitet 17 Feb, 17:34

stefan's gravatar image

stefan ♦♦
16.5k42539

Willkommen auf TeXwelt.de! Ich habe einmal den Code vervollständigt. Hier sollte man besser komplette, übersetzbare (kurze) Codes posten, damit man überhaupt testen kann. Sonst verbleibt als Antwortmöglichkeit sowas wie "pgfplots nicht geladen" oder "keine geeignete Dokumentklasse" weil die Präambel fehlt. Zum Problem: man muss mit Option shell-escape übersetzen, damit Gnuplot läuft. Hast Du das?

(17 Feb, 17:37) stefan ♦♦

Ich lese einfach mal die Fehlermeldung für dich

"test.pgf-plot.gnuplot", line 2: undefined function: log2

Wie man sieht gibt es die Funktion log2 in gnuplot nicht. Man kann den Logarithmus zur Basis 2 aber ganz einfach mit Hilfe der Logarithmusregeln ausrechnen, log2(x) = log(x)/log(2).

Öffne in Overleaf
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[scale=1]
    % Axis
    \node (1) at (0,6.5) {$H(x)$};
    \node (2) at (7.5,0) {$p$};
    \begin{axis}[
        samples=100,
        smooth,
        domain=0.01:0.99,
        ]
            \foreach \N in {1,...,5} {%
            \addplot+ [mark = none] gnuplot[raw gnuplot] {%
                set samples 100;
                b(k, n, p) = n!/(k!*(n-k)!)*p**k*(1-p)**(n-k);
                plot[0.01:0.99] sum [k=0:\N] -b(k,\N,x)*log(b(k,\N,x))/log(2)
            };
            \addlegendentryexpanded{$B_\N$}
        }
        \end{axis}
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 17 Feb, 21:40

Henri's gravatar image

Henri
14.3k52937

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×652
×269
×25
×8

Frage gestellt: 17 Feb, 16:36

Frage wurde angeschaut: 334 Mal

Zuletzt aktualisiert: 17 Feb, 21:40