Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2875

.pdf
Скачиваний:
2
Добавлен:
15.11.2022
Размер:
2.5 Mб
Скачать

f ′(x) = lim

f (x + h) − f (x)

,

h

 

h→0

 

 

мы заменяем выражением

 

 

 

f ′(x)

f (x + h) − f (x)

,

(IX.2)

 

 

 

h

 

 

с точностью до членов порядка h аппроксимирующей производную в точке х.

Выражение, стоящее в правой части (IX.2), называется правой разностной производной.

В разложении Тейлора функции f(x) можно заменить h на -h и получить левую разностную производную:

f ′(x)

f (x) − F(x h)

.

(IX.3)

 

 

h

 

Складывая (IX.2) и (IX.3), получаем центральную разностную производную:

f ′(x)

f (x + h) − f (x h)

.

(IX.4)

 

 

2h

 

Поступая аналогично, можно получить центральную разностную производную аппроксимацию второй производной:

f ′′(x)

1

[ f (x + h) − 2 f (x) + f (x + h)].

(IX.5)

h2

 

 

 

Теперь можно распространить понятие конечно-разностной аппроксимации на частные производные. Используя

разложение функции двух переменных в ряд Тейлора

u(x + h, y) = u(x, y) + ux (x, y)h + uxx (x, y) h2 + K, 2!

u(x h, y) = u(x, y) − ux (x, y)h + uxx (x, y) h2 K, 2!

находим выражения для конечно-разностной аппроксимации частных производных:

ux (x, y)

u(x + h, y) − u(x, y)

,

h

 

 

uxx

(x, y)

 

1

 

[u(x + h, y) − 2u(x, y) + u(x h, y)],

h2

 

 

 

 

u(x, y + k) − u(x, y)

 

 

uy

 

(x, y)

,

 

 

 

 

 

1

 

 

k

uyy (x, y)

 

[u(x, y + k) − 2u(x, y) + u(x, y k)].

 

h2

 

 

 

 

 

 

 

В данных формулах частные производные аппроксимируются правыми, центральными и левыми разностями, но мы далее будем использовать центральные разностные аппроксимации.

Построим на плоскости (х, у) равномерную сетку (рис. IX.1). Будем использовать следующие обозначения:

 

 

 

 

 

 

u(x j , yi ) = uij ,

 

 

 

 

 

 

 

 

 

 

u(x j , yi + k) = ui+1, j ,

 

 

 

 

 

 

 

 

u(x j , yi k) = ui−1, j ,

 

 

 

 

 

 

 

 

u(x j h, yi ) = uij−1 ,

 

 

 

 

 

 

 

 

 

u(x j + h, yi ) = uij+1 ,

 

 

 

 

 

 

u

 

(x

 

, y

 

) =

 

1

 

 

(u

i, j+1

u

i, j−1

),

 

 

 

x

j

i

 

 

 

 

 

 

 

 

 

 

 

2h

 

 

 

 

 

 

 

u

 

(x

 

, y

 

) =

 

1

(u

i+1, j

u

i−1, j

),

 

 

 

y

j

i

 

 

 

 

 

 

 

 

 

 

2h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

u

 

(x

 

, y

 

) =

 

(u

i, j+1

− 2u

 

+ u

i, j−1

),

xx

j

i

 

h2

i, j

 

 

 

 

 

 

 

 

 

 

 

 

u

 

(x

 

, y

 

) =

 

1

 

(u

i+1, j

 

− 2u

 

+ u

i−1, j

).

yy

j

i

 

k 2

 

i, j

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. IX.1. Координатная сетка, используемая для решения УЧП

эллиптического типа

Заменим частные производные в уравнении Лапласа их

 

конечно-разностной аппроксимацией:

 

 

 

 

 

 

 

 

1

(u

i, j+1

− 2u

i, j−1

) +

1

 

(u

i+1, j

− 2u

 

+ u

i−1, j

) = 0.

(IX.6)

 

 

k 2

i, j

 

h2

 

 

 

 

 

 

 

 

 

 

 

Если k=h, то уравнение Лапласа приводится к виду

 

 

 

 

 

 

ui+1, j

+ ui−1, j

 

+ ui, j+1 + ui, j−1 − 4uij

= 0.

(IX.7)

