2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 NDSolve "особые точки"
Сообщение27.01.2011, 11:35 


27/01/11
9
Здравствуйте!
Нужно решить ур-е в ч.п.
$u=u(n,t)$
$\dfrac{\partial u}{\partial t}-\dfrac{2.5}{u} \dfrac{\partial u}{\partial n}=2.5-B(t)$
$u(0,t)=2.5 t$
Решаю уравнение так
Код:
In[5]
NDSolve[{D[u[n,t],t]-(2.5/u[n,t])D[u[n,t],n]=2.5-B[t], u[0,t]=2.5 t}, u[n,t], {n,0,1},{t,0.8, 5.0} ]

Mathematica выдает
Код:
NDSolve::bcart: 
   NDSolve::ndsz:
At n==0.750228895425, step size is effectively zero; singularity or stiff system suspected.
NDSolve::eerr:
Scaled local spatial error estimate of 528.01075020214368 at n==0.750228895425 in the direction of independent variable t is much greater than prescribed error tolerance. Grid spacing with 25 points may be too large to achieve the desired accuracy or precision.  A singularity may have formed or you may want to specify a smaller grid spacing using the MaxStepSize or MinPoints method options.
Out[5]
{{u[n,t]->InterpolatingFunction[{{0.,0.750229},{0.8,5.}},<>][n,t]}}


То есть в этой точке n==0.750228895425 какая-то особенность..?
Я пробывала увеличивать шаг, добавляла MaxSteps->Infinity, "особенность" вылезла при n==0.84

Можно ли "выкалывать" такие точки при решении, чтобы получить функцию на всем интервале (так, как это делается при численном интегрировании)?
Или как следует поступать в таких случаях?
Спасибо.

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение27.01.2011, 12:13 
Аватара пользователя


15/01/06
200
B(t) покажите какое у вас там.

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение27.01.2011, 12:57 


27/01/11
9
вот
$B(t)=0.862309+\dfrac{1.71292}{t^3}-\dfrac{0.105414}{t^2}+\dfrac{1.48811}{\sqrt t}$

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение27.01.2011, 19:35 
Аватара пользователя


15/01/06
200
Вы лучше начальное условие задайте, ведь математика в первую очередь об этом вас просит.

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение28.01.2011, 10:49 


27/01/11
9
Все условия, которые известны, я задала ($u(o,t)=2.5 t$).
Больше ничего нет.
Когда уравнение получалось проще, находила решение в MathCad и одного начального условия было достаточно..не понимаю почему Mathematica выдает это предупреждение, других условий у меня все-равно нет.

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение28.01.2011, 18:10 
Аватара пользователя


15/01/06
200
Математика выдает такие сообщения, потому что вы численно пытаетесь решить уравнение, но при этом не задаете достаточного количества условий. Могу ошибаться, но для численного решения подобных уравнений все же необходимо два условия.
В маткаде точно решали уравнения в частных производных?

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение28.01.2011, 20:07 


27/01/11
9
Хорошо, скорее всего вы правы. Но второго условия у меня нет, и это все же не ошибка, а предупреждение (при другом гран. условий, решение находится на всем интервале, не смотря на warning).
Повторюсь, меня интересует вопрос:
Возможно ли избавлиться при численном решении от "особых точек", чтобы найти его (решение) на всем интервале (как в случае интегрирования)...

В Маткаде я решала систему ОДУ, полученную из этого УЧП. Точнее одно уравнение решила аналитически, а второе - численным интегрированием.

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение28.01.2011, 20:19 
Аватара пользователя


15/01/06
200
При каком именно другом граничном условии решение находится?

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение28.01.2011, 21:32 


27/01/11
9
$u(0,t)=\frac{2.5}{t}$

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение31.01.2011, 23:21 
Аватара пользователя


15/01/06
200
Но ведь оно тоже неизвестно какое находится. Математика вам пишет собственно то же самое, что она будет использовать некое искусственное граничное условие. Что это значит, мне сложно сказать.
Откуда вообще взялась такая задача - решить численно подобное уравнение и при этом с недостаточным количеством начальных/граничных условий?

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение01.02.2011, 11:34 


