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

Лабораторная работа N7(домашнее задание).

Решение дифференциальных уравнений в частных производных второго порядка.

Краткие теоретические сведения.

Рассмотрим уравнение теплопроводности, описывающее распространение тепла в однородном стержне

, (1)

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

,

и выражение для вычисления дискриминанта

,

что это уравнение является дифференциальным уравнением параболического типа.

Построим разностную схему решения дифференциального уравнения (1) с начальным условием и граничными условиями

, . (2)

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

, (3)

для . С начальными и граничными условиями

, (4)

при . Данной схеме соответствует следующий шаблон

|

Если же производную аппроксимировать разностным отношением не на слое j, а на слое (j+1), то получим разностную схему

. (5)

В этом случае с теми же начальными и граничными условиями, что и для схемы (3). Этой схеме соответствует шаблон

|

В схеме (3) в каждом уравнении содержится только одно значение функции на следующем слое. Это значение явно выражается через значения функции на данном слое, поэтому эта схема называется явной. Схема (5) содержит в каждом уравнении несколько неизвестных значений функции на новом слое, такая схема называется неявной. Перепишем схему (5) в следующем виде

, (6)

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

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

Пусть , и . Тогда уравнения (8.18) преобразуются к виду

при , (7)

Эта система линейных алгебраических уравнений с трехдиагональной матрицей коэффициентов, она может быть решена методом прогонки.

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

(8)

при , а явная схема:

(9)

или

. (10)

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

,

из которого следует, что

.

Решая неравенство

,

получаем условие устойчивости явной схемы

. (11)

Для неявной схемы, аналогично рассуждая, получаем равенство

,

откуда следует, что неравенство

выполняется при всех . Это означает, что неявная схема является безусловно устойчивой.

Вариант N13.

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

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

3,5

1,4

-1

2

Текст программы.

clear

n=50

tau=1/n

a=3.5

b=1.4

c=-1

d=2

h=b/n

U=zeros(n)

b1=0

y=0

v=0

f=zeros(n)

for i=1:n

x(i)=i*h

f(i)=a*x(i).^2+((d*c-a*b.^2)*x(i))/b+c

U(i,1)=c

U(i,n)=d

U(1,i)=f(i)

end

A=zeros(n-2)

for j=2:n

y(1)=c

y(n)=d

A(1,j-1)=-(2+(h^2)/(tau))

A(1,j)=1

b1(1,1)=-((h^2)/tau)*U(j-1,2)-U(j-1,1)

for i=3:n-2

A(i-1,i-2)=1

A(i-1,i-1)=-(2+(h^2)/(tau))

A(i-1,i)=1

b1(i-1,1)=-((h^2)/tau)*U(j-1,i)

end

A(n-2,n-3)=1

A(n-2,n-2)=-(2+(h^2)/(tau))

b1(n-2,1)=-((h^2)/tau)*U(j-1,n-1)-U(j-1,n)

for i=1:n-1

if (i==1)

Alfa(i,1)=-A(i,i+1)/A(i,i)

Beta(i,1)=b1(i,1)/A(i,i)

end

if(i>1)

if(i==n-2)

Alfa(i,1)=0

Beta(i,1)=(b1(i,1)-A(i,i-1)*Beta(i-1,1))/(A(i,i-1)*Alfa(i-1,1)+A(i,i))

end

if(i<n-2)

Alfa(i,1)=(-A(i,i+1))/(A(i,i-1)*Alfa(i-1,1)+A(i,i))

Beta(i,1)=(b1(i,1)-A(i,i-1)*Beta(i-1,1))/(A(i,i-1)*Alfa(i-1,1)+A(i,i))

end

end

end

for i=n-2:-1:1

if(i==n-2)

v(i,1)=Beta(i,1)

end

if(i<n-2)

v(i,1)=Alfa(i,1)*v(i+1,1)+Beta(i,1)

end

end

for i=2:n-1

U(j,i)=v(i-1,1)

end

end

U(:,1)=[]

mesh(U)

После выполнения программы получим:

Соседние файлы в папке Лаба 7 (ДЗ)