- •А.В. Кравцов, н.В. Чеканцев, е.С. Шарова, м.С. Гынгазова, ю.А. Смышляева, э.Д. Иванчина Проблемно-ориентированная информатика химико-технологических процессов
- •Введение
- •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. Решение функциональных и вычислительных задач химической технологии
4.1. Обработка экспериментальных данных
4.1.1 Интерполяционный многочлен Лагранжа
Интерполяционная формула Лагранжа используется для произвольно заданных узлов интерполирования.
Пусть в точках x0, x1, …, xn таких, что a x0<…< xnb, известны значения функции y=f(x), т.е. на отрезке [a, b] задана табличная (сеточная) функция
x |
x0 |
x1 |
… |
xn |
y |
y0 |
y1 |
… |
yn |
Требуется построить некоторую функцию Pn(x) степени не выше n, имеющую в заданных узлах x0, x1, …, xn те же значения, что и функция f(x). С этой целью представим Pn(x) в следующем виде:
где Сi – некоторая константа, которая определяется из следующего уравнения:
.
В этом случае для многочлена:
Подставляя выражение для константы Сi в исходную зависимость полинома для каждого i=0,1,2,…, n следующее значение многочлена:
,
Подставляя значение Pn(x) для всех точек от 0 до n, получим следующее выражение для многочлена Лагранжа:
Пример 4.1.1. Построить интерполяционный полином для функции y=sin x.
Возьмем
сетку, состоящую из трех точек: x0=0;
x1=
;
x2=
,
выпишем соответствующие этим аргументам
значения функции sin
x:
y0=0;
y1=
;
y2=1.
Построим по этой таблице интерполяционный полином второй степени, использую формулу Лагранжа:
.
Проверяем,
что в точках сетки этот полином принимает
нужные значения. Оценим погрешность
интерполирования, сравнив значения
sin
x
и интерполяционного полинома в точке
х=
.
.
Значительная
величина погрешности определяется
тем, что на отрезке длиной
мы взяли грубую сетку, состоящую всего
из трех точек. Чтобы улучшить точность
интерполирования, нужно либо увеличить
число точек n
и повысить соответственно степень
интерполяционного полинома Pn(x),
либо уменьшить длину исходного отрезка.
4.1.2. Интерполяционный многочлен Ньютона
Предположим дополнительно, что рассматриваемые значения аргумента являются равноотстоящими, т. е. образуют арифметическую прогрессию.
В этом случае шаг таблицы h = хi+1 - xi (i = 0, 1, 2, ..., n) = const является величиной постоянной. Для таких таблиц построение интерполяционных формул (как впрочем, и вычисление по этим формулам) заметно упрощается.
Прежде чем перейти к рассмотрению этого вопроса, познакомимся с понятием конечных разностей.
Пусть функция задана таблицей с постоянным шагом. Разности между значениями функции в соседних узлах интерполяции называют конечными разностями первого порядка:
Δ yi = yi+1 - yi (i = 0, 1, 2, ...).
Из конечных разностей первого порядка образуются конечные разности второго порядка:
Δ 2yi = Δ yi+1 - Δ yi (i = 0, 1, 2, ...)
Для записи конечных разностей используются горизонтальные и диагональные таблицы.
Горизонтальная таблица
x |
y |
Δy |
Δ2y |
Δ3y |
x0 |
y0 |
Δy0 |
Δ2 y0 |
Δ3y0 |
x1 |
y1 |
Δy1 |
Δ2 y1 |
|
x2 |
y2 |
Δy2 |
|
|
x3 |
y3 |
|
|
|
Диагональная таблица
x |
y |
Δy |
Δ2y |
Δ3y |
x0 |
y0 |
Δy0 |
Δ2 y0 |
Δ3y0 |
x1 |
y1 |
|||
Δy1 |
||||
x2 |
y2 |
Δ2 y1 |
||
Δy2 |
||||
x3 |
y3 |
Формула Ньютона «вперед»:
где n – порядок полинома, h – шаг (расстояние между узлами).
Первый порядок:
x1=x0-h |
Δy= y1 – y0 |
x2=x0-2h |
Δy1= y2 – y1 |
xn=x0-n×h |
Δyn-1= yn – yn-1 |
Второй порядок:
Δ2y= Δy1 – Δy0 |
Δ2y1= Δy2 – Δy1 |
Δ2yn-2= Δyn-1 – Δyn-2 |
Формула Ньютона «назад»:
Программа для интерполирования «вперед»: |
Программа для интерполирования «назад»: |
program newton; const n=3; var d:array[0..n,0..n] of real; x,y:array[0..n] of real; p:array[1..n] of real; f1,f2:text; h,x1,s1:real;i,j:integer; begin assign(f1,'n1.pas');assign(f2,'nnn.pas'); reset(f1);rewrite(f2);x1:=1.5;h:=1; for i:=0 to n do read(f1,x[i],y[i]); s1:=y[0]; for i:=0 to n do d[i,0]:=y[i]; for j:=1 to n do for i:=0 to n-j do d[i,j]:=d[i+1,j-1]-d[i,j-1]; for i:=1 to n do begin p[i]:=1;for j:=1 to i do p[i]:=p[i]*(x1-x[j-1])/(h*j); s1:=s1+d[0,i]*p[i]; end; write(f2,s1:7:4);close(f2);end. |
program newton; const n=3; var d:array[0..n,0..n] of real; x,y:array[0..n] of real; p:array[1..n] of real; f1,f2:text; h,x1,s1:real;i,j:integer; begin assign(f1,'n1.pas');assign(f2,'nn3.pas'); reset(f1);rewrite(f2);x1:=1.5;h:=1; for i:=0 to n do read(f1,x[i],y[i]);s1:=y[n]; for i:=0 to n do d[i,0]:=y[i]; for j:=1 to n do for i:=0 to n-j do d[i,j]:=d[i+1,j-1]-d[i,j-1]; for i:=1 to n do begin p[i]:=1;for j:=1 to i do p[i]:=p[i]*(x1-x[n-j+1])/(h*j); s1:=s1+d[n-i,i]*p[i]; end; write(f2,s1:5:2);close(f2);end. |
