Страницы: Пред. 1 2 3 След.
RSS
Интерполирование изнутри таблицы, Обратная интерполяция
 
Не я автор - Дж. Уокенбах ))
 
Юрий М, а чем съём макросом с графика будет лучше? Погрешность-то даже в формульных туда-сюда-обратно вариантах остаётся.
 
Андрей, привет! А я и не утверждал это ))
 
Андрей VG,Скажите,какие пути возможны для повышения точности расчётов?,т.к. здесь,в приведённых Вами,погрешность Volume составляет аж 3.23%,что при практическом  применении не допустимо.Volume состоит в формуле,учитывающей и коэфф. температурного расширения объёма,тепловые потери участка трубопровода,Крена(наклона в плоскости перпенд. дифф.)-что также даёт дополнительную погрешн.В итоге,расчёт сводится на "нет".По требованиям о приёмке топлива,общая погрешн. не должна превышать 1%.
Изменено: msr.Kot - 21.09.2019 22:25:33
 
Цитата
msr.Kot написал:
какие пути возможны для повышения точности расчётов?
в обратных вычислениях используйте линейную интерполяцию, как при определении VOLUME (в моем случае я считал Fxy)

для любых TRIM и SOUNDING посчитайте VOLUME
напишите сюда TRIM и VOLUME, который получили со всеми цифрами
скажите сколько знаков после запятой было в исходном SOUNDING, я его напишу в след сообщении
Изменено: Ігор Гончаренко - 21.09.2019 23:13:07
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,Приветствую!
Понял....в обработке.....
А файл Андрея см. выше : _SOUNDING_T-ver.Вопрос (1).xlsx не подходит?Там расчёт и проверка.
Значит ,Вы сможете прописать Код округления чисел для погрешности,вызванной особенностью спецификации IEEE 754....Спасибо за участие
А как насчёт VBA кода к Fxy ?
Изменено: msr.Kot - 21.09.2019 23:46:25
 
Код
Function Fxy#(Tablo As Range, r#, c#)
  Dim ri&, ci&
  ri = 1 + FindIndex(Range(Tablo.Cells(2, 1), Tablo.Cells(Tablo.Rows.Count, 1)), r)
  ci = 1 + FindIndex(Range(Tablo.Cells(1, 2), Tablo.Cells(1, Tablo.Columns.Count)), c)
  Fxy = Fx(c, Tablo.Cells(1, ci), Tablo.Cells(1, ci + 1), _
  Fx(r, Tablo.Cells(ri, 1), Tablo.Cells(ri + 1, 1), Tablo.Cells(ri, ci), Tablo.Cells(ri + 1, ci)), _
  Fx(r, Tablo.Cells(ri, 1), Tablo.Cells(ri + 1, 1), Tablo.Cells(ri, ci + 1), Tablo.Cells(ri + 1, ci + 1)))
End Function
это же есть в файлах в сообщениях #9  и  #17
в сообщении  #21 некоторое время была функция SOUNDING, которая на основании таблицы  TRIM и VOLUME определяла  SOUNDING
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
это же есть в файлах в сообщениях #9  и  #17
Абсолютно верно....проглядел....))Спасибо
Изменено: msr.Kot - 22.09.2019 02:30:12
 
Цитата
msr.Kot написал:
По требованиям о приёмке топлива,общая погрешн. не должна превышать 1%.
А тут большой вопрос, что на самом деле вы хотите? Чтобы сбивались формулы прямого и обратного расчётов? Так это не проблема... Ігор Гончаренко, предложил вариант. Если попыхтеть, то можно и формулами решить.
Но, вот если вы хотите знать действительное количество топлива, то градация таблицы этого не позволяет сделать.
Результаты расчётов Volume при равных Trim, Sound у вас, Игоря и у меня совпадают. Но, можно интерполировать разбиением выпуклого четырёхугольника на треугольники, проводя диагонали. Можем получить два варианта. Возьмем Trim = -1,5; Sound = 5,5 получим
По общему для нас подходу Volume будет  1,0225
При триангуляционном с "левого верхнего в правый нижний" 1,05
При триангуляционном с "правого верхнего в левый нижний" 0,995
Не получаются заветный 1% :)  Следовательно, таблица не гарантирует точности расчётов. И проводились ли при её составлении контрольные замеры, а действительно ли при промежуточных значениях Trim, Sound результаты, получаемые расчётным путём и фактическое значение совпадают до 1% мы знаем? Так что, полагаю, всё как всегда, где-то тут и как-то так...
 
