Добрый вечер. Приложил файлы дабы словами не расписывать, что надо получить. Тема для меня новая. Поэтому не пойму с какого угла к ней подходить. Желательно задачу решить с помощью vba. Табличка в файле прилагается как проверочная.
Нужно создать функцию интерполяции таблицы x1,x2,y1,y2, со значениями
03.05.2017 20:50:46
|
|
|
|
03.05.2017 21:06:13
В том то и дело, что таблицу использовать нельзя. Это я ее дал как проверочную.
|
|||||
|
|
03.05.2017 22:07:30
кому нужно решение тот и готовит пример
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
|
|
|
|
03.05.2017 22:11:44
вы о чем? не пойму..
|
|
|
|
03.05.2017 22:16:54
извините, вижу картинку, но провтыкал, что прикреплен файл. сейчас...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
|
|
|
|
03.05.2017 23:09:23
Вопрос даже не стоит в написании кода. Как эту задачу решить математически?
|
|
|
|
03.05.2017 23:46:27
=((D32-1500)*(E32-1200))/10000
Бонус. Поиск в готовой таблице: =ВПР(E32;A1:S21;ПОИСКПОЗ(D32;A22:S22;);) =ВПР(E32;A1:S21;(D32-1500)/100+1;) |
|
|
|
03.05.2017 23:48:35
такое понятие как "линейная интерполяция" Вам о чем-то говорит?
f(X1) - f(X0) f(x) = f(X0) + ------------------ (x - X0) X1 - X0 в данной задаче ее следует проделать 3 раз - и результат у Вас в кармане!
Изменено:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
|
|
|
|
04.05.2017 00:06:06
Да... формула не весело выглядит. Боюсь не осилю.
функция выглядит примерно так: =интерполяция(x1,x2,y1,y2, x1y1value, x1y2value, x2y1value,x2y2value) |
|||
|
|
04.05.2017 00:25:06
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
|
|||
|
|
04.05.2017 00:30:25
А родилась она из упрощения логически понятной: =(D32-1500)/50+(E32-1400)/100*(D32-1500)/100 (D32-1500)/50 - по х получаем значение первой строки. (E32-1400)/100 - положение строки по y. На 1 меньше (-1400, не -1300), т.к. значения первой строки уже имеем в левой части формулы. (D32-1500)/100 - номер строки умножаем на значение первой строки по х.
|
|||||
|
|
04.05.2017 00:54:59
Честно говоря значений даже недостаточно, те должно быть так =интерполяция(x1,x2,y1,y2, x1y1value, x1y2value, x2y1value,x2y2value, x,y)
Смысловые значения аргументов: x1,x2,y1,y2= координаты таблицы (например ширина и высота конструкции) x1y1value, x1y2value, x2y1value,x2y2value =значения на пересечении координат (стоимость конструкции) эти значения можно вводить в качестве констант, предполагается что в зависимости от вида конструкций эти аргументы будут изменняться. x,y =координаты аргументы для поиска значения функции "интерполяция" В итоге пользователь должен ввести в функцию всего 2 аргумента x,y |
|
|
|
04.05.2017 01:04:15
|
|||
|
|
04.05.2017 08:48:21
Как вариант..
|
|
|
|
04.05.2017 09:18:45
в предложенной мною формуле ТРИ аргумета х и у и таблица с данными
формула: по х, определяет х1 и х2 по у - у1 и у2 на пересечении этих координат определяет значения из таблицы данных x1y1value, x1y2value, x2y1value,x2y2value на основании всех перечисленных значение происходит 3 интерполяции и возвращается результат из таблицы соответствующий значениям х и у для примера посчитаны результаты для 3 пар х и у. пишите 4-юпару, 5-ю .... 147....копируйте формулу из ячеки выше что-то посчиталось не так??? для какой пары х и у? а формула которая Вам нужна написана в #9, если Вам нужна именно формула))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
|
|
|
|
04.05.2017 13:08:26
|
||||
|
|
|||