Наберите текст программы, описывающей решение примера С=А+В. Выполните компиляцию программы и тестирование.
Для этого:
- Запустите программу PascalABC и наберите текст программы:
Var А, В, С: integer;
Writeln (‘Задача 1’);
Writeln (‘Введите число А’);
Writeln (‘Введите число В’);
Writeln (‘с=A+B= ‘ , с );
2. Сохраните программу, выбрав в меню File/Save as.
- Проверьте программу на ошибки (компиляция).
- Протестируйте программу:
1) запустить программу, выбрав в меню пункт Выполнить;
2) в ответ на приглашение «Введите число А» набрать 23;
3) в ответ на приглашение «Введите число В» набрать 17,
4) если программа работает правильно, то в результате будет выведено –
8. Самостоятельно протестируйте программу с другими числовыми данными:
А=2; В= -12;
Задание 2
Измените исходную программу, чтобы она находила частное двух чисел.
Сохраните программу под другим именем.
Линейные программы. Решение задач. Ч.1.
Задание 3
Измените исходную программу, чтобы она находила сумму четырех чисел.
Сохраните программу под другим именем.
Задание 4
Наберите текст программы, описывающей решение примера:
Выполните компиляцию программы и тестирование.
Для этого:
1. В окне текстового редактора программы PascalABC наберите текст программы:
Var А, В, D : real;
Writеln (‘Задача 2’);
Writеln (‘Введите А’);
Writeln (‘Введите В’);
- Проверить программу на ошибки — нажать F9.
- Сохранить программу, выбрав в меню File/Save as.
- Протестировать программу:
1) запустить программу, выбрав в меню пункт Run/Run. ;
2) в ответ на приглашение «Введите число А» набрать 2;
3) в ответ на приглашение «Введите число В» набрать 2;
4) если программа работает правильно, то в результате будет выведено –
- Для возврата в программу нажмите клавишу Enter.
- Введите ограничение для вещественного числа. Для этого внесите изменения в текст программы Writeln (‘D = ‘, D:4:2);
7. Самостоятельно протестируйте программу с другими числовыми данными:
А=2; В=1,5;
Задание 5
Создайте и протестируйте программу вычисления переменной D=(a*b)+2
Контрольные вопросы:
- Как открыть новое окно программы?
- Как сохранить новый текст программы?
- Как проверить текст программы на ошибки?
- Что такое компиляция программы?
- Как «запустить» программу?
- Назовите оператор вывода в Turbo Pascal.
- Назовите оператор ввода в Turbo Pascal.
- Какие арифметические действия применимы к переменным вещественного типа?
- Какой тип данных применен в этой практической работе.
*ссылка для скачивания редактора: http://pascalabc.net/ssyilki-dlya-skachivaniya
**при отсутствии возможности использовать ПО, допускается оформление заданий в тетради с последующим представлением учителю.
Источник: helpiks.su
Решение нестационарной задачи теплопроводности в MATLAB
Использование модуля pde-toolbox для решения плоской нестационарной задачи теплопроводности.
Рассматривается нестационарная плоская задача теплопроводности. Пластина со сторонами (a = 0.4) м, (b+d=0.051) м нагревается в тонком слое толщиной (d=1) мм (на верхней грани) за счёт внутренних источников тепла. В слое в одну секунду генерируется 8 кДж тепла. Со всех граней пластины излучается тепло рассеивается по закону Стефана-Больцмана. Степень черноты материала пластины — 0.8.
Температура точек пластины (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
Идентификаторы ребер (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 ‘Сетка’
Расчёт
Запускаем расчёт на интервале от 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]);
График изменения температуры на верхней и нижней грани пластины.
Ниже на видео показана динамика изменения температуры. Стрелками показаны направления тепловых потоков. Показана температура на верхней грани, нижней грани и разница температур. Для построения видео использовался следующий код
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])
В результате получила вот такой график зависимости Х от рассчитанного значения функции в узлах сетки Мне не понятно насколько неверно мое решение.
Возникли проблемы с поиском частного решения, 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