2014 dxdy logo

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

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




 
 схема стабилизирующей поправки
Сообщение15.05.2011, 15:29 
Вот так вот выглядит схема ( опыта в набирании формул нет, так что извините, если что не так )

$\frac {u_{i, j}^{n+1} - u_{i, j}^n} {\tau} = \frac {u_{i-1, j}^{n+1} - 2u_{i, j}^{n+1} + u_{i+1, j}^{n+1}} {h_1^2} + \frac {u_{i, j-1}^{n} - 2u_{i, j}^{n} + u_{i, j+1}^{n}} {h_2^2} - f_{i, j} $

$\frac {u_{i, j}^{n+2} - u_{i, j}^{n+1}} {\tau} = \frac {u_{i-1, j}^{n+2} - 2u_{i, j}^{n+2} + u_{i+1, j}^{n+2}} {h_2^2} - \frac {u_{i, j-1}^{n} - 2u_{i, j}^{n} + u_{i, j+1}^{n}} {h_2^2}$

n = 0, 1, 2, ...

ищется решение задачи

$u_{xx} + u_{yy} = f(x, y)$

$x \in \left [ 0, 1 \right ] $

$y \in \left [ 0, 1 \right ] $

Точное решение будем обозначать u(x, y).

Граничные условия:
u(0, y) = $ \phi_1(y) $
u(1, y) = $ \phi_2(y) $
u(x, 0) = $ \phi_3(x) $
u(x, 1) = $ \phi_4(x) $

В задание еще написано, что положить при n = 0 $u(x_i,y_j)$ = const


Так вот. Начал я решать задачу. Как видим, для того, чтобы посчитать n + 2 слой нужно посчитать полностью n + 1.

Итак, считаем.
Будем считать что количество узлов
    по x равно $Nx + 1$
    по y равно $Ny + 1$

Шаг 1. Найдем полностью n + 1 слой методом прогонки ( i = 1 .. ($Nx - 1$) , j = 1 .. ($Ny - 1$) )
Шаг 2. Найдем полностью n + 2 слой методом прогонки ( i = 0 .. $Nx$, j = 1 .. ($Ny - 1$ ) )
Шаг 3. Сохраняем посчитанный n + 2 слой в n слой и переходим к шагу 1, если не достигнута требуемая погрешность.

Шаг 1.

для каждого i = 1 .. ($Nx - 1$) рассчитываем "слой" по y:

$u_{i-1, j-1}^{n+1} ( \frac{1} {h_1^2} ) + u_{i, j}^{n+1} ( \frac {2} {h_1^2} - \frac {1} {\tau} ) + u_{i,j+1} ^{n+1}( \frac {1} {h_1^2} ) = - \frac {u_{i, j-1}^{n} - 2u_{i, j}^{n} + u_{i, j+1}^{n}} {h_2^2} + f_{i, j} - u_{i,j}^n$

считаем методом прогонки. Пусть
a = вектор содержащий поддиагональные элементы,
b = вектор содержащий элементы главной диагонали,
c = вектор содержащий наддиагональные элементы,
d = вектор содержащий правую часть,
s = вектор решения полученного методом прогонки. Как видим из уравнения


$a_i = \frac{1} {h_1^2}$
$b_i = \frac {2} {h_1^2 - 1 / \tau}$
$c_i = \frac {1} {h_1^2}$

$d_i = - \frac {u_{i-1, j}^{n} - 2u_{i, j}^{n} + u_{i+1, j}^{n}} {h_2^2} + f_{i, j} - u_{i,j}^n$

Размерность ||а|| = $Ny - 2$
Размерность ||b|| = $Ny - 1$
Размерность ||c|| = $Ny - 2$

Размерность ||d|| = $Ny - 1$

решаем, получаем решение, и присваиваем это решение n + 1 слою ( я обозначу этот слой буквой $w$ ):

для каждого i = 1 .. ($Nx - 1$)

$w_{i, j} = s_j$ где j = 1 .. $(Ny - 1)$

Итак, супер, весь n + 1 слой найден. Переходим к шагу 2.

Как видим нам таки опять нужна прогонка.

Выражаем подобным же образом коэффициенты при "степенях" n + 2 и находим n + 2 слой.

Скажите пожалуйста, в чем я ошибся..?

 
 
 [ 1 сообщение ] 


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