Stückweise definierte Funktion plotten

Tabellen und Grafiken erstellen und anordnen


Patrick1990
Forum-Century
Forum-Century
Beiträge: 208
Registriert: Mo 18. Feb 2013, 07:56
Wohnort: Ilmenau

Stückweise definierte Funktion plotten

Beitrag von Patrick1990 »

Hallo, ich möchte folgendes plotten:
http://s7.directupload.net/images/130512/d6v2qjkm.png

Dazu habe ich bisher versucht, dies so zu realisieren, dies klappt jedoch nicht so super.
\documentclass[11pt,fleqn]{scrartcl}

\usepackage[ngerman]{babel}
\usepackage{pgfplots,pgfplotstable} 

\begin{document} 
\begin{tikzpicture} 
\begin{axis}
\addplot gnuplot [black,domain=0:10, no marks] {1-exp(-(x/1.1))};
\addplot [black,domain=10:20, no marks] {6*exp(-(x/1.1))};
\end{axis}
\end{tikzpicture}
\end{document}
Habt ihr eine Idee?

guy.brush™
Forum-Century
Forum-Century
Beiträge: 185
Registriert: So 8. Aug 2010, 19:43
Wohnort: Earth

Beitrag von guy.brush™ »

Moin,

es ist meines Erachtens ein mathematisches Problem (und eines der Skalierung). Wenn du die zweite Funktion einzeln plottest, siehst du, dass sie nur noch einen sehr kleinen Bereich auf der y-Achse einnimmt. Der Grund dafuer ist, dass du die 2. Funktion nicht verschoben hast.

Wenn du die zweite Funktion jetzt um 10 nach rechts verschiebst und beide Funktionen mit 6 multiplizierst, sollte es gehen. (Ich habe den Code zur besseren Lesbarkeit etwas eingerueckt.)
\documentclass[11pt,fleqn]{scrartcl}

\usepackage[ngerman]{babel}
\usepackage{pgfplots,pgfplotstable}

\begin{document}

\begin{tikzpicture}
  \begin{axis}
    \addplot [black,domain=0:10, no marks] {6 * (1-exp(-(x/1.1)))};
    \addplot [black,domain=10:20, no marks] {6 * exp(-((x-10)/1.1))};
  \end{axis}
\end{tikzpicture}

\end{document}

Viele Gruesse

guy.brush
Arch Linux - KDE - TeXLive - Kile - \me = Advanced Newbie

Interessensschwerpunkte: Mathematik- und Formelsatz sowie mathematische (Mikro-)Typographie
Offenes Problem: negierte \xarrow-Pfeile beliebiger Länge

Patrick1990
Forum-Century
Forum-Century
Beiträge: 208
Registriert: Mo 18. Feb 2013, 07:56
Wohnort: Ilmenau

Beitrag von Patrick1990 »

Vielen Dank,
bisher sieht es nun so aus:
\documentclass[11pt,fleqn]{scrartcl} 

\usepackage[ngerman]{babel} 
\usepackage{pgfplots,pgfplotstable} 
\usepackage[locale=DE]{siunitx}  

\begin{document} 

  \begin{tikzpicture}[scale=2]

    \begin{axis}[ 
      axis lines=middle, 
      xmin=-0.5, xmax=21, xtick={0,5,10,...,20},
      ymin=-0.5, ymax=7, ytick={0,1,2,...,6}, yscale=0.5,
      xlabel={\hspace*{5mm}t / \si{\milli\second}}, 
      ylabel={U / \si{\volt}} 
    ] 
    \addplot [black,domain=0:10, no marks] {6 * (1-exp(-(x/1.1)))}; 
    \addplot [black,domain=10:20, no marks] {6 * exp(-((x-10)/1.1))};    
    \end{axis} 
  \end{tikzpicture} 

  \begin{tikzpicture}[scale=2]

    \begin{axis}[ 
      axis lines=middle, 
      xmin=-0.5, xmax=21, xtick={0,5,10,...,20},
      ymin=-6, ymax=7, ytick={-6,-4,-2,...,6}, yscale=0.5,
      xlabel={\hspace*{5mm}t / \si{\milli\second}}, 
      ylabel={I / \si{\milli\ampere}} 
    ] 
    \addplot [blue,domain=0:10, no marks] {5.45 * (exp(-(x/1.1)))};
    \addplot [blue,domain=10:20, no marks] {-5.45 * exp(-((x-10)/1.1))};    
    \end{axis} 
  \end{tikzpicture} 

