Почему при x<0 Maple рисует график функции, зависящей от sqrt(x)?

Форум пользователей пакета Maple

Модератор: Admin

ovmihailov
Сообщения: 19
Зарегистрирован: Чт ноя 02, 2017 1:25 pm

Почему при x<0 Maple рисует график функции, зависящей от sqrt(x)?

Сообщение ovmihailov » Вт янв 09, 2018 10:39 am

При вычислении функции f, определенной кодом

Код: Выделить всё

restart: f := x -> sqrt(x)*sin(1/sqrt(x));f(-1); evalf(%);

без проблем извлекаются квадратные корни из отрицательных чисел (наверное через выход в комплексную область). Добавление команды with(RealDomain): приводит к тому, что f(-1) становится неопределенным:

Код: Выделить всё

restart:with(RealDomain): f := x -> sqrt(x)*sin(1/sqrt(x));  f(-1); evalf(%);

Тем не менее команды

Код: Выделить всё

restart: with(RealDomain): f := x -> sqrt(x)*sin(1/sqrt(x)); plot(f(x),x=-1..1,y=-1..2);
рисуют график функции f и на отрицательной полуоси (для x<0).
Не подскажет ли кто-нибудь, как при наличии в команде plot фрагмента x=-1..1 заставить команду plot не рисовать график f при x<0.
Идея в том, что если пользователь не заметит, что какая-то функция не определена в некотором диапазоне x=a..b, то средства Maple должны это заметить автоматически при построении графика f.

Kitonum
Сообщения: 2035
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: Почему при x<0 Maple рисует график функции, зависящей от sqrt(x)?

Сообщение Kitonum » Вт янв 09, 2018 12:06 pm

Причина в том, что на самом деле для любого x<0 число sqrt(x)*sin(1/sqrt(x)) является действительным (произведение двух комплексных чисел вполне может оказаться действительным, например i*i=-1). Смотрите:

convert(sqrt(x)*sin(1/sqrt(x)), exp);
evalc(%) assuming x<0;
eval(%, x=-p);
# p положительно

Если вы всё же хотите, чтобы график для x<0 не строился, то задайте функцию так:
f:=x->piecewise(x>0, sqrt(x)*sin(1/sqrt(x)), undefined):

ovmihailov
Сообщения: 19
Зарегистрирован: Чт ноя 02, 2017 1:25 pm

Re: Почему при x<0 Maple рисует график функции, зависящей от sqrt(x)?

Сообщение ovmihailov » Вт янв 09, 2018 4:30 pm

Спасибо, но я в своем вопросе, по-видимому, неаккуратно расставил акценты.
Я вижу, что мой вопрос был понят так: есть функция, область определения которой мне известна, и я хочу построить график этой функции для каких-то целей, например, для отчета.
На самом деле ситуация такова: есть функция, заданная сложным аналитическим выражением - настолько сложным, что очень трудно понять, как выглядит ее область определения. Возникает идея построить график этой функции для того чтобы сразу увидеть, как область определения выглядит: Maple сам должен сообразить, где функция не определена, и там не рисовать линию ее графика. Тем самым по разрывам линии графика можно без больших издержек сделать представление об области определения функции.
Я надеялся, что команда with(RealDomain):, поставленная перед командой plot заставит Maple не рисовать график функции вне ее области определения. Обосновывалась моя надежда тем, что конструкция

Код: Выделить всё

with(RealDomain): f := x -> sqrt(x)*sin(1/sqrt(x));  f(-1); evalf(%);
запрещала вычислять значение f(-1).
Итого, у меня два вопроса.
1) Почему команда with(RealDomain): успешно борется с выходом в комплексную область в случае

Код: Выделить всё

with(RealDomain): f := x -> sqrt(x)*sin(1/sqrt(x));  f(-1); evalf(%);
и бессильна в случае

Код: Выделить всё

with(RealDomain): f := x -> sqrt(x)*sin(1/sqrt(x)); plot(f(x),x=-1..1,y=-1..2);
?
2) Как заставить Maple автоматически не строить график функции там, где функция не определена, помогая мне тем самым быстро составить представление об области определения изучаемой функции?

Markiyan Hirnyk
Сообщения: 1219
Зарегистрирован: Вс дек 04, 2011 11:07 pm

Re: Почему при x<0 Maple рисует график функции, зависящей от sqrt(x)?

Сообщение Markiyan Hirnyk » Вт янв 09, 2018 9:30 pm

Для сравнения: Математика производит следующий результат

Код: Выделить всё

FunctionDomain[Sin[1/Sqrt[x]]*Sqrt[x], x]
x>0

ovmihailov
Сообщения: 19
Зарегистрирован: Чт ноя 02, 2017 1:25 pm

Re: Почему при x<0 Maple рисует график функции, зависящей от sqrt(x)?

Сообщение ovmihailov » Вт янв 09, 2018 9:58 pm

К сожалению, у меня нет пакета "Математика". Поясните, если это возможно, фразу
Для сравнения: Математика производит следующий результат.

Kitonum
Сообщения: 2035
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: Почему при x<0 Maple рисует график функции, зависящей от sqrt(x)?

Сообщение Kitonum » Ср янв 10, 2018 12:13 am

ovmihailov, можете сделать так: сначала выполните команду indets , которая возвращает все подвыражения исходного выражения, содержащие переменную x . Постройте все эти подвыражения и вы увидите , что все эти подвыражения являются действительными числами только для x>0 :
restart:
f := x -> sqrt(x)*sin(1/sqrt(x));
indets(f(x));
plot(convert(%, list), x=-1..1, -1..2, color=[red,blue,green,yellow]);

Markiyan Hirnyk
Сообщения: 1219
Зарегистрирован: Вс дек 04, 2011 11:07 pm

Re: Почему при x<0 Maple рисует график функции, зависящей от sqrt(x)?

Сообщение Markiyan Hirnyk » Ср янв 10, 2018 7:20 am

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

, то я попытаюсь это сделать в Математике. Можно спросить это на форуме Математика в forum.exponenta.ru.

ovmihailov
Сообщения: 19
Зарегистрирован: Чт ноя 02, 2017 1:25 pm

Re: Почему при x<0 Maple рисует график функции, зависящей от sqrt(x)?

Сообщение ovmihailov » Ср янв 10, 2018 2:44 pm

Вопрос прояснился. Большое спасибо всем за советы.