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

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




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

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

 Re: Пересечение осей координат в нулевой точке в Mathematica
Можно, например, так:
Код:
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
Аватара пользователя
optimist, спасибо, AxesOrigin пригодился. А можно ли в Plot[{f[f],g[x]},{x,a,b}] задавать {x,a,b} отдельно для функций $f$, $g$? Тогда, кажется, моя проблема решена.

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

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

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

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


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