2014 dxdy logo

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

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


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 численное решение ОДУ c "singular point" в Mathematica
Сообщение02.08.2019, 05:45 


03/02/11
6
При решении некой задачи ОТО требуется численно решить следующее нелинейное уравнение:
$\dfrac{dy}{dx} = -\dfrac{x}{y(x)} \dfrac{1- \lambda \sqrt{x^2+y(x)^2(1- \lambda^2 x^2)}}{1-\lambda^2 x^2}$
при граничном условии $y(0)=1$ на отрезке $x \in [0,1]$, при различных значениях параметра $\lambda \in [0,1)$.

При $\lambda = 0$, естественно, получаем (полу)окружность, что из физической постановки задачи верно. При ненулевых $\lambda$ физически должна получаться вытянутая вдоль $x$ капля. Дальше начинаются танцы с бубеном. Пытаюсь влоб найти численное решение в Mathematica, используя ParametricNDSolve при стандартных настройках:

Код:
sol = ParametricNDSolve[{y'[x] == -x/y[x] (1 - \[Lambda] Sqrt[x^2 + y[x]^2 (1 - \[Lambda]^2 x^2)])/(1 - \[Lambda]^2 x^2), y[0] == 1}, y, {x, 0, 2}, {\[Lambda]}]
Plot[Evaluate[Table[y[\[Lambda]][x] /. sol, {\[Lambda], 0.1, 0.995, .2}]], {x, 0, 1}, PlotRange -> All]


но, понятное дело, там, где капля пересекает ось $x$ производная $y'(x)$ обращается в бесконечность, так что NDSolve загибается (интересно, что случай с окуржностью он решает, хотя там тоже бесконечности вылезают).

Вобщем вопрос: какие есть подходы к численному решению такой задачи? Можно, конечно, в ряд разложить в окрестности особой точки, но неужели стандартными методами Mathematica такие задачи не решаются?

 Профиль  
                  
 
 Re: численное решение ОДУ c "singular point" в Mathematica
Сообщение02.08.2019, 09:00 
Заслуженный участник
Аватара пользователя


05/12/09
1813
Москва
Попробуйте перейти к полярным координатам.

 Профиль  
                  
 
 Re: численное решение ОДУ c "singular point" в Mathematica
Сообщение02.08.2019, 09:09 


11/07/16
828
Вопрос относится к разделу "Околонаучный софт".
Цитата:
При ненулевых $\lambda$ физически должна получаться вытянутая вдоль $x$ капля

мне непонятно.
Вы не упомянули ошибок типа
Код:
At x == 1.0526797499069145`, step size is effectively zero; \
singularity or stiff system suspected.

пр выполнении Вашего кода.

 Профиль  
                  
 
 Re: численное решение ОДУ c "singular point" в Mathematica
Сообщение02.08.2019, 09:39 
Заслуженный участник


25/02/11
1804
Так у вас $x$ только до единицы. Вот так она что-то считает:
Код:
sol = ParametricNDSolve[{y'[x] == -x/  y[x] (1 - \[Lambda] Sqrt[x^2 + y[x]^2 (1 - \[Lambda]^2 x^2)])/(1 - \[Lambda]^2 x^2), y[0] == 1}, y, {x, 0, 2}, {\[Lambda]}]
Plot[Evaluate[Table[UnitStep[y[\[Lambda]][x]] y[\[Lambda]][x] /. sol, {\[Lambda],  0.1, 0.995, .2}]], {x, 0, 3}, PlotRange -> All]

Команда UnitStep здесь, чтобы обрезать быстро убывающую отрицательную часть решения.

 Профиль  
                  
 
 Re: численное решение ОДУ c "singular point" в Mathematica
Сообщение02.08.2019, 09:56 


03/02/11
6
всем спасибо, все решилось обрезанием отрицальной части решения (с последующей сшивкой зеркального отображения в горизонтальной оси), а NDSolve, на самом деле, все решала с самого начала правильно

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

Модераторы: Модераторы Математики, Супермодераторы



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

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


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

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