27/01/11
9
То, что Mathematica считает до этой "особой" точки (при граничном условии $u(0,t)=at$), меня вполне устраивает, не смотря на то, что "она использует некое искусственное граничное условие". Мой главный вопрос, можно ли избавиться от подобных "особых" точек при численном решении, или возможно ли как-то "выкалывать" их?..
Именно этот пример я уже решила в др пакете, но нужно решить уравнение сложнее приведеного соотношения и чтоб сделать это, необходимо понять как решать данное уравнение..
Сама задача возникла из физики, а именно термодинамики, Чтобы прийти к этому уравнению потребовалось немало времени..

Leierkastenmann, спасибо за ответы.)

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение01.02.2011, 20:25 
Аватара пользователя


15/01/06
200
Как "выкалывать" точки при решении я не знаю, мне лишь два способа решения проблемы представляются верными. Первый я уже озвучил выше - это постановка начального условия. Второй - это нахождение подходящего численного метода решения задачи в вашей постановке без начального условия и применение этого метода в Математике, ведь у нее довольно много разных параметров для NDSolve. По второму способу вряд ли что-то подскажу, в численных методах большого опыта не имею.
И кстати, раз вы говорите, что это физическая задача, то пусть вы "выколете" эти самые точки, но как вы будете интерпретировать тогда этот результат?
И второй вопрос чисто из любопытства - какой пакет решил эту задачу? Как выглядело решение? И если уж какой-то пакет ее решил, то известно ли каким методом он ее решал, чтобы попробовать нечто аналогичное в математике?

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение02.02.2011, 17:06 


27/01/11
9
Leierkastenmann в сообщении #407846 писал(а):
Как "выкалывать" точки при решении я не знаю, мне лишь два способа решения проблемы представляются верными. Первый я уже озвучил выше - это постановка начального условия.

Этот способ не подходит, условий больше нет.

Leierkastenmann в сообщении #407846 писал(а):
Второй - это нахождение подходящего численного метода решения задачи в вашей постановке без начального условия и применение этого метода в Математике, ведь у нее довольно много разных параметров для NDSolve. По второму способу вряд ли что-то подскажу, в численных методах большого опыта не имею.

Пытаюсь разобраться. Если добавлять MaxStepFraction->0.001 и MaxSteps -> Infinity, то это лишь "отодвигает особенность" на $n=0.855$. Больше ничего толкого мне найти не удается..

Leierkastenmann в сообщении #407846 писал(а):
И кстати, раз вы говорите, что это физическая задача, то пусть вы "выколете" эти самые точки, но как вы будете интерпретировать тогда этот результат?
И второй вопрос чисто из любопытства - какой пакет решил эту задачу? Как выглядело решение? И если уж какой-то пакет ее решил, то известно ли каким методом он ее решал, чтобы попробовать нечто аналогичное в математике?

Как интерпритировать результат, это другой вопрос.)
Как уже говорила, задача решалась в маткаде.
Это уравнение в чп представим в виде системы ОДУ
$\left\{\begin{matrix}
\dfrac{du}{dt}=2.5-B(t)  \\ 
 \dfrac{dn}{dt}=-\dfrac{2.5}{u}  
\end{matrix}\right$
$u(0,t)=2.5 t$

Из первого уравнения системы находим аналитический вид $u=2.5t-f(t)+C$ $\left(f(t)=-8.40223 - \dfrac{0.856458}{t^2} + \dfrac{0.105414}{t} + 2.97622 \sqrt {t} + 0.862309 t\right)$,
где (С находим используя гр. условия: при $n=0,\,\, t=\tau,\quad u=2.5 \tau$) $C=2.5\tau -f(\tau)$. Откуда получим $u(t,\tau)=2.5t-f(t)-2.5\tau +f(\tau)$. Параметр $\tau$ ищется из второго уравнения системы. А именно в результате численного интегрирования выражения
$\int_0^n dn=2.5\int_{\tau}^t\dfrac{dk}{2.5k-f(k)-2.5\tau +f(\tau))}$
Находим $\tau(n,t)$ и подставляем в $u(n,t)=2.5t-f(t)-2.5\tau(n,t) +f(\tau(n,t))$
Этот интеграл и был посчитать в маткаде, как он его вычисляет я не знаю...

