2014 dxdy logo

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

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




 
 Решение краевых задач для уравнений параболического типа.
Сообщение11.12.2008, 18:54 
Столкнулся я с уравнением теплопроводности, которое нужно победить средствами численных методов. При этом настоятельно рекомендуется использовать метод сеток.
$\frac{\partial^2\phi}{\partial x^2} - \frac{\partial\phi}{\partial t} = 0, 0\leqslant{x}\leqslant1, 0\leqslant{t}\leqslant3$
$\phi(x,0)=\phi_{0}(x)$
$\phi(0,t)=\phi_{1}(t),   \phi(1,t)=\phi_{2}(t)$
$\phi_{0}(x)=x^2 - 2x +0.5$
$\phi_1(t)=2t,    \phi_2(t)=1$
Как я понял из литературы, то мне нужно построить сетку сообразно с аппроксимацией функции элементами из этой самой сетки. Строю, естественно, с помощью явной схемы.
Единственное, что мне не очень понятно, какие значения в точках $(0,0)$ и $(1,0)$.

 
 
 
 
Сообщение11.12.2008, 20:38 
В классической постановке первой краевой задачи для уравнения параболического типа предполагаются выполненными условия сопряжения $\phi_0(0) = \phi_1(0)$, $\phi_0(1) = \phi_2(0)$. См., например, Тихонов А.Н., Самарский А.А. Уравнения математической физики. — М.: Наука, 1977; гл. 3 Уравнения параболического типа, §1 Простейшие задачи, проводящие к уравнениям параболического типа. Постановка краевых задач, п.4 постановка краевых задач. Книгу, также, можно скачать с сайта EqWord.

 
 
 
 
Сообщение11.12.2008, 20:47 
Sherpa в сообщении #166794 писал(а):
нужно построить сетку сообразно с аппроксимацией функции элементами из этой самой сетки. Строю, естественно, с помощью явной схемы.

Единственное, что мне не очень понятно, какие значения в точках и .

1). Почему ессно? -- в одномерных задачах ессна как раз неявная схема.

2). А в чём проблема? Фиксируйте значения функции в граничных узлах, и получайте систему уравнений для внутренних узлов, для всеобщего удовлетворения.

 
 
 
 
Сообщение11.12.2008, 20:54 
Как я понял метод решения:
есть матрица, нижнюю строчку заполняем значениями $\phi_0$, два боковых столбца значениями $\phi_1, \phi_2$, соответственно. Но получается, что $\phi_0(0,0)=0,5$, а $\phi_0(1,0)=-0,5$
в то же время $\phi_1(0,0)=0$, а $\phi_2(1,0)=1$
или я всё неверно понял?

 
 
 
 
Сообщение12.12.2008, 11:37 
Если согласования краевых условий и начального условия нет, то решением задачи, обычно, называется функция, удовлетворяющая уравнению при $0 < x < l$ , начальному условию при $0 \le x \le l$, граничному условию при $t>0$, непрерывная в точках непрерывности $\phi_0(x)$ и ограниченная в замкнутой области $0 \le x \le l$, $0 \le t \le \bar{t_0}$, где $\bar{t_0}$ — произвольное положительное число (см., например, §2 Метод разделения переменных, п.3 Краевые задачи с разрывными начальными данными, той же главы, что и в сообщении выше).

Добавлено спустя 6 минут 25 секунд:

Обозначим нижнюю «строчку» через $u_i$, верхнюю «строчку» через $\hat u_i$ $i=0..N$. Перед циклом по времени (перед основным циклом) выполняем присвоения:
$u_i = \phi_0(h \cdot i)$, $i = 0..N$, $\hat u_0 = \phi_1(\tau)$, $\hat u_N = \phi_2(\tau)$,
где $h = l/N$ — шаг по пространственной переменной, $\tau$ — шаг по времени.

 
 
 
 
Сообщение12.12.2008, 11:42 
Аватара пользователя
В угловых точках берите из начальных условий или из краевых. Посмотрите, будет ли разница. Схема - явная.

 
 
 
 
Сообщение12.12.2008, 13:49 
Т.к. с увеличением времени влияние начального условия на результат уменьшается, рассмотрим один шаг явной схемы. Два варианта задания значений функции в крайних точках первого слоя. u — значение функции на нижнем слое, v — значение функции на верхнем слое. TP7.0
Код:
const
N = 10;
tau = 0.001;

function u0 (x: Extended): Extended;
begin
u0:= sqr(x) -2*x+1/2;
end;

function u1(t: Extended): Extended;
begin
u1:= 2*t;
end;

function u2(t: Extended): Extended;
begin
u2:= 1;
end;

var
h, a: Double;
u, v: array[0..N] of Double;
i   : Integer;

begin
for i:= 0 to 25 do writeln;
h:= 1/N;
a:= tau/sqr(h);
writeln('N=', N:3, ' tau=', tau:7:5, ' h=', h:7:5, ' a=', a:5:2);

for i:= 1 to N-1 do u[i]:= u0(h*i); u[0]:=u0(0); u[N]:= u0(N*h);
for i:= 1 to N-1 do v[i]:= (1-2*a)*u[i] + a*(u[i-1] + u[i+1]);
writeln('1:  v[1]=', v[1]:7:5, '  v[N-1]=', v[N-1]:7:5);

for i:= 1 to N-1 do u[i]:= u0(h*i); u[0]:=u1(0); u[N]:= u2(0);
for i:= 1 to N-1 do v[i]:= (1-2*a)*u[i] + a*(u[i-1] + u[i+1]);
writeln('2:  v[1]=', v[1]:7:5, '  v[N-1]=', v[N-1]:7:5);

end.

Результат выполнения
Код:
N= 10 tau=0.00100 h=0.10000 a= 0.10
1:  v[1]=0.31200  v[N-1]=-0.48800
2:  v[1]=0.26200  v[N-1]=-0.33800
Имеется разница.

Что и как сравнивать, TOTAL, не подскажете? Да и, вообще, что здесь экспериментально можно нащупать?

 
 
 
 
Сообщение12.12.2008, 14:16 
Аватара пользователя
GAA писал(а):
Т.к. с увеличением времени влияние начального условия на результат уменьшается, рассмотрим один шаг явной схемы.

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

 
 
 
 
Сообщение12.12.2008, 15:33 
С увеличением $t$ решения будут все больше и больше совпадать. И это будет не только в случае отличия начальных условий в угловых точках, но и при больших отличиях. Что можно увидеть из численного счета? При малых $t$ решения разнятся, при больших — глазом не заметить. И о чем это говорит? Асимптоически решение не зависит от начального условия, а определяется краевыми? Но это и без эксперимента ясно.

 
 
 
 
Сообщение12.12.2008, 15:57 
Аватара пользователя
GAA писал(а):
При малых $t$ решения разнятся, при больших — глазом не заметить. И о чем это говорит?

Это говорит о том, что при малых $t$ решения разнятся, при больших — глазом не заметить.
Автор темы спрашивал о том, как задавать функцию в углах области.
Численный эксперимент продемонстрирует ему, что можно брать и те и другие.

 
 
 
 
Сообщение12.12.2008, 16:10 
TOTAL писал(а):
Численный эксперимент продемонстрирует ему, что можно брать и те и другие.
Если нас не интересуют углы. Но это замечание уже какое-то ослиное препирательство с моей стороны. Вас понял, спасибо.

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


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