2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 [Wolfram Mathematica] Найти нули функции
Сообщение09.04.2016, 11:12 
Аватара пользователя


03/03/10
1341
У меня в Математике задана функция двух переменных $f(x,y)$ весьма сложного вида. Я хочу найти функцию $y(x)$ такую, что $f(x, y(x)) = 0$, то есть кривую, на которой $f(x,y)$ обращается в нуль.
Я пробовал делать с помощью команды
Код:
y[x_]:=y/.NSolve[f(x,y)==0, y]
это работает если $f(x,y)$ не слишком сложная, но иначе вычисления длятся слишком долго, результата я так и не дождался. Тем не менее, Математика легко выдаёт график
Код:
CountourPlot[f(x,y)==0,{x,-10,10},{h,-0.6,0.6}]

Но ведь при построении графика она так или иначе должна эти нули находить. Значит, должен быть способ получить $y(x)$. Можете что-нибудь подсказать?

 Профиль  
                  
 
 Re: [Wolfram Mathematica] Найти нули функции
Сообщение09.04.2016, 13:12 
Заслуженный участник


27/04/09
28128
Как раз для ContourPlot от $f$ нет необходимости находить точно зависимость $y$ от $x$ на $f(x,y) = 0$ — в выбранной области просто несколько раз вычисляется $f$, а потом линии уровня берутся у интерполированной поверхности. Даже если я слишком упростил (например, не смотрел, как выбирается, в каких именно точках вычислять $f$), находить $y(x)$ для этого не нужно точно.

Kitozavr в сообщении #1113528 писал(а):
Код:
CountourPlot[f(x,y)==0,{x,-10,10},{h,-0.6,0.6}]
Тут что-то с переменными не так. :-)

 Профиль  
                  
 
 Re: [Wolfram Mathematica] Найти нули функции
Сообщение09.04.2016, 13:18 
Аватара пользователя


03/03/10
1341
arseniiv в сообщении #1113544 писал(а):
Тут что-то с переменными не так. :-)
Конечно, там $y$ должен быть :D .
А могу я "выдрать" зависимость $y(x)$ из полученного графика или как-то использовать тот же метод, что используется при его построении?

 Профиль  
                  
 
 Re: [Wolfram Mathematica] Найти нули функции
Сообщение09.04.2016, 13:22 
Заслуженный участник


27/04/09
28128
Тут я лучше ничего не скажу, надо читать. Если ничего не предложат, посмотрю.

 Профиль  
                  
 
 Re: [Wolfram Mathematica] Найти нули функции
Сообщение09.04.2016, 13:43 


04/07/15
137
Kitozavr, поскольку в общем случае такое не делается – только численно, то и с Mathematica надо рассчитывать на удачу.
Лучше посмотрите соответствующие численные методы.

 Профиль  
                  
 
 Re: [Wolfram Mathematica] Найти нули функции
Сообщение09.04.2016, 14:24 
Аватара пользователя


03/03/10
1341
EXE
На большее я и не наделся.
Посмотрел численные методы, FindRoot достаточно резво работает. Можно считать, что проблема решена.

 Профиль  
                  
 
 Re: [Wolfram Mathematica] Найти нули функции
Сообщение09.04.2016, 21:17 
Заслуженный участник


25/02/11
1786
Kitozavr в сообщении #1113548 писал(а):
А могу я "выдрать" зависимость $y(x)$ из полученного графика или как-то использовать тот же метод, что используется при его построении?
Да, только точность там небольшая. Если посмотреть FullForm графика, то видно, что координаты там есть. Дальше дело техники:
Код:
gr = ContourPlot[x^2 + y^2 - 1, {x, -2, 2}, {y, -2, 2},  ContourShading -> None, Contours -> {0}]
points = Extract[gr[[1, 1]], List /@ gr[[1, 2, 2, 2, 1, 2, 1]]];
Массив points и есть ответ, посмотреть его ListPlot[points, AspectRatio -> 1]. Если решений не хватает, то в ContourPlot можно вставить опцию – начальных точек побольше: PlotPoints -> 100.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group