Программы для интерполяции функции

При обработке экспериментальных данных часто возникает необходимость в определении значения функции внутри значений исследуемых аргументов, но при несовпадении нужного аргумента с имеющимися. В математике данная процедура называется интерполяцией.
Существует много различных алгоритмов интерполяции. В настоящей статье нами рассматриваются два наиболее старых и известных метода: Интерполяция по Лагранжу и Ньютону.
Интерполяция по Лагранжу.
Сущность метода состоит в следующем. Имеется N пар значений аргумента и функции, при этом значения аргументов могут быть как равноотстоящие, так и не равноотстоящие. По имеющимся значениям строится алгебраический полином, степень которого на 1 меньше количества пар исходных заданных значений аргументов и функции. Т.е. при, например, 10 пар, строится полином девятой степени.

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

Интерполяция. Тема

Ниже приведены программы, реализующие данный алгоритм на

Далее приводится вариант программы на языке С (компилятор BORLAND C++ 3.1)

// LAGR.CPP //***************************************************************** // Программа интерполирования табличной функции по методу Лагранжа. // Цикл ввода значения аргумента, для которого ищется значение // функции — бесконечный. Выход по вводу значения вне введенных X. //***************************************************************** // Вводятся последовательно: // — кол-во точек интерполяции // — затем пары значений (абсцисса и ордината табличного значения) // Внимание. Абсциссы не обязательно равноотстоящие. // Контрольная точка: при вводе // — 4 // — 0 -1 1 -3 2 3 6 1187 // — 4 // Получаю 255.0 #include #include int n; // количество исходных точек интерполяции float mx[20]; // массив исходных значений абсцисс float my[20]; // аналогично для ординат исходной табличной функции float x; // значение абсциссы, для которой ищется значение табличной функции int i,j; // переменные цикла float s; // сюда буду накапливать искомое интерполяционное значение float q; // сюда буду накапливать очередной коэффициент Лагранжа void main(void) < // 0 clrscr(); //начальная очистка экрана puts(«Введи количество исходных интерполируемых точек:»); scanf(«%d», puts(«Введи попарно сами исходные абсциссы (от меньших к большим) и ординаты:»); // Ввод самих исходных значений for(i=0; imx[n-1]) break; // Собственно получение искомого значения for(s=0, j=0; j > // -0

Далее приводится текст программы на языке PASCAL. Проверено на компиляторах
PASCALABC 3.1 и PASCALABC.NET 2.2.

// LAGR.PAS //***************************************************************** // Программа интерполирования табличной функции по методу Лагранжа. // Цикл ввода значения аргумента, для которого ищется значение // функции — бесконечный. Выход по вводу значения вне введенных X. //***************************************************************** // Вводятся последовательно: // — кол-во точек интерполяции // — затем пары значений (абсцисса и ордината табличного значения) // Внимание. Абсциссы не обязательно равноотстоящие. // Контрольная точка: при вводе // — 4 // — 0 -1 1 -3 2 3 6 1187 // — 4 // Получаю 255.0 var n:integer; // количество исходных точек интерполяции mx:array [0..19] of real; // массив исходных значений абсцисс my:array [0..19] of real; // аналогично для ординат исходной табличной функции x:real; // значение абсциссы, для которой ищется значение табличной функции i,j:integer; // переменные цикла s:real; // сюда буду накапливать искомое интерполяционное значение q:real; // сюда буду накапливать очередной коэффициент Лагранжа begin // 0 // clrscr(); //начальная очистка экрана writeln(‘Введи количество исходных интерполируемых точек:’); readln(n); writeln(‘Введи попарно сами исходные абсциссы (от меньших к большим) и ординаты:’); // Ввод самих исходных значений for i:=0 to n-1 do read(mx[i],my[i]); // бесконечный внешний цикл while (1>0) do begin write(‘Введи значение абсциссы, для которой надо найти значение ординаты:’); readln(x); // Выход из цикла при введении значения вне исходного интервала if ((xmx[n-1])) then break; // Собственно получение искомого значения s:=0; for j:=0 to n-1 do begin q:=1; for i:=0 to n-1 do if (i<>j) then q:=q*(x-mx[i])/(mx[j]-mx[i]); s:=s+q*my[j]; end; writeln(‘Полученное значение равно ‘,s); end; end. // -0

