2014 dxdy logo

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

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




 
 Численное решение уравнения параболического типа
Сообщение27.05.2010, 18:42 
Аватара пользователя
Добрый день!

Будьте так добры, подскажите, пожалуйста, правильный ли метод решения выбран. (Меня гложет червячок сомнения, да и получающиеся графики смущают).

Уравнение:
$
 \frac{\partial u}{\partial t} + \mu_n(\frac{\partial \phi}{\partial x} \cdot \frac{\partial u}{\partial x} + \frac{\partial \phi}{\partial y} \cdot \frac{\partial u}{\partial y}) - D_n \cdot \Delta u + \frac{u}{\tau_n} = \mu \cdot \nabla \phi \cdot \nabla \phi_k$

$ \mu_n, D_n, \tau_n $- константы
$\phi(x, y)$ - функция, заданная в искомой области

Мне нужно было найти и нарисовать u через определенные промежутки времени.
Использовался метод дробных шагов, описанный у Бахвалова и Ко (стр.581). Но он предназначен для решения параболических уравнений.
(Это немного смущает, у меня не точно параболическое, а ещё с первой частной производной и самой функцией).

Первоначальное уравнение было заменено соотношениями:
$
 \frac{u^{n+ \frac{1}{2}}_{ij} - u^n_{ij}}{2 \triangle t} + \mu_n(\frac{\partial \phi}{\partial x} \cdot \frac{u^{n+\frac{1}{2}}_{i+1j} - u^{n+\frac{1}{2}}_{ij}}{\triangle x}) - D_n \cdot (\frac{u^{n+\frac{1}{2}}_{i+1j} - 2u^{n+\frac{1}{2}}_{ij} + u^{n+\frac{1}{2}}_{i-1j}}{\triangle x^2}) = - \frac{u^{n+\frac{1}{2}}}{\tau_n}$

$
 \frac{u^{n+1}_{ij} - u^{n+\frac{1}{2}}_{ij}}{ 2 \triangle t} + \mu_n(\frac{\partial \phi}{\partial y} \cdot \frac{u^{n+1}_{ij+1} - u^{n+1}_{ij}}{\triangle y}) - D_n \cdot (\frac{u^{n+1}_{ij+1} - 2u^{n+1}_{ij} + u^{n+1}_{ij-1}}{\triangle y^2}) = \mu \cdot \nabla \phi \cdot \nabla \phi_k$

И затем последовательно они решаются и результат первого подставляется во второе.
И так каждую итерацию внешнего цикла. Внешний цикл по времени.

Имею ли я право таким методом решать задачу?
У меня возникли сомнения, когда, воспользовавшись методом определения устойчивости фон Неймана, получилось, что
метод устойчив, при большом dx и dy, а, если увеличивать точность - всё будет расходиться.

Посоветуйте, пожалуйста, очень нужен взгляд со стороны!

Изначально известно, что u(x,y) = 0, и на определенных границах области $\frac{\partial u}{\partial x} = 0$, а на других $\frac{\partial u}{\partial y} = 0$ .

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение27.05.2010, 20:10 
А какое у Вас определение параболических уравнений? :)

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение27.05.2010, 20:14 
Аватара пользователя
$\frac{\partial u}{\partial t} = \Delta u + f(x, t)$

Что, у меня уже крыша едет? Это не параболическое с несколькими пространственными переменными? :cry: :shock:

Имеется в виду $\Delta u = \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2}$

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение27.05.2010, 20:37 
Pete[r], уравнение теплопроводности, которое Вы написали, - частный случай параболического уравнения.

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение28.05.2010, 10:20 
Аватара пользователя
Спасибо, Кэп :) (К.О.).
Это понятно, только у меня уравнение связано с распространением электрического заряда ;). Оно аналогично уравнению теплопроводности.

А проблема-то осталась...

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение28.05.2010, 10:44 
Аватара пользователя
Pete[r] в сообщении #324596 писал(а):
Мне нужно было найти и нарисовать u через определенные промежутки времени.
Это учебная задача? Решать её требуется определённым методом?

${\partial \phi}/{\partial x}$ и ${\partial \phi}/{\partial y}$ эти производные имеют определённый знак?

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение28.05.2010, 11:34 
Аватара пользователя
TOTAL в сообщении #324801 писал(а):
Это учебная задача? Решать её требуется определённым методом?

${\partial \phi}/{\partial x}$ и ${\partial \phi}/{\partial y}$ эти производные имеют определённый знак?


