Я две функции:
f(x) = x**2
g(x) = -(x-4)*x
Мне нужно рассчитать площадь между этими двумя кривыми, для этого я хотел бы иметь визуализацию. В WolframAlpha есть именно то, что я хочу: https://www.wolframalpha.com/input/?i=area+between+the+curves+y%3Dx%5E2+and+y%3D-x%5E2%2B4x , однако мне нужно сделать графику в gnuplot. Вот мой код:
set border linewidth 1
set style line 1 linecolor rgb '#0060ad' linetype 1 linewidth 1
set style line 2 linecolor rgb '#dd181f' linetype 1 linewidth 1
set key at 6.1,1.3
set xlabel 'x'
set ylabel 'y'
set xrange [-0.5:3]
set yrange [0:5]
set xtics 2
set ytics 2
set tics scale 2
f(x) = x**2
g(x) = -(x-4)*x
set grid ytics lt 0 lw 1 lc rgb "#bbbbbb"
set grid xtics lt 0 lw 1 lc rgb "#bbbbbb"
plot f(x) title 'f(x)' with lines linestyle 1, \
g(x) title 'g(x)' with lines linestyle 2
Он производит этот вывод:
Есть ли способ выделить область между этими двумя кривыми, как в WolframAlpha? Предполагая, что мы знаем, где они пересекаются (0 и 2), если только gnuplot не может сделать это самостоятельно.
Если это не то, на что способен vanilla gnuplot, я извиняюсь, в этом случае некоторые указатели на ресурсы, которые могут это сделать, будут оценены.
@theozh У меня есть, к сожалению, так как я очень новичок в gnuplot, я не смог в этом разобраться. Тем не менее, я думаю, что вы можете заполнить только область под одной кривой, а я хочу заполнить область между двумя кривыми.
Этого можно добиться с помощью filledcurves
(см. документы: http://gnuplot.sourceforge.net/docs_4.2/node245.html). Вам просто нужно использовать опцию below
, чтобы заполнить только область между двумя кривыми.
В качестве примера попробуйте следующее:
plot '+' using 1:(f($1)):(g($1)) title '' with filledcurves below lc rgb 'green', \
f(x) title 'f(x)' with lines linestyle 1, \
g(x) title 'g(x)' with lines linestyle 2
Это основано на том, как это описано в FAQ здесь для двух кривых: http://www.gnuplot.info/faq/#x1-460005.3
Спасибо, это немного работает. Область между ними теперь заполнена зеленым цветом. Однако '+' using 1:(f($1)):(g($1))
отображается в виде строки в правом верхнем углу. Вот текущий сюжет: i.imgur.com/3kzxslX.png Это задуманное поведение, или я сделал что-то не так, и если это так, как я могу отключить этот ярлык?
Попробуйте добавить title ''
, обновил пример.
Вы проверили руководство gnuplot и
help filledcurves
? и это: gnuplot.sourceforge.net/demo_5.4/fillcrvs.html