Как определить функцию по частям для черчения?

16853
Martin Thoma

Я использую gnuplot для построения функций. Это мой сценарий на данный момент:

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) и h (x) являются одной функцией:

бесконечность <x <0,8: f (x)

0,8 <= х <0,93: г (х)

0,93 <= x <+ бесконечность: h (x)

Как я могу это сделать?

6

1 ответ на вопрос

9
Jan Hlavacek

Измените последнюю строку на

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

Я нахожу это легко читаемым, но у него есть недостаток в том, что все f (x), g (x) и h (x) всегда будут оцениваться. Вы также можете использовать троичный условный оператор:

condition ? case1 : case2 

будет оценивать, case1если conditionистинно и case2если conditionложно. Вы можете вложить их, так

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

сделает работу за вас.

Привет Ян, все работает отлично, спасибо. http://www.gnuplot.info/docs_4.2/gnuplot.html довольно интересно, если кто-то еще ищет основные проблемы в gnuplot. Martin Thoma 13 лет назад 0

Похожие вопросы