Страницы: 1
RSS
Кусочно-линейная интерполяция
 
Здравствуйте, уважаемые форумчане! Очень нужна помощь по вопросу с функцией ПРЕДСКАЗ в Excel. Требуется проинтерполировать нетабличные значения, но результат интерполяции неверен (для наглядности ввел табличное значение 700, но ПРЕДСКАЗ выдал совсем другое число, вместо 10344,6653, скрин приложил). Однако на втором скрине ПРЕДСКАЗ работает как нужно. В чем причина и можно ли выполнить требуемую задачу по другому?  :(  (Excel 2007)


 
Изменено: bullet_bro - 10.04.2019 19:13:42
 
Цитата
bullet_bro написал:
результат интерполяции неверен
откройте справку - ПРЕДСКАЗ считает параметры линейной регрессии и на основании этого дает новое значение, если вам нужно интерполировать по узлам - встроенной функции нет, есть стандартные формулы они реализуются просто, нелинейные варианты (Ньютон, сплайны) - нужно писать код
Соблюдение правил форума не освобождает от модераторского произвола
 
кусочно-линейную интерполяцию можно реализовать на формулах с помощью функции ПРЕДСКАЗ (см. вложение)
 
Огромное Вам Спасибо! Вы решили мою проблему!  :)  
 
Спасибо! то что искал давно!)
 
Всем привет!
А как в файле ЛинИнтерпол.xlsx избавиться от таблицы A1:B15, интегрировав её в формулу E2?

Сделал вариант без интерполяции со вставленной в формулу таблицей, - работает.
Сделал варианты с интерполяцией в [C19;C21], - тоже работают (функция LET из Office 365 для наглядности, можно и без неё).

А вот в [C20;C22] те же формулы [C19;C21] уже не работают, ТРАНСП и т.п. не помогает.
Файл во вложении. В чём ошибка и как исправить?
Изменено: Acid Burn - 24.09.2021 22:09:09
 
Друзья, может кто-нибудь помочь?
Изменено: Acid Burn - 24.09.2021 18:56:55
 
См. справку по функции СМЕЩ(), аргумент - ссылка (!)
 
С.М., при этом работает
=LET(Xs;B3:B15;XYs;B3:C15;
ПРЕДСКАЗ(B18;
СМЕЩ(XYs;ПОИСКПОЗX(B18;Xs;-1;1)-1;1;2;1);
СМЕЩ(Xs;ПОИСКПОЗX(B18;Xs;-1;1)-1;;2;1)))
и
=LET(Xs;B3:B15;Ys;C3:C15;
ПРЕДСКАЗ(B18;
ИНДЕКС(Ys;ПОИСКПОЗ(B18;Xs)):
ИНДЕКС(Ys;ПОИСКПОЗ(B18;Xs)+1);
ИНДЕКС(Xs;ПОИСКПОЗ(B18;Xs)):
ИНДЕКС(Xs;ПОИСКПОЗ(B18;Xs)+1)))
Изменено: Acid Burn - 24.09.2021 19:20:22
 
Конструкция ИНДЕКС():ИНДЕКС() с виртуальными массивами, наверное, тоже -- не работает.
365-го у меня нет, Имена "воткнёте" в функцию LET()
 
С.М., спасибо, работает!
Но падает на граничных значениях (при диапазоне [50;1501] - все 50 > NewX >= 1501).
PS: Файл отредактировал.
Изменено: Acid Burn - 25.09.2021 01:23:28
 
На границе тучи ходят хмуро ©
Изменено: С.М. - 24.09.2021 23:54:23 (заменил файл)
 
С.М., при NewX=0 Y=#Н/Д, при NewX=2000 Y=#ДЕЛ/0!...
Исправил - теперь при NewX=0 Y=5, при NewX=2000 Y=102,5, как и должно быть.
Ввёл имена KnownX, KnownY, Start: для Office >=2007 в Диспетчере, для Office365 - в функции LET.
Промежуточные файлы удалил.
Спасибо огромное!
Изменено: Acid Burn - 25.09.2021 18:31:02
 
Цитата
Acid Burn написал #13:
С.М., при NewX=0 Y=#Н/Д
Цитата
Acid Burn написал #6:
А как в файле ЛинИнтерпол.xlsx избавиться от таблицы A1:B15, интегрировав её в формулу E2?

В файле - интерполяция с экстраполяцией и в большую и в меньшую стороны, и таблицы на листе нет.
 
С.М.,  спасибо!
Теперь можно получить значение Y даже для отрицательного X вместо #Н/Д в моём варианте.
И да, без таблицы лучше - сразу понятно, что она не нужна. Но тогда уж и [B2:C5;D8] убрать. ))
Таблицу я тоже оставлял лишь для демонстрации ТРАНСП(), тоже лишнее в контексте темы.

Но. У меня также была ступенчатая интерполяция на случай, когда при X=0-50 Y=5, при X=51-100 Y=10 и т.д.
Была диаграмма для ступенчатой интерполяции, готовые формулы Office 365 для копипаста,
кнопки для быстрой проверки диапазона. Добавил всё это в Ваш файл, который и прилагаю ниже.

По-моему, mush have для любого инженерного расчёта, зачастую обвешанного сканированными графиками.
Теперь вместо подбора функции для графиков, формул интерполяции/экстраполяции и кучи доп. таблиц
можно забить всего 1 формулу ("линейную" или "ступенчатую" в зависимости от ситуации).

Как минимум - сэкономит кучу времени и позволит разгрузить расчёты, сделав их более лаконичными.
Как максимум, вообще достойно Копилки или PLEX.
Ещё раз огромное спасибо.

Пока-пока!
 
Пара исторических ссылок по теме:
1. Работа с графиками
2. Линейная интерполяция
Там разные варианты, в том числе, от MCH и от С.М.
Приложил оттуда 2 своих варианта
Изменено: ZVI - 26.09.2021 04:31:54
 
Выполняю кусочную интерполяцию полиномами вплоть до 7-й степени. По личному убеждению - одно из самых красивых (ха) решений - кусочная интерполяция полиномом 3-й степени с расположением искомого значения в таком виде х1 х2 Хзаданное х3 х4. Для остальных сильна зависимость от положения Хзаданное в массиве выборки.
По степени приближения к "точечная сглаженная" визуально приближен сплайн сплайн Катмулла-Рома. Естественно кроме хвостов графиков.

Всё сие в VBA. И даже где то тут уже выкладывал...
Изменено: vikttur - 28.09.2021 11:06:00
Страницы: 1
Наверх