Seite 1 von 1

funtionenplotter bei tikz

Verfasst: Mo 20. Sep 2010, 15:26
von tomas
Hallo,
ich habe mit Tikz bei meiner Diplomarbeit eine Funktion geplotted, aber zwischen 0 und 1 hat der Graph Ecken, die da nicht hingehören. Hat jemand eine Ahnung, was man dagegen tun kann?
Danke, Tomas
P.s: Um die Abstände auf der x-Achse zu verdreifachen, habe ich die Funktion von x:3 genommen. Gibt es vielleicht auch eine einfachere Möglichkeit, die x-Achse zu strecken?

\documentclass[a4paper,12pt,notitlepage]{article}
\usepackage{german}
\usepackage[latin1]{inputenc}
\usepackage{amsmath, amsthm, amssymb, relsize}
\usepackage{mathtools}
\usepackage{dsfont}
\usepackage{amsthm}
\usepackage{tikz}
\usepackage{pgf}
\begin{document}
\begin{center}
\begin{tikzpicture}[domain=0:12, scale=0.8]
\draw[thick,->] (0,0) -- (13,0) node[right] {$\lambda$};
\draw[thick,->] (0,0) -- (0,7.5) node[above] {$E(\lambda)$};
\draw[color=blue, domain=0.1:12] plot (\x, {0.5*(ln(3^{-1}*\x))^2}) node[right] {$E(\lambda)= \frac 12 \bigl(\ln(\lambda)\bigr)^2$};
\draw (3 ,2pt) -- (3 ,-4pt) node[anchor=north,fill=white] {$1$};
\draw (6 ,2pt) -- (6 ,-4pt) node[anchor=north,fill=white] {$2$};
\draw (9,2pt) -- (9 ,-4pt) node[anchor=north,fill=white] {$3$};
\foreach \y in {1, 3, 5, 7}
\draw (2pt,\y ) -- (-4pt,\y ) node[anchor=east,fill=white] {$\y$};

\end{tikzpicture}
\end{center}
\end{document}

Verfasst: Mo 20. Sep 2010, 16:20
von cliffhanger
Hi Thomas,

zwar keine direkt Lösung für dein Problem, aber hast du dir schonmal pgfplots angeschaut?

Das ist ein Package zum Plotten, das auf PGF/TikZ basiert.

Grüße
Benedikt

Re: funtionenplotter bei tikz

Verfasst: Mo 20. Sep 2010, 17:16
von bloodworks
\documentclass[a4paper,12pt,notitlepage]{article}
\usepackage{german}
\usepackage[latin1]{inputenc}
\usepackage{amsmath, amsthm, amssymb, relsize}
\usepackage{mathtools}
\usepackage{dsfont}
\usepackage{amsthm}
\usepackage{tikz}
\usepackage{pgf}
\begin{document}
%\begin{center} %evil!!!! siehe l2tabu.pdf

\begin{tikzpicture}[domain=0:12, scale=0.8] 
\draw[thick,->] (0,0) -- (13,0) node[right] {$\lambda$}; 
\draw[thick,->] (0,0) -- (0,7.5) node[above] {$E(\lambda)$}; 
\draw[color=blue, domain=0.1:12,samples=200] plot (\x, {0.5*(ln(3^{-1}*\x))^2}) node[right] {$E(\lambda)= \frac 12 \bigl(\ln(\lambda)\bigr)^2$}; % sampels siehe pgfmaual. Analog zu gnuplot set samples
\draw (3 ,2pt) -- (3 ,-4pt) node[anchor=north,fill=white] {$1$}; 
\draw (6 ,2pt) -- (6 ,-4pt) node[anchor=north,fill=white] {$2$}; 
\draw (9,2pt) -- (9 ,-4pt) node[anchor=north,fill=white] {$3$}; 
\foreach \y in {1, 3, 5, 7} 
\draw (2pt,\y ) -- (-4pt,\y ) node[anchor=east,fill=white] {$\y$}; 

\end{tikzpicture} 
%\end{center}

\end{document}
Das ganze kann man auch in Zusammenhang mit gnuplot machen. Ich würde sogar sagen, dass das besser ist. Siehe dazu pdfmanual "plot function" Kapitel 18.5

Die Sampels sind die Punkte die er ausrechnet. Dazwischen legt er Geraden oder ähnliches (in machen Systemen auch belizier Kurven etc...). An Stellen mit großen Steigungsunterschieden sieht man das deutlicher als an flachen Stellen. Je mehr samples du wählt desto genauer wird das ganze natürlich (also näher an der tatsächlichen Funktion). Aber das geht natürlich auf die Kompilier Zeit.

Ergänzend kannst du mal die Option smooth ausprobieren. Das ist natürlich mit mathematischer Treue nicht mehr vereinbar.

Verfasst: Mo 20. Sep 2010, 17:33
von tomas
Vielen, vielen Dank! So ist es gut.

Verfasst: Mo 20. Sep 2010, 17:38
von bloodworks
Hallo wenn das für dich so beantwortet, dann wärs toll wenn du den Status anpassen würdest.