Страницы: 1
RSS
Интерполяция значения по нескольким таблицам
 
даны одинаковые таблицы с набором параметров C, D, E итд, (параметров много, я упростил).

в примере: для параметра A = 0, в диапазоне B, ему соответствуют значения С; далее, то же самое, для параметра А = -0,5 и пошло-поехало.
возможно ли реализовать формулой, без макросов, диспетчера имен и прочего шаманства, вычисление С, если A меняется от 0 до -1,5?
то есть, чтобы подсчет работал как для А=-0,38, так и для А=-1,31415926

бодрым кавалерийским наскоком у меня вопрос не решился, но возможно, я в трех соснах заблудился.
 
Цитата
semenych написал:

возможно ли реализовать формулой, без макросов, диспетчера имен и прочего шаманства, вычисление
Возможно, но вам это не понравится
=INDEX(2:2;(4-MATCH($A$20;INDEX($2:$2;N(INDEX({13;9;5;1};))))-1)*4+1+2)-(INDEX($2:$2;(4-MATCH($A$20;INDEX($2:$2;N(INDEX({13;9;5;1};))))-1)*4+1)-$A$20)/(INDEX($2:$2;(4-MATCH($A$20;INDEX($2:$2;N(INDEX({13;9;5;1};))))-1)*4+1)-INDEX($2:$2;(4-MATCH($A$20;INDEX($2:$2;N(INDEX({13;9;5;1};)))))*4+1))*(INDEX(2:2;(4-MATCH($A$20;INDEX($2:$2;N(INDEX({13;9;5;1};))))-1)*4+1+2)-INDEX(2:2;(4-MATCH($A$20;INDEX($2:$2;N(INDEX({13;9;5;1};)))))*4+1+2))
Изменено: БМВ - 17.10.2019 20:43:08
По вопросам из тем форума, личку не читаю.
 
да, общем случае, когда таких параметров С, D, E итд - с десяток, и таких таблиц - пару десятков, подобная формула мало применима, увы...

но спасибо уже за саму возможность реализации в данном конкретном случае.

вопрос еще актуален...
Изменено: semenych - 17.10.2019 20:59:31
 
Цитата
БМВ написал:
но вам это не понравится
действительно, не очень, вот формула, которая Вам понравится:
Код
=ЕСЛИ(R20C1>=0;R[-18]C;ЕСЛИ(R20C1<=-1.5;R[-18]C[12];ИНДЕКС(R1C1:R12C15;СТРОКА()-18;ЦЕЛОЕ(-R20C1*2)*4+3)+(R20C1-ИНДЕКС(R1C1:R12C15;2;ЦЕЛОЕ(-R20C1*2)*4+1))*(ИНДЕКС(R1C1:R12C15;СТРОКА()-18;ЦЕЛОЕ(-R20C1*2)*4+7)-ИНДЕКС(R1C1:R12C15;СТРОКА()-18;ЦЕЛОЕ(-R20C1*2)*4+3))/(ИНДЕКС(R1C1:R12C15;2;ЦЕЛОЕ(-R20C1*2)*4+5)-ИНДЕКС(R1C1:R12C15;2;ЦЕЛОЕ(-R20C1*2)*4+1))))
Изменено: Ігор Гончаренко - 17.10.2019 20:56:45
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
действительно, интересней. (и работает при А=0, кстати - первая формула сбоила при таком значении). поразбираю, спасибо.
 
Цитата
Ігор Гончаренко написал:
которая Вам понравится
Игор ,я сразу под масштабируемость закладывал, но без диспетчера имен, будет хоть и автоматически, но длинно.
фактиески надо посчитать количество, период и вывести {13;9;5;1}, что не сложно далее смещени результирующего столбца - не сложно ввести
Изменено: БМВ - 17.10.2019 21:06:48
По вопросам из тем форума, личку не читаю.
 
БМВ,
да мне все понятно, "действительно не очень" - это я так неуклюже пошутил

semenych,
моя формула работает при ЛЮБЫХ А. нет никаких ограничений, можете даже текст написать
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
жаль что предсказ бессилен
=FORECAST.LINEAR(A20;INDEX(2:2;N(INDEX({1;5;9;13}+2;)));INDEX($2:$2;N(INDEX({1;5;9;13};))))

=FORECAST($A$20;INDEX(2:2;N(INDEX(
MAX(IF(($A$1:$OO$1=$A$19)*($A$2:$OO$2>=$A$20);COLUMN($A$2:$OO$2)))+CHOOSE({1\2};;MATCH($A$19;$B$1:$OO$1;))-1+COLUMN();)));
INDEX($2:$2;N(INDEX(
MAX(IF(($A$1:$OO$1=$A$19)*($A$2:$OO$2>=$A$20);COLUMN($A$2:$OO$2)))+CHOOSE({1\2};;MATCH($A$19;$B$1:$OO$1;));))))
Изменено: БМВ - 17.10.2019 22:25:20
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
жаль что предсказ бессилен
Скрытый текст

