Wie definiere ich eine Funktion in Teilen zum Plotten?

16974
Martin Thoma

Ich verwende gnuplot zum Zeichnen von Funktionen. Dies ist im Moment mein Skript:

set terminal png xffffff x222222 set output "Ausgleichszahlungen.png" set title "Ausgleichszahlungen" set xlabel 'F_MZ / A_MZ' set ylabel 'Faktor F' set xrange [0.5:1] set yrange [0:1] set key off set xzeroaxis linetype -1 linewidth 0.5 set yzeroaxis linetype -1 linewidth 0.5 set xtics 0.1 set ytics 0.1 f(x) = 0.75 * (1-x) - 317.0 / 20000 g(x) = 5.0/26 * (1-x) ** 2 + 35.0/52 * (1-x) - 2121.0 / 260000.0 h(x) = 13.0/7 * (1-x) ** 2 + 11.0/25 * (1-x) plot f(x), g(x), h(x) 

f (x), g (x) und h (x) sind eine Funktion:

-infinity <x <0,8: f (x)

0,8 <= x <0,93: g (x)

0,93 <= x <+ Unendlichkeit: h (x)

Wie kann ich das machen?

6

1 Antwort auf die Frage

9
Jan Hlavacek

Ändern Sie die letzte Zeile in

plot f(x)*(x<0.8) + g(x) * (x>=0.8)*(x<0.93) + h(x)*(x>=0.93) 

Ich finde das einfach zu lesen, aber es hat den Nachteil, dass immer alle f (x), g (x) und h (x) ausgewertet werden. Sie können auch den ternären Bedingungsoperator verwenden:

condition ? case1 : case2 

wird auswerten, case1ob conditionwahr ist und case2ob conditionfalsch ist. Sie können diese so verschachteln

plot x < 0.8 ? f(x) : x < 0.93 ? g(x) : h(x) 

wird die Arbeit für Sie erledigen.

Hallo Jan, es funktioniert gut, danke. http://www.gnuplot.info/docs_4.2/gnuplot.html ist sehr interessant, wenn jemand anderes nach grundlegenden Problemen in gnuplot sucht. Martin Thoma vor 13 Jahren 0