Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2016, 09:37   #1
Tidus
Форумчанин
 
Регистрация: 08.09.2009
Сообщений: 133
По умолчанию Поиск промежуточных значений Z1 внутри массива линейной интерполяцией.

Приветствую Игорь
Есть таблица с параметрами X и Y. Значения на пересечении этих параметров соответствуют Z.

Есть задаваемые промежуточные параметры X1 и Y1, которые не совпадают с координатами X и Y. Промежуточные координаты на пересечении X1 и Y1 обозначаются Z1.

Условия задачи:
1. X1, Y1, X и Y могут изменяться.
2. Нужно найти промежуточное значение Z1 линейной интерполяцией соответствующее параметрам X1, Y1 внутри массива данных.
3. Решить задачу элементарными функциями одной ячейкой, если это реально.

P.S. Пример формулы линейной интерполяции снизу во вложении.

Задача1.jpg
Задача_1_ЛинИнтерполяция по массиву.xlsx
Формула лин. интерполяции.xlsx

Последний раз редактировалось Tidus; 25.02.2016 в 09:43.
Tidus вне форума Ответить с цитированием
Старый 25.02.2016, 14:00   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см. вложение
удалось решить простой формулой
Код:
=зет
Вложения
Тип файла: xlsx Задача_1_ЛинИнтерполяция по массиву.xlsx (13.2 Кб, 38 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 25.02.2016, 14:15   #3
Tidus
Форумчанин
 
Регистрация: 08.09.2009
Сообщений: 133
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
см. вложение
удалось решить простой формулой
Код:
=зет
Спасибо огромное, ты как всегда в своем репертуаре Игорь, напиши, какая формула под функцией "зет" скрывается? Или как её посмотреть в Excel.

Последний раз редактировалось Tidus; 25.02.2016 в 14:21.
Tidus вне форума Ответить с цитированием
Старый 25.02.2016, 14:21   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

не нужно ничего вытаскивать.
пишем другие значения Х1, У1 - видим новое значение Z1.
(есть сомнения - проверяем вручную, нет сомнений - пользуемся)
интерполяция в двух направлениях - довольно стандартная задача. она не требует знаний, требует внимательности при последовательном вычислении 3-х интерполяций
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 25.02.2016 в 14:36.
IgorGO вне форума Ответить с цитированием
Старый 25.02.2016, 14:27   #5
Tidus
Форумчанин
 
Регистрация: 08.09.2009
Сообщений: 133
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
не нужно ничего вытаскивать.
пишем другие значения Х1, У1 - видим новое значение Z1.
(есть сомнения - проверяем вручную, нет сомнений - пользуемся)
интнрполяция в двух направлениях - довольно стандартная задача
Мне нужно перенести функции на другой лист, они там не будут работать. На другой лист как перенести?
Tidus вне форума Ответить с цитированием
Старый 25.02.2016, 14:27   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см. диспетчер имен
там 4 ссылки на данные
Х, У, вх (вектор значений Х), ву (вектор значений У)
и
15 вычисляемых значений, в т.ч. и зет

удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 25.02.2016, 14:38   #7
Tidus
Форумчанин
 
Регистрация: 08.09.2009
Сообщений: 133
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
см. диспетчер имен
там 4 ссылки на данные
Х, У, вх (вектор значений Х), ву (вектор значений У)
и
15 вычисляемых значений, в т.ч. и зет
удачи!
Спасибо! Судя по всему в другой лист их долго переносить буду
Игорь, а если поменять местами вектор значений X на Y формулу сильно менять нужно будет?

Последний раз редактировалось Tidus; 25.02.2016 в 14:48.
Tidus вне форума Ответить с цитированием
Старый 25.02.2016, 14:56   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а вообще тут строгая математическая зависимость

Z1 = 10*((X1-0.5)*5+Y1)

и можно на париться с интерполяциями
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 25.02.2016, 15:15   #9
Tidus
Форумчанин
 
Регистрация: 08.09.2009
Сообщений: 133
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
а вообще тут строгая математическая зависимость
Z1 = 10*((X1-0.5)*5+Y1)
и можно на париться с интерполяциями
Для конкретного случая в примере - да. Но у меня в рабочем варианте кусочно-линейная функция, которой аппроксимируется нелинейная функция. Поэтому в общем случае задача решена на 100%.
Игорь, я немного модифицировал Вашу формулу, выразив все 15 вычисляемых значений через ячейки-ссылки. Оставил в диспетчере имён только векторы вx и вy.
Теперь не нужно менять все 15 формул в диспетчере имён при переносе или добавлении новых значений. Достаточно лишь перетянуть ячейку и усё. Вот код:
Цитата:
=((ИНДЕКС('Лист1'!$A$1:$CU$100;(СТР ОКА(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K 5;вх)-1));(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);;П ОИСКПОЗ(I5;ву)-1))))
+ЕСЛИ((ИНДЕКС('Лист1'!$A$1:$CU$100; (СТРОКА(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКП ОЗ(K5;вх)-1));(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);;П ОИСКПОЗ(I5;ву)-1))))
=(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРО КА(вх)+МИН(ЧСТРОК(вх);ПОИСКПОЗ(K5;в х)+1)-1);(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);;ПО ИСКПОЗ(I5;ву)-1))));;
((ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРО КА(вх)+МИН(ЧСТРОК(вх);ПОИСКПОЗ(K5;в х)+1)-1);(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);;ПО ИСКПОЗ(I5;ву)-1))))-
(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРОК А(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K5; вх)-1));(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);;П ОИСКПОЗ(I5;ву)-1)))))/
((ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРО КА(вх)+МИН(ЧСТРОК(вх);ПОИСКПОЗ(K5;в х)+1)-1);1))-(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРОК А(вх)+ЕСЛИ(K5<МИН(вх);
;ПОИСКПОЗ(K5;вх)-1));1)))*(K5-(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРОК А(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K5; вх)-1));1)))))+ЕСЛИ(((ИНДЕКС('Лист1'!$A $1:$CU$100;
(СТРОКА(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКП ОЗ(K5;вх)-1));(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);;П ОИСКПОЗ(I5;ву)-1))))+ЕСЛИ((ИНДЕКС('Лист1'!$A$1:$CU $100;(СТРОКА(вх)
+ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K5;вх)-1));(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);;П ОИСКПОЗ(I5;ву)-1))))=(ИНДЕКС('Лист1'!$A$1:$CU$100; (СТРОКА(вх)+МИН(ЧСТРОК(вх);
ПОИСКПОЗ(K5;вх)+1)-1);(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);;ПО ИСКПОЗ(I5;ву)-1))));;((ИНДЕКС('Лист1'!$A$1:$CU$10 0;(СТРОКА(вх)+МИН(ЧСТРОК(вх);
ПОИСКПОЗ(K5;вх)+1)-1);(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);;ПО ИСКПОЗ(I5;ву)-1))))-(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРОК А(вх)+ЕСЛИ(K5<МИН(вх);
;ПОИСКПОЗ(K5;вх)-1));(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);;П ОИСКПОЗ(I5;ву)-1)))))/((ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРО КА(вх)+МИН(ЧСТРОК(вх);
ПОИСКПОЗ(K5;вх)+1)-1);1))-(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРОК А(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K5; вх)-1));1)))*(K5-(ИНДЕКС('Лист1'!$A$1:$CU$100;
(СТРОКА(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКП ОЗ(K5;вх)-1));1)))))= ((ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРО КА(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K5 ;вх)-1));
(СТОЛБЕЦ(ву)+МИН(ЧИСЛСТОЛБ(ву);ПОИС КПОЗ(I5;ву)+1)-1)))+ЕСЛИ((ИНДЕКС('Лист1'!$A$1:$CU$ 100;(СТРОКА(вх)+ЕСЛИ(K5<МИН(вх);;ПО ИСКПОЗ(K5;вх)-1));
(СТОЛБЕЦ(ву)+МИН(ЧИСЛСТОЛБ(ву);ПОИС КПОЗ(I5;ву)+1)-1)))=(ИНДЕКС('Лист1'!$A$1:$CU$100;( СТРОКА(вх)+МИН(ЧСТРОК(вх);ПОИСКПОЗ( K5;вх)+1)-1);
(СТОЛБЕЦ(ву)+МИН(ЧИСЛСТОЛБ(ву);ПОИС КПОЗ(I5;ву)+1)-1)));;((ИНДЕКС('Лист1'!$A$1:$CU$100 ;(СТРОКА(вх)+МИН(ЧСТРОК(вх);ПОИСКПО З(K5;вх)+1)-1);
(СТОЛБЕЦ(ву)+МИН(ЧИСЛСТОЛБ(ву);ПОИС КПОЗ(I5;ву)+1)-1)))-(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРОК А(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K5; вх)-1));
(СТОЛБЕЦ(ву)+МИН(ЧИСЛСТОЛБ(ву);ПОИС КПОЗ(I5;ву)+1)-1))))/((ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРО КА(вх)+МИН(ЧСТРОК(вх);ПОИСКПОЗ(K5;в х)+1)-1);
1))-(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРОК А(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K5; вх)-1));1)))*(K5-(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРОК А(вх)+
ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K5;вх)-1));1)))));;(((ИНДЕКС('Лист1'!$A$1: $CU$100;(СТРОКА(вх)+ЕСЛИ(K5<МИН(вх) ;;ПОИСКПОЗ(K5;вх)-1));(СТОЛБЕЦ(ву)+
МИН(ЧИСЛСТОЛБ(ву);ПОИСКПОЗ(I5;ву)+1 )-1)))+ЕСЛИ((ИНДЕКС('Лист1'!$A$1:$CU$ 100;(СТРОКА(вх)+ЕСЛИ(K5<МИН(вх);;ПО ИСКПОЗ(K5;вх)-1));
(СТОЛБЕЦ(ву)+МИН(ЧИСЛСТОЛБ(ву);ПОИС КПОЗ(I5;ву)+1)-1)))=(ИНДЕКС('Лист1'!$A$1:$CU$100;( СТРОКА(вх)+МИН(ЧСТРОК(вх);ПОИСКПОЗ( K5;вх)+1)-1);
(СТОЛБЕЦ(ву)+МИН(ЧИСЛСТОЛБ(ву);ПОИС КПОЗ(I5;ву)+1)-1)));;((ИНДЕКС('Лист1'!$A$1:$CU$100 ;(СТРОКА(вх)+МИН(ЧСТРОК(вх);ПОИСКПО З(K5;вх)+1)-1);
(СТОЛБЕЦ(ву)+МИН(ЧИСЛСТОЛБ(ву);ПОИС КПОЗ(I5;ву)+1)-1)))-(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРОК А(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K5; вх)-1));
(СТОЛБЕЦ(ву)+МИН(ЧИСЛСТОЛБ(ву);ПОИС КПОЗ(I5;ву)+1)-1))))/((ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРО КА(вх)+МИН(ЧСТРОК(вх);ПОИСКПОЗ(K5;в х)+1)-1);1))-
(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРОК А(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K5; вх)-1));1)))*(K5-(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРОК А(вх)+ЕСЛИ(K5<МИН(вх);
;ПОИСКПОЗ(K5;вх)-1));1)))))-((ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРО КА(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K5 ;вх)-1));(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);
;ПОИСКПОЗ(I5;ву)-1))))+ЕСЛИ((ИНДЕКС('Лист1'!$A$1:$CU $100;(СТРОКА(вх)+ЕСЛИ(K5<МИН(вх);;П ОИСКПОЗ(K5;вх)-1));(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);
;ПОИСКПОЗ(I5;ву)-1))))=(ИНДЕКС('Лист1'!$A$1:$CU$100; (СТРОКА(вх)+МИН(ЧСТРОК(вх);ПОИСКПОЗ (K5;вх)+1)-1);(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);
;ПОИСКПОЗ(I5;ву)-1))));;((ИНДЕКС('Лист1'!$A$1:$CU$10 0;(СТРОКА(вх)+МИН(ЧСТРОК(вх);ПОИСКП ОЗ(K5;вх)+1)-1);(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);
;ПОИСКПОЗ(I5;ву)-1))))-(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРОК А(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K5; вх)-1));(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);
;ПОИСКПОЗ(I5;ву)-1)))))/((ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРО КА(вх)+МИН(ЧСТРОК(вх);ПОИСКПОЗ(K5;в х)+1)-1);1))-(ИНДЕКС('Лист1'!$A$1:$CU$100;
(СТРОКА(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКП ОЗ(K5;вх)-1));1)))*(K5-(ИНДЕКС('Лист1'!$A$1:$CU$100;(СТРОК А(вх)+ЕСЛИ(K5<МИН(вх);;ПОИСКПОЗ(K5; вх)-1));
1))))))/((ИНДЕКС('Лист1'!$A$1:$CU$100;СТРОК А(ву);(СТОЛБЕЦ(ву)+МИН(ЧИСЛСТОЛБ(ву );ПОИСКПОЗ(I5;ву)+1)-1)))-(ИНДЕКС('Лист1'!$A$1:$CU$100;СТРОКА (ву);
(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);;ПОИСК ПОЗ(I5;ву)-1)))))*(I5-(ИНДЕКС('Лист1'!$A$1:$CU$100;СТРОКА (ву);(СТОЛБЕЦ(ву)+ЕСЛИ(I5<МИН(ву);; ПОИСКПОЗ(I5;ву)-1))))))

Последний раз редактировалось Tidus; 25.02.2016 в 22:07.
Tidus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Теорема Гаусса,вывод промежуточных значений lialia Общие вопросы Delphi 7 03.03.2014 21:41
Поиск массива с оповещением не найденных значений LanaLum Microsoft Office Excel 7 08.08.2012 08:56
Си/Си++ Поиск минимума кусочно-линейной функции Маришка_Курносова Помощь студентам 4 15.10.2010 20:39
Сортировка массива методом линейной вставки☺ m-o-r-t-r-o-m Фриланс 6 04.11.2009 14:59
Сложить без промежуточных значений valerij Microsoft Office Excel 5 07.04.2009 12:08