Реализовывать такое интегрирование в математике я затрудняюсь, да и нет необходимости.
С этой системой ОДУ мне повезло, т.к. первое уравнение получилось с разделяющимися перменными, что и позволило получить его аналитический вид. Другие задачи так решить не получится, переменные не разделяются..

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение03.02.2011, 12:03 
Аватара пользователя


31/01/10
42
Простите, что вклиниваюсь со своими проблемами в вашу тему, но новую тему из-за NDSolve не хочется создавать.
Речь идёт о системе
$
\left{
\begin{cases}
x'(t) = y(t), \\
y'(t) = -a x(t) + x(t)y(t),
\end{cases}
\right.
$
где $a$ - параметр.
Реализация в Wolfram Mathematica:
Код:
In[111]:= a = 1;
tmin = -10; tmax = 10;
xsol = NDSolve[{x'[t] == y[t], y'[t] == -a*x[t] + x[t]*y[t],
   x[0] == y[0] == 2}, {x, y}, {t, tmin, tmax},
  MaxSteps -> 1000, AccuracyGoal -> 10, PrecisionGoal -> 10]
{Plot[x[t] /. %, {t, tmin, tmax}],
ParametricPlot[Evaluate[{x[t], y[t]} /. xsol], {t, tmin, tmax}]}

During evaluation of In[111]:= NDSolve::mxst: Maximum number of 1000 steps reached at the point t == -3.90479. >>

During evaluation of In[111]:= NDSolve::mxst: Maximum number of 1000 steps reached at the point t == 1.1563093288532464`. >>


Соответственно, возникает вопрос, что мешает Mathematica не обращать внимание на превышение количества шагов?

P.S. Matlab сосчитал, хотя и указывал на огромные значение функций, но ответ-таки выдал.

 Профиль  
                  
 
 Re: NDSolve "особые точки"
Сообщение03.02.2011, 22:11 
Аватара пользователя


15/01/06
200
Holly в сообщении #408259 писал(а):
Из первого уравнения системы находим аналитический вид $u=2.5t-f(t)+C$ $\left(f(t)=-8.40223 - \dfrac{0.856458}{t^2} + \dfrac{0.105414}{t} + 2.97622 \sqrt {t} + 0.862309 t\right)$,
где (С находим используя гр. условия: при $n=0,\,\, t=\tau,\quad u=2.5 \tau$) $C=2.5\tau -f(\tau)$. Откуда получим $u(t,\tau)=2.5t-f(t)-2.5\tau +f(\tau)$. Параметр $\tau$ ищется из второго уравнения системы. А именно в результате численного интегрирования выражения
$\int_0^n dn=2.5\int_{\tau}^t\dfrac{dk}{2.5k-f(k)-2.5\tau +f(\tau))}$
Находим $\tau(n,t)$ и подставляем в $u(n,t)=2.5t-f(t)-2.5\tau(n,t) +f(\tau(n,t))$
Этот интеграл и был посчитать в маткаде, как он его вычисляет я не знаю...

Реализовывать такое интегрирование в математике я затрудняюсь, да и нет необходимости.
С этой системой ОДУ мне повезло, т.к. первое уравнение получилось с разделяющимися перменными, что и позволило получить его аналитический вид. Другие задачи так решить не получится, переменные не разделяются..


А с чего вдруг интегралы стали определенными? И вы уверены, что метод ваш рабочий, полученное решение проверяли? Если, например, попробовать решить вашим способом уравнение когда $B(t)=const$?

-- Чт фев 03, 2011 22:35:04 --

olevkcom в сообщении #408517 писал(а):

Соответственно, возникает вопрос, что мешает Mathematica не обращать внимание на превышение количества шагов?

P.S. Matlab сосчитал, хотя и указывал на огромные значение функций, но ответ-таки выдал.


На этот вопрос вам смогут дать ответ только те, кто знаком со "внутренностями" метода.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

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



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

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


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

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