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 '19, 22:36

Romaxx's gravatar image

Romaxx
112
Akzeptiert-Rate: 0%

bearbeitet 17 Feb '19, 23:34

stefan's gravatar image

stefan ♦♦
18.3k163148

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 '19, 23: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 18 Feb '19, 03:40

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

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:

×730
×298
×28
×11

gestellte Frage: 17 Feb '19, 22:36

Frage wurde gesehen: 5,685 Mal

zuletzt geändert: 18 Feb '19, 03:40