Далее приводится текс программы на языке QBASIC в компиляторе

Лекция 157: Тестирование программы интерполяции на компьютере


MS-DOS QBASIC 1.0.

‘ LAGR.BAS ‘***************************************************************** ‘ Программа интерполирования табличной функции по методу Лагранжа. ‘ Цикл ввода значения аргумента, для которого ищется значение ‘ функции — бесконечный. Выход по вводу значения вне введенных X. ‘***************************************************************** ‘ Вводятся последовательно: ‘ — кол-во точек интерполяции ‘ — затем пары значений (абсцисса и ордината табличного значения) ‘ Внимание. Абсциссы не обязательно равноотстоящие. ‘ При вводе: ‘ 4 ‘ 0, -1 ‘ 1, -3 ‘ 2, 3 ‘ 6, 1187 ‘ 4 ‘ Получаю 255.0 DIM n AS INTEGER ‘ количество исходных точек интерполяции INPUT «Введите количество исходных пар точек «, n DIM mx(0 TO n — 1) AS SINGLE’ массив исходных значений абсцисс DIM my(0 TO n — 1) AS SINGLE’ аналогично для ординат исходной табличной функции DIM x AS SINGLE ‘ значение абсциссы, для которой ищется значение табличной функции DIM i AS INTEGER ‘ переменные цикла DIM j AS INTEGER ‘ переменные цикла DIM s AS SINGLE ‘ сюда буду накапливать искомое интерполяционное значение DIM q AS SINGLE ‘ сюда буду накапливать очередной коэффициент Лагранжа CLS ‘начальная очистка экрана PRINT «Введи попарно сами исходные абсциссы (от меньших к большим) и ординаты: «; ‘ Ввод самих исходных значений FOR i = 0 TO n — 1 INPUT mx(i), my(i) NEXT i ‘ бесконечный внешний цикл DO WHILE (1 > 0) INPUT «Введи значение абсциссы, для которой надо найти значение ординаты: «, x ‘ Выход из цикла при введении значения вне исходного интервала IF ((x < mx(0)) OR (x >mx(n — 1))) THEN EXIT DO ‘ Собственно получение искомого значения s = 0 FOR j = 0 TO n — 1 q = 1 FOR i = 0 TO n — 1 IF (i <> j) THEN q = q * (x — mx(i)) / (mx(j) — mx(i)) NEXT i s = s + q * my(j) NEXT j PRINT «Полученное значение равно «, s LOOP END

Читайте также:
Как написать программу в тетради

Ниже приводится текст этой же программы составленный для интерпретатора Python 3.4.3.

# LAGR.PY #***************************************************************** # Программа интерполирования табличной функции по методу Лагранжа. # Цикл ввода значения аргумента, для которого ищется значение # функции — бесконечный. Выход по вводу значения вне введенных X. #***************************************************************** # Вводятся последовательно: # — кол-во точек интерполяции # — затем пары значений (абсцисса и ордината табличного значения) # Внимание. Абсциссы не обязательно равноотстоящие. # При вводе: # 4 # 0, -1 # 1, -3 # 2, 3 # 6, 1187 # 4 # Получаю 255.0 #import pdb; pdb.set_trace() n= int(input(‘Введи количество исходных точек ‘)) mx = [] # объявляю пустой список (в данном случае одномерный массив) my = [] # объявляю пустой список (в данном случае одномерный массив) print(‘Введи попарно сами исходные абсциссы (от меньших к большим) и ординаты: ‘) # Заполнение исходных массивов for i in range(n): (xm,ym)= list(map(float, input().split())) mx.append(xm) my.append(ym) # бесконечный внешний цикл while(1>0): x=float(input(‘Введи значение абсциссы, для которой надо найти значение ординаты: ‘)) # Выход из цикла при введении значения вне исходного интервала if ((x < mx[0]) or (x >mx[n — 1])): break # Собственно получение искомого значения s = 0 for j in range(n): q = 1 for i in range(n): if (i!=j): q = q * (x — mx[i]) / (mx[j] — mx[i]) s = s + q * my[j] print(‘Полученное значение равно ‘, s) input() # команда ДЕРЖИТ экран

Интерполяция по Ньютону

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

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

Далее приводится вариант программы на языке С (компилятор BORLAND C++ 3.1)

