Внесите изменения в программу на паскале для решения задачи теплопроводности

Наберите текст программы, описывающей решение примера С=А+В. Выполните компиляцию программы и тестирование.

Для этого:

  1. Запустите программу PascalABC и наберите текст программы:

Var А, В, С: integer;

Writeln (‘Задача 1’);

Writeln (‘Введите число А’);

Writeln (‘Введите число В’);

Writeln (‘с=A+B= ‘ , с );

2. Сохраните программу, выбрав в меню File/Save as.

  1. Проверьте программу на ошибки (компиляция).
  2. Протестируйте программу:

1) запустить программу, выбрав в меню пункт Выполнить;

2) в ответ на приглашение «Введите число А» набрать 23;

3) в ответ на приглашение «Введите число В» набрать 17,

4) если программа работает правильно, то в результате будет выведено –

8. Самостоятельно протестируйте программу с другими числовыми данными:
А=2; В= -12;

Задание 2

Измените исходную программу, чтобы она находила частное двух чисел.

Сохраните программу под другим именем.

Линейные программы. Решение задач. Ч.1.

Задание 3

Измените исходную программу, чтобы она находила сумму четырех чисел.

Сохраните программу под другим именем.

Задание 4

Наберите текст программы, описывающей решение примера:

Выполните компиляцию программы и тестирование.

Для этого:

1. В окне текстового редактора программы PascalABC наберите текст программы:

Var А, В, D : real;

Writеln (‘Задача 2’);

Writеln (‘Введите А’);

Writeln (‘Введите В’);

  1. Проверить программу на ошибки — нажать F9.
  2. Сохранить программу, выбрав в меню File/Save as.
  3. Протестировать программу:

1) запустить программу, выбрав в меню пункт Run/Run. ;

2) в ответ на приглашение «Введите число А» набрать 2;

3) в ответ на приглашение «Введите число В» набрать 2;

4) если программа работает правильно, то в результате будет выведено –

  1. Для возврата в программу нажмите клавишу Enter.
  2. Введите ограничение для вещественного числа. Для этого внесите изменения в текст программы Writeln (‘D = ‘, D:4:2);

7. Самостоятельно протестируйте программу с другими числовыми данными:
А=2; В=1,5;

Задание 5

Создайте и протестируйте программу вычисления переменной D=(a*b)+2

Контрольные вопросы:

  1. Как открыть новое окно программы?
  2. Как сохранить новый текст программы?
  3. Как проверить текст программы на ошибки?
  4. Что такое компиляция программы?
  5. Как «запустить» программу?
  6. Назовите оператор вывода в Turbo Pascal.
  7. Назовите оператор ввода в Turbo Pascal.
  8. Какие арифметические действия применимы к переменным вещественного типа?
  9. Какой тип данных применен в этой практической работе.

*ссылка для скачивания редактора: http://pascalabc.net/ssyilki-dlya-skachivaniya

**при отсутствии возможности использовать ПО, допускается оформление заданий в тетради с последующим представлением учителю.

Источник: helpiks.su

Решение нестационарной задачи теплопроводности в MATLAB

Использование модуля pde-toolbox для решения плоской нестационарной задачи теплопроводности.

Рассматривается нестационарная плоская задача теплопроводности. Пластина со сторонами (a = 0.4) м, (b+d=0.051) м нагревается в тонком слое толщиной (d=1) мм (на верхней грани) за счёт внутренних источников тепла. В слое в одну секунду генерируется 8 кДж тепла. Со всех граней пластины излучается тепло рассеивается по закону Стефана-Больцмана. Степень черноты материала пластины — 0.8.

Читайте также:
Программа статистической сводки включает в себя такие этапы как

2019-12-10-pde-thermal-f1.png

Температура точек пластины (T(x,y,t)) есть функция времени и координат. Эта зависимость определяется дифференциальным уравнением в частных производных: [frac<partial T> <partial t>= k left( frac<partial^2 T> <partial x^2>+ frac<partial^2 T> <partial y^2>right) + frac]

  • (k) – теплопроводность [Вт/(м(cdot)К)],
  • (rho) – плотность [кг/м(^3)],
  • (c_p) – удельная теплоёмкость [Дж/(кг(cdot)K)],
  • (q(x,y)) – функция внутренних источников тепла [Вт/(м(^3))].

