ИНФОРМАТИКА технологических процессов Лекция 7 Обработка экспериментальных данных. Интерполяционный полином Лагранжа. Преподаватель: профессор, д.т.н. Иванчина Эмилия Дмитриевна Кафедра ХТТ и ХК Институт природных ресурсов 1 План 1. Постановка задачи интерполяции 2. Интерполяционный полином Лагранжа 3. Решение задач интерполирования 2 1.Постановка задачи интерполяции При исследовании технологических процессов возникает необходимость в обработке данных, полученных в эксперименте. Пусть в химическом реакторе протекает процесс превращения веществ. Пусть дана некоторая функция y=f(x)-функция выхода продуктов реакции от концентрации исходного компонента. Любому значению х (концентрации исходного компонента) ставится в соответствие значение y (выход продукта реакции).Функция f(x) является результатом сложного хроматографического анализа или f(x) измеряется в дорогостоящем эксперименте. 3 В этом случае вычисляют таблицу значений выходного параметра от аргумента и по некоторым точкам строят функцию y=f(x) , где х – концентрация исходного компонента, y – концентрация продукта реакции. Полином Pm(x) при этом называется аппроксимирующим. Для практики важен случай аппроксимации функции полиномом степени m Pm (x)=a0 + a1x + a2x2 +. . . + amxm Коэффициенты a0, a1, ... , am должны подбираться так, чтобы отклонение полинома от данной функции было наименьшим, а следовательно, задача о приближении функции состоит в определении a0, a1, ... , am полинома. 4 2. Интерполяционный многочлен Лагранжа Пусть на отрезке [x0, xn] заданы n+1 точки и имеется таблица экспериментальных значений функции y = f(x) : y0, y1, y2.....yn, y0=f(x0); y1=f(x1); ...; yn=f(xn). Требуется найти значения этой функции для промежуточных значений аргумента при условии Pm(x0)=f(x0)=y0, .......................... .......................... Pm(xi)=f(xi)=yi , где i = 0, 1, 2, ... , n – узлы интерполяции. 5 x f(x) x0 x1 . .. xn f(x0) f(x1) . . .f(xn) Такую задачу называют задачей интерполирования. Точки xi называются узлами интерполяции, функция f(x) – интерполируемой функцией, многочлен Pm(x) – интерполяционным многочленом. 6 Узлы в общем случае не являются равноотстоящими (шаг таблицы неравномерный). Построим интерполяционный многочлен на отрезке [x0, xn]. Запишем искомый многочлен в виде Pm(x)=a0 + a1x + a2x2 +. . . + amxm 7 Геометрически задача интерполирования сводится к построению кривой через заданные точки x. Аналитически задача сводится к решению системы уравнений для определения неизвестных коэффициентов. Для определения коэффициентов полинома (многочлена ) необходимо располагать n+1 узловой точкой. Чтобы система уравнений имела единственное решение, необходимо, чтобы количество неизвестных коэффициентов полинома (аj) – m+1 – равнялось количеству уравнений n+1 или m=n. Пусть в n+1-й точках x0, x1,..., xn определены значения y0, y1,..., yn. Требуется построить многочлен Pn(x), принимающий в узловых точках заданные значения yi, т. е. такой, что Pn(xi) = yi, i= 0, 1, ..., n. 8 n . Pn ( x) Yi Li ( x) i 0 n x x0 ...x xi1 x xi1 ...x xn x xk Li ( x) = xi x0 ...xi xi1 xi xi1 ...xi xn k 0 xi xk k i где Li(x) – множитель Лагранжа, x – текущая точка для интерполирования 9 n x xk Pn x yi i 0 kk i0 xi xk x x1 x x2 ...x xn Pn ( x) Y0 x0 x1 x0 x2 ...x0 xn n . x x0 x x2 ...x xn Y1 ... x1 x0 x1 x2 ...x1 xn x x0 x x1 x x2 ...x xn 1 ... Yn . xn x0 xn x1 xn x2 ...xn xn 1 10 3. Решение задач интерполирования Пример 1. Дана таблица значений теплоёмкости вещества в зависимости от температуры Cp =f(T). x (T) 300 400 500 600 y (Cp) 52.89 65.61 78.07 99.24 Вычислить значение теплоёмкости в точке Т=450 К. 11 450 400 450 500 450 600 f (450 ) 52.89 300 400 300 500 300 600 450 300 450 500 450 600 65.61 400 300 400 500 400 600 450 300 450 400 450 600 78.07 500 300 500 400 500 600 450 300 450 400 450 500 99.24 . 600 300 600 400 600 500 . С p (450) 71.31 Дж/моль К 12 n x xj y yi x x j 1 i 1 i j ji n CONST n=5; x:ARRAY[1..n] OF real=(1,3,5,7,9); y:ARRAY[1..n] OF real=(1.33,2.57,3.44,4.74,5.11); VAR x0, S, P:real; 13 i, j:integer; BEGIN S:=0; READ(X0); FOR i:=1 TO n DO BEGIN P:=1; FOR j:=1 TO n DO IF i< >j THEN P:=P(x0-x[j])/(x[i]-x[j]); S:=S+y[i]P END; writeln(S:12) END. 14 Пример 2. Составить программу для расчета функции по формуле Лагранжа в т. x=1.5, Исходные данные x y 1 2 3 4 0 3 5 7 Program Lagr; Var X,Y: array[0..3] of real; S,P,X1 : real; i,j: integer; F1,f2 : text; BEGIN assign (f1,’1.pas’); assign(f2,’2.pas’); Reset(f1); Rewrite(f2); READL(F1,X1); for i:=0 to 3 do read(f1,x[i],y[i]); 15 S:=0; FOR i:=1 TO 3 DO BEGIN P:=1; FOR j:=1 TO n DO IF i< >j THEN P:=P(x0-x[j])/(x[i]-x[j]); S:=S+y[i]P END; Writeln (f2,S:4:2); close(f2); END. 16 Файл 1. pas Файл 2.pas 1.5 1 0 2 3 3 5 4 7 2.3 17 Пример 3. Объем 1 кг метана зависит от давления следующим образом: P, KПа V, м3 0.93 1.47 Файл 1.pas 0.75 0.36 0.23 1.89 3.94 V(0.83) - ? 4.2 Файл 2.pas 0.89 0.93 1.47 0.75 1.89 0.36 3.94 0.23 4.2 1.67 18