Да, но решать её можно как угодно, главное - решить правильно.
${\partial \phi}/{\partial x}$ везде отрицательный, а
${\partial \phi}/{\partial y}$ - в половине области отрицательный, в другой половине - положительный.

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение28.05.2010, 11:56 
Посмотрите у Самарского. Строится для такого типа уравнений метод 2 порядка по пространству. да ещё и монотонные... Там полуразности-полусуммы коэффициетов при первых производных идут (по потоку/ против потока).

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение28.05.2010, 12:05 
Аватара пользователя
$
 \frac{u^{n+ \frac{1}{2}}_{ij} - u^n_{ij}}{2 \triangle t} + \mu_n(\frac{\partial \phi}{\partial x} \cdot \frac{u^{n+\frac{1}{2}}_{i+1j} - u^{n+\frac{1}{2}}_{ij}}{\triangle x}) - D_n \cdot (\frac{u^{n+\frac{1}{2}}_{i+1j} - 2u^{n+\frac{1}{2}}_{ij} + u^{n+\frac{1}{2}}_{i-1j}}{\triangle x^2}) = - \frac{u^{n+\frac{1}{2}}}{\tau_n}$

$
 \frac{u^{n+1}_{ij} - u^{n+\frac{1}{2}}_{ij}}{ 2 \triangle t} + \mu_n(\frac{\partial \phi}{\partial y} \cdot \frac{u^{n+1}_{ij+1} - u^{n+1}_{ij}}{\triangle y}) - D_n \cdot (\frac{u^{n+1}_{ij+1} - 2u^{n+1}_{ij} + u^{n+1}_{ij-1}}{\triangle y^2}) = \mu \cdot \nabla \phi \cdot \nabla \phi_k$


(1) надо изменить знаменатель у производной по времени
$\frac{u^{n+1}_{ij} - u^{n+\frac{1}{2}}_{ij}}{ \triangle t/2}$

(2) надо:
$\frac{\partial \phi}{\partial y} \cdot \frac{u^{n+1}_{ij+1} - u^{n+1}_{ij}}{\triangle y}$, если $\frac{\partial \phi}{\partial y} < 0$
$\;\;\;\;\frac{\partial \phi}{\partial y} \cdot \frac{u^{n+1}_{ij} - u^{n+1}_{ij-1}}{\triangle y}$, если $\frac{\partial \phi}{\partial y} > 0$

(3) Считайте с маленьким шагом по времени

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение28.05.2010, 12:58 
Аватара пользователя
TOTAL в сообщении #324830 писал(а):
$
 \frac{u^{n+ \frac{1}{2}}_{ij} - u^n_{ij}}{2 \triangle t} + \mu_n(\frac{\partial \phi}{\partial x} \cdot \frac{u^{n+\frac{1}{2}}_{i+1j} - u^{n+\frac{1}{2}}_{ij}}{\triangle x}) - D_n \cdot (\frac{u^{n+\frac{1}{2}}_{i+1j} - 2u^{n+\frac{1}{2}}_{ij} + u^{n+\frac{1}{2}}_{i-1j}}{\triangle x^2}) = - \frac{u^{n+\frac{1}{2}}}{\tau_n}$

$
 \frac{u^{n+1}_{ij} - u^{n+\frac{1}{2}}_{ij}}{ 2 \triangle t} + \mu_n(\frac{\partial \phi}{\partial y} \cdot \frac{u^{n+1}_{ij+1} - u^{n+1}_{ij}}{\triangle y}) - D_n \cdot (\frac{u^{n+1}_{ij+1} - 2u^{n+1}_{ij} + u^{n+1}_{ij-1}}{\triangle y^2}) = \mu \cdot \nabla \phi \cdot \nabla \phi_k$


(1) надо изменить знаменатель у производной по времени
$\frac{u^{n+1}_{ij} - u^{n+\frac{1}{2}}_{ij}}{ \triangle t/2}$

(2) надо:
$\frac{\partial \phi}{\partial y} \cdot \frac{u^{n+1}_{ij+1} - u^{n+1}_{ij}}{\triangle y}$, если $\frac{\partial \phi}{\partial y} < 0$
$\;\;\;\;\frac{\partial \phi}{\partial y} \cdot \frac{u^{n+1}_{ij} - u^{n+1}_{ij-1}}{\triangle y}$, если $\frac{\partial \phi}{\partial y} > 0$

(3) Считайте с маленьким шагом по времени

Спасибо большое!:)

