Регистрация Правила Главная форума Поиск |
0
- 19.05.2017 - 19:40
|
Для тех, кому не лень размяться в арифметике - Задача : Составить наикратчайшую функцию, вычисляющую У от Х. Имеем Таблицу значений из двух колонок Х, У . У= f(x); Написать ф-цию на 1Сv77. А можно и на любом языке, важен алгоритм. Сравнивать длину кода будем по коду в 77. | | |
121
- 25.05.2017 - 06:29
| А ты поняла, что за формула МинЦена=75+7*х+?(х%2=0,?(х>57,3,1),?(х>44,2,0)); Что за цифры 75, и 7? Для чего и зачем х%2 , можешь объяснить этот алгоритм ? | | |
122
- 25.05.2017 - 06:52
| На редиске объясняю. Например, на рынке продавцы договорились продавать редиску по цене не ниже 50р за пучок. Все себе стоят и торгуют по 50Р, а один маленький, но очень гордый, продавец выставил цену 60р. Все хорошо распродались, а наш гордый продавец продал всего один пучок какому-то сумасшедшему олигарху, который цену не спрашивает, и даже сдачу не берет. День простоял, а всей выручки не хватило и место на рынке оплатить. Вот тебе пример, когда дороже продавать себе в убыток. Рынок, панимаш-ли. | | |
123
- 25.05.2017 - 08:15
| Цитата:
Так вот же ж Я то наивно думала, что это старый-престарый бородатый-пребородатый анекдот. Но Шухер его умудрился превратить в реалии. "Идёт мужчина по Привозу. Видит, продают семечки. У одного торговца цена - 10 копеек, у другого - 10 копеек. Отдельно сидит еврей и торгует семечками по 20 копеек за стакан. - Товарищ, почему вы продаёте семечки по двадцать копеек, а другие - по десять? - Вы что, сами не понимаете, что двадцать копеек таки больше, чем десять?" (с) | | |
124
- 25.05.2017 - 08:17
| Зачем какие-то таблицы плодить, если все замечательно вычисляется по формуле? Полностью исключает ошибки, которые могут закрасться при составлении таблиц, ибо их нет вообще. Формула, сссЭр ! :)) Раньше, когда мнения расходились, спрашивали - "ты с какова городу?" :) Сейчас можно обновить мем : Ты по какому учебнику учился? :))) | | |
125
- 25.05.2017 - 08:25
| Дело хозяйское. У всех свои предпочтения | | |
126
- 25.05.2017 - 08:27
| Табличный способ универсален, легко меняются данные и очень нагляден | | |
127
- 25.05.2017 - 10:23
| Спорим тут за рыбу-мясо. Этих известных точек может быть достаточно много, что захочется придумать формулу, чтобы не заполнять таблицу в ручную. | | |
128
- 25.05.2017 - 10:32
| Чем больше точек, тем сложнее решить задачу аппроксимации. А там еще не дай бог вступит в дело такая вещь, как "плохая обусловленность" системы линейных уравнений со всеми своими красивыми последствиями. Я просто В ПРИНЦИПЕ не вижу необходимости параметризовывать этот дискретный набор данных, если использоваться будет только он. Аппроксимируют для вычислений в промежуточных точках, интерполируют для предсказания в отсутствующих точках. А искать функцию, чтобы вычислить уже имеющееся значение в имеющейся точке .. ну нравится, вычисляй. Дело вкуса каждого. Благо сейчас функция относительно некривая ) | | |
129
- 25.05.2017 - 10:33
| а заполнять вручную все равно придется, хотя бы для того чтобы получить формулу. | | |
130
- 25.05.2017 - 11:11
| Цитата:
Когда я только закончила институт, то попала по распределению в одно интересное тульское КБ. Там как раз разрабатывали одну не менее интересную штучку, стоящую ныне на вооружении под названием "Зоопарк-2". И есть там во внутренностях этого зоопарка один интересный такой вычислитель. Не суть важно, что он вычисляет, но в мою бытность там в ПЗУ (на той элементной базе) на момент сдачи комплекса военприемке оставалось свободными всего 22 байта. Начальник мой, Марк Исаакович, как только не изгалялся, чтобы впихнуть программку для этого спецвычислителя в ограниченный объем ПЗУ. И ведь умудрился. А меня при этом знаешь как в мой код на ассемблере тыкал носом. До сих пор нос болит. Вот он бы выразился про "В ПРИНЦИПЕ". Это сейчас мегабайт туда, мегабайт сюда - фигня вопрос. Пару гиг на диске вообще мелочь. Разбаловались. Особенно 1С-ники. А так то между запихнуть в ПЗУ массив данных или коротенькую формулу - В ПРИНЦИПЕ разница немножко есть :) Поэтому сабж (под знаком OFF, напомню) вполне себе имеет право на существование. Не для решения какой-то конкретной сиюминутной задачки по 1С, а именно как OFF. Поэтому не нравится - просто не открывай подобные ветки, промаркированные "OFF", и всего-то. Для разработки на 1С это никак не повлияет. это же оффтопик. У волшебника вон "страну 404" обсуждают в оффтопиках, а тут Бронштенйа с Семендяевым и Корна с Корн. Кстати, у меня Г. и Т. Корн за 3 руб. 89 коп., год 1973, а у тебя год 1978 и цена уже 4 руб., так что можно сделать некий предположительный вывод, что и в 70-х годах инфляция была, на 11 копеек за пять лет справочник подорожал. :) | | |
131
- 25.05.2017 - 11:38
|
130-Блондинка в шок > у меня 1977, 3-70: | | |
132
- 25.05.2017 - 12:47
| Если не решать подобные задачи, не лазить по справочникам и учебникам, мозг засыпает, просто теряет способность думать. Мозг, как бы, окутывает лень и чем дальше находишься в ленной спячке, тем тяжелее выбираться из этого состояния. Я вот очень благодарен всем участникам этой дискуссии, и лично товарищам Зеленому, Гене и Блондинке в шок с этой аппроксимацией. У меня сейчас такой прилив энергии, какая-то Радость появилась, получаю удовольствие. Кому-то нравится сканворды решать, а кому-то арифметика нравится. | | |
133
- 25.05.2017 - 12:58
| Кажись придумал, как погрешность побороть до нуля для 2У и остальных рядов. 22 байта в нашем ПЗУ еще есть свободных, попробуем впихнуть код. :) | | |
134
- 25.05.2017 - 15:23
| (130)Длинный рассказ) я видел много всяких вычислителей, и сам делал решения с помощью только целочисленной арифметики, только сложение и вычитание и умножение-деление на 2 путем сдвигов регистра. Поэтому знаю, что такое быстродействие и память тогда и сейчас. Ну нравится Вам, аппроксимируйте, завтра изменится пара значений в таблице, начнете снова аппроксимировать, лишь только для того, чтобы получить те же самые точки по которым аппроксимировали. На этот случай я тоже могу вспомнить про кота, которому делать нечего. Ну если настаиваете, что не в ПРИНЦИПЕ,пусть будет не в принципе, пусть аппроксимация будет единственным верным решением )) А Корны были всякие, у меня 4 издание, 821 стр. | | |
135
- 25.05.2017 - 15:26
| (133)Можно еще долго придумывать разное и бороть, в этой области занятий хватит ) Как проснулся, сразу на борьбу, позавтракал и опять бороться ) Считаться это все будет на ДВК-2 или на Спектруме ?) | | |
136
- 25.05.2017 - 19:08
| USSR в принципе не желает порешать математическую задачку. Придумывает всякие отговорки, чтобы ничего не делать. Настоящий программист, матёрый :) | | |
137
- 25.05.2017 - 19:31
|
Не получается выровнять для ряда 2У без "если". Очень уж жесткие рамки, нет возможности для маневра. Ну и ладно. Лучше другую задачку уже решать. С этой успешно справились. Блондинка в шок нашла самое интересное решение. Даже USSR, зная и покруче решения, не смог применить их на практике, и продемонстрировать их крутость. Всем огромное спасибо, было приятно пообщаться. Появится еще похожая задачка, непременно сразу к вам :) | | |
138
- 25.05.2017 - 20:03
| (136)Я предложил решение исходной задачи, но без аппроксимации, поэтому я задачу решил. Аппроксимировать я нигде не обещал. Решений несколько: Массив, Справочник, РегистрСведений, выбирай не хочу. А строить функцию по точкам, чтобы потом опять получить эти же точке, ну это вне моих вкусовых предпочтений. Иногда Пискунов просто лишний ) У нас был препод по вышке, со странностями, но он обожао математику и его за это уважали. Так у него за правильное, ер длинное решение можно быдо на экзамене элементарно получить пару. Он просто смотрел, что это полторы страницы, а не 5 строчек и банан в зачетку. | | |
139
- 25.05.2017 - 20:23
| У тебя и получилось на полторы страницы. Сам массив, а потом поиск по нему и извлечение инфы. А у всех пара строк кода из коротеньких формул, которые легко читаются. Хорошо, что 1С-никам не надо описывать векторную графику, а то бы можно было себе представить размерчик таких массивов. Я так считаю, если есть хоть какая-то малая возможность воспользоваться вычислениями, надо ими воспользоваться, максимально избегать наваливания кучи справочников и ненужных лишних массивов. | | |
140
- 25.05.2017 - 20:34
| (139)не буду спорить, каждому свое. Вычисления разные бывают. Какой тут массив 200 точек, говорить то смешно про размер. Будет векторная графика, будет другой разговор, зачем все в кучу валить. Здесь была другая задача. Останемся при своем. | | |
141
- 26.05.2017 - 23:43
| Предлагаю всем недоспорившим померяться силами в этой ветке: Как в Екселе реализовать такой алгоритм? | | |
142
- 27.05.2017 - 06:34
|
141-Ткачик > По накатанной :) x y 1 367 2 439 3 517 4 613 5 721 6 823 7 931 Уравнение линейной регрессии имеет вид у=95*х+ 250 Спускаем вниз на 20 пунктов нашу прямую, чтобы все заданные известные точки оказались выше расчетных, и потом при вычислениях округляем вверх. у = 95*х +230 --> вычисляем х и округляем вверх до целого. х=(у-230)/95 Нашли ближайшее значение Х, теперь сравниваем У(х) с У_табличным(х). Если У_табл меньше тогда спускаемся Х=х-1. Х- порядковый номер в заданном ряду значений У. Можно написать макрос, а можно и в ячейке формулу составить по условию. Еще надо по диапазону ограниечение на Мин, чтобы не выскочить. В данном примере Х не может быть больше 7. | | |
143
- 27.05.2017 - 08:11
| Это я тут наврал, наоборот надо. Подумал, лучше вообще не округлять вверх. Сразу проверить округление вниз до целого. Если табличное значение окажется меньше, добавляем х = цел(х)+1 Пример, вычислим ближайший больший У_табл для у= 437: х=(437-230)/95 = 2,18 х=цел(2,18) = 2 У_табл(2) = 439 х= ?(У_табл >у , х, х+1); 439 > 437 х=2 | | |
144
- 27.05.2017 - 10:26
| (142Б143)И воткнешь ты эту хрень заказчику, будет она исправно считать какое-то время, тут ты уедешь в Турцию или в Крым попу греть, и как обычно бывает, Заказчик решит поменять пару-другую точек. И не работает потом и кровью полученная функция, и заново надо ее получать. И так всякий раз. Называется все это - одноразовое решение. | | |
145
- 27.05.2017 - 12:16
|
144-USSR > В целом я с тобой согласен, универсальностью метод не блещет. Заточен под конкретные данные. В данном конкретном примере я просто обкатываю понравившийся мне метод. Не могу согласиться, что везде надо именно таблицы использовать. Если в них менять как попало данные, и твой универсальный метод тоже запросто в тупик можно загнать. Данные должны быть некоторым образом упорядочены и подчиняться некоторой логике. Этот спор ни о чем. Вместо спора и порожней болтовни, помоги человеку решить его задачу в Ексель. | | |
146
- 27.05.2017 - 13:00
| хи.. 1С-ники порой такие предсказуемые. Все зашорены Заказчиками и Отпусками в Крыму :))) Вообще то если это для 1С, то такие элементарные моменты (вариации исходных данных) обычно оговариваются еще на момент постановки ТЗ. Возможно (только возможно) данные в таблице будут меняться ежедневно. И тогда решение Шухера не годится. А возможно (опять же - только возможно) - это просто задачка из учебника, и тогда решение Шухера очень даже вполне. ================================================== ==== Да. И что? Не вижу ничего предосудительного в таком решении задачки из учебника. Ты же не будешь говорить, что учебники перепечатываются ежемесячно. :) зы: судя по другим темам автора, он ни разу не программист. И уж не 1С-ник точно. А вот студент - вполне может быть.. И для него такое одноразовое решение - весьма неплохо. По крайней мере, будет что-то оригинальное в сравнении с общей массой других студентов, которые будут тупо решать перебором таблиц. Особенно, если в методичке не оговорена вариативность исходных данных. И, я надеюсь, у его преподавателя нет зашоренности насчет Заказчика и Турции. | | |
147
- 27.05.2017 - 13:03
| А если необходимо предусмотреть, что данные ряда могут меняться, конечно так чтобы ошибка аппроксимации не зашкаливала, и данные соответствовали с допустимой погрешностью прямой у=ах+в. Тогда можно легко автоматизировать пересчет (а,в) по правилу Крамера, по известным уже формулам. И можно спокойно ехать в Турцию. | | |
148
- 27.05.2017 - 13:40
|
(145)Из какого учебника?) Было же сказано вроде, что это прикладная задача. цифры - цены на алкоголь. Предсказуемость состоит не в том, чтобы бы быть озабоченным заказчиком, а в том, что делаются некачественные решения, сделанные на тоненького и целиком зависящие от программиста. Немало видел конфигураций, где и ищется по коду или по наименованию товара, где скидки программируются с конкретными числами в формулах. И ведь работало, и даже правильно. Если речь лишь об аппроксимации, то ради бога, всякое решение имеет право быть. Если речь об исходной задаче получения цен, то аппроксимация один из возможных подходов к решению, на мой взгляд, крайне неудачный. И не надо перебирать никаких таблиц. Это же не решение, если строится некая зависимость, а потом в точках округляется вверх-вниз. В чем ценность этого решения ? Как упражнение - ну разве что. Как прикладное решение - ну извините. А если уж строится зависимость, то ее тоже надо строить согласно математической науке. Я честно говоря не вьехал, а в чем состоят вычислительные ограничения задачи, почему надо короткий код ? Это где-то на орбите будет вычисляться ?) | | |
149
- 27.05.2017 - 13:47
| (147)а с правилом Крамера все красиво только на учебных примерах второго-третьего порядка. Задачи аппроксимации как правило плохо обусловлены (определитель бывает близок к нулю) и можно нахватать огромные погрешности. С помощью хранения этого ряда в справочнике я решил бы эту задачу максимум за полчаса, причем данные хранились бы наглядно, их можно было бы распечатать, подписать и тд. а не манипулировать какой-то непонятной формулой, неизвестно откуда взятой. Тем более, что для получения этой формулы все равно надо заносить данные в Excel или Маткад (там тоже можно ошибиться), но об этом как-то умалчивается. | | |
150
- 27.05.2017 - 13:49
|
но вообще то, если это задание из методички для студентов именно на знание Ексель, а не на алгоритмы, то я бы в так сформулированном задании в (141) вообще бы использовала специфические функции ВПР() или даже для несортированного списка ПРОСМОТР(), ИНДЕКС(), ПОИСКПОЗ() Понятно, что в (141) задание именно про Ексель (не про 1С). Непонятно, на что упор - на "нестандартный" алгоритм или на знание типовых функций Екселя, в частности, той же функции ВПР() Если на нестандартный алгоритм - то решение Шухера для преподавателя будет явно нестандартное :) Если на тупое знание Екселя- то смотри вышеперечисленные функции. Если на универсальность и предполагаемый отпуск в Анталии - то, естественно, решение через перебор таблиц. Особенно если наряду с отпуском предположить, что табличные данные могут быть произвольными и ряд через линейное уравнение просто не сможет решаться в принципе, вдруг там будет "ряд ступеньками", причем абсолютно произвольными ступеньками. | | |
151
- 27.05.2017 - 13:56
|
148-USSR > Цитата:
зы: мда. 1С-ник, "ясновидящий про Турцию и Заказчика", не удосужился прочитать задание в (141), которое (задание) вообще опубликовано даже не в разделе форума 1С, а совершенно в другом разделе ("Разработка программ") да и опубликовано человеком, к 1С не имеющим никакого отношения. пичалька.. как же ж ты с Закачиками то договариваешься? При такой то невнимательности к заданию.. | | |
152
- 27.05.2017 - 14:07
|
В общем, конкретно для (141) - в Ексель юзается функция ВПР(). Код копипастить (даже не писать) лень, ибо Яндекс дает 20 млн результатов поиска. Все. | | |
153
- 27.05.2017 - 14:41
|
152 + хотя разумеется, как сказано выше, можно использовать и другие функции - ИНДЕКС(ПОИСКПОЗ()) ну и разумеется должны предусмотреть сравнение на точное/ неточное, тут использовать функцию ЕСЛИОШИБКА() короче алгоритм типа такого 1. вариант с ВПР() и используется "Х", "У" Сначала через ВПР() ищем на точное совпадение У. Если нашли - то вот они и "Х" и "У" :) ЕСЛИОШИБКА() - то делаем поиск на неточное сравнение (получаем ближайшее снизу) и соответственно Х=Х+1, а от него уже получаем соответствующий У. - вариант с ПОИСКПОЗ() (и даже без "Х") опять же сначала поиск на точное сравнение ИНДЕКС(ПОИСКПОЗ()) нашли - молодцы, а - ЕСЛИОШИБКА(), то поиск на неточное, получаем ближайший снизу индекс и увеличиваем его на 1. ИНДЕКС(ПОИСКПОЗ()+1) | | |
154
- 27.05.2017 - 14:53
|
(150)ну уж извините, коли я не разобрался в политических тонкостях техзадания. Я понял так как понял. Мои заказчики тут совершенно непричем, с ними общаться никого на помощь не зову, сам управляюсь. Недовольных заказчиков тоже не наблюдал. Поэтому не надо все в одну "женскую" кучку сваливать. Надо всего лишь четко формулировать задачу (чего я добивался с самого начала), тогда можно обсуждать и решения. Если это учебная задача, то я хотел бы видеть дословно как она формулируется. Я очень сомневаюсь, что именно так как нам ее преподали. (Шухер) в чем проблема без всяких ломаний и стеснений выложить задачу в исходном виде, чтобы не вводить в заблуждение прогрессивную и непрогрессивную общественности? Если ты учишься, то что в этом стыдного? Это наоборот почетно и правильно. Если это действительно торговля алкоголем, то тоже не вижу ничего зазорного. | | |
155
- 27.05.2017 - 16:02
|
154-USSR >В (141) другая задача. Шухер тут ни при чем. Эту задачу выложил сторонний человек в другом разделе форума, а предложил сюда в эту ветку Ткачик. Постановка этой второй задачи к Шухеру не имеет никакого отношения. :) Задание к этой второй задачке сформулировано, по моему, однозначно в части среды разработки (четко указано - Ексель) да и само по себе весьма специфично в части требований к знанию конкретных функций Екселя, и поэтому отсюда я сделала предположение (см. внимательно в (146) -"возможно" sic!) что это чисто учебная задача. Потому что спрашивать на форуме про "алгоритмы в Ексель" для реальных практических задач - хм... ну как то оно.. хм... А вот для студента такой вопрос - естественен. Причем даже смею предположить, для студента не "программистских специальностей", а какого-нибудь финансиста-экономиста-бухгалтера. Причем возможно даже не ВУЗА, а техникума. Читают же им какой-нибудь курс, связанный с IT. :) ======== А это меня развеселило. Без обид. Просто юморно выглядит. ========================== Цитата:
и поэтому не поняла, почему ты так самокритично называешь свою кучку "женская". :)))))) | | |
156
- 27.05.2017 - 16:10
| вы же вроде собирались угомониться и разойтись миром? | |
| Интернет-форум Краснодарского края и Краснодара |