// NEWT.CPP //******************************************************* // Программа интерполяции по НЬЮТОНУ. // Реализован алгоритм равноотстоящих аргументов. // При работе с уже имеющимися в программе данными // надо ввести 7 — кол-во исходных пар точек // 2.05 — абсцисса, для которой ищу // Программа выдает 0.04877852. //******************************************************* #include #include int main(void) < float x,y,s,q; int i,j,n; float mx[20]; float my[20]; float dy[20][20]; printf(«Введите количество исходных пар точек «); scanf(«%d», //PRINT «Введи исходные пары X и Y через запятую в строку » //FOR i = 0 TO n-1 // INPUT mx[i], my[i] //NEXT mx[0]=2; mx[1]=2.1; mx[2]=2.2; mx[3]=2.3; mx[4]=2.4; mx[5]=2.5; mx[6]=2.6; my[0]=0.054; my[1]=0.044; my[2]=0.0355; my[3]=0.0283; my[4]=0.0224; my[5]=0.0175; my[6]=0.0136; // Перепись массива my в первый столбец массива dy. for( i=0;iprintf(«Полученное значение равно %10.8f», s); >

Далее приводится текст программы на языке PASCAL. Проверено на компиляторах
PASCALABC 3.1 и PASCALABC.NET 2.2.

// NEWT.PAS //******************************************************* // Программа интерполяции по НЬЮТОНУ. // Реализован алгоритм равноотстоящих аргументов. // При работе с уже имеющимися в программе данными // надо ввести 7 — кол-во исходных пар точек // 2.05 — абсцисса, для которой ищу // Программа выдает 0.04877852. //******************************************************* var x,y,s,q:real; i,j,n:integer; mx: array[0..20] of real; my: array[0..20] of real; dy: array[0..20,0..20] of real; begin write(‘Введите количество исходных пар точек ‘); readln(n); //PRINT «Введи исходные пары X и Y через запятую в строку » //FOR i := 0 TO n-1 // INPUT mx[i], my[i] //NEXT mx[0]:=2; mx[1]:=2.1; mx[2]:=2.2; mx[3]:=2.3; mx[4]:=2.4; mx[5]:=2.5; mx[6]:=2.6; my[0]:=0.054; my[1]:=0.044; my[2]:=0.0355; my[3]:=0.0283; my[4]:=0.0224; my[5]:=0.0175; my[6]:=0.0136; // Перепись массива my в первый столбец массива dy. FOR i:=0 TO n — 1 do dy[i, 0]:=my[i]; // Заполнение массива конечных разностей FOR j:=0 TO n — 2 do FOR i:=0 TO n — j — 2 do dy[i, j + 1]:=dy[i + 1, j] — dy[i, j]; write(‘Введи значение абсциссы, для которой надо найти значение ординаты: ‘); readln(x); // Собственно получение искомого значения s:=dy[0, 0]; q:=(x — mx[0]) / (mx[1] — mx[0]); y:=q; FOR j:=1 TO n — 2 do begin y:=y / j; s:=s + dy[0, j] * y; y:=y * (q — j); end; writeln(‘Полученное значение равно ‘, s:10:8); END.

Читайте также:
Митчелл программа по ремонту автомобилей

Далее приводится текс программы на языке QBASIC в компиляторе
MS-DOS QBASIC 1.0.