1. Так у меня было первоначально, логично ведь - поделить $\triangle t$ на 2, раз делаются полушаги, но прочитав Бахвалова, я увидел двойку именно в знаменателе.
2. А почему так надо? На чем это основано? (честно, графики даже не поменялись - как мертвому припарки, наверное, слишком маленькое влияние оказывает такой замен)
3. Шаг по времени у меня очень маленький, по крайней мере удовлетворяет условию $\tau <<< \triangle x^2} $ - много меньше - это на четыре-пять порядков.

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение28.05.2010, 13:10 
Аватара пользователя
Pete[r] в сообщении #324841 писал(а):
2. А почему так надо? На чем это основано? (честно, графики даже не поменялись - как мертвому припарки, наверное, слишком маленькое влияние оказывает такой замен)
Для устойчивости

Pete[r] в сообщении #324841 писал(а):
3. Шаг по времени у меня очень маленький, по крайней мере удовлетворяет условию $\tau <<< \triangle x^2} $ - много меньше - это на четыре-пять порядков.
Это слишком маленький шаг (пропадает смысл использовать неявную схему)

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

Что Вас смущает в получаемом численном решении?

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение28.05.2010, 13:26 
Аватара пользователя
TOTAL в сообщении #324846 писал(а):
Для устойчивости

Это слишком маленький шаг (пропадает смысл использовать неявную схему)

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

Что Вас смущает в получаемом численном решении?

> Для устойчивости
Ага, понятно, спасибо большое!

> Попробуйте сделать расчет по явной схеме.
Да, сейчас как раз читаю про явные схемы у Самарского :)

Смущает то, что при изменении dx и dy меняются графики и со временем некоторые начинают расходиться.
Т.е. в начале там всполыхи, а потом они должны плавно растекаться, уменьшаясь. Но, когда я меняю размер сетки (например, со 100 на 50 или на 150), они не растекаются, а наоборот начинают увеличиваться до баснословных цифр: до +132 степени :shock:.
Мне хочется правильно и четко решить задачу, чтобы не было таких виляний с графиками.

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение28.05.2010, 13:41 
Аватара пользователя
Pete[r] в сообщении #324854 писал(а):
Смущает то, что при изменении dx и dy меняются графики и со временем некоторые начинают расходиться.
Мне хочется правильно и четко решить задачу, чтобы не было таких виляний с графиками.

Вы правильно добиваетесь того, чтобы при измельчении сетки решение стремилось к чему-то.


Пусть решается уравнение
$u_t+au_x+bu_y=D(u_{xx}+u_{yy})$
Тогда шаг по времени $\tau$ для явной схемы с аппроксимацией производных, какую Вы используете, выбирайте из условия
$\tau \left( \frac{|a|}{h_x} + \frac{|b|}{h_y}+ \frac{|2D|}{h_x^2}+ \frac{|2D|}{h_y^2} \right) <1$

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение19.09.2010, 10:23 
Аватара пользователя
Друзья, добрый день!
Спасибо за ваши комментарии и помощь в разборках с этой задачей. Дело оказалось в том, что коэффициент диффузии, а именно $D_n$ по сравнению с остальными членами мог быть на несколько порядков меньше. Следовательно исходное уравнение превращалось в

$ \frac{\partial u}{\partial t} + \mu_n(\frac{\partial \phi}{\partial x} \cdot \frac{\partial u}{\partial x} + \frac{\partial \phi}{\partial y} \cdot \frac{\partial u}{\partial y}) + \frac{u}{\tau_n} = \mu \cdot \nabla \phi \cdot \nabla \phi_k$

То есть вторых производных в нем нет. Из-за этого используемый метод решения начинал расходиться. В остальных случаях всё замечательно и устойчиво решается! :)

Но, решив таким образом более сложную задачу с коэффициентом диффузии, на меня напал ступор, как же решить более легкое уравнение, которое можно представить в виде:

$
 \frac{\partial u}{\partial t} + a \cdot \frac{\partial u}{\partial x} + b \cdot \frac{\partial u}{\partial y} + c \cdot u = d $

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

 
 
 
 Re: Численное решение уравнения параболического типа
Сообщение21.09.2010, 14:04 
Аватара пользователя
Pete[r] в сообщении #353935 писал(а):
$
 \frac{\partial u}{\partial t} + a \cdot \frac{\partial u}{\partial x} + b \cdot \frac{\partial u}{\partial y} + c \cdot u = d $

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


А, всё, разобрался! Это ж многомерное уравнение переноса :). Решается неявными схемами (например, неявной попеременно-треугольной разностной схемой).

Всем спасибо большое!

 
 
 [ Сообщений: 15 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group