Автор работы: Пользователь скрыл имя, 08 Сентября 2011 в 00:59, курсовая работа
Ставится задача о нахождении стационарного распределения температуры внутри многоугольника, если задано распределение температуры вдоль его сторон.
Одна из главных трудностей, возникающих при решении этой задачи, обусловлена сложной формой границы расчетной области. Аналитическое решение задачи Дирихле для уравнения (1) удается получить лишь в частных случаях для простейших областей (прямоугольник, круг сектор, шар). Основными методами решения поставленной задачи являются численные методы.
1. Введение.......................................................................................................
2. Аналитические методы решения уравнений в частных производных...
3. Численные методы решения уравнений матфизики................................
3.1. Метод конечных разностей...............................................................
3.2. Метод конечных элементов..............................................................
4. Дискретизация расчетной области.............................................................
5. Формирование матрицы неизвестных температур системы линейных уравне-ний......................................................................................................................
6. Построение изотерм.....................................................................................
6.1. Нахождение температур в любой точке.............................................
6.2. Алгоритм построения изотерм............................................................
7. Характеристика программы........................................................................
8. Результаты программы................................................................................
9. Список используемой литературы.............................................................
10. Приложение..................................................................................................
10.1. Листинг программы...........................................................................
tabl[15][2]:=14;tabl[15][3]:=
tabl[16][2]:=15;tabl[16][3]:=
tabl[17][2]:=36;tabl[17][3]:=
tabl[18][2]:=17;tabl[18][3]:=
tabl[19][2]:=18;tabl[19][3]:=
for i:=1 to 19 do begin
for j:=1 to 19 do
a[i][j]:=0;
b[i]:=0;
end;
for i:=1 to 19 do
begin
k:=tabl[i,1];k1:=tabl[i,2];k2:
k3:=tabl[i,4];k4:=tabl[i,5];
h1:=abs(x[k]-x[k1]);h2:=abs(x[
h3:=abs(y[k]-y[k3]);h4:=abs(y[
a[k,k]:=-(1/(h1*h2)+1/(h3*h4))
kf1:=1/(h1*(h2+h1));kf2:=1/(
kf3:=1/(h3*(h4+h3));kf4:=1/(
if k1>19 then
b[k]:=b[k]-kf1*t[k1]
else
a[k,k1]:=kf1;
if k2>19 then
b[k]:=b[k]-kf2*t[k2]
else
a[k,k2]:=kf2;
if k3>19 then
b[k]:=b[k]-kf3*t[k3]
else
a[k,k3]:=kf3;
if k4>19 then
b[k]:=b[k]-kf4*t[k4]
else
a[k,k4]:=kf4;
end;
for i:=1 to 19 do begin {+}
for J:=1 to 19 do
write(' ',a[i][j]:1:1);
writeln;end; writeln;
clrscr;
GAUS(19,a,b);
for I:=1 to 19 do t[i]:=b[i];
readkey;
clrscr;
for i:=1 to 19 do
pogr[i]:=x[i]*x[i]-x[i]*y[i]-
for i:=1 to 19 do
pogr_2[i]:=b[i]-pogr[i];
gotoxy(2,2);
write('Внутренние-внешние точки');
gotoxy (2,3);
write
('----------------------------
gotoxy (2,4);
write ('| N | x | y | T | P |');
gotoxy (2,5);
write
('----------------------------
for i:=1 to 19 do begin
gotoxy(2,i+5);write ('| ',i);
gotoxy(7,i+5);write('|');
gotoxy(9,i+5);write (x[i]:1:1);
gotoxy(13,i+5);write('|');
gotoxy(16,i+5);write (y[i]:1:1);
gotoxy(20,i+5);write('|');
gotoxy(22,i+5);write(b[i]:1:2)
gotoxy(28,i+5);write('|');
gotoxy(30,i+5);write(pogr_2[i]
gotoxy(39,i+5);write('|');
end;
gotoxy(2,25);
write('-----------------------
gotoxy(41,2);
writeln('
------------------------------
gotoxy(41,3);
writeln(' | N | x | y | T | P |');
gotoxy(41,4);
writeln('
------------------------------
for i:=20 to 39 do begin
gotoxy(41,i-15);
write(' | ',i);
gotoxy(49,i-15);write('|');
gotoxy(52,i-15);
write(x[i]:1:1);
gotoxy(56,i-15);write('|');
gotoxy(59,i-15);
write(y[i]:1:1);
gotoxy(65,i-15);write('|');
gotoxy(68,i-15);
write(t[i]:1:1);
gotoxy(75,i-15);write('|');
gotoxy(76,i-15);
write(' 0 |');
end;
gotoxy(41,25);
write(' ------------------------------
gotoxy(3,26);
write('
readkey;clrscr;
writeln(' Создается Файл!!!');
writeln(' Создается фалй с вычислениями!!');
writeln(' Создана папка "DATA". Создан в нем "result.txt"');
{$I-}
MkDir('data');
if IOResult <> 0 then begin
Writeln('Такая "DATA" директория существует!!!');
writeln;
goto G;
end
else begin
writeln (' Создана папка "DATA"!!!');
G:
Assign(my,'data/result.txt');
rewrite(my);
writeln (my,' Номера вычислительных шаблонов');
writeln(my);
for i:=1 to 19 do begin
for j:=1 to 5 do write(my,' ',tabl[i][j]);
writeln(my);end;writeln (my,'Следующее->любая клава!!!');
writeln (my, ' Формирование системы:');
for i:=1 to 19 do begin {+}
for J:=1 to 19 do
write(my,' ',a[i][j]:1:4);
writeln(my);end; writeln(my);
for i:=1 to 19 do
write(my,' ',b[i]:1:1);writeln(my);
writeln (my,' Следующее->любая клава!!!');
writeln(my,' Внутренние и внешние точки');
writeln
(my,'-------------------------
writeln (my,'| N | x | y | T | P |');
writeln
(my,'-------------------------
for i:=1 to 19 do begin
write (my,i); write(my,' ');
write (my,x[i]:1:1); write(my,' ');
write (my,y[i]:1:1); write(my,' ');
write(my,b[i]:1:2); write(my,' ');
write(my,pogr_2[i]:1); write(my,' ');
writeln(my);
end;
writeln(my,'
------------------------------
writeln(my,' | N | x | y | T | P |');
writeln(my,'
------------------------------
for i:=20 to 39 do begin
write(my,' ',i);
write(my,' ');write(my,x[i]:1:1);
write(my,' ');write(my,y[i]:1:1);
write(my,' ');write(my,t[i]:1:1);
write(my,' ');write(my,' 0 ');
writeln(my);
end;
writeln(my,' ------------------------------
writeln (my,'Следующее->любая клава!!!');
close(my);writeln;writeln;
writeln (' Файл "Result.txt" создан в папке "DATA"');
writeln (' Следующее->любая клава!!!');
readkey;
end;
{$I+}
end
else
begin
if vib=2 then begin
clrscr;
writeln('Нахождение температуры в любой точке области');
for i:=1 to 19 do
for j:=1 to 5 do r[i][j]:=tabl[i][j];
writeln;
write('Введите x:');readln(xx);writeln;
write('Введите
y:');readln(yy);
if (yy<=3) and
(yy>=-0.25*xx-0.75) and
(yy<=xx+3) and
(yy<=-2.5*xx+10.5) then begin
if (xx=0) then begin
kvadrat(t[1],t[2],t[24],t[23],
kvadrat(t[6],t[7],t[1],t[2],x[
kvadrat(t[12],t[13],t[7],t[6],
isk_k(t[37],t[13],t[12],x[37],
end
else begin
treygol(t[1],t[22],t[23],x[1],
kvadrat(t[1],t[2],t[24],t[23],
kvadrat(t[2],t[3],t[25],t[24],
kvadrat(t[3],t[4],t[26],t[25],
treygol(t[4],t[26],t[27],x[4],
treygol(t[22],t[21],t[5],x[22]
kvadrat(t[5],t[6],t[1],t[22],
kvadrat(t[6],t[7],t[2],t[1],x[
kvadrat(t[7],t[8],t[3],t[2],x[
kvadrat(t[8],t[9],t[4],t[3],x[
treygol(t[9],t[28],t[4],x[9],
treygol(t[27],t[4],t[28],x[27]
treygol(t[21],t[20],t[10],x[
kvadrat(t[10],t[11],t[5],t[21]
kvadrat(t[11],t[12],t[6],t[5],
kvadrat(t[12],t[13],t[7],t[6],
kvadrat(t[13],t[14],t[8],t[7],
kvadrat(t[14],t[15],t[9],t[8],
treygol(t[15],t[16],t[9],x[15]
treygol(t[9],t[29],t[16],x[9],
treygol(t[28],t[29],t[9],x[28]
treygol(t[16],t[30],t[29],x[
treygol(t[10],t[20],t[39],x[
treygol(t[10],t[11],t[39],x[
treygol(t[38],t[11],t[39],x[
treygol(t[38],t[11],t[12],x[
treygol(t[38],t[12],t[37],x[
treygol(t[13],t[12],t[37],x[
treygol(t[36],t[13],t[37],x[
kvadrat(t[36],t[17],t[14],t[
kvadrat(t[17],t[18],t[15],t[
kvadrat(t[18],t[19],t[16],t[
treygol(t[16],t[19],t[31],x[
treygol(t[16],t[30],t[31],x[
treygol(t[36],t[35],t[17],x[
treygol(t[35],t[18],t[17],x[
treygol(t[35],t[18],t[34],x[
treygol(t[34],t[18],t[19],x[
treygol(t[34],t[33],t[19],x[
treygol(t[33],t[31],t[19],x[
treygol(t[33],t[31],t[32],x[
end;end
else writeln('Точка не находится в данной области!!!');
writeln;
writeln ('
Следующее->любая клава!!!');
end
else begin
if (vib=3) then begin
clrscr;
writeln(' Семейство изотерм!!!');
write('t=');readln(h1);
New(pr);j:=0;
for i:=1 to 39 do
if (t[i]=h1) then begin
j:=j+1;pr^[j][1]:=x[i];pr^[j][
for i:=1 to 19 do begin
j:=j+1;
pr^[j][1]:=tconstx(h1,x[i],y[
pr^[j][2]:=tconsty(h1,x[i],y[
Информация о работе Численные методы решения задачи нахождения температуры