‘ NEWT.BAS ‘******************************************************* ‘ Программа интерполяции по НЬЮТОНУ. ‘ Реализован алгоритм равноотстоящих аргументов. ‘ При работе с уже имеющимися в программе данными ‘ надо ввести 7 — кол-во исходных пар точек ‘ 2.05 — абсцисса, для которой ищу ‘ Программа выдает 0.04877852. ‘******************************************************* DIM x AS SINGLE, y AS SINGLE, s AS SINGLE, q AS SINGLE DIM i AS INTEGER, j AS INTEGER INPUT «Введите количество исходных пар точек «, n DIM mx(0 TO n — 1) AS SINGLE DIM my(0 TO n — 1) AS SINGLE DIM dy(0 TO n — 1, 0 TO n — 1) AS SINGLE ‘PRINT «Введи исходные пары X и Y через запятую в строку » ‘FOR i = 0 TO n-1 ‘ INPUT mx(i), my(i) ‘NEXT mx(0) = 2!: mx(1) = 2.1: mx(2) = 2.2: mx(3) = 2.3: mx(4) = 2.4: mx(5) = 2.5: mx(6) = 2.6 my(0) = .054: my(1) = .044: my(2) = .0355: my(3) = .0283 my(4) = .0224: my(5) = .0175: my(6) = .0136 ‘ Перепись массива my в первый столбец массива dy. FOR i = 0 TO n — 1 dy(i, 0) = my(i) NEXT ‘ Заполнение массива конечных разностей FOR j = 0 TO n — 2 FOR i = 0 TO n — j — 2 dy(i, j + 1) = dy(i + 1, j) — dy(i, j) NEXT i, j INPUT «Введи значение абсциссы, для которой надо найти значение ординаты:», x ‘ Собственно получение искомого значения s = dy(0, 0) q = (x — mx(0)) / (mx(1) — mx(0)) y = q FOR j = 1 TO n — 2 y = y / j s = s + dy(0, j) * y y = y * (q — j) NEXT PRINT «Полученное значение равно «, PRINT USING «##.########»; s END

Свежие записи

  • WordPress
  • Урок программирования №5
  • Урок программирования №4
  • Урок программирования №3
  • Урок программирования №2
Июль 2023 Пн Вт Ср Чт Пт Сб Вс
« Мар
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

Источник: mfai.ru

Программы для интерполяции функции

Nickolay.info. Алгоритмы. Реализация основных методов интерполяции функции одной переменной

1. Постановка задачи

Задана исходная функция ln((x 2 -3x+2)/(x 2 +1)) и интервал [0,1]. Построить узлы интерполяции xi =a+h*i, i=0,1. N, h=(b-a)/N, (N — параметр задачи), и вычислить в этих узлах значения fi= g(xi). Вычисленные значения xi, fi занести в массивы.

Написать программу для нахождения значения F(z) в некоторой произвольной точке z принадлежит [a,b], не совпадающей ни с одним из узлов xi с помощью кусочно-постоянной интерполяции. Значение z вводить с клавиатуры. Найти погрешность метода |g(z)-F(z)|, вывести на печать. Составить таблицу поведения погрешности в зависимости от N=10, 20, 40, 80.

Написать программу для нахождения значения F(z) в некоторой произвольной точке z принадлежит [a,b] с помощью кусочно-линейной интерполяции. Значение z вводить с клавиатуры. Найти погрешность метода |g(z)-F(z)|, вывести на печать. Составить таблицу поведения погрешности в зависимости от N=10, 20, 40, 80.

Написать программу для вычисления значения полинома Лагранжа LN(z), где z — произвольная точка из отрезка [a,b], не совпадающая ни с одним из узлов xi. Попробовать различные точки z: близко к левому концу отрезка [a,b], в средней части, близко к правому концу. Найти погрешность метода |g(z)-F(z)|, вывести на печать. Составить таблицу поведения погрешности в зависимости от N=10, 20, 40, 80.

2. Описание методов интерполяции

Кусочно-постоянная интерполяция. Пусть z принадлежит [xi-1, xi], i=1,2. N. Искомая функция является постоянной и равна левому: Fi(z)=fi или правому: Fi(z)=fi значению. Условия интерполяция выполняются, однако найденная функция является разрывной.

Кусочно-линейная интерполяция. На каждом интервале функция является линейной Fi(z)=kiz+ci; значения коэффициентов находятся из выполнения условий интерполяции и непрерывности интерполирующей функции: Fi(xi-1)= fi-1, Fi(xi)= fi. Итоговая функция будет непрерывной, но производная будет разрывной в каждом узле интерполяции.

В общем случае , i=0,1,2. N.

3. Тексты программ

Формирование таблиц исходных данных (файл 10.dat, 20.dat, 40.dat, 80.dat для N=10,20,40,80 соответственно).

program Tabl; const n:array [1..4] of integer=(10,20,40,80); var h,a,b,x,y:real; i,r:integer; f1:text; name:string; function f(x:real):real; begin f:=ln( (sqr(x)-3*x+2)/(sqr(x)+1) ); end; begin writeln (‘a,b? ‘); readln (a,b); for r:=1 to 4 do begin h:=(b-a)/n[r]; str(n[r]:2,name); name:=Concat (name,’.dat’); assign (f1,name); rewrite (f1); for i:=0 to n[r] do begin x:=a+i*h; y:=f(x); writeln(f1,x,’ ‘,y); end; writeln (‘file ‘,name,’ OK for N=’,n[r]); close (f1); end; end.
program Post; const n:array [1..4] of integer=(10,20,40,80); var a,b,z,fx:real; x,y:array[0..100] of real; i,r,n1,num:integer; f1:text; name:string; function f(x:real):real; begin f:=ln( (sqr(x)-3*x+2)/(sqr(x)+1) ); end; begin writeln (‘Z? ‘); readln (z); writeln (‘n’:5,’g(z)’:15,’f(z)’:15,’|g(z)-f(z)|’:15); for r:=1 to 4 do begin str(n[r]:2,name); name:=Concat (name,’.dat’); assign (f1,name); reset (f1); i:=0; while not eof(f1) do begin readln (f1,x[i],y[i]); i:=i+1; end; close (f1); n1:=i-1; a:=x[0]; b:=x[n1]; if zb then fx:=y[n1] else begin num:=Trunc((z-a)*n1/(b-a)); fx:=y[num]; end; writeln (n1:5,fx:15:10,f(z):15:10,abs(fx-f(z)):15:10); end; end.

program Linear; const n:array [1..4] of integer=(10,20,40,80); var a,b,z,fx,a1,b1:real; x,y:array[0..100] of real; i,r,n1,num:integer; f1:text; name:string; function f(x:real):real; begin f:=ln( (sqr(x)-3*x+2)/(sqr(x)+1) ); end; begin writeln (‘Z? ‘); readln (z); writeln (‘n’:5,’g(z)’:15,’f(z)’:15,’|g(z)-f(z)|’:15); for r:=1 to 4 do begin str(n[r]:2,name); name:=Concat (name,’.dat’); assign (f1,name); reset (f1); i:=0; while not eof(f1) do begin readln (f1,x[i],y[i]); i:=i+1; end; close (f1); n1:=i-1; a:=x[0]; b:=x[n1]; if z=b then fx:=y[n1] else begin num:=Trunc((z-a)*n1/(b-a)); a1:=(y[num]-y[num+1])/(x[num]-x[num+1]); b1:=y[num]-a1*x[num]; fx:=a1*x[num]+b1; end; writeln (n1:5,fx:15:10,f(z):15:10,abs(fx-f(z)):15:10); end; end.
program Lagr; type vector=array[0..100] of real; const n:array [1..4] of integer=(10,20,40,80); var a,b,z,fx,a1,b1:real; x,y:vector; i,r,n1,num:integer; f1:text; name:string; function f(x:real):real; begin f:=ln( (sqr(x)-3*x+2)/(sqr(x)+1) ); end; function Lagrange (n:integer; var x,f:vector; x0:real):real; var i,j:integer; p,s:real; begin s:=0; for i:=0 to n do begin p:=1; for j:=0 to n do begin if i<>j then p:=p*((x0-x[j])/(x[i]-x[j])); end; s:=s+f[i]*p; end; Lagrange:=s; end; begin writeln (‘Z? ‘); readln (z); writeln (‘n’:5,’g(z)’:15,’f(z)’:15,’|g(z)-f(z)|’:15); for r:=1 to 4 do begin str(n[r]:2,name); name:=Concat (name,’.dat’); assign (f1,name); reset (f1); i:=0; while not eof(f1) do begin readln (f1,x[i],y[i]); i:=i+1; end; close (f1); n1:=i-1; a:=x[0]; b:=x[n1]; if z=b then fx:=y[n1] else begin fx:=Lagrange (n1,x,y,z); end; writeln (n1:5,fx:15:10,f(z):15:10,abs(fx-f(z)):15:10); end; end.

Читайте также:
Программа в которой работают салоны красоты
4. Результаты расчетов

Формирование файлов данных

a,b? 0 0.99 file 10.dat OK for N=10 file 20.dat OK for N=20 file 40.dat OK for N=40 file 80.dat OK for N=80

Не вводим интервал [0,1], т.к. именно у этой функции в x=1 особенность 🙂

