Дискретно-аналитический метод решения задачи.

Ниже рассмотрим дискретно-аналитический метод решения задачи, который состоит в следующем: по оси x осуществляется конечно-разностная аппроксимация, а по времени t рассматривается непрерывная (континуальная) задача.

Пусть , – координаты точек разбиения, причем и – граничные точки (в которых заданы краевые условия). Таким образом, искомыми будут являться функции , во внутренних узлах сетки. Схема аппроксимации пространственно-временной области в данном случае условно показана на рис. 1.

Рис. 1. Пространственно-временная область:

Во всех внутренних точках узлах уравнение теплопроводности в ( 37) примет вид:

( 40)

при этом пусть

, . ( 41)

В соответствии с краевыми условиями из ( 37) для граничных точек, в свою очередь, можем записать:

, , . ( 42)

Следовательно, уравнения теплопроводности для узлов с номерами и имеют соответственно вид:

; ( 43)

. ( 44)

Введем обозначения:

; , ( 45)

где

; . ( 46)

Получаем матричную формулировку разрешающей системы уравнений:

( 47)

где

; ; . ( 48)

 

Согласно ( 31)-( 32) общее решение задачи ( 47) имеет вид:

. ( 49)

Если не зависит от , переходим к формуле

.

Выполняем интегрирование:

,

откуда

. ( 50)

Реализация формулы ( 50) предполагает вычисление экспоненты от матрицы , для выполнения которого следует воспользоваться результатами предыдущего параграфа (см. формулу ( 17)). Имеем:

, ( 51)

где

– матрица собственных векторов матрицы ;

– обратная матрица к матрице ;

 

; ( 52)

– собственные числа матрицы , .

 

Аналогично можем вычислить

, где . ( 53)

 

Варианты задания.

– функция, характеризующая мощность источника тепла;

– коэффициент температуропроводности материала стены;

– краевые условия;

– начальные условия;

– толщина стены; – номер группы, – номер студента по журналу.

Текст М-файла

 

function teplo_1_expm

function U=ut(t)

E=eye(n);

eAt=expm(t*A);

U=eAt*U0-A\(E-eAt)*F;

end

s=input('s=');

g=input('g=');

n=input('n=');

L=input('L=');

alpha=input('alpha=');

 

h=L/(n+1);

c=alpha/h^2;

 

a1=ones(n-1,1);

A=diag(a1,-1)-2*eye(n)+diag(a1,1),A=c*A;

u0=g; ul=s;

F=c*[u0;zeros(n-2,1);ul];

xi=(0:h:L)';x=xi(2:n+1);

U0=g+(g+3*s)*x-2*(g+s)*x.^2;

 

t=[0 0.15 1.5];

nt=length(t);res=zeros(nt,n+2);

fprintf('\n значения функции температуры U(x,t)\n')

for i=1:nt

res(i,:)=[u0 ut(t(i))' ul];

fprintf('U(%4.2f):',t(i)),fprintf('%6.2f',res(i,:)),fprintf('\n')

end

 

hold on

plot(xi,res(1,:),'.-')

plot(xi,res(2,:),'o-.r')

plot(xi,res(nt,:),'*:g')

grid on

s1=sprintf('t=%2.0f',t(1));

s2=sprintf('t=%4.2f',t(2));

s3=sprintf('t=%4.2f',t(nt));

legend(s1,s2,s3,0)

title(sprintf('U(x,t)=exp(At)*U0-inv(A)*(E-exp(At))*F\n%s %s %s', s1,s2,s3))

 

end

 

Результаты счета

 

s=12

g=3

n=7

L=1

alpha=1

A =

-2 1 0 0 0 0 0

1 -2 1 0 0 0 0

0 1 -2 1 0 0 0

0 0 1 -2 1 0 0

0 0 0 1 -2 1 0

0 0 0 0 1 -2 1

0 0 0 0 0 1 -2

 

значения функции температуры U(x,t)

U(0.00): 3.00 7.41 10.88 13.41 15.00 15.66 15.38 14.16 12.00

U(0.15): 3.00 4.81 6.52 8.03 9.29 10.28 11.02 11.56 12.00

U(1.50): 3.00 4.13 5.25 6.38 7.50 8.63 9.75 10.88 12.00

>>

 

 








Дата добавления: 2016-12-26; просмотров: 529;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.019 сек.