Численно-аналитическое решение задачи теплопроводности

Задание.

Решить задачу теплопроводности дискретно-аналитическим методом (требуется составить программу в системе MATLAB (М-языке)).

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

f(x,t) = 0 - функция источника тепла;

а = 1 - коэффициент температуропроводности;

? = 1; g - номер группы, s - номер студента по журналу.

Принять количество внутренних узлов при дискретизации (по переменной х) N = S, количество шагов по времени nt = 10 ; t g [0,1.5] .

Пример выполнения лабораторной работы.

Решение задачи в системе MATLAB (на М-языке).

Для выполнения создается М-файл. Ниже приведен текст М-файла.

format bank

n=input('введите n=');

nt=input('введите nt=');

fprintf(' n=%2d',n); fprintf('; nt=%2d ',n);

m=n-l;

alpha=l;

h=l/n;

tau=l.5/nt;

c=alpha/hA2;

E=eye(m); al=ones(m-1,1);

A=-2*E+diag(al,1)+diag(al,-1); fprintf(' Матрица A '); for i=l:m

fprintf('%8.2f',A(i,:)); fprintf(' ');

end

A=c*A;

F=zeros(m,1);

F(1)=3; F(m)=12;

F=c*F;

res=size(nt+l,n+l);

res(1:nt+1,1)=3; res(1:nt+1,n+1)=12; x=0:h:1; for i=l:m

psi(i)=3+(3+3*12)*x(i+1)-2*(3+12)*x(i+1)л2;

end

[T,J]=eig(A);

fprintf(' Матрица T '); for i=l:m

fprintf('%8.2f',T(i,:)); fprintf( ' ' ) ;

end

fprintf(' Матрица J '); for i=l:m

fprintf(’%8.2f',J(i,:)); fprintf(' ');

end

T_INV=inv(T);

fprintf(' Матрица T_INV '); for i=l:m

fprintf('%8.2f',T_INV(i,:)); fprintf(' ');

end

for k=l:nt+l

t=tau*(k-1); t_res(k)=t; for i=l:m

ETJ(i,i)=exp(t*J(i,i));

end

EAt=T*ETJ* inv(T) ;

u=EAt*psi'-inv(A)*(E-EAt)*F;

for j=2:n

res(k,j)=u(j-1);

end

end

result_u=[t_res' res];

fprintf(' Матрица result_u ');

for i=l:m+2

fprintf('%6.2f',result_u(i,:)); fprintf(' ');

end

hold on

plot(x,res(1,1:n+1),'-*k') plot(x,res(2,1:n+1),'-.sk') plot(x,res(nt+1,1:n+1),'--ok') grid on

legend ('t=0 ' , 't=0.15 't=1.54)

Результаты расчета в командном окне (см. также рис. Л.3.10.1):

п= 8; nt= 8

Матрица А

  • -2.00 1.00 0.00 0.00 0.00 0.00 0.00
  • 1.00 -2.00 1.00 0.00 0.00 0.00 0.00
  • 0.00 1.00 -2.00 1.00 0.00 0.00 0.00
  • 0.00 0.00 1.00 -2.00 1.00 0.00 0.00
  • 0.00 0.00 0.00 1.00 -2.00 1.00 0.00
  • 0.00 0.00 0.00 0.00 1.00 -2.00 1.00
  • 0.00 0.00 0.00 0.00 0.00 1.00 -2.00

Матрица Т

  • 0.19 -0.35 0.46 0.50 0.46 -0.35 -0.19
  • -0.35 0.50 -0.35 -0.00 0.35 -0.50 -0.35
  • 0.46 -0.35 -0.19 -0.50 -0.19 -0.35 -0.46
  • -0.50 0.00 0.50 0.00 -0.50 0.00 -0.50
  • 0.46 0.35 -0.19 0.50 -0.19 0.35 -0.46
  • -0.35 -0.50 -0.35 0.00 0.35 0.50 -0.35
  • 0.19 0.35 0.46 -0.50 0.46 0.35 -0.19

Матрица J

  • -246.26 0.00 0.00 0.00 0.00 0.00 0.00
  • 0.00 -218.51 0.00 0.00 0.00 0.00 0.00
  • 0.00 0.00 -176.98 0.00 0.00 0.00 0.00
  • 0.00 0.00 0.00 -128.00 0.00 0.00 0.00
  • 0.00 0.00 0.00 0.00 -79.02 0.00 0.00
  • 0.00 0.00 0.00 0.00 0.00 -37.49 0.00
  • 0.00 0.00 0.00 0.00 0.00 0.00 -9.74

Матрица T_INV

  • 0.19 -0.35 0.46 -0.50 0.46 -0.35 0.19
  • -0.35 0.50 -0.35 0.00 0.35 -0.50 0.35
  • 0.46 -0.35 -0.19 0.50 -0.19 -0.35 0.46
  • 0.50 0.00 -0.50 -0.00 0.50 -0.00 -0.50
  • 0.46 0.35 -0.19 -0.50 -0.19 0.35 0.46
  • -0.35 -0.50 -0.35 0.00 0.35 0.50 0.35
  • -0.19 -0.35 -0.46 -0.50 -0.46 -0.35 -0.19

Матрица result_u

  • 0.00 3.00 7.41 10.87 13.41 15.00 15.66 15.37 14.16 12.00
  • 0.15 3.00 4.81 6.52 8.03 9.29 10.28 11.02 11.56 12.00
  • 0.30 3.00 4.28 5.54 6.76 7.92 9.01 10.04 11.03 12.00
  • 0.45 3.00 4.16 5.32 6.46 7.60 8.71 9.82 10.91 12.00
  • 0.60 3.00 4.13 5.27 6.40 7.52 8.65 9.77 10.88 12.00
  • 0.75 3.00 4.13 5.25 6.38 7.51 8.63 9.75 10.88 12.00
  • 0.90 3.00 4.13 5.25 6.38 7.50 8.63 9.75 10.88 12.00
  • 1.05 3.00 4.13 5.25 6.38 7.50 8.63 9.75 10.88 12.00
  • 1.20 3.00 4.13 5.25 6.38 7.50 8.63 9.75 10.88 12.00

Поясним, что представленный выше текст программы составлен и соответствующие результаты получен для примера, в котором д=3 и s=12. Соответствующие места программы, где задаются параметры g и s выделены жирным шрифтом и подчеркиванием.

Л.3.10.1. Графики распределения температуры в моменты времени t = 0, /=0.15 и / = 1.5

Рис. Л.3.10.1. Графики распределения температуры в моменты времени t = 0, /=0.15 и / = 1.5 .

 
Посмотреть оригинал