не сочтите за наглость - немного расширю задачу (см. пример). пользуюсь любезным коллективным разумом, поскольку не математик и не программист, хотя excel использую регулярно. хочется понять и сделать шаблон на будущее.
 
semenych, не надо расширять задачу в задаче. смотрите #8
По вопросам из тем форума, личку не читаю.
 
о! воистину. немного подпилю для своих целей и хоть на праздник, сам бы я не осилил.
спасибо всем за участие, ваши примеры пополнили мою копилку знаний.

зы. я ходил вокруг да около формулы массива, смутно осознавая, но не знал, как к ней подобраться.
Изменено: semenych - 18.10.2019 02:32:51
 
чуть короче
=FORECAST($A$20;INDEX(2:2;N(INDEX(
MAX(IF(($A$1:$OO$1=$A$19)*($A$2:$OO$2>=$A$20);COLUMN($A$2:$OO$2)))+{0\1}*MATCH($A$19;$B$1:$OO$1;)-1+COLUMN();)));
INDEX($2:$2;N(INDEX(
MAX(IF(($A$1:$OO$1=$A$19)*($A$2:$OO$2>=$A$20);COLUMN($A$2:$OO$2)))+{0\1}*MATCH($A$19;$B$1:$OO$1;);))))
Изменено: БМВ - 17.10.2019 23:34:15
По вопросам из тем форума, личку не читаю.
 
все, спасибо, я уже разобрался с вашей помощью. в исходном виде таблицы располагались друг под другом и я все пытался такой вид сохранить.
а когда все таблицы в строку все спокойно решилось.

зы. это были гидростатические таблицы парохода в зависимости от осадки и дифферента. часто попадается ситуация, когда нет ничего, кроме таблицы на
пожелтевшей бумаге, вот и приходится выкручиваться. excel реально рулит и выруливает.
 
Еще формула для коллекции
Код
=СУММПРОИЗВ(Матрица*ЕСЛИОШИБКА(B^{3:2:1:0};1)*ЕСЛИОШИБКА(A^{3;2;1;0};1))
где Матрица - это таблица констант
Код
={383,341103343716;639,782439787108;196,301476302879;-29,0753690755206:-8037,7280497816;-13465,66433576;-4161,82905985779;555,340326343403:56139,3765349422;94400,5564886099;29380,5885782848;-3196,18523700605:-130610,443637196;-220431,835759063;-69034,7948489313;7264,01333338031}
 
IKor,
Цитата
semenych написал:
возможно ли реализовать формулой, без макросов, диспетчера имен и прочего шаманства,
:D
По вопросам из тем форума, личку не читаю.
 
Михаил,
Если быть педантом до конца, то все именованные диапазоны можно развернуть в самой формуле (именно так и сделано в прилагаемом документе!) - просто для наглядности при публикации я спрятал таблицу констант внутрь имени
:)
 
IKor,
спасибо, я разберу на досуге; но, по-моему, интерполяцию лагранжа можно реализовать значительно проще, с помощью формул массивов.

если X в столбце А2:А9, F(Xi) - в столбце B2:B9, то коэффициенты полинома вычисляются в столбце С2:С9 от значения А11 по формуле массива
Код
{=PRODUCT(IF(A2-$A$2:$A$9=0,1,($A$11-$A$2:$A$9)/(A2-$A$2:$A$9)))}

и затем суммируются в С11
Код
=SUMPRODUCT(B2:B9,C2:C9)

сначала я пытался что-то соорудить в данном направлении, но быстро зашел в тупик. пример от БМВ меня полностью устраивает своей относительной простотой и масштабируемостью.
Изменено: semenych - 18.10.2019 17:53:41
 
semenych, не стесняйтесь форматировать сообщение
 
Цитата
semenych написал:
если X в столбце А2:А9, F(Xi) - в столбце B2:B9, то коэффициенты полинома вычисляются в столбце С2:С9 от значения А11 по формуле массива
Семеныч, на мой взгляд основное преимущество от использования данного метода заключается в отсутствии необходимости постоянно вычислять коэффициенты. Более того, даже сами исходные данные можно заменить просто матрицей коэффициентов полинома(-ов) - и в дальнейшем работать уже только с ней.
Это особенно удобно для работы с неизменными данными (например, свойствами веществ).  
Страницы: 1
Наверх