Разрешив (IX.7) относительно uij , получим

 

 

 

 

 

 

 

 

u

 

=

1

(u

i+1, j

+ u

i −1, j

+ u

i, j+1

+ u

i, j−1

).

(IX.8)

 

 

 

 

ij

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

Отметим, что в (IX.8) все соотношения берутся для внутренних узлов сетки, так как значения функции на границе заданы. Соотношение (IX.8) можно трактовать, как аппроксимацию значения функции в точке (xi , y j ) средним

значением решения по четырем соседним точкам. На первый взгляд, польза от выражения (IX.8) не очень очевидна, т. к. мы нашли связь между значением функции в ij -том узле и

значениями функции в соседних узлах: (ij − 1) -ом, (ij + 1) -ом, (I − 1 j) -ом, (i + 1 j) -ом, которые в свою очередь также

неизвестны. Однако оказывается, что если задать некоторые

начальные значения решения уравнения Лапласа в узлах сетки и затем их последовательно уточнять в соответствие с (IX.8), то итерационный процесс будет сходиться (релаксировать) к точному решению.

Таким образом, численное решение задачи Дирихле методом

релаксации находится в соответствие со следующим алгоритмом:

1.Присвоить величинам uij во внутренних узлах сетки

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

2. Пересчитать значения во всех внутренних точках сетки в соответствии с (IX.8) (заменяя старое значение средним значением, вычисленным по четырем соседним точкам).

Отметим, что при этом неважно, по строкам или по столбцам организован процесс счета. Недостатком данной схемы является низкая скорость сходимости итерационного процесса, которую однако можно улучшить, используя специальные методы, например метод верхней и нижней релаксации, основанные на обсуждавшемся нами ранее методе Зейделя.

Пример IX.1. Найти в пакете МАТLАВ решение задачи Дирихле

уравнения Лапласа

uxx + uyy = 0,

с граничными условиями

u(x,0) = 0, u(1, y) = g2 ( y), u(x,1) = 0, u(0, y) = g4 ( y).

1. Создайте файл InterationL.m (листинг IX.1), содержащий описание функции, возвращающей численное решение уравнения Лапласа методом релаксаций (для получения

вычислительной схемы, обсуждение которой проводилось ранее, следует положить omega=1).

Листинг IX.1. Файл IterationL.m

function z=interationL(N,mega,Number_of_Interation,phi)

%функция, возвращающая значения потенциала на каждом шаге

%итерационного процесса

h=1/N; % шаг сетки

%вычисление координат узлов сетки i=1:N+1;

x(i)=(i-1)*h; j=1:N+1; y(j)=(j-1)*h;

%итерационный цикл

for k=1: Number_of_Iteration

% прохождение по узлам сетки for j=2:N

for i=2:N

phi (i,j)=(1-Omega)*phi (i,j)+Omega/4*(phi (i+1,j)+phi (i-1,j)+… phi (I,j+1)+phi (I,j-1)-h.^2*f(i+1j+1)); % релаксация

end;

end;

if k==1 q=phi;

else

q=cat (1,q,phi); end;

end;

z=q;

2. Выполните следующую последовательность команд: N=15;

i=1:N+1;

j=1:N+1;

mu(i,1)=10; % потенциал по левой границе mu(i,N+1)= -10; % потенциал по правой границе mu(1,j)=5; % потенциал по нижней границе mu(N+1,j)=5; % потенциал по верхней границе

% задание начального приближения

kx=2:N;

ky=2:N;

mu(kx,ky)=12; % параметр релаксации

Omega=1;

Niter=200; % число итераций z=interationL(N,Omega,Niter,mu); % решение уравнения Лапласа

% вычисление векторов и матриц для построения карты линий %уровня

x(i)=(i-1)/N; y(j)=(j-1)/N;

[x1 y1]=meshgrid(x,y);

K=100; % номер итерации для построения карты линий уровня

N1=(N+1)*K+1;

N2=(N+1)*(K+1);

A=z(1:N+1,N1:N2); % выделение К-го решения из общей %матрицы

решений

[C,h]=contour(x1,y1,A,17); % построение карты %эквипотенциальных поверхностей К-го решения уравнения %Лапласа (рис. IX.2)

Рис. IX.2. Карта линий равного потенциала численного решения уравнения

Лапласа

