WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
О функции, см.: Интерполянт.

Интерполя́ция, интерполи́рование (от лат. inter–polis — «разглаженный, подновлённый, обновлённый; преобразованный») — в вычислительной математике способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений[1]. Термин «интерполяция» впервые употребил Джон Валлис в своём трактате «Арифметика бесконечных» (1656).

В функциональном анализе интерполяция линейных операторов представляет собой раздел, рассматривающий банаховы пространства как элементы некоторой категории[2].

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

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

Следует также упомянуть и совершенно другую разновидность математической интерполяции, известную под названием «интерполяция операторов». К классическим работам по интерполяции операторов относятся теорема Рисса — Торина и теорема Марцинкевича (Marcinkiewicz theorem), являющиеся основой для множества других работ.

Определения

Рассмотрим систему несовпадающих точек ( ) из некоторой области . Пусть значения функции известны только в этих точках:

Задача интерполяции состоит в поиске такой функции из заданного класса функций, что

  • Точки называют узлами интерполяции, а их совокупность — интерполяционной сеткой.
  • Пары называют точками данных или базовыми точками.
  • Разность между «соседними» значениями  — шагом интерполяционной сетки. Он может быть как переменным, так и постоянным.
  • Функцию  — интерполирующей функцией или интерполянтом.

Пример

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

0 0
10,8415
20,9093
30,1411
4−0,7568
5−0,9589
6−0,2794

Интерполяция помогает нам узнать, какое значение может иметь такая функция в точке, отличной от указанных точек (например, при x = 2,5).

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

2. Найти промежуточное значение (способом линейной интерполяции).

600015.5
6378?
800019.2

В языках программирования

Пример линейной интерполяции для функции . Пользователь может ввести число от 1 до 10.

Fortran

	
program interpol
    integer i
    real x, y, xv, yv, yv2
    dimension x(10)
    dimension y(10)
    call prisv(x, i)
    call func(x, y, i)
    write(*,*) 'enter number : '
    read(*,*) xv
    if ((xv >= 1).and.(xv <= 10)) then
        call funcv(xv, yv)
        call sver(x, y, yv2, xv)
        write(*, *) yv2
    else
        write(*, *) 'false'
    end if
    read(*, *)
end

subroutine prisv(x, i)
    real x
    dimension x(10)
    integer i
    
    do i=1,10
        x(i) = 1 * i
    end do
end subroutine

subroutine func(x, y, i)
    real x, y
    dimension x(10)
    dimension y(10)
    integer i
    
    do i = 1, 10 
        y(i) = 3 * x(i)+x(i) ** 2
    end do 
end subroutine

subroutine funcv(xv, yv)
    real xv, yv
    yv = 3 * xv + xv ** 2
    write(*, *) yv 
end subroutine

subroutine sver(x, y, yv2, xv)
    real x, y, xv, yv2
    dimension x(10)
    dimension y(10)
    integer i
    
    do i = 1, 9
        if ((x(i) <= xv).and.(x(i+1) > xv)) then
            yv2 = ((xv - x(i)) * (y(i+1) - y(i)) / (x(i+1) - x(i))) + y(i)
        end if
    end do 
end subroutine

C++

	
int main()
{
    system("COLOR 0A");
    double ob, x1, x2, y1, y2, p1, p2, pi, skolko, status;

    cout << "Интерполяция X1 - X2 " << endl;
    cout << "Ввести число: " << endl;
    cin >> ob;

    cout << "Например 62, C1 = 60, L1 = 1.31, C2 = 80, L2 = 1.29" << endl;
    cout << "C1 = ";
    cin >> x1;
    
    cout << "L1 = " ;
    cin >> x2;
    
    cout << "C2 = " ;
    cin >> y1;
    
    cout << "L2 = " ;  
    cin >> y2;

    p1 = y1 - x1;
    p2 = y2 - x2;

    pi = p2 / p1;
    skolko = ob - x1;
    status = x2 + (pi * skolko);

    cout << "_______________________________________________________________";
    cout << endl <<  ob << " = " << status << endl;
    system("pause");

    return 0;
}

Способы интерполяции

Интерполяция методом ближайшего соседа

Простейшим способом интерполяции является интерполяция методом ближайшего соседа.

Интерполяция многочленами

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

Обратное интерполирование (вычисление x при заданной y)

Интерполяция функции нескольких переменных

Другие способы интерполяции

Смежные концепции

  • Экстраполяция — методы нахождения точек за пределами заданного интервала (продление кривой)
  • Аппроксимация — методы построения приближённых кривых

См. также

Примечания

Литература

  • Й. Берг, Й. Лёфстрём. Интерполяционные пространства. Введение. М.: Мир, 1980. — 264 с.

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

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

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии