Abschnittsweise definierte Funktionen Gnuplot

Gast #521682
Tach,
aus der Gnuplot FAQ :

6.1 How do I plot two functions in non-overlapping regions?

Use a parametric plot. An example:

gnuplot> set parametric
gnuplot> a=1
gnuplot> b=3
gnuplot> c=2
gnuplot> d=4
gnuplot> x1(t) = a+(b-a)*t
gnuplot> x2(t) = c+(d-c)*t
gnuplot> f1(x) = sin(x)
gnuplot> f2(x) = x**2/8
gnuplot> plot [t=0:1] x1(t),f1(x1(t)) title "f1", x2(t), f2(x2(t)) title 
"f2"


vieleicht gibt es aber auch noch einen einfacheren Weg

Grüße Timo
Gast #521712
Mit parametric hat das nicht viel zu tun.

Zunächst kann man ja jeweils den Bereich für den Plot angeben,

plot [x=0:10] x, plot [x=10:20] x*x

oder so ähnlich -- habe lange kein gnuplot mehr verwendet.
Oder man definiert sich stückweise definierte Funktionen,
wie nachfolgend beschrieben:


>Hallo liebe Leute,
:
: >ich habe hier zwei in vier Abschnitten definierte Funktion mit einer
: >einzigen Variablen und m"ochte beide mit GNUPlot in einer Graphik
: >darstellen.  Hat jemand eine gute Idee wie man das machen kann?
:
: Das geht recht simpel, da gnuplot neben fast allen anderen von C
: bekannten Operatoren auch den 'Konditionaloperator' kennt.  Das ist 
der
: etwas hochtrabende Name der mitunter sehr praktischen Konstruktion
:
:        frage ? wert_falls_ja : wert_falls_nein
:
: Damit kann man z.B. die Funktion
:
:       f(x) :=  sin(x) fuer x<0, x hoch 2.3 sonst
:
: folgendermassen in gnuplot als 'user defined function' schreiben:
:
: f(x) = (x>0) ? sin(x) : x**2.3
:
: Die Verallgemeinerung auf 4 Abschnitte sollte dann wohl klar sein.

Wenn man das von 2 auf 4 Bereiche erweitert (sprich in den then- und 
else-Teil
jeweils ein weiters Conditional reinpackt), wird es etwas 
unuebersichtlich,
weil man dann zu viele Klammern braucht. So wie die Klammerungsregeln 
bei
gnuplot (und C) funktionieren, geht es am besten so:

f(x) = (c1) ? e1 : (c2) ? e2 : (c3) ? e3 : e4

Wenn man die Bereiche jeweils mit <= vergleicht, kann man da auch nichts
uebersehen.

(Natuerlich kann man da auch noch Klammern nach Belieben dazutun, 
moeglicher-
 weise auch die um die Bedingungen weglassen, das ist Geschmackssache)

Tschuess, Alexander

--
Alexander Lehmann

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.