Для просмотра процесса релаксации решения уравнения Лапласа следует выполнить следующую последовательность команд:

%последовательность команд для создания анимационного клипа set(gca,'nextplot','replacechildren'); % задание режима

%перерисовки карты

%в одном и том же окне

%создание кадров анимации клипа

for K=2:Niter-1 N1=(N+1)*(K-1)+1; N2=(N+1)*K; A=z(1:N+1,N1:N2); [C,h)=contour(x1,y1,A,17);

F(K-1)=getframe; % создание одного кадра end;

МАТLАВ, в процессе выполнения цикла по переменной к, выводит на экран каждый вновь создаваемый кадр. Для

повторного воспроизведения анимационного клипа используется команда movie (F,n), где F- имя переменной, в которую помещены кадры клипа, если значение n не указано, то клип воспроизводится бесконечное число раз (до закрытия графического окна). Для получения стоп-кадра следует щелкнуть по любому пункту меню графического окна. Для

продолжения воспроизведения нужно щелкнуть мышью в поле графика. Можно сохранить созданный анимационный клип в файле, используя команду save). Например, для созданного

ранее анимационного клипа данная команда имеет следующий синтаксис:

>>save имя_файла F

Для загрузки и выполнения ранее созданного анимационного клипа используется следующая последовательность команд:

>>load имя_файла имя_переменной >>movie (имя_переменной)

Рассмотрим решения краевой задачи двумерного уравнения Лапласа для квадратной области (0 х ≤ 1 см, 0 у ≤ 1 см) с известными потенциалами на границах (u(x,0) = 10, u(x,1) =-10, и(0,у) = 5, u(1,у) = 5), полученного на сетке, состоящей из 15x15 узлов (рис. 10.2). Из рис. IX.2 видно, что линии, расположенные

на карте эквипотенциальных уровней оказываются негладкими (имеют в некоторых точках изломы). Наличие изломов, в свою очередь, у линий равных потенциалов свидетельствует о

наличии разрывов у производной функции Ñϕ(x, y) ,

описывающей напряженность электрического поля. С другой стороны, как известно из теории функций комплексной переменной, функцияϕ(x, y) , удовлетворяющая уравнению

Лапласа, является аналитической. Необходимым и достаточным условием аналитичности функции ϕ(x, y) является

непрерывность ее производных. Этому, как очевидно, не отвечает полученное нами численное решение. Обнаруженный "дефект" численного решения связан с большим шагом сетки, на которой производится поиск решения уравнения Лапласа. Для его устранения можно использовать два способа:

1.находить численное решение на сетке с меньшим шагом;

2.используя найденное числовое решение на сетке, состоящей из 15x15 узлов, находить значения в точках, не совпадающих с узлами сетки, с помощью интерполяционной процедуры.

Для использования сплайн-интерполяции следует дополнить

приведенную выше последовательность команд следующими командами:

%задание координатной сетки для вычисления

%значений сплайна

M=100;

n=1:M; x2(n)=(n-1)/M; y2(n)=(n-1)/M;

[X2 Y2]=meshgrid(x2,y2); zi3=interp2(x1,y1,A,X2,Y2,'splain'); % вычисление

% значений сплайна

[C,h]=contour(X2,Y2,zi3,17);

Результаты выполнения дополнительных команд представлены на рис. IX.3. Анализ карты эквипотенциальных поверхностей, представленных на рис. IX.2, IX.3, показывает, что, используя сплайн-интерполяцию, удалось устранить недостатки численного решения, проявляющиеся в наличии изломов линий равного потенциала.

Рис. IX.3. Карта линий уровня интерполированного решения

уравнения Лапласа

9.3. Явные разностные схемы для уравнений параболического и эллиптического типов

Явные разностные схемы используются для решения уравнений, в которые входят производные по времени. Для решения данных задач используются явные разностные схемы,

с которыми мы познакомимся на примере явной схемы бегущего счета для уравнения теплопроводности.

Рассмотрим решение смешанной краевой задачи для следующего УЧП:

ut

=u xx , 0 < x <1, 0 < t < ¥,

(IX.9)

с граничными условиями

 

 

 

ìu = (0,t) =1

, 0

< t < ¥

 

í

 

 

îux

(1,t) = -[u(1,t) - g(t)]

 

 

с начальными условиями