Андрей прав, алгоритм должен отрабатывать с нужной точностью. Посчитать число с любым количеством знаков после запятой это не проблема, но вопрос не в точности, а в алгоритме.
«Бритва Оккама» или «Принцип Калашникова»?
 
в математике известно много видов интерполяции (по функции заданной в табличной форме (по множеству дискретных значений функции) определить значение функции в произвольной точке)
использованный автором метод линейной интерполяции (с помощью 3-х ПРЕДСКАЗ()) дает однозначный результат
- как при поиске VOLUME по заданным TRIM и SOUNDING
- так и при определении SOUNDING по заданным TRIM и VOLUME
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
так и при определении SOUNDING по заданным TRIM и VOLUME
Дополню, что при формульном решении нужно определять в каком диапазоне находится Trim. По данным в примере  от-1,4 до -1 Sound в диапазоне 5 - 6, от -1,7 до 1,4 в 6 - 7, от -1,7 и почти до -2,0 в 7 - 8, остаток в 8 - 9.
Может отдохнувший медведь возьмётся забороть формулами.
Изменено: Андрей VG - 22.09.2019 14:13:26
 
Из всего вышесказанного напрашивается вывод,что графики изменения объёмов криволинейны,и линейная интерполяция всегда будет выдавать ошибку. Только какой функцией определяется это изменение.?.
 
Цитата
msr.Kot написал:
линейная интерполяция всегда будет выдавать ошибку
Тут главное - чтобы эта ошибка не превышала требований. Вы уверены, что таблица в узлах даёт 100% точность?
А так, если вести расчёт Sound в пределах "площадки" 5-6, -2--1, то для Volume 1,198 - получим Sound ровно 5,5. Для 1,2 получим 5,508 - что укладывается в 0,15% отклонения. Так что, в пределах данного подхода интерполяции - всё соответствует требованиям. А насколько реально хорошо - это можно установить только натурным экспериментом, полагаю.
Изменено: Андрей VG - 23.09.2019 09:02:45
 
Цитата
Андрей VG написал:
Вы уверены, что таблица в узлах даёт 100% точность?
Уверенности нет,однако данная таблица со своими данными в узлах - это официальный документ,поэтому именно при этих условиях приходится работать.
Цитата
Андрей VG написал:
если вести расчёт Sound в пределах "площадки" 5-6,
Полагаю,этот предел вы взяли для примера?
Цитата
Андрей VG написал:
что укладывается в 0,15% отклонения
Конечно хотелось бы добиться Абсолютной точности...)))
Хорошо,если определить функцию изменения Volume по Trim и Sound не удастся,то возможно :
-проанализировать графики,отстроенные в узловых пределах (5-6.....8-9),только по промежуточным (получ-х линейной интерпол.)значениям с шагом желаемой точности,например 0.01.И тогда ввести в формулы поправочные коэфф. с помощью функции ЕСЛИ() и/или ОКРУГМИН() ; либо снимать Макросом с уже заранее исправленных графиков.Только Как автоматизировать процесс обработки множества данных.....?
Изменено: msr.Kot - 23.09.2019 13:05:52
 
Цитата
msr.Kot написал:
хотелось бы добиться Абсолютной точности.
Вы это серьёзно? Во всех узлах Volume представлен двумя знаками после запятой :)  Вы уверены, что именно так было и нигде не было 0,053?
Цитата
msr.Kot написал:
определить функцию изменения Volume по Trim и Sound
Так это то самая простая функция - таблица именно для этих расчётов и предназначена - задаёт площадку, в рамках которой билинейной интерполяцией и находится значение.
Вот для нахождения Sound - есть проблема. Как видно горизонталь Volume = 1,2 проходит через четыре площадки таблицы в пределах Trim -2--1, соответственно по значению Trim -1,2 нужно установить в какой площадке будет находится искомый Sound и только тогда пользоваться билинейной интерполяцией по данным найденной площадки. Проще это делать UDF-функцией, на мой взгляд.
 
