2014 dxdy logo

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

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




 
 Пересечение осей координат в нулевой точке в Mathematica
Сообщение14.11.2019, 00:54 
Аватара пользователя
Здравствуйте. Пытаюсь построить график функции $f(x)$ - первообразной, полученной численным интегрированием. Проблема в том, что в некоторой точке $x_0$ функция $f(x)$ терпит разрыв (при численном интегрировании в этой точке происходит деление на ноль) и соответственно при попытке построить график этой функции на отрезке, включающем $x_0$ возникает ошибка. Поэтому я хочу построить график функции на отрезке, не включающем $x_0$, но чтобы при этом область значения самой абсциссы эту точку включала. Если эти области не совпадают, то оси координат, вообще говоря, пересекаются не в нулевой точке, а нужно чтобы было именно так. Что-то вроде

Изображение

В этом примере я использую Plot[{ConditionalExpression[Sin[x],2<x<7],ConditionalExpression[3,0<=x<=9]},{x,0,9},PlotRange->{-2,2}].

 
 
 
 Re: Пересечение осей координат в нулевой точке в Mathematica
Сообщение14.11.2019, 06:45 
Посмотрите на опцию Exclusions.
Или можете сами генерировать таблицу данных и использовать ListPlot

Код:
Clear[f] ;
f[x_?NumericQ] := NIntegrate[Sin[t]/(x-1),{t,0,x}]
Plot[f[x],{x,0,2},Exclusions->{1}]

 
 
 
 Re: Пересечение осей координат в нулевой точке в Mathematica
Сообщение14.11.2019, 13:36 
Аватара пользователя
sithif, спасибо. Попробовал Exclusions, набор точек получается исключить, можно ли исключить целый отрезок значений? Нашёл ещё RegionFunction, задать отрезок, на котором рисуется график получается, но значение функции все равно вычисляется также и в точках, диапазон которых указывается во втором аргументе функции Plot: Plot[Sin[x],{x,0,10}]. Может возможно указать вроде Plot[Sin[x],{x,5,10}], но при этом значения абсциссы на графике будут от 5 до 10, а нужно чтобы от 0 до 10. То есть ещё бы как-то отдельно указать "диапазон отрисовки" осей.

От генерирования таблицы данных пока пытаюсь увернуться :)

 
 
 
 Re: Пересечение осей координат в нулевой точке в Mathematica
Сообщение14.11.2019, 14:20 
Можно, например, так:
Код:
d = 0.3;
Plot[Tan[x], {x, Pi, 2*Pi},RegionFunction ->Function[{x, y}, 3*Pi/2 - d >= x || 3*Pi/2 + d <= x],PlotRange -> {{0, 2*Pi}, All}, AxesOrigin -> {0, 0}]

 
 
 
 Re: Пересечение осей координат в нулевой точке в Mathematica
Сообщение14.11.2019, 17:18 
Аватара пользователя
optimist, спасибо, AxesOrigin пригодился. А можно ли в Plot[{f[f],g[x]},{x,a,b}] задавать {x,a,b} отдельно для функций $f$, $g$? Тогда, кажется, моя проблема решена.

Просто функции RegionFunction и ConditionalExpression решают проблему с отображением графика функции на определенном отрезке, но сам {x,a,b} включает точку, в которой у моей функции есть особенность и хочется чтобы в этой точке функция вообще не считалась. Проблема в том, что нужно нарисовать несколько кривых (с особенностями в разных точках) на одном графике.

 
 
 
 Re: Пересечение осей координат в нулевой точке в Mathematica
Сообщение14.11.2019, 17:26 
Код:
Show[Plot[x, {x, 0, 1}, PlotRange -> All],  Plot[Sin[x], {x, Pi/2, Pi}]]

 
 
 
 Re: Пересечение осей координат в нулевой точке в Mathematica
Сообщение14.11.2019, 18:11 
Аватара пользователя
optimist, спасибо! Получилось! Вопрос решён.

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


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