Численные методы решения задачи нахождения температуры

Автор работы: Пользователь скрыл имя, 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. Листинг программы...........................................................................

Файлы: 1 файл

курсовая.doc

— 814.50 Кб (Скачать файл)

      Структура программы проста - использование 1 – для дискретизации области, 2 – для получения данных о температуре в любой точки области, 3 – для получения данных по изотермам. При использовании программы используем 1, затем 2 для получения полного доступа к программе из-за проведения определенных расчетов для области с целью наилучшего восприятия информации. Для перемещения по вычислениям используется любая клавиша.

  Теперь перейдем к более подробному описанию программы: в 1 пункте – четыре рисунка дискретизации области, вывод температуры во внутренних и внешних  точках области, сообщением о создании файла с результатами, полученных при вычислениях; во 2 пункте вы вводите координату точки, через некоторое мгновение появится температура внутри области и оценкой с реальной температурой, в противном случае – о некорректности введенных параметрах; в 3 пункте – постройка изотермы выполняется при вводе температуры, затем добавляются координаты точек, имеющих эту температуру, и её графическая интепритация с возможностью проверки – рисованием линии, отражающую реальную картину.

  

8. РЕЗУЛЬТАТЫ ПРОГРАММЫ 

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

      1) температура во  внутренних и внешних  узлах сетки

      Таблица 1

Температура во внутренних и внешних  узлах сетки

N x y T P (%)
1 0.0 2.0 -6.00 0
2 1.0 2.0 -5.00 0
3 2.0 2.0 -2.00 -3.6e-12
4 3.0 2.0 3.00 0
5 -1.0 1.0 -2.00 3.6E-12
6 0.0 1.0 -2.00 7.3E-12
7 1.0 1.0 0.00 4.5E-12
8 2.0 1.0 4.00 7.3E-12
9 3.0 1.0 10.00 2.9E-11
10 -2.0 0.0 0.00 2.3E-13
11 -1.0 0.0 -1.00 1.8E-12
12 0.0 0.0 0.00 1.7E-12
13 1.0 0.0 3.00 0
14 2.0 0.0 8.00 0
15 3.0 0.0 15.00 1.5E-11
16 4.0 0.0 24.00 2.9E-11
17 2.0 -1.0 10.00 1.5E-11
18 3.0 -1.0 18.00 0
19 4.0 -1.0 28.00 0
20 -3.0 0.0 3.00 0
21 -2.0 1.0 0.00 0
22 -1.0 2.0 -5.00 0
23 0.0 3.0 -12.00 0
24 1.0 3.0 -12.00 0
25 2.0 3.0 -10.00 0
26 3.0 3.0 -6.0 0
27 3.4 2.0 5.6 0
28 3.8 1.0 16.2 0
29 4.0 0.5 21.3 0
30 4.2 0.0 26.0 0
31 4.6 -1.0 35.0 0
32 5.0 -2.0 43.0 0
33 4.0 -1.8 29.7 0
34 3.0 -1.5 18.8 0
35 2.0 -1.3 10.2 0
36 1.0 -1.0 4.0 0
37 0.0 -0.8 0.2 0
38 -1.0 -0.5 -1.3 0
39 -2.0 -0.3 -0.3 0

      2) выведением информации о температуре в любой его точке

Нахождение  температуры в  любой точке области

Введите x:0.5

Введите y:0.6 

T=-0.000    t(точная)=-0.010

Относительная погрешность =100.00 %

при  x=0.500     y=0.600

      3) результаты построения изотерм (рис. 16, рис.17)

Рис.16 Изотерма T=1

Рис.17 Изотерма T=6

9. СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

  1. А.А.Самарский. Введение в численные методы – М.: Наука. Главная редакция физико-математической литературы, 1982. – 272 с.
  2. Ж. Кнуцман. Численные методы. Перевод с франц./ Под редакцией Д. П. Костырова. Главная редакция физико-математической литературы, 1979. – 160 с.
  3. В.М. Вержбицкий. Численные методы (линейная алгебра и нелинейные уравнения): Учебное пособие для вузов. – М.: Высшая школа, 2000. – 266 с.: ил.
  4. Л.И. Турчак. Основы численных методов. Учебное пособие. – М.: Наука. Главная редакция физико-математической литературы, 1987. – 320 с.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

10. ПРИЛОЖЕНИЕ

10.1.Листинг программы 

Program Kursach;

uses CRT,Graph; 

type masik=array [1..19,1..20] of real; 

function gx(x:real;mx:integer):integer;

begin

gx:=trunc(mx*x)+trunc(getmaxx/2);