Создаем модель, указывая тип задачи: нестационарная (transient) задача теплопроводности (thermal)

% Нестационарная модель thermalModelT = createpde(‘thermal’,’transient’);
% Размеры пластины a = 0.4; b = 0.05; % Толищина «горячего» слоя d = 0.001; % Описание геометрии: Прямоугольник g = decsg([3 4 -a/2 a/2 a/2 -a/2 0.00 0.00 b b; 3 4 -a/2 a/2 a/2 -a/2 b b b+d b+d]’); % Модель geometryFromEdges(thermalModelT,g);

Свойства материала пластины

k = 50; % теплопроводность rho = 7800; % плотность cp = 468; % удельная теплоёмкость thermalProperties(thermalModelT,’ThermalConductivity’,k,’MassDensity’,rho,’SpecificHeat’,cp);

Граничные условия

Для корректного определения граничных условий необходимо увидеть геометрию тела с идентификаторами ребер (edges) и областей (faces).

pdegplot(thermalModelT,’EdgeLabels’,’on’,’SubdomainLabels’,’on’); axis equal

2019-12-10-pde-thermal-f2.png

Идентификаторы ребер (E1, 2, 3, … 7) и областей (F1, F2) используются при задании граничных условий. Пластина излучает со всех своих ребер, степень черноты тела принята равной 0.8. Температура среды 4 К.

% Постоянная Стефана-Больцмана thermalModelT.StefanBoltzmannConstant = 5.670373E-8; % Излучение со всех ребер % Степень черноты 0.8 % Температура среды 4 К thermalBC(thermalModelT,’Edge’,[1 2 4 5 6 7],’Emissivity’,0.8,’AmbientTemperature’, 4);

Внутренний источник тепла в тонком слое на верхней границе тела (область F2). В этом слое генерируется (2 cdot 10^7 cdot 0.4 times 0.001 = 8) кДж в секунду. В общем случае, это может быть не число ((2 cdot 10^7)), а ссылка на функцию координат и времени.

internalHeatSource(thermalModelT,2e7,’Face’,2);

Создание сетки

generateMesh(thermalModelT,’Hmax’,0.03); pdeplot(thermalModelT); axis equal title ‘Сетка’

2019-12-10-pde-thermal-f3.png

Расчёт

Запускаем расчёт на интервале от 0 до 3600 с с шагом 1 с.

tfinal = 3600; tlist = 0:1:tfinal; % Начальная температура тела thermalIC(thermalModelT,273); % Вывести статистическую информацию решателя thermalModelT.SolverOptions.ReportStatistics = ‘on’; % Решаем result = solve(thermalModelT,tlist)

Результаты

После выполнения функции solve в консоль MATLABа (Command Window) выводится следующая информация

34 successful steps 0 failed attempts 49 function evaluations 1 partial derivatives 12 LU decompositions 48 solutions of linear systems

Построим карту температуры пластины на момент времени t=3600 c. Решение получено в numel(tlist)) точках, поэтому распределение температуры в момент времени t=3600 c будет соответствовать самому последнему набору значений массива result.Temperature(:,sol_index), где sol_index будет равен numel(tlist) = 3601.

sol_index = numel(tlist)); pdeplot(thermalModelT,’XYData’,result.Temperature(:,sol_index),’Contour’,’on’,’ColorMap’,’hot’); % Покажем метки точек, для которых далее будут построены графики изменения температуры hold on; % Рисуем метки точек plot(0,0.000,’bo’); plot(0,0.051,’bo’); % Рисуем подписи точек text(0,-0.010,’T2′,’FontSize’,18); text(0, 0.060,’T1′,’FontSize’,18); hold off; set(gca,’FontSize’,14,’LineWidth’,1);grid on; xlim([-0.25 0.25]); ylim([-0.05 0.15]);

