- •А.В. Кравцов, н.В. Чеканцев, е.С. Шарова, м.С. Гынгазова, ю.А. Смышляева, э.Д. Иванчина Проблемно-ориентированная информатика химико-технологических процессов
- •Введение
- •1. Общая характеристика языков программирования
- •2. Основы программирования на языке turbo pascal
- •2.1. Оператор присваивания
- •2.2. Программирование линейных алгоритмов
- •2.3. Программирование разветвляющихся алгоритмов. Условный оператор
- •2.4. Оператор варианта
- •2.5. Программирование циклических алгоритмов
- •2.6. Одномерные массивы
- •2.7. Матрицы
- •2.8. Файлы
- •3. Технология программирования и модули
- •3.1. Подпрограммы
- •3.2. Использование стандартных модулей
- •3.2.1. Модуль Сrt. Работа с экраном в текстовом режиме
- •3.2.2. Модуль Graph . Работа с экраном в графическом режиме
- •3.2.3. Закрашенные области
- •3.2.4. Вывод текстовой информации
- •4. Решение функциональных и вычислительных задач химической технологии
- •4.1. Обработка экспериментальных данных
- •4.1.1 Интерполяционный многочлен Лагранжа
- •4.1.2. Интерполяционный многочлен Ньютона
- •4.2. Итерационные методы решения нелинейных уравнений
- •4.2.1. Метод деления отрезка пополам
- •4.2.2. Метод простых итераций
- •4.2.3. Метод Ньютона (метод касательных)
- •4.2.4. Примеры составления программ
- •4.3. Приближенное решение обыкновенных дифференциальных уравнений первого порядка
- •4.3.1. Метод Эйлера
- •4.3.2. Метод Рунге-Кутта
- •5. Основы работы с windows
- •Управление манипулятором мышь
- •Курсор ввода
- •Рабочий стол
- •Окно программы мой компьютер
- •Корзина
- •Панель задач
- •Файловая система и структура
- •5.1. Основы работы с Microsoft Word
- •5.1.1. Запуск программы Word
- •5.1.2. Элементы окна редактора Word
- •5.1.3. Набор текста
- •5.1.4. Сохранение и загрузка документов
- •5.1.5 Основы форматирования текста
- •5.1.6. Создание таблиц
- •5.1.7. Формульный редактор
- •5.2. Построение графиков с использованием Microsoft Excel
- •Формулы для вычисления линий тренда
- •6. Основы работы в среде delphi
- •6.1. Знакомство со средой Delphi
- •6.1.1. Главное окно
- •Пиктографические кнопки
- •6.1.2. Окно формы
- •6.1.3. Окно Инспектора Объектов
- •6.1.4. Окно кода программы
- •6.2. Основы визуального программирования в среде Delphi
- •6.2.1. Пустая форма и ее модификация
- •6.2.1.1. Настройка Delphi
- •6.2.1.2. Имена в Delphi
- •6.2.1.3. Изменение свойств формы
- •6.2.1.4. Размещение нового компонента
- •6.2.2. Реакция на события
- •6.2.2.1. Обработчик события OnClick
- •6.2.2.2. Динамическое изменение свойств компонента
- •6.3. Использование компонентов общего назначения
- •6.3.1. TFrame – рама и шаблоны компонентов
- •6.3.2. TMainMenu - главное меню формы (программы)
- •6.3.3. TPopupMenu - вспомогательное (локальное) меню
- •6.3.4. TLabel - метка для отображения текста
- •6.3.5. TEdit - ввод и отображение строки
- •6.3.6. TMemo - ввод и отображение текста
- •6.3.7. TButton – кнопка
- •6.3.8. TCheckBox - независимый переключатель
- •6.3.9. TRadioButton - зависимые переключатели
- •6.3.10. TListBox - список выбора
- •6.3.11. TComboBox – раскрывающийся список выбора
- •6.3.12. TScrollBar - управление значением величины
- •6.3.13. TGroupBox - панель группирования
- •6.3.14. TRadioGroup - группа зависимых переключателей
- •6.3.15. TPanel – панель
- •6.3.16. TActionList - механизм действий
- •7. Базы данных и базы знаний. Сеть интернет.
- •7.1. Системы сбора, хранения и обработки информации о протекании промышленного процесса
- •7.1.1 Общая характеристика систем управления базами данных
- •7.1.2 Иерархические субд
- •7.1.3 Сетевые базы данных
- •7.1.4 Реляционные базы данных
- •7.1.5 Среда быстрой разработки приложений Delphi
- •7.1.6 Язык sql как стандартный язык реляционных бд
- •7.1.7 Базы данных на нефтеперерабатывающих заводах. Единая тематическая витрина данных на ооо «по «Киришинефтеоргсинтез»
- •7.1.8 Базы знаний
- •7.2. Сеть интернет
- •7.2.1. Что такое Интернет
- •7.2.2. История возникновения Интернет
- •7.2.3 Интернет - компьютерные сети и сетевые протоколы. Семейство протоколов tcp/ip
- •7.2.4 Службы (сервисы) Интернет и архитектура клиент-сервер
- •7.2.5 Интернет в цифрах
- •8.1. Анализ и задание требований к безопасности
- •8. Средства защиты информации
- •8.2. Безопасность в прикладных системах
- •8.3 Проверка достоверности входных данных.
- •8.4. Проверка достоверности внутренней обработки данных
- •8.5. Аутентификация сообщений
- •8.6. Защита файлов прикладных систем
- •8.7. Контроль рабочего программного обеспечения
- •8.8. Защита системных тестовых данных
- •8.9. Безопасность в среде разработки и рабочей среде
- •8.10. Процедуры управления процессом внесения изменений
- •8.11. Технический анализ изменений, вносимых в операционную систему
- •8.12. Ограничения на внесение изменений в пакеты программ
- •Литература
- •Оглавление
- •Учебное издание
- •Проблемно-ориентированная информатика химико-технологических процессов
4.3.2. Метод Рунге-Кутта
Дальнейшее улучшение точности решения ОДУ первого порядка возможно за счет увеличения точности приближенного вычисления интеграла в выражении.
Воспользовавшись формулой Симпсона, можно получить еще более точную формулу для решения ОДУ первого порядка – широко используемого в вычислительной практике метода Рунге-Кутта.
В формуле Симпсона для приближенного вычисления определенного интеграла используются значения подинтегрального выражения в трех точках. В интеграле их всего две, поэтому введем дополнительную точку в середине отрезка [xi+1 xi].
,
тогда можно переписать так:
Полученное выражение является неявным, так как в правой части содержатся еще не определенные значения функции yi+h/2 и yi+1. Чтобы воспользоваться этой формулой, надо использовать некоторое приближение для вычисления этих значений
При использовании различных методов приближенного вычисления этих величин, получаются выражения для методов Рунге-Кутта различного порядка точности.
Алгоритм Рунге-Кутта третьего порядка (погрешность порядка h3):
где
Алгоритм Рунге-Кутта четвертого порядка (погрешность порядка h4):
где
Пример 4.3.2 Рассчитать кинетику гомогенной химической реакции, используя метод Рунге-Кутта.
VAR ca, cb, cc, cd, ca0, cb0, cc0, cd0, k1, k2, k3, k4, t0, tk, h:real;
{Ca, Cb, Cc, Cd - Концентрации веществ до реакции }
{k1, k2, k3, k4 - Скорости для каждой из реакций}
{t0, tk - Начальное и конечное время реагирования}
{h - шаг}
x, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11, q12, q13, q14, q15, q16:real;
{Qn - Коэффициенты Рунге-Кутты}
f1, f2:text;
BEGIN
assign(f1,'runge.in');{Файл с данными}
assign(f2,'runge.out'); {Файл с результатами }
reset(f1); read(f1,ca0,cb0,cc0,cd0,k1,k2,k3,k4,t0,tk,h);
close(f1);
cc:=cc0;ca:=ca0;cb:=cb0;cd:=cd0; x:=t0;
rewrite(f2);
Writeln(f2,' Метод Рунге - Кутта');
writeln(f2,' Время Концентрация ');
writeln(f2,'A B С D ');
REPEAT
q1:=h*((-1)*(k1+k4)*ca0+(k3*cd0));
q2:=h*((-1)*(k1+k4)*(ca0+q1/2)+(k3*(cd0+q1/2)));
q3:=h*((-1)*(k1+k4)*(ca0+q2/2)+(k3*(cd0+q2/2)));
q4:=h*((-1)*(k1+k4)*(ca0+q3)+(k3*(cd0+q3)));
q5:=h*((k1*ca0)-(k2*cb0));
q6:=h*((k1*(ca0+q5/2))-k2*(cb0+q5/2)));
q7:=h*((k1*(ca0+q6/2))-(k2*(cb0+q6/2)));
q8:=h*((k1*(ca0+q7))-(k2*(cb0+q7)));
q9:=h*(k2*cb0);
q10:=h*(k2*(cb0+q9/2));
q11:=h*(k2*(cb0+q10/2));
q12:=h*(k2*(cb0+q10));
q13:=h*((k4*ca0)-(k3*cb0));
q14:=h*((k4*(ca0+q13/2))-(k3*(cb0+q13/2)));
q15:=h*((k4*(ca0+q14/2))-(k3*(cb0+q14/2)));
q16:=h*((k4*(ca0+q15))-(k3*(cb0+q15)));
ca:=ca0+((q1+q2+q3+q4)/6);
cb:=cb0+((q5+q6+q7+q8)/6);
cc:=cc0+((q9+q10+q11+q12)/6);
cd:=cd0+((q13+q14+q15+q16)/6);
writeln(f2,' ',x:8:4,' ',ca:8:4,' ',cb:8:4,' ',cc:8:4,' ',cd:8:4,' ');
ca0:=ca; cb0:=cb; cc0:=cc; cd0:=cd;
x:=x+h;
UNTIL x>=tk;
writeln(f2,' ',x:8:4,' ',ca:8:4,' ',cb:8:4,' ',cc:8:4,' ',cd:8:4,' ');
close(f2);
END.