end; 

function gy(y:real;my:integer):integer;

begin

gy:=trunc(getmaxY/2)-Trunc(my*y);

end; 

procedure L(x1,y1,x2,y2,color:integer);

begin

     setcolor(color);

     line(x1,y1,x2,y2);

end; 

procedure init_graph;

var

  grDriver: Integer;

  grMode: Integer;

  ErrCode: Integer;

begin 

  grDriver := Detect;

  InitGraph(grDriver, grMode,'');

  ErrCode := GraphResult;

  if ErrCode <> grOk then

   begin

   writeln ('ne syshestvyet!!');

   exit;

   end;

end; 

procedure ris;

begin

     L (gx(-7,50),gy(0,50),gx(7,50),gy(0,50),2);

     L (gx(0,50),gy(3,50),gx(-3,50),gy(0,50),2);

     L (gx(5,50),gy(-2,50),gx(-3,50),gy(0,50),2);

     L (gx(5,50),gy(-2,50),gx(3,50),gy(3,50),2);

     L (gx(3,50),gy(3,50),gx(0,50),gy(3,50),2);

     L (gx(-7,50),gy(0,50),gx(7,50),gy(0,50),15);

     L (gx(0,50),gy(-7,50),gx(0,50),gy(7,50),15);

     L (gx(-7,50),gy(0,50),gx(7,50),gy(0,50),15);

     setcolor (12);

     outtextxy (gx(-0.3,50),gy(3.3,50),'B(0,3)');

     outtextxy (gx(-3.5,50),gy(-0.3,50),'A(-3,0)');

     outtextxy (gx(2.7,50),gy(3.3,50),'C(3,3)');

     outtextxy (gx(4.5,50),gy(-2.05,50),'D(5,-2)');

     outtextxy (gx(2.55,50),gy(-3.4,50),'Cледующее->любая клава!!!');

     setcolor (15);

     outtextxy (gx(6.2,50),gy(-0.1,50),'X');

     outtextxy (gx(0.1,50),gy(4.45,50),'Y');

     setcolor (11);

     outtextxy (gx(-6.2,50),gy(-0.1,50),'-6');

     outtextxy (gx(-5.2,50),gy(-0.1,50),'-5');

     outtextxy (gx(-4.2,50),gy(-0.1,50),'-4');

     outtextxy (gx(-3.2,50),gy(-0.1,50),'-3');

     outtextxy (gx(-2.2,50),gy(-0.1,50),'-2');

     outtextxy (gx(-1.2,50),gy(-0.1,50),'-1');

     outtextxy (gx(0.1,50),gy(-0.1,50),'0');

     outtextxy (gx(0.95,50),gy(-0.1,50),'1');

     outtextxy (gx(1.95,50),gy(-0.1,50),'2');

     outtextxy (gx(2.95,50),gy(-0.1,50),'3');

     outtextxy (gx(3.95,50),gy(-0.1,50),'4');

     outtextxy (gx(4.95,50),gy(-0.1,50),'5');

     outtextxy (gx(5.95,50),gy(-0.1,50),'6');

     outtextxy (gx(0.1,50),gy(4.05,50),'4');

     outtextxy (gx(0.1,50),gy(3.05,50),'3');

     outtextxy (gx(0.1,50),gy(2.05,50),'2');

     outtextxy (gx(0.1,50),gy(1.05,50),'1');

     outtextxy (gx(0.1,50),gy(-1.05,50),'-1');

     outtextxy (gx(0.1,50),gy(-2.05,50),'-2');

     outtextxy (gx(0.1,50),gy(-3.05,50),'-3');

     outtextxy (gx(0.1,50),gy(-4.05,50),'-4');

end;

procedure setka;

var h,t:integer;

begin

     for t:=-7 to 7 do

     L (gx(t,50),gy(7,50),gx(t,50),gy(-7,50),5);

     for h:=-7 to 7 do

     L (gx(-7,50),gy(h,50),gx(7,50),gy(h,50),5);

end; 

procedure dizkretizaciya;

begin

   L (gx(-2,50),gy(1,50),gx(-2,50),gy(-0.25,50),8);

   L (gx(-1,50),gy(2,50),gx(-1,50),gy(-0.5,50),8);

   L (gx(0,50),gy(3,50),gx(0,50),gy(-0.75,50),8);

   L (gx(1,50),gy(3,50),gx(1,50),gy(-1,50),8);

   L (gx(2,50),gy(3,50),gx(2,50),gy(-1.25,50),8);

   L (gx(3,50),gy(3,50),gx(3,50),gy(-1.5,50),8);

   L (gx(4,50),gy(0.5,50),gx(4,50),gy(-1.75,50),8);

   L (gx(1,50),gy(-1,50),gx(4.6,50),gy(-1,50),8);

   L (gx(-3,50),gy(0,50),gx(4.2,50),gy(0,50),8);

   L (gx(-2,50),gy(1,50),gx(3.8,50),gy(1,50),8);

   L (gx(-1,50),gy(2,50),gx(3.4,50),gy(2,50),8);

