Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция№10.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.08 Mб
Скачать

Листинг_№1

%Программа численного решения уравнения

%переноса du/dt+cdu/dx=tx

%u(0,x)=x^3/(12c^2), u(t,0)=(ct^3)/12

%очищаем рабочее пространство

clear all

%определяем параметр скорости переноса c,

%а также отрезок времени интегрирования T и

%диапазон изменения пространственной

%переменной a

c=0.25; T=2; a=1;

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

h=0.005;

%рассматривается два варианта расчета

%при tau=h/c (условие Куранта выполняется) и

%при tau=1.12*h/c (условие Куранта нарушено)

tau=(1.0*h)/c;

r=(c*tau)/h;

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

t=0:tau:T;

x=0:h:a;

%определяем начальное значение u(0,x)=x^3/(12c^2)

for j=1:length(x)

y(1,j)=x(j)^3/(12*c^2);

end

%организуем расчет по разностной схеме (7а)

for i=1:(length(t)-1)

%определяем левое граничное значение

%u(t,0)=(ct^3)/12

y(i+1,1)=(c*t(i+1)^3)/12;

for j=2:length(x)

y(i+1,j)=(1-r)*y(i,j)+r*y(i,j-1)+...

tau*(t(i)+0.5*tau)*(x(j)-0.5*h);

end

end

[xi ti]=meshgrid(x,t);

%рисуем численное решение уравнения переноса u(t,x)

surf(ti,xi,y); [xi ti]=meshgrid(x,t);

%рисуем численное решение уравнения переноса u(t,x)

surf(ti,xi,y);

Рис.3,а. Численное решение уравнения (10) по разностной схеме (7а) при выполнении условия Куранта

Рис.3,б. Численное решение уравнения (10) по разностной схеме (7а) с нарушением условия Куранта (8)

Сравним теперь численное решение задачи (10) и аналитическое решение (11). На листинге_№2 приведен код соответствующей программы. В программе считается, что = 0.5h/c и варьируется шаг по пространству. На рис.4 приведен итог работы кода программы листинга_№2 в виде кривой зависимости отношения ошибки численного решения к шагу сетки const(h) = в зависимости от шага сетки h. Из условия аппроксимации разностной схемой (7а) исходного уравнения (3) с порядком O( + h) следует, что величина const(h) должна стремиться к некоторой константе по мере того, как h  0. Такая тенденция видна на рис.4.

Листинг_№2

%Программа численного решения уравнения

%переноса du/dt+cdu/dx=tx

%u(0,x)=x^3/(12c^2), u(t,0)=(ct^3)/12 и

%сравнение его с аналитическим решением

function schm1_conv

global c

%определяем параметр скорости переноса c,

%а также отрезок времени интегрирования T и

%диапазон изменения пространственной

%переменной a

c=0.25; T=2; a=1; h=0.2;

%определяем количество делений шага h пополам

kmax=7;

for k=1:kmax

%делим шаг h пополам

h=h/2;

%определяем шаг по времени, который считается

%пропорциональным шагу по пространству

tau=0.5*h/c; r=(c*tau)/h;

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

t=0:tau:T; x=0:h:a;

%определяем начальное значение u(0,x)=x^3/(12c^2)

for j=1:length(x)

y(1,j)=x(j)^3/(12*c^2);

end

%организуем расчет по разностной схеме (7а)

for i=1:(length(t)-1)

%определяем левое граничное значение

%u(t,0)=(ct^3)/12

y(i+1,1)=(c*t(i+1)^3)/12;

for j=2:length(x)

y(i+1,j)=(1-r)*y(i,j)+r*y(i,j-1)+...

tau*(t(i)+0.5*tau)*(x(j)-0.5*h);

end

end

for i=1:length(t)

for j=1:length(x)

yt(i,j)=abs(y(i,j)-ya(t(i),x(j)));

end

end

step(k)=h;

%определяем ошибку численного решения в норме C

%и делим ее на шаг сетки h

const(k)=max(max(yt))/h;

end

%рисуем зависимость предстепенной константы от

%шага сетки h

plot(step,const,'-*','MarkerSize',12);

%функция, возвращающая аналитическое решение

function z=ya(t,x)

global c

z=(1/(8*c^2))*(x+c*t)*((x+c*t)^2/3-(x-c*t)^2);

if (x-c*t)>=0

z=z+(x-c*t)^3/(6*c^2);

else

z=z-(x-c*t)^3/(6*c^2);

end

Разностная схема (7б) исследуется аналогично. Для исследования аппроксимации разложение в ряд Тейлора удобно проводить в окрестности узла (xn 1,tm + ). Для дважды непрерывно дифференцируемого решения данная схема при выполнении условия устойчивости

ch (12)

обеспечивает сходимость со скоростью O( + h).

Разностная схема (7в) безусловно устойчива и на дважды непрерывно дифференцируемых решениях сходится к точному решению со скоростью O( + h).

Разностная схема (7г) симметричная и следует ожидать, что порядок ее аппроксимации выше, чем в предыдущих членах. Для оценки порядка аппроксимации разложение в ряд Тейлора удобно провести в окрестности центра ячейки . После проведения соответствующих выкладок, можно найти оценку невязки:

. (13)

Тем самым схема (7г) имеет второй порядок аппроксимации, когда решения имеют непрерывные производные вплоть до третьей.

Рис.4. Зависимость предстепенной константы в оценке ошибки численного решения от шага сетки

Устойчивость разностной схемы (7г) исследуем с помощью метода разделения переменных. Подставляя в (7г)

,

найдем значение коэффициента роста Фурье-гармоники при переходе со слоя на слой:

. (14)

Из оценки (14) следует, что для любой гармоники и при любых соотношениях шагов. Это означает, что схема (7г) безусловно и равномерно устойчива по начальным данным в норме .

Исследуем разностную схему (7г) на предмет сходимости в двух нормах: и . На листинге_№3 приведен код программы для изучения сходимости схемы (7г) на примере численного решения задачи (10) и сравнения полученного решения с аналитическим решением (11). В программе вычисляются зависимости предстепенных констант const(h) для двух норм от шага сетки h, при этом считается, что = 0.5h/c. Согласно теоретическим оценками, предстепенная константа const(h) = должна выходить на некоторое постоянное значение при h  0.

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