Читайте также:
Выберите из списка организации в программе которых содержались марксистские идеи

2019-12-10-pde-thermal-f4.png

График изменения температуры на верхней и нижней грани пластины.

2019-12-10-pde-thermal-f5.png

Ниже на видео показана динамика изменения температуры. Стрелками показаны направления тепловых потоков. Показана температура на верхней грани, нижней грани и разница температур. Для построения видео использовался следующий код

v = VideoWriter(‘temperature.avi’); open(v); % Фигура figure(‘Position’,[100 100 1920 1080]); hold on; % Для каждого момента времени из таблицы результатов интегрирования [qTx,qTy] = evaluateHeatFlux(result); for i=1:5:size(tlist,2) % Очищаем рисунок cla; %[qTx,qTy] = evaluateHeatFlux(result,0.2,0.05,1:length(tlist)); pdeplot(thermalModelT,’XYData’,result.Temperature(:,i),’Contour’,’on’, . ‘FlowData’,[qTx(:,i) qTy(:,i)], . ‘ColorMap’,’hot’,’Levels’,3); axis([-0.25 0.25,-0.05, 0.15]); % Определим температуру в двух точках [0,0] и [b+d, 0] % координаты точек задаются двумя массивами координат x и y % [x1, x2, x3, . ], [y1, y2, y3, . ] Temp = interpolateTemperature(result,[0 0],[b+d 0],i); text(0,-0.010,sprintf(‘%5.1f’,Temp(2)),’FontSize’,20); text(0,+0.060,sprintf(‘%5.1f’,Temp(1)),’FontSize’,20); % Разница температур text(0,-0.03,sprintf(‘dT = %5.1f’,Temp(1)-Temp(2)),’FontSize’,20); % Время text(-0.2, 0.12,sprintf(‘t = %5.1f’, tlist(i)),’FontSize’,20); % Шрифт для подписей осей set(gca,’FontSize’,20); % Сетка grid on; frame = getframe(gcf); writeVideo(v,frame); end close(v);

2023

  • Анализ предметной области и создание таблиц на примере базы данных с информацией о выпускных работах 15 Apr
  • Модель движения летающего стенда возвращаемой ступени РН в SimInTech 17 Mar

2022

  • Эффект Джанибекова в SimInTech 04 Dec
  • Модель движения вращающейся тросовой системы в SimInTech 16 Nov
  • Наноспутники формата кубсат 11 Nov
  • Управление мягкой посадкой 18 Apr

2021

  • Модель одноканальной системы ориентации в SIMULINK 10 Dec
  • Дискретная модель троса в MATLAB 29 Oct
  • Способ увода объектов крупногабаритного космического мусора 04 Sep
  • GLEX-2021 20 Jun
  • Навык Алисы для доступа к CelesTrak 14 Mar
  • Создание множества баз данных и пользователей в MySQL 22 Feb

2020

  • Пример построения сложного запроса к базе данных 20 May
  • Простая функция определения плотности воздуха 19 May
  • Игра Жизнь на SQL 09 May
  • Уравнения Лагранжа II рода в Wolfram Mathematica 10 Apr
  • Модель отделения створки головного обтекателя 10 Mar

2019

  • Решение нестационарной задачи теплопроводности в MATLAB 10 Dec
  • Модель физического маятника в Simulink 01 Aug
  • Движение механической системы с двумя степенями свободы 29 Jul
  • Модель движения наноспутника 03 Jul
  • Плоская модель сети 30 Jun
  • Пример использования библиотеки sympy для поиска экстремума функции 09 Jun
  • Способ очистки орбит от объектов космического мусора 22 Feb
  • Движение спускаемого аппарата в атмосфере 05 Jan
  • Истечение газа из ёмкости постоянного объёма 02 Jan

2018

  • Использование утилиты ffmpeg 13 May
  • Net 14 Apr
  • Electrostatic Space Tug 02 Apr

Источник: classmech.ru

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

введите сюда описание изображения

Необходимо решить задачу теплопроводности на отрезке При решении использовала явную схему

