Страницы: 1
RSS
Нужно создать функцию интерполяции таблицы x1,x2,y1,y2, со значениями
 
Добрый вечер. Приложил файлы дабы словами не расписывать, что надо получить. Тема для меня новая. Поэтому не пойму с какого угла к ней подходить. Желательно задачу решить с помощью vba. Табличка в файле прилагается как проверочная.
 
Не понял, в каком смысле здесь используется термин интерполяция, а поиск значений можно осуществить простой формулой
Код
=ИНДЕКС($B$1:$S$21;ПОИСКПОЗ($E$32;$A$1:$A$21;0);ПОИСКПОЗ($D$32;$B$22:$S$22;0))
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
а поиск значений можно осуществить простой формулой

В том то и дело,  что таблицу использовать нельзя. Это я ее дал как проверочную.  
Цитата
Sanja написал:
Не понял, в каком смысле здесь используется термин интерполяция,
Вот на этом сайте  сайте очень похожие вычисления онлайн
 
кому нужно решение тот и готовит пример
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
вы о чем? не пойму..
 
извините, вижу картинку, но провтыкал, что прикреплен  файл. сейчас...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Вопрос даже не стоит в написании кода. Как эту задачу решить математически?
 
=((D32-1500)*(E32-1200))/10000

Бонус. Поиск в готовой таблице:
=ВПР(E32;A1:S21;ПОИСКПОЗ(D32;A22:S22;);)
=ВПР(E32;A1:S21;(D32-1500)/100+1;)
 
такое понятие как "линейная интерполяция" Вам о чем-то говорит?
                        f(X1) - f(X0)
f(x) = f(X0) + ------------------ (x - X0)
                            X1 - X0
в данной задаче ее следует проделать 3 раз - и результат у Вас в кармане!
Изменено: Ігор Гончаренко - 03.05.2017 23:48:58
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Да... формула не весело выглядит. Боюсь не осилю.
Цитата
vikttur написал:
=((D32-1500)*(E32-1200))/10000
Формула работает. Но ведь константы в ней были как то получены Из тех 4-х значений.  У меня стоит задача эти значения вносить как аргументы функции.

функция выглядит примерно так:
=интерполяция(x1,x2,y1,y2, x1y1value, x1y2value, x2y1value,x2y2value)
 
Код
=ЕСЛИ(к1=к2;х1;х1+(х2-х1)*(RC4-ИНДЕКС(т;22;к1))/(ИНДЕКС(т;22;к2)-ИНДЕКС(т;22;к1)))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Sla_0412 написал:  Как эту задачу решить математически?
Просили математически...
А родилась она из упрощения логически понятной:
=(D32-1500)/50+(E32-1400)/100*(D32-1500)/100
(D32-1500)/50 - по х получаем значение первой строки.
(E32-1400)/100 - положение строки по y. На 1 меньше (-1400, не -1300), т.к. значения первой строки уже имеем в левой части формулы.
(D32-1500)/100 - номер строки умножаем на значение первой строки по х.

Цитата
функция выглядит примерно так:
Не понял, зачем в ней столько значений? x1,x2,y1,y2 - это понятно, но как Вы в функцию хотите поместить результат, если она его вычисляет? Или я чего-то не понял...
 
Честно говоря значений даже недостаточно, те должно быть так =интерполяция(x1,x2,y1,y2, x1y1value, x1y2value, x2y1value,x2y2value, x,y)
Смысловые значения аргументов:

x1,x2,y1,y2= координаты таблицы (например ширина и высота конструкции)
x1y1value, x1y2value, x2y1value,x2y2value =значения на пересечении координат (стоимость конструкции)
эти значения можно вводить в качестве констант, предполагается что в зависимости от вида конструкций эти аргументы будут изменняться.

x,y =координаты аргументы для поиска значения функции "интерполяция"
В итоге пользователь должен ввести в функцию всего 2 аргумента x,y
 
Цитата
Ігор Гончаренко написал:
=ЕСЛИ(к1=к2;х1;х1+(х2-х1)*(RC4-ИНДЕКС(т;22;к1))/(ИНДЕКС(т;22;к2)-ИНДЕКС(т;22;к1)))
Игорь. Не правильно использовать проверочную таблицу для привязки ее значений к формулам, кроме левого нижнего угла с 8-ю значениями.(4 координаты и 4 значения) Если вы посмотрите внимательно, то она построена на элементарной формуле типа "=2*C21-B21" путем протягивания мышкой. Все остальные значения избыточны.
 
Как вариант..
 
в предложенной мною формуле ТРИ аргумета х и у и таблица с данными
формула:
по х, определяет х1 и х2
по у - у1 и у2
на пересечении этих координат определяет значения из таблицы данных x1y1value, x1y2value, x2y1value,x2y2value
на основании всех перечисленных значение происходит 3 интерполяции и возвращается результат из таблицы соответствующий значениям х и у
для примера посчитаны результаты для 3 пар х и у. пишите 4-юпару, 5-ю .... 147....копируйте формулу из ячеки выше
что-то посчиталось не так??? для какой пары х и у?

а формула которая Вам нужна написана в #9, если Вам нужна именно формула))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Всем огромное спасибо за помощь.
В моем примере решение без использования таблиц.
формулы взяты с этого сайта
Изменено: Sla_0412 - 04.05.2017 13:09:11
Страницы: 1
Наверх