Никонов Павел
размещено: 24 Мая 2009
Данная программа использует макросы Excel и позволяет находить в любой таблице интерполированное значение. Для получения результата нужно:
1) Создать лист Excel и скопировать в него первые семь строк. Эти строки НЕЛЬЗЯ ставить в какой либо иной диапазон кроме A1:D7! После копирования лучше использовать «Сохранить ширину столбцов оригинала»
2) Создайте или проще скопируйте (!) любую таблицу ниже по строкам диапазона A1:D7.
3) В строке «По горизонтали» задайте диапазон горизонтальных значений по которым будет производиться ваша интерполяция, а в строке «по вертикали» — диапазон вертикальных значений.
4) В строке «область данных» задайте область данных. Программа самостоятельно проверит соответствие количества строк и столбцов в области данных количеству столбцов в строке «по горизонтали» и количеству строк в строке «по вертикали»
5) Введите в ячейку D5 величину находящуюся между значениями диапазона «по горизонтали», а в ячейку D6 — диапазона «по вертикали».
6) Вычисленный результат определится в строке D7.
Далее лист с таблицей можно сохранить и использовать позднее. При использовании программы не забудьте отключить защиту от макросов.
0.02 МБ
СКАЧАТЬ
Составление макроса для двумерной интерполяции |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Linear interpolation is used for fitting curves using linear polynomials. Linear Interpolation is a method that constructs new data points from a given set of data points. Linear interpolation is useful when looking for a value between two data points. It can be considered as “filling in the gaps” in a table of data. The strategy for linear interpolation is to use a straight line to connect the known data points on either side of the unknown point. It finds the unknown values in the table. The formula of linear interpolation is given by,
Linear Interpolation Formula
Where,
- x1 and y1 are the first coordinates, and
- x2 and y2 are the second coordinates
- x is the point to perform the interpolation
- y is the interpolated value
Linear Interpolation in Excel
We’ll be looking at two ways to calculate the Linear Interpolation in Excel.
Case 1: When we have 2 pairs of values for the x and y coordinates. For Example:
We want to check the value of 2.3 and hence we have to use interpolation. We are using linear interpolation because the values of x and y are changing linearly. We’ll be using the FORECAST formula,
=FORECAST(x, known_y’s, known_x’s)
Note: In Excel 2016, the FORECAST function was replaced with FORECAST.LINEAR. The syntax and usage of the two functions are the same.
Step 1: Add the FORECAST.LINEAR formula to the cell where you want to add the interpolated value.
Step 2: Fill the formula with the desired values. First, the value of x will go, then add the y-axis values and finally add x-axis values in the formula and click Enter. You’ll get the desired result.
Here the interpolated value of 2.3 is 5.6
Case 2: When we have more than 2 pairs of values for the x and y coordinates.
For Example, We have the data of rainfall (in cm) received in some parts of India for consecutive 7 days. We want to predict rainfall at 1.5 days.
First, we need to check x1, x2, y1, and y2. To perform this we will be using VLOOKUP, INDEX, and MATCH
VLOOKUP: It is used when you need to find things in a table or a range by row.
Syntax:
=VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])
range_lookup: It is an optional parameter. We can enter 1/True, which looks for an approximate match while 0/False, which looks for an exact match.
INDEX: It is used when you need a value or reference to a value from within a table or range.
Syntax:
= INDEX(array, row_num, [column_num])
Where array and row_num are required values and column_num is optional.
MATCH: This function searches for a specified item in a range of cells, and then returns the relative position of that item in the range.
Syntax:
= MATCH(lookup_value, lookup_array, [match_type])
Where lookup_value and lookup_array are required values and match_type is optional.
We will be calculating all the other values using the formulas above.
Step 1: Calculating x1 using VLOOKUP. Enter the formula and values as shown below.
Step 2: Press Enter and you’ll get the desired value (as shown below).
Step 3: Calculating y1 using VLOOKUP. Enter the formula and values as shown below. The only change we need to do here is the change in col_index_num to 2 because we want the values from column C.
Step 4: Press Enter and you’ll get the desired value (as shown below).
To calculate the values of x2 and y2, we’ll be using INDEX and MATCH functions.
Step 5: Calculate x2 using INDEX and MATCH functions. Enter the formula and values as shown below.
Step 6: Press Enter and you’ll get the desired value (as shown below).
Step 7: Calculate y2 using INDEX and MATCH functions. Enter the formula =INDEX($C$2:$C$8, MATCH(F6,$C$2:$C$8)+1) and values as shown below. The only change here is of Column C and the value of y1.
Step 8: Press Enter and you’ll get the desired value (as shown below).
Now, we’ll be using the above-mentioned formula to calculate the y value.
Step 9: Put all the calculated values in the formula in the desired cell. (as shown below)
Step 10: Press Enter and you’ll get the desired results.
Содержание
- Использование интерполяции
- Способ 1: интерполяция для табличных данных
- Способ 2: интерполяция графика с помощью его настроек
- Способ 3: интерполяция графика с помощью функции
- Вопросы и ответы
Бывает ситуация, когда в массиве известных значений нужно найти промежуточные результаты. В математике это называется интерполяцией. В Excel данный метод можно применять как для табличных данных, так и для построения графиков. Разберем каждый из этих способов.
Использование интерполяции
Главное условие, при котором можно применять интерполяцию – это то, что искомое значение должно быть внутри массива данных, а не выходить за его предел. Например, если мы имеем набор аргументов 15, 21 и 29, то при нахождении функции для аргумента 25 мы можем использовать интерполяцию. А для поиска соответствующего значения для аргумента 30 – уже нет. В этом и является главное отличие этой процедуры от экстраполяции.
Способ 1: интерполяция для табличных данных
Прежде всего, рассмотрим применения интерполяции для данных, которые расположены в таблице. Для примера возьмем массив аргументов и соответствующих им значений функции, соотношение которых можно описать линейным уравнением. Эти данные размещены в таблице ниже. Нам нужно найти соответствующую функцию для аргумента 28. Сделать это проще всего с помощью оператора ПРЕДСКАЗ.
- Выделяем любую пустую ячейку на листе, куда пользователь планирует выводить результат от проведенных действий. Далее следует щелкнуть по кнопке «Вставить функцию», которая размещена слева от строки формул.
- Активируется окошко Мастера функций. В категории «Математические» или «Полный алфавитный перечень» ищем наименование «ПРЕДСКАЗ». После того, как соответствующее значение найдено, выделяем его и щелкаем по кнопке «OK».
- Запускается окно аргументов функции ПРЕДСКАЗ. В нем имеется три поля:
- X;
- Известные значения y;
- Известные значения x.
В первое поле нам просто нужно вручную с клавиатуры вбить значения аргумента, функцию которого следует отыскать. В нашем случае это 28.
В поле «Известные значения y» нужно указать координаты диапазона таблицы, в котором содержатся значения функции. Это можно сделать вручную, но гораздо проще и удобнее установить курсор в поле и выделить соответствующую область на листе.
Аналогичным образом устанавливаем в поле «Известные значения x» координаты диапазона с аргументами.
После того, как все нужные данные введены, жмем на кнопку «OK».
- Искомое значение функции будет отображено в той ячейке, которую мы выделили ещё в первом шаге данного способа. В результате получилось число 176. Именно оно и будет итогом проведения процедуры интерполяции.
Урок: Мастер функций в Экселе
Способ 2: интерполяция графика с помощью его настроек
Процедуру интерполяции можно применять и при построении графиков функции. Актуальна она в том случае, если в таблице, на основе которой построен график, к одному из аргументов не указано соответствующее значение функции, как на изображении ниже.
- Выполняем построение графика обычным методом. То есть, находясь во вкладке «Вставка», выделяем табличный диапазон, на основе которого будет проводиться построение. Щелкаем по значку «График», размещенному в блоке инструментов «Диаграммы». Из появившегося списка графиков выбираем тот, который считаем более уместным в данной ситуации.
- Как видим, график построен, но не совсем в таком виде, как нам нужно. Во-первых, он разорван, так как для одного аргумента не нашлась соответствующая функция. Во вторых, на нем присутствует дополнительная линия X, которая в данном случае не нужна, а также на горизонтальной оси указаны просто пункты по порядку, а не значения аргумента. Попробуем исправить все это.
Для начала выделяем сплошную синюю линию, которую нужно удалить и жмем на кнопку Delete на клавиатуре.
- Выделяем всю плоскость, на которой размещен график. В появившемся контекстном меню щелкаем по кнопке «Выбрать данные…».
- Запускается окно выбора источника данных. В правом блоке «Подписи горизонтальной оси» жмем на кнопку «Изменить».
- Открывается небольшое окошко, где нужно указать координаты диапазона, значения из которого будут отображаться на шкале горизонтальной оси. Устанавливаем курсор в поле «Диапазон подписей осей» и просто выделяем соответствующую область на листе, в которой содержаться аргументы функции. Жмем на кнопку «OK».
- Теперь нам осталось выполнить основную задачу: с помощью интерполяции устранить разрыв. Вернувшись в окно выбора диапазона данных жмем на кнопку «Скрытые и пустые ячейки», расположенную в нижнем левом углу.
- Открывается окно настройки скрытых и пустых ячеек. В параметре «Показывать пустые ячейки» выставляем переключатель в позицию «Линию». Жмем на кнопку «OK».
- После возвращения в окно выбора источника подтверждаем все сделанные изменения, щелкнув по кнопке «OK».
Как видим, график скорректирован, а разрыв с помощью интерполяции удален.
Урок: Как построить график в Excel
Произвести интерполяцию графика можно также с помощью специальной функции НД. Она возвращает неопределенные значения в указанную ячейку.
- После того, как график построен и отредактирован, так как вам нужно, включая правильную расстановку подписи шкалы, остается только ликвидировать разрыв. Выделяем пустую ячейку в таблице, из которой подтягиваются данные. Жмем на уже знакомый нам значок «Вставить функцию».
- Открывается Мастер функций. В категории «Проверка свойств и значений» или «Полный алфавитный перечень» находим и выделяем запись «НД». Жмем на кнопку «OK».
- У данной функции нет аргумента, о чем и сообщает появившееся информационное окошко. Чтобы закрыть его просто жмем на кнопку «OK».
- После этого действия в выбранной ячейке появилось значение ошибки «#Н/Д», но зато, как можно наблюдать, обрыв графика был автоматически устранен.
Можно сделать даже проще, не запуская Мастер функций, а просто с клавиатуры вбить в пустую ячейку значение «#Н/Д» без кавычек. Но это уже зависит от того, как какому пользователю удобнее.
Как видим, в программе Эксель можно выполнить интерполяцию, как табличных данных, используя функцию ПРЕДСКАЗ, так и графика. В последнем случае это осуществимо с помощью настроек графика или применения функции НД, вызывающей ошибку «#Н/Д». Выбор того, какой именно метод использовать, зависит от постановки задачи, а также от личных предпочтений пользователя.
Еще статьи по данной теме:
Помогла ли Вам статья?
Аппроксимация и интерполяция – не одно и то же, они совпадают только, если заданы всего две точки. Интерполяция предполагает обязательное прохождение через все заданные точки, а к аппроксимации такое требование не предъявляется.
В данном случае речь идет о кусочно-линейной интерполяция и экстраполяция данных. При этом экстраполяция осуществляется по уравнению прямой двух конечных точек: 1-й и 2-й при X <= Xmin, последней и предпоследней – для X >= Xmax
Вот код, не зависящий от горизонтальности или вертикальности диапазонов RngX и RngY:
Function Y(RngX As Range, RngY As Range, X As Double) As Double
Dim i&, xmin#, xmax#, x1#, x2#, y1#, y2#, v
i = RngX.Count
xmin = RngX(1)
xmax = RngX(i)
If X <= xmin Then
x1 = RngX(2)
x2 = xmin
y1 = RngY(2)
y2 = RngY(1)
ElseIf X >= xmax Then
x1 = RngX(i — 1)
x2 = xmax
y1 = RngY(i — 1)
y2 = RngY(i)
Else
i = 0
For Each v In RngX.Value
i = i + 1
If X < v Then Exit For
Next
x1 = RngX(i — 1)
x2 = v
y1 = RngY(i — 1)
y2 = RngY(i)
End If
Y = y1 + (X — x1) * (y2 — y1) / (x2 — x1)
End Function
Sub Test()
‘ Аналогично формуле ячейки: =Y(C8:E8;C12:E12;I8)
Debug.Print Y(Range(«C8:E8»), Range(«C12:E12»), [I8])
End Sub