N = 10 # максимальное число шагов по х K = 10 # максимальное число шагов по t l = 1 # значение х на правой границе h = l / N # шаг сетки по х T = 1 # максимальное значение времени t на правой границе t = T / K # шаг сетки по времени # зададим сетку x_i = np.arange(0, N, h) # значения в узлах по х t_j = np.arange(0, K, t) # значение в узлах по t r_j = len(t_j) # количество узлов по t r_i = len(x_i) # количество узлов по x w_h_t = np.zeros([r_i, r_j]) # итоговая сетка размером x_i*t_j # зададим значение функции входящей в начальное уравнение x = 0 def f(x): return np.sin(x) # граничные условия ux_0 = 1 # граничное условие на левом конце при x=0 ut_0 = np.cos(x_i) # граничное условие при t=0 # найдем значения на нулевом слое при t=0 ut_0 = np.cos(x_i) w_h_t[0] = np.cos(x_i) # найдем значения w_h_t на первом и последующих слоях const = t / (h**2) for j in range(1, len(x_i)-1): for i in range(len(w_h_t[j])-1): w_h_t[j+1, i] = w_h_t[j, i] + const * (w_h_t[j,i] — 2*w_h_t[j,i] + w_h_t[j, i-1]) + t*f(x_i[j]) w_h_t[j+1, 0] = 1 w_h_t[j+1, len(w_h_t[i])-1] = w_h_t[j+1, len(w_h_t[i])-2] + h * t_j[j+1] plot_ = np.arange(0,len(w_h_t)-1,1) for y in plot_: plt.plot(x_i, w_h_t[y])

Читайте также:
Какая команда контекстного меню программы impress превращает любой объект в управляющую кнопку

В результате получила вот такой график зависимости Х от рассчитанного значения функции в узлах сетки введите сюда описание изображения Мне не понятно насколько неверно мое решение.

Возникли проблемы с поиском частного решения, wolfram выдал u(x) = 1.54x+1+sinx , что мне кажется не верным, а самой решить не получилось. В учебнике Филиппова похожих примеров не нашлось, в сети ничего достаточно подробного, чтобы разобраться в решении не нашла. Подскажите где можно найти как решать аналитически такое уравнение и насколько неверно мое решение? В чем ошибка?

И как вообще проверяют на корректность решения таких задач, кроме как сравнения с аналитическим решением? В общем и целом разобралась. Решила дополнить свой вопрос отредактированным решением, возможно, кому-то пригодится. Численное решение правильно найти так и не удалось, но находится оно методом Фурье(разделение переменных). Итоговый график: введите сюда описание изображения Рабочий код:

N = 10 # максимальное число шагов по х K = 500 # максимальное число шагов по t l = 1 # значение х на правой границе h = l / N # шаг сетки по х T = 1 # максимальное значение времени t на правой границе t = T / K # шаг сетки по времени # зададим сетку x_i = np.arange(0, 1, h) # значения в узлах по х t_j = np.arange(0, 1, t) # значение в узлах по t r_j = len(t_j) # количество узлов по t r_i = len(x_i) # количество узлов по x w_h_t = np.zeros([r_j, r_i]) # итоговая сетка размером x_i*t_j # зададим значение функции входящей в начальное уравнение x = 0 def f(x): return np.sin(x) # граничные условия ux_0 = 1 # граничное условие на левом конце при x=0 ut_0 = np.cos(x_i) # граничное условие при t=0 # найдем значения на нулевом слое при t=0 ut_0 = np.cos(x_i) w_h_t[0] = np.cos(x_i) # найдем значения w_h_t на первом и последующих слоях const = t / (h**2) for j in range(len(w_h_t) — 1): for i in range(len(w_h_t[j]) — 1): w_h_t[j + 1, i] = w_h_t[j, i] + const* (w_h_t[j, i+1] — 2 * w_h_t[j, i] + w_h_t[j, i — 1]) + t*f(x_i[i]) w_h_t[j + 1, 0] = 1 w_h_t[j + 1, len(w_h_t[i])-1] = w_h_t[j + 1, len(w_h_t[i])-1] + h

Источник: ru.stackoverflow.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru