Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000553.doc
Скачиваний:
56
Добавлен:
30.04.2022
Размер:
18.64 Mб
Скачать

1.6.1. Линейная интерполяция

Пусть функция y(x) задана парами значений аргумента и функции. Для известного значения аргумента xi из интервала [xн, xк] надо найти значение функции. Любую криволинейную функцию можно разбить на малые интервалы такие, что функцию на этом интервале можно заменить прямой.

Рис. 8. Иллюстрация линейной интерполяции функции на отрезке [xн, xк]

Шаг таблицы по значению функции составит разность (yк-yн).

Шаг таблицы по аргументу выражается разностью аргументов (xк-xн).

Приращение функции в промежуточном значении от начального составит разность (yi-yн), а соответствующее приращение аргумента (xi-xн).

Запишем соотношение отрезков:

. (1.2)

Из уравнения (1.2) выразим искомую величину:

. (1.3)

Ограничения на использование метода линейной интерполяции:

1. При линейной интерполяции принимается пропорциональное изменение аргумента и функции.

2. Методами математического анализа доказывается, что таблица с постоянным шагом допускает линейную интерполяцию, если соседние табличные разности отличаются друг от друга не более чем на четыре единицы низшего порядка табличного значения функции.

3. Обычно при составлении таблиц стараются удовлетворить требованиям допустимости линейной интерполяции.

Пример

Дана табл. 1, из которой по среднему значению расхода (qmid.s) необходимо определить коэффициент общей неравномерности (Kgen max). Для дальнейших вычислений определяется расчётный расход произведением среднего расхода и найденного коэффициента общей неравномерности.

Таблица 1

Значения Кgen.max в зависимости от среднего расхода qmid.s (СНиП 2.04.03-85)

qmid.s, л/с

5

10

20

50

100

300

500

1000

5000

и более

Кgen.max

2,5

2,1

1,9

1,7

1,6

1,55

1,5

1,47

1,44

Подпрограмма линейной интерполяции для параметров табл. 1 на языке программирования Паскаль имеет следующий вид

program qmax;

var qma: real; qcp: real;

function kof(a: real) : real;

const q: array[1..9] of integer= (5,10,20,50,100,300,500,1000,5000);

ka: array[1..9] of real=(2.5,2.1,1.9,1.7,1.6,1.55,1.5,1.47,1.44);

var i: integer;

begin (*начало функции*)

if a<=q[1] then kof:= ka[1];

if a> q[9] then kof:= ka[9];

for i:=1 to 8 do

if (a> q[i]) and (a<=q[i+1]) then kof:= ka[i]+((ka[i+1]- ka[i])*(a- q[i]))/( q[i+1] - q[i]);

end; (* конец функции *)

begin (* основной программы*)

writeln(‘ введите средний расход’)

readln(qcp); qma:= qcp* kof(qcp); writeln(‘qmax=’ , qma:7:3)

end.

Если применить линейную интерполяцию нельзя в силу известного ограничения, то строят приближение функции, заданной таблично с помощью численных методов.

Интерполяция с помощью численных методов требуется в следующих случаях:

1) когда значения функции определяются с помощью эксперимента;

2) когда функция задана аналитической формулой, но она достаточно сложна, т.к. для вычисления значения функции в точке х требуется большой объём вычислений. Тогда пользуясь сложной формулой, проводят конечное число вычислений в точках х: х0, х1, х2,..., хn и получают числа f0), f1), f2),..., fn) – значения функции в точках х. Затем по найденным значениям fi) для i=0,1, …, n строят более простую функцию (х), приближённую к функции f, и для остальных значений х вычисляют уже не значения f(х), а значения функции (х). Тем самым упрощают решение, ускоряя получение результата;

3) при машинном счёте по таблице вести расчёты неудобно, поэтому составляют функцию – интерполяционный многочлен (полином).