Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб.раб1.DOC
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
161.28 Кб
Скачать

2.5. Программа для решения задачи об остывании кофе

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

Таблица 2.2

Остывание чашки кофе, помещенной

в керамический стакан.

Время, мин

Т, град

Время, мин

Т, град

0

83.0

8.0

64.7

1.0

77.7

9.0

63.4

2.0

75.1

10.0

62.1

3.0

73.0

11.0

61.0

4.0

71.1

12.0

59.9

5.0

69.4

13.0

58.7

6.0

67.8

13.0

57.8

7.0

66.4

15.0

56.6

Температура регистрировалась с точностью 0.1 град.

Температура окружающего воздуха 22 град.

Структура программы Сool, в которой реализован алгоритм Эйлера численного решения задачи ньютоновской теплопроводности, аналогична структуре программы Example. Единственное различие состоит в том, что вывод на экран осуществляется подпрограммой Output, которая вызывается из подпрограммы Euler. Модульный подход к программированию будет полезен при выводе графиков.

program Cool; {метод Эйлера для задачи об остывании кофе}

var

t, tmpr, room_tmpr, r, dt : real; {описание}

ncalc : integer; {переменных }

procedure Iinitial ( var t, tmpr, room_tmpr, r, dt : real;

var ncalc : integer);

var tmax:real;

begin

t:=0.0; {начальный момент времени}

tmpr:=83; {начальная температура кофе (С)}

room_tmpr:=22; {комнатная температура (С)}

r:=0.1; {коэффициент остывания (1/мин)}

dt:=0.1; {шаг по времени (мин)}

tmax:=2.0; { длительность наблюдения (мин)}

ncalc:=trunc(tmax/dt); {общее количество шагов}

end;

procedure Output (t,tmpr : real);

begin

writeln(t, tmpr) { печать результатов }

end;

procedure Euler (var t, tmpr, room_tmpr, r, dt : real;

var ncalc : integer);

var

change : real;

icalc : integer;

begin

for icalc:=1 to ncalc do { цикл повторяется ncalc раз}

begin

change := - r (tmpr - room_tmpr);

tmpr := tmpr + change dt;

t := t+dt; { время}

Output (t,tmpr)

end

end;

begin {основная программа}

Initial(t, tmpr, room_tmpr, r, dt, ncalc);

Euler(t, tmpr, room_tmpr, r, dt, ncalc) ;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]