TeXwelt wurde neu installiert. Es funktionieren noch nicht alle Features und auch an den deutschsprachigen Formulierungen wird verbessert. Danke für eure Geduld.

Liebe Community,

ich würde gerne die Funktion f(x)=x! mit TikZ plotten, jedoch betrachtet TikZ in der Form, in der ich es eingegeben habe, nur die natürlichen x-Werte, bei rationalen behält der Graph den gleichen Funktionswert bei.

Ich vermute, ich brauche hier die Gamma-Funktion, jedoch weiß ich nicht, wie ich dies genau umsetzen soll.

Ich bedanke mich für eure Hilfe im Voraus! :)

\documentclass[11pt]{article}

%Weitere Attribute
\setlength{\parindent}{0px}

%Pakete
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{mathtools}
\usepackage{adjustbox}
\usepackage{color}
\usepackage[T1]{fontenc}
\newcommand{\semitransp}[2][35]{\color{fg!#1}#2}

\begin{document}

\begin{tikzpicture}

%Nummerierung
\foreach \x in {1,2,3,4,5,6,7,8,9}
\draw [xshift=\x cm] (0,2pt) -- (0,-2pt)
node [below,] {$\x$};

\foreach \y in {1,2,3,4,5,6,7,8,9}
\draw [yshift=\y cm] (2pt, 0) -- (-2pt,0)
node [left, ] {$\y$};

%Achsen
\draw [->, thick] (-0.5,0) -- (9.5,0) node[right] {$x$};
\draw [->, thick] (0, -0.5) -- (0,9.5) node[above] {$f(x)$};

%f
\draw [color=blue, thick, domain=0:3] plot (\x,{\x!}) node [right] {$f$};

\end{tikzpicture}

\end{document}

gefragt 10 Dez '19, 21:10

DrPoet's gravatar image

DrPoet
414
Akzeptiert-Rate: 0%

Off-Topic: \usepackage[utf8]{inputenc} wird nur noch mit veralteten LaTeX-Versionen benötigt.

(11 Dez '19, 09:55) Ijon Tichy

Off-Topic: xcolor ersetzt color vollständig, so dass man das nicht zusätzlich laden muss.

(11 Dez '19, 09:55) Ijon Tichy

Off-Topic: tikz lädt xcolor und graphicx selbst, so dass man diese nicht auch nicht explizit laden muss.

(11 Dez '19, 09:56) Ijon Tichy

Off-Topic: mathtools und adjustbox und der Befehl \semitransp werden im Beispiel nicht verwendet. Es empfiehlt sich generell nur das in einem vollständigen Minimalbeispiel zu belassen, was notwendig ist. Trotzdem ist das Beispiel sehr viel besser als das, was wir sonst häufig zu sehen bekommen. Kompliment dafür!

(11 Dez '19, 09:58) Ijon Tichy

Die Fakultät ist in der Tat nur für natürliche Zahlen definiert.

Weder TikZ/pgf noch pgfplots bieten derzeit AFAIK die Gamma-Funktion. Einige Tabellenkalkulationen wie LibreOffice Calc bieten die Funktion jedoch als GAMMA. Man könnte nun beispielsweise damit eine Wertetabelle erstellen und dann diese plotten. Wer gnuplot installiert hat, kann mit pgfplots die Berechnung auch daran delegieren. Dazu muss man -shell-escape aktivieren. Tut man das, so produziert:

\documentclass[11pt]{article}

\usepackage{parskip}% --> https://komascript.de/faq_parindent

\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepackage[T1]{fontenc}
\usepackage{lmodern}% LM ist besser und näher an CM als EC

\begin{document}

\begin{tikzpicture}
  \begin{axis}
    \addplot gnuplot [domain=0:3,color=blue] { gamma(x) };
  \end{axis}
\end{tikzpicture}

\end{document}

Die Ausgabe:

Gamma-Plot für 0<x<=3

Wie man die Ausgabe des Plots verändern kann, ist der Anleitung zu pgfplots zu entnehmen.

Aber natürlich kann man sich auch auf tikz beschränken, da auch dies auf gnuplot zurückgreifen kann. Auch dann muss -shell-escape aktiviert werden (siehe oben):

\documentclass[11pt]{article}

%Weitere Attribute
%\setlength{\parindent}{0px}% --> https://komascript.de/faq_parindent
\usepackage{parskip}% --> ebenda

%Pakete
%\usepackage[utf8]{inputenc}% seit LaTeX 2018-04-01 überflüssig
%\usepackage{xcolor}% wird von tikz ohnehin geladen
\usepackage{tikz}% wird von pgfplots ohnehin geladen
%\usepackage{graphicx}% wird von tikz ohnehin geladen
%\usepackage{mathtools}% wird im Beispiel nicht verwendet
%\usepackage{adjustbox}% wird im Beispiel nicht verwendet
%\usepackage{color}% bei Verwendung von xcolor überlüssig
\usepackage[T1]{fontenc}
\usepackage{lmodern}% LM ist besser und näher an CM als EC
%\newcommand{\semitransp}[2][35]{\color{fg!#1}#2}% wird im Beispiel nicht verwendet

\begin{document}

\begin{tikzpicture}
%Nummerierung
\foreach \x in {1,2,3,4,5,6,7,8,9}
\draw [xshift=\x cm] (0,2pt) -- (0,-2pt)
node [below,] {$\x$};

\foreach \y in {1,2,3,4,5,6,7,8,9}
\draw [yshift=\y cm] (2pt, 0) -- (-2pt,0)
node [left, ] {$\y$};

%Achsen
\draw [->, thick] (-0.5,0) -- (9.5,0) node[right] {$x$};
\draw [->, thick] (0, -0.5) -- (0,9.5) node[above] {$f(x)$};

%f
\draw [color=blue, thick, domain=0:3] plot function{gamma(x)} node [right] {$f$};

\end{tikzpicture}

\end{document}

ohne pgfplots nur mit tikz

Permanenter link

beantwortet 11 Dez '19, 10:10

Ijon%20Tichy's gravatar image

Ijon Tichy
9.0k31025
Akzeptiert-Rate: 55%

bearbeitet 11 Dez '19, 10:19

Hallo,

ich danke dir vielmals für deine Ratschläge und werde diese auf jeden Fall befolgen. Dir noch einen schönen Tag! :)

Mit besten Grüßen Dein DrPoet

(11 Dez '19, 14:32) DrPoet

Im Gegensatz zu TikZ kennt PSTricks (konkret pst-math) die GAMMA-Funktion und auch die GAMMALN-Funktion. Daher kann man mit:

\documentclass[a4paper]{article}

\usepackage{pstricks,pst-plot,pst-math}
\usepackage{pst-pdf}

\begin{document}
\begin{pspicture*}(-.5,-.5)(6.2,6.2)
  \psaxes{->}(0,0)(-.5,-.5)(6,6)
  \psplot[linecolor=blue,linewidth=1.5pt,plotpoints=200]{.1}{6}{x GAMMA}
  \psplot[linecolor=red,linewidth=1.5pt,plotpoints=200]{.1}{6}{x GAMMALN}
\end{pspicture *}

\end{document}

ebenfalls einen entsprechenden Plot machen. Das Ergebnis ist dann auf Seite 10 der pst-math-Anleitung pst-math-doc.pdf zu finden:

alt text

Permanenter link

beantwortet 11 Dez '19, 18:28

Vitali_Szarmach's gravatar image

Vitali_Szarmach
212
Akzeptiert-Rate: 0%

Guten Abend,

ich bin echt von der Hilfsbereitschaft der Community begeistert! ^^ Danke dir!

Einen schönen Abend dir noch Dein DrPoet

(11 Dez '19, 18:46) DrPoet

Ansonsten könnte für zeichnerische Genauigkeit auch eine Näherungsfunktion ausreichen; dafür reicht pgfplots:

alt text

Man erkennt eine gute Übereinstimmung mit der exakten gnuplot-Kurve:

alt text


MWE:

\documentclass[margin=5mm, tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}[]
\begin{axis}[
xmin =0, xmax = 5.1, 
%ymin = -3.5, ymax = 3.5,  
restrict y to domain=-6:6,
axis lines = middle,
xlabel={$x$}, 
ylabel={$y$},
enlarge x limits=0.05,
enlarge y limits=0.1,
x label style={at={(ticklabel* cs:1.00)}, inner sep=5pt, anchor=north},
y label style={at={(ticklabel* cs:1.00)}, inner sep=2pt, anchor=south east},
]
\addplot[color=blue, samples=222, smooth, 
domain = 0:5] {sqrt(2*pi)*x^(x-0.5)*exp(-x)*exp(1/(12*x))};
\end{axis}
\end{tikzpicture}
\end{document}
Permanenter link

beantwortet 11 Dez '19, 21:39

haver555's gravatar image

haver555
1395
Akzeptiert-Rate: 9%

bearbeitet 11 Dez '19, 21:40

1

Ergänzender Hinweis: Wenn man das als TikZ-draw formuliert, muss man darauf achten, dass man nicht durch 0 dividiert und auch keinen arithmetic overflow produziert, also beispielsweise die Original-domain-Angabe von 0:3 in 0.1:3 o. ä. ändern. Die Anweisung zum Einfügen in das Originalbeispiel wäre dann beispielsweise:

\draw[color=red, samples=222, smooth,domain = 0.1:3] plot (\x,{sqrt(2*pi)*\x^(\x-0.5)*exp(-\x)*exp(1/(12*\x))}) node [right] {$f$};

Wobei diese Näherung ohnehin nur für x>0 funktioniert.

(12 Dez '19, 08:12) Ijon Tichy

Ich habe erst jetzt gesehen, dass bereits gnuplot erwähnt wurde, das mit pgfplots kommuniziert und die Gammafunktion enthält.
Hier dennoch eine Erweiterung auf negative x-Werte.

alt text

% arara: pdflatex: {shell: yes}
\documentclass[margin=5mm, tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}[]

\begin{axis}[
xmin = -4.9, xmax = 5.1, 
%ymin = -3.5, ymax = 3.5,  
restrict y to domain=-6:6,
axis lines = middle,
axis line style={-latex},  
xlabel={$x$}, 
ylabel={$y$},
%enlarge x limits={upper={val=0.2}},
enlarge y limits=0.05,
x label style={at={(ticklabel* cs:1.00)}, inner sep=5pt, anchor=north},
y label style={at={(ticklabel* cs:1.00)}, inner sep=2pt, anchor=south east},
]

\addplot[color=red, samples=222, smooth, 
domain = 0:5] gnuplot{gamma(x)};

\foreach[evaluate={\N=\n-1}] \n in {0,...,-5}{%
\addplot[color=red, samples=555, smooth,  
domain = \n:\N] gnuplot{gamma(x)};
%
\addplot [domain=-6:6, samples=2, densely dashed, thin] (\N, x);
}%
\end{axis}
\end{tikzpicture}
\end{document}
Permanenter link

beantwortet 11 Dez '19, 14:11

haver555's gravatar image

haver555
1395
Akzeptiert-Rate: 9%

bearbeitet 11 Dez '19, 22:38

Hallo,

vielen Dank für die Mühe! Ich wünsche dir noch einen schönen Tag! :)

Mit besten Grüßen Dein DrPoet

(11 Dez '19, 14:34) DrPoet

Das compat hatte ich drin beim Hin- und Her-Kopieren ging es wieder raus.

(11 Dez '19, 14:50) haver555
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:

×675
×9
×2
×1

gestellte Frage: 10 Dez '19, 21:10

Frage wurde gesehen: 563 Mal

zuletzt geändert: 12 Dez '19, 08:12