absfunktion mit tikz/gnuplot Thema ist als GELÖST markiert

Formelsatz für Mathematik, Naturwissenschaften und Technik


tikzgnuplot

absfunktion mit tikz/gnuplot

Beitrag von tikzgnuplot »

hi,

ich will gerade mit tikz einen graphen für ne betragsfunktion plotten, doch aus irgendeinem grund macht da gnuplot ziemlichen unsinn:
\begin{tikzpicture}[domain=0:4]
    \def\xmin{-2}
    \def\xmax{4.2}
    \def\ymin{-1}
    \def\ymax{4.2}
% Gitter
    \draw[very thin,color=gray] (\xmin,\ymin) grid (\xmax,\ymax);
% Achsen
    \draw[->] (\xmin,0) -- (\xmax,0) node[right] {\( x \)};
    \draw[->] (0,\ymin) -- (0,\ymax) node[above] {\( f(x) \)};
% Funktionen
    \draw[color=black, domain=\xmin:\xmax] plot[id=test] function{abs(x+1)}
        node[right] {\( f(x) = |x+1| \)};
\end{tikzpicture}
Der Graph berührt dabei nichtmal richtig die X-Achse und hat auf der linken Seite auch noch nen leichten Knick drin.
Bei verschachtelten Betragsfunktionen ist das noch extremer...

Hoffe, jemand kann helfen.. Danke

Benutzeravatar
bloodworks
Moderator
Moderator
Beiträge: 1425
Registriert: Mo 19. Jan 2009, 10:52
Wohnort: /dev/null

Beitrag von bloodworks »

Hallo
das liegt daran, dass TiKz in der .gnuplot ein "set sample 25" hat. Gnuplot berechnet also aus nur 25 punkten deine Kurve. Machst du aber aus den 25 zB 2500 ist dein Problem gelöst.

Ob man das direkt im LaTeX file bestimmen kann muss ich nochmal schauen.


Aso: ich habe die .table von Hand aus der .gnuplot erstellt.

Klar! Ich werde vergesslich: gnuplot-raw!

plot[id=test,raw gnuplot ] function{set samples 1495; plot [x=-2:4.2] abs(x+1)} 

tikzgnuplot

Danke

Beitrag von tikzgnuplot »

Ah, perfekt. Vielen Dank funktioniert jetzt super. :)

Hab noch ne Frage: Bei mir wachsen die Funktionen aus dem Achsenkreuz raus. Wie kann ich die beschränken?

Benutzeravatar
bloodworks
Moderator
Moderator
Beiträge: 1425
Registriert: Mo 19. Jan 2009, 10:52
Wohnort: /dev/null

Beitrag von bloodworks »

Naja also bei gnu raw so wie bei gnuplot eben:
plot [x=-2:3] abs(x+1) 
und bei ohne über die domain:
domain-2:2

tikzgnuplot

Beitrag von tikzgnuplot »

hmm, das geht natürlich, aber kann man das ganze nicht vielleicht auch allgemeinen definieren, so, dass nichts über einen bestimmten rahmen rausdarf?

Benutzeravatar
bloodworks
Moderator
Moderator
Beiträge: 1425
Registriert: Mo 19. Jan 2009, 10:52
Wohnort: /dev/null

Beitrag von bloodworks »

Hallo
also erstmal Nachtrag anstatt "set samples" mit raw gnuplot kannst du auch sagen:
\draw[samples=1456] plot function{abs(x-1)}
So wegen den Axen:
Normalerweise kannst du in GNUPLOT
plot[x0:x1][y0:x1] ...
angeben. Was so auch funktioniert.

Leider ignoriert er, wenn ich in ein Table schreibe, ständig den y Axen Befehl. Also wie oben oder mit "set yrange [y0:y1]".

Kann leider nicht sagen ob das an meiner Umgebung liegt oder an gnuplot. Ist auf jedenfall nich so was ganz exotisches... aber meine gnuplot Kenntnisse sind jetzt auch nicht die besten.

Antworten