www.mikrocontroller.net

Forum: PC Hard- und Software Abschnittsweise definierte Funktionen Gnuplot


Autor: gnuplot (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Timo Dittmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.