Z? 0.47 n g(z) f(z) |g(z)-f(z)| 10 -0.1773519752 -0.4091988287 0.2318468535 20 -0.3295804736 -0.4091988287 0.0796183552 40 -0.3295804736 -0.4091988287 0.0796183552 80 -0.3694280026 -0.4091988287 0.0397708262
Z? 0.47 n g(z) f(z) |g(z)-f(z)| 10 -0.1773519752 -0.4091988287 0.2318468535 20 -0.3295804736 -0.4091988287 0.0796183552 40 -0.3295804736 -0.4091988287 0.0796183552 80 -0.3694280026 -0.4091988287 0.0397708262

Точка в левой части отрезка

Z? 0.07 n g(z) f(z) |g(z)-f(z)| 10 0.5847133934 0.5800612760 0.0046521174 20 0.5799415750 0.5800612760 0.0001197010 40 0.5800624092 0.5800612760 0.0000011332 80 -47.3439597970 0.5800612760 47.9240210730

Точка в середине отрезка

Z? 0.47 n g(z) f(z) |g(z)-f(z)| 10 -0.4090353367 -0.4091988287 0.0001634920 20 -0.4091988939 -0.4091988287 0.0000000651 40 -0.4091988287 -0.4091988287 0.0000000000 80 -0.4091988287 -0.4091988287 0.0000000000

Точка в правой части отрезка

Z? 0.92 n g(z) f(z) |g(z)-f(z)| 10 -3.1078544062 -3.0620054005 0.0458490056 20 -3.0607425377 -3.0620054005 0.0012628628 40 -3.0620056491 -3.0620054005 0.0000002486 80-109.2519895900 -3.0620054005 106.1899841900

5. Выводы

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

Скачать файлы с программами и данными из этой статьи: pas_interp.zip (5 Кб)

Источник: nickolay.info

Интерполяция и Экстраполяция онлайн (линейная интерполяция/экстраполяция)

Сервис интерполяции и экстраполяции онлайн (линейная интерполяция/экстраполяция) поможет вам вычислить значение линейной функции, имея в распоряжении f(x) в двух различных точках, а также рассчитает уравнение прямой. Данный сервис автоматически определит нужный способ расчета — вам лишь надо ввести значения в двух произвольных точках, и указать необходимую точку, в которой нужно рассчитать значение. Если установить «галку» внутри кнопки «Рассчитать», калькулятор будет рассчитывать значение автоматически при любом изменении входных данных. Пример расчета интерполяции

Интерполяция — (от латинского interpolatio изменение, переделка), в математике и статике это способ вычислить промежуточное значение функции по нескольким уже известным ее значениям. Например.: Имеется функция f(x) , известны результаты значения f(x) в точке x0 и точке x2 , интерполяця помогает найти значение f(x1) при условии что x1 принадлежит интервалу от x0 до x2 . Если x1 лежит вне интервала ( x0 , x2 ), интерполяция не поможет, для этого нужно использовать «экстраполяцию». Этот метод часто называют «линейная интерполяция», он дает 100% верный результат для уравнения прямой. Для вычесления резултата функций с двумя переменными существует «Билинейная интерполяция (Двойная интерполяция)». Также для рассчета интерполяции можно воспользоваться сервисом Интерполяция — полином Ньютона и Интерполяция — полином Лагранжа

Экстраполяция — в математике и статике это способ вычислить значение функции по нескольким уже известным ее значениям. Например.: Имеется функция f(x) , известны результаты значения f(x) в точке x1 и точке x2 , экстраполяция помогает найти значение f(x0) либо f(x3) при условии что x0 либо x3 меньше либо больше интервала x1 до x2 . Если xn лежит в интервале ( x1 , x2 ), экстраполяция не поможет, для того вам нужно использовать «интерполяцию» — для функций с одной переменной, и «двойная интерполяция» — для функций с двумя переменными.

Этот метод часто называют «линейная экстраполяция», он дает 100% верный результат для уравнения прямой.

Как для интерполяции так и для экстраполяции в основе их рассчета лежит пропорция (y1 — y0)/(y2 — y0) = (x1 — x0)/(x2 — x0), прирощение значения в первой точке к прирощению значения во второй точке относится также как прирощение переменной в первой точке к прирощению переменной во второй точке (все относительно нулевой точки отсчета), из этой пропорции легко получить формулу рассчета любого значения

Источник: www.bl2.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru