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

Листинг_№5

%Программа тестирования схемы без шаблона для

%численного решения уравнения переноса (19)

function witht_template

%Определяем пределы интегрирования уравнения

%переноса по времени и по пространству, [0,T]x[0,a]

T=1; a=1; kmax=400; l=1;

for k=50:50:kmax

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

%по пространству

Nt=k; Nx=k;

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

t(1)=0;

for m=1:(Nt-1)

t(m+1)=t(m)+(T/(Nt-1))*(1+0.1*randn);

end

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

x(1)=0;

for n=1:(Nx-1)

x(n+1)=x(n)+(a/(Nx-1))*(1+0.1*randn);

end

%Задаем левое граничное условие u(t,0)=-t^2

for m=1:Nt

y(m,1)=-t(m)^2;

end

%Задаем начальные данные u(0,x)=x^2

for n=1:Nx

y(1,n)=x(n)^2;

end

%Организуем цикл расчетов по схеме без шаблона

for m=1:(Nt-1)

tau=t(m+1)-t(m);

for n=2:Nx

c=t(m+1)/x(n); xa=x(n)-c*tau;

p=1;

while (~((xa>=x(p))&(xa<x(p+1))))&((p+1)~=Nx)

p=p+1;

end

if xa>0

%интерполяция

y(m+1,n)=((x(p+1)-xa)/(x(p+1)-x(p)))*...

y(m,p)+((xa-x(p))/(x(p+1)-x(p)))*y(m,p+1);

else

y(m+1,n)=-(t(m)-xa/c)^2;

end

end

end

%Находим различие между численным и

%аналитическим решениями

for m=1:Nt

for n=1:Nx

yerror(m,n)=abs(y(m,n)-ya(t(m),x(n)));

end

end

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

error_without_template(l)=max(max(yerror));

l=l+1;

end

%Рисуем зависимость ошибки численного решения от

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

plot(50:50:kmax,error_without_template,...

'-*','MarkerSize',12);

%Определяем аналитическое решение (20) уравнения переноса

function y=ya(t,x)

y=x^2-t^2;

Знакопеременная скорость переноса c(t,x). В этом случае задача поставлена корректно, когда условия поставлены на тех границах, характеристики из которых идут внутрь области G(t,x).

Пусть скорость c(t,x) непрерывна в области G(t,x) = [0,T][0,a] и меняет знак на линии , т.е. , при этом будем считать , и , .

Рис.8. Зависимость ошибки численного решения задачи (19), (20) от числа узлов сетки по времени и пространству для схемы без шаблона

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

(21)

где . Найдем вид характеристик для уравнения (21). Для этого необходимо решить обыкновенное дифференциальное уравнение

. (22)

Решение уравнения (22) легко найти. Решение содержит две ветви, из которых выбираем положительную (t > 0), т.е.

, A = const. (23)

Нарисуем характеристики (23) средствами MATLAB. На листинге_№6 приведен короткий код программы рисования характеристик (23). Итог работы кода программы листинга_№6 приведен на рис.9,а. В целях упрощения кода на рис.9,а нарисованы лишь те характеристики, которые выпущены из левой и правой границ области G(t,x) = [0,T][0,a]. Стрелкой на рис.9,а обозначена линия, на которой скорость переноса обращается в ноль.

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