u(x,0) = 0, 0 ≤ x ≤ 1.

Рассматриваемое УЧП описывает распределение температуры в стержне, начальная температура которого равна нулю. Левый конец стержня находится при постоянной температуре, на

правом конце стержня происходит теплообмен с окружающей средой, температура которой определяется функцией g(t).

Для решения задачи методом конечных разностей построим прямоугольную сетку (рис. IX.4), узлы которой определяются формулами:

x j = jh, j = 0,1,2,K, n ,

ti = ik,i = 0,1,2,K,m.

Отметим, что значения м,-,- на левой и нижней сторонах сетки известны из начальных и граничных условий, на правой границе

известно значение частной производной решения уравнения по переменной х.

Заменим частные производные в уравнении теплопроводности их конечно-разностными аппроксимациями:

 

 

ut

=

1

[u(x,t + k) - u(x,t)] =

1

[ui+1 j - uij ],

 

 

 

k

k

 

1

 

 

 

1

 

 

 

 

 

 

 

 

 

uxx =

 

[u(x + h, t) - 2u(x,t) + u(x - h, t)]

=

 

[uij−1 - 2uij

+ uij−1 ].

h2

h2

Рис. IX.4. Пространственно-временная сетка, используемая для

решения одномерного уравнения теплопроводности

Подставим данные выражения в исходное уравнение ut = uxx и

разрешим получившееся уравнение относительно значений функции на верхнем временном слое. В результате получаем:

k

 

 

 

ui=1 j = uij h2

[uij+1 - 2uij

+ uij−1 ].

(IX.10)

Формула (IX.10) решает поставленную задачу, поскольку она

выражает решение в данный момент времени через решение в предыдущий момент времени.

Для решения смешенной краевой задачи необходимо аппроксимировать производную в граничном условии на правом конце:

ux (1, t) = -[u(1, t) - g(t)].

Используя конечно-разностную аппроксимацию, получаем:

1

[uin

- uin−1 ] = -[uin - gi ].

(IX.11)

h

Из (IX.11) находим:

uin

=

uin−1 - hgi

.

(IX.12)

 

 

 

1 + h

 

Формулы (IX.10), (IX.12) позволяют начать вычисления по явной схеме.

Алгоритм вычислений по явной схеме реализуется следующей последовательностью действий:

1. Находим решение на сеточном слое t = t , используя явную формулу:

u2 j = u1 j +

k

 

[u1 j+1

- 2u1 j

+ u1 j−1 ],

j = 2,3,K,n -1

(IX.13)

h2

 

2. Находим величину и2л по формуле (IX.12):

 

 

 

 

 

 

 

u2,n =

u2,n−1 +hg2

.

 

 

(IX.14)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 + h

 

 

 

t =

 

 

Завершив

шаги

1, 2,

получаем

решение при

t .

Для

получения

решения

при

t = 2

t

повторяют

шаги

1,2,

поднявшись на одну строку вверх, т.е. увеличив i на единицу и используя uij с предыдущей строки. Аналогично вычисляется

решение в последующие моменты времени t = 3 t,4 t,K

У явной схемы имеется один существенный недостаток: если

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

применимости явной схемы должно выполняться условие k / h2 £ 0.5.

Пример IX.2. Найти в пакете МАТLАВ решение краевой задачи уравнения теплопроводности (IX.8) с начальными условиями:

ì0, åñëè õ ¹ 25

T (x,0) = í

 

,

î1, åñëè õ = 25

 

где x [1, 50], и граничными условиями:

 

T (t,1) = 0,

T (t,50) = 0 ,

на временном интервале [0, 49].

Решение:

>>Nt=50; % число шагов по времени >>Nx=50; % Число узлов координатной сетки

>>t=1:Nt;

>>x=1:Nx;

% задание начальных и граничных условий

>>f(1,x)=0;

>>f(t,1)=0;

>>f(t,Nx)=0;

>>f(1,25)=1;

%вычисление решения в последовательные моменты времени в

%соотношении с (10.10)

>>for t=2:Nt for x=2:Nx-1

f(t,x)=f(t-1,x)+0.15*(f(t-1,x-1)-2*f(t-1,x)+f(t-1,x+1)); end;

end;

>>surf(f) % визуализация численного решения (рис. IX.5)

