-не так Часто Задаваемые Вопросы- обновлено 2010/12/26
|
|
Построение неявной функцииФункция, которая не определена в виде y=f(x), но описанна как f(x)+g(y)=0, не может быть задана в gnuplot. Чтобы построить такую функцию, необходимо использовать параметрическое представление или функцию, определенную как 3D поверхность, и найти пересечения кривой z=0 с плоскостью. Если функция может быть определена параметрами, ее легко построить. Например, уравнение окружности x*x+y*y=r*r, параметрически определяется x=r*sin(t) и y=r*cos(t). В gnuplot: gnuplot> set parametric dummy variable is t for curves, u/v for surfaces gnuplot> set size square gnuplot> r=1 gnuplot> plot r*sin(t),r*cos(t) Когда функция настолько сложна, что использование параметров затруднительно, определяют функцию как 3D поверхность. Следующий пример для x^3-2xy + y^3=0 . gnuplot> f(x,y)= x**3 - 2*x*y + y**3 Пересечение f(x,y) и z=0 - решение. Для установки проекции z=0 в нижней части 3D построения, используется set ticslevel 0. gnuplot> set xrange [-2:2] gnuplot> set yrange [-2:2] gnuplot> set zrange [0:5] gnuplot> set ticslevel 0 gnuplot> set view 40,340 gnuplot> set isosample 100,100 gnuplot> splot f(x,y) Кривая, расположенная снизу, - решение f(x,y)=0. Контурные линии дают нам значения этой прямой, записанные в файл. gnuplot> set xrange [-2:2] gnuplot> set yrange [-2:2] gnuplot> set zrange [*:*] gnuplot> set cont base gnuplot> set cntrparam levels discrete 0,0 gnuplot> unset surface gnuplot> set surface gnuplot> set term table gnuplot> set output "cont.dat" gnuplot> splot f(x,y) Затем данные о файле приведены в обычном порядке. gnuplot> set xrange [-2:2] gnuplot> set yrange [-2:2] gnuplot> set size square gnuplot> plot "cont.dat" w l Следующий метод не использует временный файл. контурные линии показаны от -0.4 с шагом 0.1, и каждая строка соответствует решению x^3-2xy + y^3=const. gnuplot> set xrange [-2:2] gnuplot> set yrange [-2:2] gnuplot> set view 0,0 gnuplot> set isosample 100,100 gnuplot> set size square gnuplot> set cont base gnuplot> set cntrparam levels incre -0.4,0.1,0.4 gnuplot> unset surface gnuplot> splot f(x,y) |