\end{document} 
Ist es möglich bei x=10 einen senkrechten Strich (dashed) einzufügen? weiterhin würde ich auch gern im unteren Bild den Sprung des Stromes blau gekennzeichnet haben und eventuell die zahlen der Achseneinteilung etwas kleiner.


Vielen Dank.

guy.brush™
Forum-Century
Forum-Century
Beiträge: 185
Registriert: So 8. Aug 2010, 19:43
Wohnort: Earth

Beitrag von guy.brush™ »

Moin,

kloar geht das :).
\documentclass[11pt,fleqn]{scrartcl}

\usepackage[ngerman]{babel}
\usepackage{pgfplots,pgfplotstable}
\usepackage[locale=DE]{siunitx}  

\begin{document}

  \begin{tikzpicture}[scale=2]

    \begin{axis}[
      axis lines=middle,
      xmin=-0.5, xmax=21, xtick={0,5,10,...,20},
      ymin=-0.5, ymax=7, ytick={0,1,2,...,6}, yscale=0.5,
      xlabel={\hspace*{5mm}t / \si{\milli\second}},
      ylabel={U / \si{\volt}}
    ]
    \addplot [black,domain=0:10, samples=50] {6 * (1-exp(-(x/1.1)))};
    \addplot [black,domain=10:20, samples=50] {6 * exp(-((x-10)/1.1))};
    \addplot [dashed, domain=-1:7] (10, x);
    \end{axis}
  \end{tikzpicture}

  \begin{tikzpicture}[scale=2]

    \begin{axis}[
      axis lines=middle,
      xmin=-0.5, xmax=21, xtick={0,5,10,...,20},
      ymin=-6, ymax=7, ytick={-6,-4,-2,...,6}, yscale=0.5,
      xlabel={\hspace*{5mm}t / \si{\milli\second}},
      ylabel={I / \si{\milli\ampere}}
    ]
    \addplot [blue,domain=0:10, no marks] {5.45 * (exp(-(x/1.1)))};
    \addplot [blue,domain=10:20, no marks] {-5.45 * exp(-((x-10)/1.1))};
    \addplot [blue, dashed, domain=-5.5:0] (10, x);
    \end{axis}
  \end{tikzpicture}

\end{document}
Inspiriert/uebernommen von hier. :)

Der Wert -5.5 ist pi * Daumen im Quadrat hingewackelt ;). Ich weiss gerade nicht, wofuer man "no marks" benoetigt, habe sie mal testweise entfernt und keine Aenderungen gesehen. Du kannst mit "samples=X" auch die Anzahl der Stuetzstellen beim Plotten erhoehen und bekommst somit glattere Ergebnisse. Aber Achtung: Plotten dauert dann gerne einmal laenger oder sprengt die TeX Kapazitaeten ;).

Falls du irgendwie die ganze Flaeche unter dem Graphen einfaerben moechtest, muesstest du einmal kurz ins pgfplots manual schauen, das weiss ich naemlich gerade auch nicht auswendig :).
Arch Linux - KDE - TeXLive - Kile - \me = Advanced Newbie

Interessensschwerpunkte: Mathematik- und Formelsatz sowie mathematische (Mikro-)Typographie
Offenes Problem: negierte \xarrow-Pfeile beliebiger Länge

Patrick1990
Forum-Century
Forum-Century
Beiträge: 208
Registriert: Mo 18. Feb 2013, 07:56
Wohnort: Ilmenau

Beitrag von Patrick1990 »

Vielen Dank.

Ist es eigentlich auch möglich Ladevorgang und Entladevorgang (wie im Bild) einzufügen? ich habs bisher noch nicht hinbekommen.

guy.brush™
Forum-Century
Forum-Century
Beiträge: 185
Registriert: So 8. Aug 2010, 19:43
Wohnort: Earth