Рис. IX.5. Численное решение уравнения теплопроводности

Получим явную вычислительную схему для нахождения численного решения УЧП гиперболического типа, на примере волнового уравнения:

2U

=

 

1

2U

.

(IX.15)

2 x

ν 2

t2

 

 

 

Запишем уравнение (IX.15) в конечных разностях:

uij

1 - 2uij

+ uij 1

1

 

ui

1 j - 2uij

+ ui 1 j

 

+

 

=

 

 

 

+

 

. (IX.16)

 

h2

 

ν 2

 

τ 2

 

 

 

 

 

 

 

 

Полученное уравнение позволяет выразить значение функции и

в момент времени ti+1

через значения функции в предыдущие

моменты времени:

 

 

 

 

ui+1 j =ν

2 çæτ

÷ö

2

(uij+1 - 2uij + uij1 )+ 2uij - ui1 j . (IX.17)

 

è h ø

 

 

Разностная схема (IX.17) устойчива, если τ ≤ h /ν .

Отметим, что для начала вычислений в соответствии с (IX.17) необходимо знать значения функции в моменты времени t0 и t1 . Данное обстоятельство обусловлено тем, что мы решаем уравнение второго порядка по времени. Для нахождения решений в моменты времени t0 и t1 необходимо использовать, например, начальное условие для первых производных функции u (рис. IX.6).

Рис. IX.6. Решение волнового уравнения в моменты времени t=0, 9, 24, 49

Пример IX.3. Найти в пакете МАТLАВ решение краевой задачи волнового уравнения (IX.14), в котором ν = 1,с начальными условиями:

U(x,0) = sin( x),

где x [0, 2π ], и граничными условиями:

U(0, t) = 0, U(2π ,t) − 0

на временном интервале [0,59].

Решение:

>>Nt=60; % число шагов по времени >>Nx=100; % число узлов по координате % задание начальных и граничных условий