исхлодная таблица такая, какая она есть, что ее обсуждать
msr.Kot, назовите два значение  TRIM и VOLUME, который Вы получили при определенном значении SOUNDING,  скажите сколько знаков после запятой вернуть в SOUNDING, а напишу Вам его
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Попробуйте использовать такую формулу
Код
=СУММПРОИЗВ(tab*ЕСЛИОШИБКА(((B3*{1;1;1})^{2;1;0});1)*ЕСЛИОШИБКА(((C3*{1:1:1:1:1})^{4:3:2:1:0});1))
где имя tab является массивом констант
Код
={-1,32677393639872E-12;-5,72227801600592E-11;1,61219502739379E-10:3,73872094241985E-10;8,83448629062083E-08;-3,91630323287405E-07:9,76933077421451E-07;-0,0000465741235074395;0,000425209399317933:-0,000520863986380543;0,0108378065112232;0,333551954181801:0,0646927560354592;0,894462886619609;-0,935924918847147}
для большей части таблицы (SOUNDING > 120 см) эта формула возвращает значения с точностью менее 1%, однако для малых значений параметра (SOUNDING < 20 см) ее неточность достаточно велика (превышает 5%)

Одним из преимуществ данной формулы является отсутствие необходимости обращаться к оригинальной таблице - все данные генерируются на базе таблицы констант.

Пользуюсь случаем еще раз поблагодарить ZVI за помощь в определении коэффициентов линий тренда
========================================
Обратите внимание на изменения в оригинальной таблице (см. примечания к ячейкам) - некорректное распознавание чисел и грубые промахи были исправлены по соседним числам
Изменено: IKor - 23.09.2019 19:28:33
 
Цитата
IKor написал:
Попробуйте использовать такую формулу
Спасибо за объёмный анализ, в обработке.....
Пожалуй перекройка исходной таблицы не лучший выход.....
Цитата
Ігор Гончаренко написал:
сколько знаков после запятой вернуть в Sounding
Я рассматриваю все значения Sound,Ull,Vol с 2-мя знаками после зпт,любые числа в пределах таблицы. Задача : добиться максимальной точности при вычислении Sound.Достаточно,чтобы обратная проверка выдавала исходный результат до 2-го знака(Используя, например расчёты из файла сообщ.#24).
Цитата
Андрей VG написал:
Проще это делать UDF-функцией, на мой взгляд.
Например?
Изменено: msr.Kot - 24.09.2019 20:30:43
 
Здравствуйте!
Изменено: Den& - 26.09.2019 21:59:30
 
Ознакомьтесь с правиами форума.
Вопрос (вопросы!) не по теме. Совпадение одного слова в задаче и теме  еще не значит, что  вопросы  одинаковые.
 
msr.Kot, а зачем Вы завели второй аккаунт?
 
Юрий М, глюк системы...
vikttur, господин Модератор,Ваша правда,каюсь,удаляюсь.Оформить в новой теме?
Изменено: msr.Kot - 26.09.2019 22:05:01
 
Какой ещё глюк? Система не может сама создать учётку.
 
Глюк мозговой системы.....
 
Ну тогда загляните в правила. Особое внимание на пункт 3.3
 
Юрий М, в будущем лучше спрашивать, знаком ли ТС с "новым" или типа того. И вот если ТС врёт, то это тревожный звоночек и надо брать "на карандаш". Нам тут мозговые глюки не нужны  ;)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Сильно глюкнул мозг... Даже имя свое забыл - в одной учетке Константин, в другой - Денис.
Не надо врать. Бан учеток.
 
И аватар мне не нравится, чуть с Андреем (RAN) не спутал
По вопросам из тем форума, личку не читаю.
 
Андрей знал и в теме не появился. И правильно, могли его по ошибке забанить :)
Страницы: Пред. 1 2 3 След.
Наверх