Beitrag von guy.brush™ »

Moin,

auch das geht :).
\documentclass[11pt,fleqn]{scrartcl}

\usepackage[ngerman]{babel}
\usepackage{pgfplots,pgfplotstable}
\usepackage[locale=DE]{siunitx}  

\begin{document}

  \begin{tikzpicture}[scale=2]

    \begin{axis}[
      axis lines=middle,
      xmin=-0.5, xmax=21, xtick={0,5,10,...,20},
      ymin=-0.5, ymax=7, ytick={0,1,2,...,6}, yscale=0.5,
      xlabel={\hspace*{5mm}t / \si{\milli\second}},
      ylabel={U / \si{\volt}},
      clip=false
    ]
    \addplot [black,domain=0:10, samples=50] {6 * (1-exp(-(x/1.1)))};
    \addplot [black,domain=10:20, samples=50] {6 * exp(-((x-10)/1.1))};
    \addplot [dashed, domain=-1:7] (10, x);
    
    \node at (axis cs:5,8) {Aufladen};
    \node at (axis cs:15,8) {Entladen};
    \end{axis}
  \end{tikzpicture}

  \begin{tikzpicture}[scale=2]

    \begin{axis}[
      axis lines=middle,
      xmin=-0.5, xmax=21, xtick={0,5,10,...,20},
      ymin=-6, ymax=7, ytick={-6,-4,-2,...,6}, yscale=0.5,
      xlabel={\hspace*{5mm}t / \si{\milli\second}},
      ylabel={I / \si{\milli\ampere}}
    ]
    \addplot [blue,domain=0:10, no marks] {5.45 * (exp(-(x/1.1)))};
    \addplot [blue,domain=10:20, no marks] {-5.45 * exp(-((x-10)/1.1))};
    \addplot [blue, dashed, domain=-5.5:0] (10, x);
    \end{axis}
  \end{tikzpicture}

\end{document}
"clip = false" ist, damit er den Text nicht abschneidet (teste ruhig einmal, wie es sonst aussieht ... du musst zum Testen aber den Text ggf. um 0.5 nach unten setzen, also auf 7.5).
Arch Linux - KDE - TeXLive - Kile - \me = Advanced Newbie

Interessensschwerpunkte: Mathematik- und Formelsatz sowie mathematische (Mikro-)Typographie
Offenes Problem: negierte \xarrow-Pfeile beliebiger Länge

Patrick1990
Forum-Century
Forum-Century
Beiträge: 208
Registriert: Mo 18. Feb 2013, 07:56
Wohnort: Ilmenau

Beitrag von Patrick1990 »

Dankeschön.

Eine Frage habe ich noch. Es gibt ja den Befehl
grid=major
Kann ich dabei das Gitternetz irgendwie verfeinern?

guy.brush™
Forum-Century
Forum-Century
Beiträge: 185
Registriert: So 8. Aug 2010, 19:43
Wohnort: Earth

Beitrag von guy.brush™ »

Moin,

keine Ursache :).

Hm, das weiss ich jetzt auch nicht ganz auswendig bzw. ich habe einmal kurz ins manual geschaut. Da muesstest vermutlich auch ein wenig drin herumsuchen, aber so wie ich das verstehe, sind major grid lines an den major ticks und minor grind lines eben an den minor ticks. Und wenn du eben die Anzahl der ticks erhoehst (minor oder major), hast du bei grid=major|minor|both auch ein feineres Gitter.

Das muesste eigentlich auch irgendwie so gehen, dass man keine extra Beschriftung an den ticks dran hat. Schau mal im Handbuch z.B. Kapitel 4.14.

Dort siehst du auch, wie du mit extra x ticks z.B. weitere ticks setzen und sie individuell beschriften kannst (das koennte man leer lassen, wenn man keine Beschriftung moechte - wobei ich gerade nicht weiss, ob das die schoenste Variante ist).
Arch Linux - KDE - TeXLive - Kile - \me = Advanced Newbie

Interessensschwerpunkte: Mathematik- und Formelsatz sowie mathematische (Mikro-)Typographie
Offenes Problem: negierte \xarrow-Pfeile beliebiger Länge

Antworten