alt text

Hallo!

Mit dem Befehl

Open in Online-Editor
\def\getcell#1#2{
\pgfplotstablegetelem{#1}{#2}\of{\SumBinVertTab}\pgfplotsretval%
}
$P(X \leq k) = F(n,p;k) = \getcell{0}{2}$

entlese ich z.B. den Wert 0.59049 aus folgedner Tabelle.

  • Wie kann ich den Befehl so anpassen, dass ich die Werte n, p, k eingeben muss und damit den richtigen Tabellenwert erhalte? Etwa \getSumBin{10}{0.25}{3} was dann 0.7759 liefern sollte; allgemein \getSumBin{<nWert>}{<pWert>}{<kWert>}

  • Am Rande: Die Option precision=4 wird bei diesem Auslesen scheints ignoriert, es sollte jedoch schon der Wert ausgelesen werde, der auch in der Tabelle angezeigt wird.

  • Es gibt bei der Tabelle noch ein Problem: Bei p >= 0.5 müsste 1-<Ablesewert> ausgegeben werden.

  • Wie kann ich mit pgfplots-Rechnmitteln zwei ausgelesene Werte voneinader abziehen, um

$P(X = k) = P(X \leq k) - P(X \leq k-1) = F(n,p;k) - F(n,p;k-1) = ???$ zu berechnen.

Open in Online-Editor
\documentclass[varwidth, border=10pt]{standalone}
%\documentclass[paper=a5]{scrbook}
%\usepackage[left=1cm, right=1cm]{geometry}

\usepackage{pgfplotstable}
\usepackage{filecontents}

\begin{document}
\begin{filecontents}{n5.txt}
5   0   0.59049 0.32768 0.23730 0.16807 0.07776 0.03125
5   1   0.91854 0.73728 0.63281 0.52822 0.33696 0.18750
5   2   0.99144 0.94208 0.89648 0.83692 0.68256 0.50000
5   3   0.99954 0.99328 0.98438 0.96922 0.91296 0.81250
5   4   0.99999 0.99968 0.99902 0.99757 0.98976 0.96875
\end{filecontents}
\begin{filecontents}{n10.txt}
10 0 0.34868    0.10737 0.05631 0.02825 0.00605 0.00098
10 1 0.73610    0.37581 0.24403 0.14931 0.04636 0.01074
10 2 0.92981    0.67780 0.52559 0.38278 0.16729 0.05469
10 3 0.98720    0.87913 0.77588 0.64961 0.38228 0.17188
10 4 0.99837    0.96721 0.92187 0.84973 0.63310 0.37695
10 5 0.99985    0.99363 0.98027 0.95265 0.83376 0.62305
10 6 0.99999    0.99914 0.99649 0.98941 0.94524 0.82813
10 7 1.00000    0.99992 0.99958 0.99841 0.98771 0.94531
10 8 1.00000    1.00000 0.99997 0.99986 0.99832 0.98926
10 9 1.00000    1.00000 1.00000 0.99999 0.99990 0.99902
\end{filecontents}
% ....    HIER WEITERE
% Tabellen einlesen
\pgfplotstableread{n5.txt}{\nV} % "n Römische Zahl" geht das auch besser?
\pgfplotstableread{n10.txt}{\nX}    
% ....    HIER WEITERE
% --------------------------
% Tabellen ausgeben
\pgfplotstabletypeset{\nV} \\
%\pgfplotstabletypeset{\nX} \\
% ....    HIER WEITERE
% --------------------------

\def\getcell#1#2{
\pgfplotstablegetelem{#1}{#2}\of{\nV}\pgfplotsretval%
}

$P(X \leq k) = F(n,p;k) = \getcell{0}{2}$

$P(X = k) = P(X \leq k) - P(X \leq k-1) = F(n,p;k) - F(n,p;k-1)  = ???$

\end{document}

gefragt 20 Jan '16, 03:54

cis's gravatar image

cis
9.5k95459491
Akzeptiert-Rate: 29%

bearbeitet 22 Jan '16, 23:10

Ausgelesen wird natürlich immer der Wert, der in der Datei steht. Man kann den Wert anschließend aber mit allen Mitteln von pgf nachbearbeiten, dazu gehören auch Rundungsfunktionen für Integer und Rundungsfunktionen für Gleitkommazahlen

(21 Jan '16, 09:16) saputello

Ich würde annehmen, dass man mit einem Schleifenkonstrukt über die Tabelle den Index des richtigen Wertes ermitteln könnte. Ich habe aber erst einmal keine Zeit, das auszuführen.

(21 Jan '16, 09:17) saputello

Ich glaub, ich tu das Problem fundamental umformulieren; eigentlich stehen die Werte alle in separaten Dateien. Damit sollte es einfacher werden.

(22 Jan '16, 22:18) cis

Jetzt müsste es ein echtes Minimalbeispiel sein.

(22 Jan '16, 23:06) cis

Du musst einfach nur \pgfmathprintnumber verwenden anstatt \pgfplotsretval direkt zu expandieren (Das ist das, was pgfplotstable intern auch macht).

Open in Online-Editor
\begin{filecontents}{n5.txt}
5   0   0.59049 0.32768 0.23730 0.16807 0.07776 0.03125
5   1   0.91854 0.73728 0.63281 0.52822 0.33696 0.18750
5   2   0.99144 0.94208 0.89648 0.83692 0.68256 0.50000
5   3   0.99954 0.99328 0.98438 0.96922 0.91296 0.81250
5   4   0.99999 0.99968 0.99902 0.99757 0.98976 0.96875
\end{filecontents}

\documentclass{article}
\usepackage{pgfplotstable}

\def\getcell#1#2{%
  \pgfplotstablegetelem{#1}{#2}\of{\nV}%
  \pgfmathprintnumber{\pgfplotsretval}%
}

\begin{document}

\pgfplotstableread{n5.txt}{\nV}

\pgfplotstabletypeset{\nV}

$P(X \leq k) = F(n,p;k) = \getcell{0}{2}$

$P(X = k) = P(X \leq k) - P(X \leq k-1) = F(n,p;k) - F(n,p;k-1)  = ???$

\end{document}

alt text

Permanenter link

beantwortet 09 Jul '16, 11:42

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 09 Jul '16, 11:42

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:

×256
×39

gestellte Frage: 20 Jan '16, 03:54

Frage wurde gesehen: 7,248 Mal

zuletzt geändert: 09 Jul '16, 11:42