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
1797
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, Супермодераторы



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

Сейчас этот форум просматривают: DariaRychenkova


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

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