>>U(1,j)=sin(2*pi*(j-1)/(Nx-1); % начальное условие

>>U(2,j)=U(1,j); % граничное условие

>>a=1;k=1;

>>for i=2:Nt

for j=2:Nx-1

U(i+1,j)=a.^2*k*(U(i,j+1)-2*U(i,j)+U(I,j-1))+2*U(I,j)-U(i-1,j); end;

end;

% визуализация решений уравнения в выбранные моменты времени

>>j=1:Nx; >>plot(2*pi*(j-1)/(Nx-1),U(1,j))

>>hold on

>>plot(2*pi*(j-1)/(Nx-1),U(10,j),':') >>plot(2*pi*(j-1)/(Nx-1),U(25,j),'--') >>plot(2*pi*(j-1)/(Nx-1),U(50,j),'-')

9.4. Неявная разностная схема для уравнения параболического типа

Построим неявную разностную схему для уравнения теплопроводности. Рассмотрим задачу нахождения решения

УЧП

 

 

 

 

 

ut = uxx ,

0 < x <1,

0 < t < ¥,

(IX.18)

с граничными условиями

 

 

 

 

 

 

 

 

 

 

ìu(0,t) = 0

0 < t < ¥,

 

 

 

 

 

 

í

 

 

 

 

 

 

 

 

 

îu(1,t) = 0,

 

 

 

и начальными условиями

 

 

 

 

 

 

 

 

 

 

u(x,0) = 1, 0 ≤ x ≤ 1.

 

Воспользуемся

 

следующими

конечно-разностными

аппроксимациями частных производных ut и uxx :

 

 

 

 

 

ut

(x,t) =

1

[u(x, t + k) - u(x, t)],

 

 

λ

k

 

 

 

 

 

 

 

 

 

uxx (x, t) =

[u(x + h,t + k) - 2u(x, t + k) + u(x - h,t + k)] +

 

 

 

h2

 

 

 

 

 

 

 

+

1 − λ

 

[u(x + h,t) - 2u(x,t) + u(x - h,t),

 

 

h2

 

 

где λ выбирается из отрезка [0,1].

Отметим, что uxx аппроксимируется взвешенным средним

центральных разностных производных в момент времени t и (t+k). При λ = 0.5 получаем обычное среднее двух центральных производных, при λ = 0 получаем обычную явную схему, о которой упоминалось ранее.

После замены частных производных ut , uxx

в задаче (IX.18)

получаем разностную задачу:

 

 

 

1

(ui+1, j - ui, j ) =

λ

(ui+1 j+1 -

2ui+1 j + ui+1, j1 ) +

1- λ

(uij+1 - 2uij + uij1 ),

 

k

h2

h2

 

 

 

 

ìui,1

= 0,

i =1,2,K, m,

(IX.19)

 

 

 

 

í

 

 

 

 

 

îui,n

= 0,

 

 

 

u1 j =1, j =1,2,K, n -1.

Перенесем все неизвестные значения и с верхнего временного слоя (с индексом (i+ 1)) в левую часть уравнения:

- λrui+ j +1 + (1 + 2rλ)ui+1, j1 =

( Таблица IX.20)

= r(1 - λ)ui, j+1 + [1 - 2r(1 - λ)]uij + r(1 - λ)uij1 ,

где r = k / h2 .

 

Схема уравнения системы (IX.20).

Таблица IX.1

 

 

 

 

 

 

 

 

 

j - 1

j

j + 1

i + 1

- rλ

+ 1 + 1rλ

+ - rλ

i

r(1 - λ )

+ 1 - 2rλ (1 - λ )

+ r(1 - λ )

Если i фиксировано, а j изменяется от 2 до (n-1), соотношения (10.20) определяют систему (n-2) уравнений с (n-2) неизвестными ui+1,2 ,ui+1,3 , ui+1,4 ,K, ui+1,n1 , которые являются

решением задачи во внутренних узлах сетки на временном слое t=(i+1)t.

Наглядное представление о структуре каждого уравнения (Таблица IX.20) дает таблица Таблица IX.1.

Обсудим более подробно алгоритм решения смешанной краевой задачи одномерного уравнения теплопроводности для случаев λ= 0.5 (схема Кранка-Никольсона), h==0.2, k=t = 0.08 (при этом r = k/h2=2). В данном случае сетка содержит 6 узлов вдоль оси х. В соответствии с вычислительной схемой (IX.20), двигаясь слева направо j = 2, 3, 4, 5 по первым двум слоям (j=1), получаем следующие четыре уравнения:

- u21 + 3u22 - u23

= u11 - u12

+ u13

=1,

- u22

+ 3u23 - u24

= u12

- u13

+ u14

=1,

- u23

+ 3u24 - u25

= u13

- u14

+ u15

=1,

- u24

+ 3u25 - u26

= u14

- u15

+ u16

=1.

Перепишем уравнения в матричной форме:

 

é 3

-1

0

0 ù

éu

22 ù

é1ù

ê

 

 

 

ú

ê

ú

ê ú

ê-1

3

-1

0 ú

× êu

23 ú = ê1ú .

ê 0

-1

3

-1ú

êu

24 ú

ê1ú

ê

0

-1

 

ú

ê

ú

ê ú

ë 0

3 û

ëu

25 û

ë1û

Матрица данной системы называется трехдиагональной. В наиболее общем виде трехдиагональная система имеет вид:

éb c 0

0 . . . .

 

0

 

ù

éx

 

ù

éd

 

ù

ê

1

1

 

c2

0 . . . .

 

0

 

ú

ê

1

ú

ê

1

ú

êa1

b2

 

 

ú

êx2 ú

êd2 ú

ê0

a

 

b c

 

. . . .

 

0

ú

êx

 

ú

êd

 

ú

ê

 

.

2

3

 

3

. . . .

 

.

 

ú

ê

3

ú

ê

3

ú

ê.

 

 

. .

 

 

 

ú

× ê.

 

ú

= ê.

 

ú .

ê.

 

.

 

. .

 

. . . .

 

.

 

ú

ê.

 

ú

ê.

 

ú

ê

 

.

 

. .

 

. . . .

 

 

 

ú

ê

 

ú

ê

 

ú

ê.

 

 

 

 

cn1 ú

ê.

 

ú

ê.

 

ú

ê.

 

.

 

. .

 

. . . a

n1

b

n

ú

êx

 

ú

êd

 

ú

ë

 

 

 

 

 

 

 

 

û

ë

n û

ë

n û

Для нахождения ее решения преобразуем систему к эквивалентному виду:

+ r
M
ui,n−2

é

 

0

0 .

1

c1

ê

1

c2

0 .

ê0

ê0

0

1

c .

ê

 

. .

3

ê. .

.

ê

 

. .

.

ê. .

ê. .

. .

.

ê

 

. .

.

ê. .

ë

 

 

 

 

. . .

0

. . .

0

. . .

0

. . .

.

. . .

.

. . .

cn−1

. . an−1

bn

ù

éx1

ù

éd

1 ù

ú

êx

 

ú

ê

 

ú

ú

2

êd

2 ú

ú

ê

 

ú

êd

ú

êx

 

ú

ú

ê

3

ú

ê

3

ú

ú

× ê.

 

ú

= ê.

 

ú ,

ú

ê

 

ú

ê

 

ú

ú

.

 

 

.

 

ú

ê

 

ú

ê

 

ú

 

ê

 

ú

ú

ê.

 

ú

.

ú

ê

 

ú

ê

ú

ëxn

û

êdn

ú

û

 

 

 

ë

 

û

где

 

 

 

 

 

c

 

= c / b ,

 

 

 

 

 

 

 

 

 

1

 

 

 

1

 

1

 

 

 

c

=

 

 

c j+1

 

 

 

 

 

,

 

j =1,2,K, n - 2 ,

 

 

 

 

 

 

 

 

 

 

j+1

 

b

j+1

- a

j

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

 

 

 

 

 

 

 

 

 

 

 

d

 

 

= d

1

/ b ,

 

 

 

 

 

 

 

1

 

 

 

 

1

 

d

 

 

 

 

 

 

 

 

 

 

d

j+1

- a

j

 

 

 

d

 

=

 

 

 

j

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j +1

 

 

 

 

bj +1

- a j c j

 

 

 

 

 

 

 

 

 

 

Решение системы (IX.22) находится последовательно снизу вверх. Для нахождения решения на следующем шаге во времени следует вновь решить аналогичную систему. Отметим, что объем вычислений на каждом шаге больше, чем в явной схеме, но хорошую точность удается получить даже при гораздо большем шаге.

Предваряя решение смешанной краевой задачи, запишем в явном виде систему линейных уравнений для схемы с λ = 1:

æ1+ 2r

- r

 

 

ç

- r

1+ 2r

- r

 

ç

 

ç

 

O

O

O

ç

 

 

 

r

1+ 2r

ç

 

 

ç

 

 

 

- r

è

 

 

 

ö÷æçui+1,2

֍ui+1,3

֍ M ֍

- r ÷÷ççui+1,n−2 1+ 2røçèui+1,n−1

ö

æu

+ r

÷

ç

i,1

ui,2

÷

ç

 

÷

ç

 

 

÷

=ç

 

 

÷

ç

 

 

÷

ç

 

 

÷

çu

 

ø

è

i,n−1

×u

i,1

ö

 

 

÷

 

 

 

÷

 

 

 

÷

, ( IX.22.)

 

 

÷

 

 

÷

 

÷

×ui,n ÷ø

где ui,1 = и(t,0), ui,n = и(t,1), которую будем использовать далее

при решении смешанной краевой задачи для уравнения параболического вида.

Пример IX.4. Найти в пакете МАTLАВ решение смешанной

краевой задачи УЧП

ut = uxx ,

с начальными условиями

u(0, x) = sin(πx) + x, 0 ≤ x ≤ 1,

и граничными условиями

u(t,0) = 0, u(t,1) = 1

с использованием неявной разности схемы (λ=1).

Для нахождения решения смешанной краевой задачи необходимо:

1. Создать файл U1.m (листинг IX.2), содержащий описание функции, возвращающей значения решения смешанной краевой задачи.

Листинг 10.2. Файл U1.m function z=U1(u,A,r,Nt,Nx)

%u - матрица, содержащая начальные и граничные условия

%А матрица системы (IX.22)

%r=k/h2 переменная, введенная в (IX.20)

%Nt число шагов по времени

%Nx число узлов по координате

z=u; u1=u(1:1,2:Nx-1); for i=1:Nt-1

a=r*z(i,1); b=r*z(i, Nx); u1(1,1)=u1(1,1)+a;

u1(1,Nx-2)=u1(1,Nx-2)+b; u2=A^-1*u1';

u1=u2';

for j=2:Nx-1 z(i+1,j)=u2(j-1,1);

end;

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]