end; 

procedure linia;

begin

init_graph;

   ris ;

   outtextxy(gx(-3.25,50),gy(3.9,50),'Постройка фигуры');

   outtextxy(gx(-3.25,50),gy(3.8,50),'----------------');

   readkey;clrscr;clearviewport;

   setka;

   ris;

     outtextxy(gx(-4.25,50),gy(3.9,50),'Постройка сетки шаг=1');

     outtextxy(gx(-4.25,50),gy(3.8,50),'---------------------');

     readkey;

     clrscr;

     cleardevice;

   ris;

   outtextxy(gx(-6.25,50),gy(3.9,50),'Постройка дискретизации области шаг=1');

   outtextxy(gx(-6.25,50),gy(3.8,50),'-------------------------------------');

   dizkretizaciya;

   readkey;

   clrscr;

   clearviewport;

   ris;

   outtextxy(gx(-6.3,50),gy(3.9,50),'Постройка дискретизации области шаг=1');

   outtextxy(gx(-6.3,50),gy(3.8,50),'-------------------------------------');

   outtextxy(gx(-6.3,50),gy(3.7,50),'      внутренние/внешние точки');

   outtextxy(gx(-6.3,50),gy(3.6,50),'      ------------------------'); 

   dizkretizaciya; 

   setcolor(6);

   outtextxy(gx(-0.1,50),gy(2.2,50),'1');

   outtextxy(gx(0.9,50),gy(2.2,50),'2');

   outtextxy(gx(1.9,50),gy(2.2,50),'3');

   outtextxy(gx(2.9,50),gy(2.2,50),'4');

   outtextxy(gx(-1.1,50),gy(1.2,50),'5');

   outtextxy(gx(-0.1,50),gy(1.2,50),'6');

   outtextxy(gx(0.9,50),gy(1.2,50),'7');

   outtextxy(gx(1.9,50),gy(1.2,50),'8');

   outtextxy(gx(2.9,50),gy(1.2,50),'9');

   outtextxy(gx(-2.1,50),gy(0.2,50),'10');

   outtextxy(gx(-1.1,50),gy(0.2,50),'11');

   outtextxy(gx(-0.1,50),gy(0.2,50),'12');

   outtextxy(gx(0.9,50),gy(0.2,50),'13');

   outtextxy(gx(1.9,50),gy(0.2,50),'14');

   outtextxy(gx(2.9,50),gy(0.2,50),'15');

   outtextxy(gx(3.7,50),gy(0.2,50),'16');

   outtextxy(gx(1.9,50),gy(-0.8,50),'17');

   outtextxy(gx(2.9,50),gy(-0.8,50),'18');

   outtextxy(gx(3.9,50),gy(-0.8,50),'19'); 

   outtextxy(gx(-3.2,50),gy(0.2,50),'20');

   outtextxy(gx(-2.2,50),gy(1.2,50),'21');

   outtextxy(gx(-1.2,50),gy(2.2,50),'22');

   outtextxy(gx(-0.3,50),gy(3.1,50),'23'); 

   outtextxy(gx(0.8,50),gy(3.2,50),'24');

   outtextxy(gx(1.8,50),gy(3.2,50),'25');

   outtextxy(gx(3.1,50),gy(3.1,50),'26'); 

   outtextxy(gx(3.5,50),gy(2.1,50),'27');

   outtextxy(gx(3.9,50),gy(1.2,50),'28');

   outtextxy(gx(4.1,50),gy(0.6,50),'29');

   outtextxy(gx(4.3,50),gy(0.2,50),'30');

   outtextxy(gx(4.65,50),gy(-0.9,50),'31');

   outtextxy(gx(5.012,50),gy(-1.8,50),'32'); 

   outtextxy(gx(3.95,50),gy(-1.85,50),'33');

   outtextxy(gx(2.95,50),gy(-1.55,50),'34');

   outtextxy(gx(1.95,50),gy(-1.35,50),'35');

   outtextxy(gx(-0.1,50),gy(-0.8,50),'37');

   outtextxy(gx(0.95,50),gy(-1.07,50),'36');

<

Информация о работе Численные методы решения задачи нахождения температуры