Forum: PC Hard- und Software Abschnittsweise definierte Funktionen Gnuplot


von gnuplot (Gast)


Lesenswert?

Hi@all

weiß zufällig jemand wie man abschnittsweise definierte Funktionen in 
GNUPlot darstellt, bzw was abschnittsweise definierte Funktionen auf 
englisch heißt.

MFG

von Timo Dittmar (Gast)


Lesenswert?

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

von Stefan Salewski (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.