2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 gnuplot: несколько графиков в одном окне с заданием диапазон
Сообщение09.12.2009, 23:20 
Аватара пользователя
Подскажите, кто знает: как в gnuplot нарисовать в одном окне несколько графиков функций, так чтобы для каждой задавать свой интересующий диапазон изменения переменной (более узкий, чем диапазон окна). Пока что у меня при задании диапазона графика он меняет масштаб окна.

 
 
 
 Re: gnuplot: несколько графиков в одном окне с заданием диапазон
Сообщение10.12.2009, 10:01 
Аватара пользователя
Проблему можно решить, если с помощью индикаторов принадлежности к множеству вручную задавать функции, определенные одним способом на одной части графика и другим способом - на другой. Странно однако, что в параметрах рисования графиков нет возможности явно указать желаемый диапазон изменения переменной, отличный от видимого на графике интервала.

 
 
 
 Re: gnuplot: несколько графиков в одном окне с заданием диапазон
Сообщение10.12.2009, 23:44 
Аватара пользователя
Для окна вроде бы есть:
set xrange [0:100]
при рисовании графиков диапазон тоже можно указывать:
plot [20:30] f(x)

 
 
 
 Re: gnuplot: несколько графиков в одном окне с заданием диапазон
Сообщение11.12.2009, 00:03 
Аватара пользователя
Это я знаю, но эта команда установит диапазон на оси х от 20 до 30 и нарисует на нем функцию f(x).
А хотелось бы следующего: чтобы в этом окне график функции f(x) был бы нарисован только от 20 до 25, а от 25 до 30 был бы нарисован график g(x). Такой возможности в собственно команде рисования я не нашел, что мне немного странно, так как такая возможность кажется достаточно естественной.

Сделать это, конечно, можно, если определить свою функцию:
Код:
h(x) = (x<25? f(x) : g(x))
plot [20:30] h(x)

но хотелось бы как-то попроще. Если требуемая функция состоит из более двух кусков, то самый простой способ, который я вижу - это определить свою функцию, равную индикатору попадания точки в интервал, и составить целевую функцию, равную сумме слагаемых, которые с помощью умножения на такие индикаторы делаются равными нулю, где требуется.

Если же хочется, чтобы график был бы только до 25, а после ничего бы не было, то этого можно добиться, составив функцию, равную 1 в одном месте и неопределенную в другом (скажем, корень из $\pm 1$). Но все это как-то не очень естественно смотрится.

 
 
 
 Re: gnuplot: несколько графиков в одном окне с заданием диапазон
Сообщение11.12.2009, 10:54 
PAV в сообщении #270088 писал(а):
Если требуемая функция состоит из более двух кусков, то самый простой способ, который я вижу - это определить свою функцию, равную индикатору попадания точки в интервал, и составить целевую функцию, равную сумме слагаемых, которые с помощью умножения на такие индикаторы делаются равными нулю, где требуется.

Ну так это вроде как наиболее стандартный способ и есть. Более того: такую функцию можно не только выводить на график, но ещё и работать с ней.

 
 
 
 Re: gnuplot: несколько графиков в одном окне с заданием диапазон
Сообщение11.12.2009, 11:20 
Аватара пользователя
С этим можно согласиться, но все-таки было бы удобно иметь возможность явно указывать желаемый диапазон изменения. Потому что в последнем моем примере приходится искусственно делать функцию неопределенной на некоторой области, что выглядит явным извращением.

Но в общем я так понимаю, что естественного способа, предусмотренного интерфейсом функции, нет. Хотя по-прежнему считаю, что это странно. Можно было бы сделать необязательный параметр.

 
 
 
 Re: gnuplot: несколько графиков в одном окне с заданием диапазон
Сообщение09.01.2010, 15:39 
Можно так.

Изображение Изображение

Изображение Изображение

 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group