Регистрация Правила Главная форума Поиск |
0
- 19.05.2017 - 19:40
|
Для тех, кому не лень размяться в арифметике - Задача : Составить наикратчайшую функцию, вычисляющую У от Х. Имеем Таблицу значений из двух колонок Х, У . У= f(x); Написать ф-цию на 1Сv77. А можно и на любом языке, важен алгоритм. Сравнивать длину кода будем по коду в 77. | | |
81
- 23.05.2017 - 07:13
| Задача поставлена корректно, ты нашел Таблицу ? Все опубликованные решения вычисляют значения у=f(x) с абсолютной точностью. Видел, там у всех ф-ция ОКР() используется ? Цитата:
https://cloud.mail.ru/public/41KG/UkKPLUoLn Функции посмотри, как они справляются с этой нелегкой задачей и находят значения У при Х<29 и Х>61 Естественно, что без логических условных операторов никакая аппроксимация не справится с решением. Но у нас-то задача написать Программу - Функцию на любом языке программирования. Не знаю уж как понятнее поставить эту задачу. Отредактировано Шухер; 23.05.2017 в 07:15. Причина: орфо | | |
82
- 23.05.2017 - 08:15
| (81)Ну значит я не до конца вьехал, приношу извинения. | | |
83
- 23.05.2017 - 12:03
| Да мы-то знаем. Что там решать, простейшая задачка с линейным уравнением для первого курса. Так спрашиваем, вас проверить :))))) | | |
84
- 23.05.2017 - 12:11
|
82-USSR > Ну вот, с техзаданием разобрались. Конкретные значения пар {x,y** уже есть, теперь может методами интерполяции получится найти элегантное решение? | | |
85
- 23.05.2017 - 18:40
|
Вот, а для ряда Х, 2*У то есть Х, У, 2*У 29 139 278 30 143 286 31 146 292 и так далее, уже не получается подобрать а и в У меня так получилось а = 7,070435447 в = 73,00106952 Цифры рядом, но погрешность не позволяет воспользоваться Окр. Где-то теряем 1, где-то лишняя. | | |
86
- 23.05.2017 - 18:51
|
если разрядности не хватает, повышай степень функции. и у ОКР можно явно указать количество знаков после запятой | | |
87
- 23.05.2017 - 19:03
| Куда еще повышать, и так а,в, подбираются чтобы погрешность стремилась к нулю. Шаг влево - вправо ухудшают картину. | | |
88
- 23.05.2017 - 19:34
|
Не получается аппроксимировать, с идеей 2*у можно расстаться. Кому надо узнать 2*У может получить - 2*У=2*ОКР(?(X>28,МИН(256,3.5352*ЦЕЛ(Х+0.99)+36.46) ,0)) ; Пока это сам короткий код. Код от БвШ, ну и округвверх от Гены. Кстати он тоже самый короткий. | | |
89
- 23.05.2017 - 19:43
| Деймос был хотя бы прикольнее | | |
90
- 23.05.2017 - 20:00
| Да, по прикольности ему нет равных. Что с интерполяцией, решается? Или ты так просто, жажда общения? | | |
91
- 24.05.2017 - 05:06
|
Вот дожили, Онлайн калькулятор Аппроксимация. http://planetcalc.ru/5992/ На блюдечке, с графиками, погрешностями ... с формулами. Эдак разучимся столбиком умножать, делить. | | |
92
- 24.05.2017 - 11:26
|
Еще по-экспериментировал с цифрами. Блондинке в шок повезло с аппроксимацией, уже этот метод не проходит с рядом 2*У. yˆ=7.07043545x+73.00106952. Даже пробовал кубатурить yˆ=−0.00000304x3+0.00224569x2+6.88550573x+76.87680 561 Но погрешность такова, что без программных трюков не получается весь ряд чохом округлить ни каким образом. Не решает проблему, если этот ряд уменьшить в 10 раз т.е получаем ряд у = 2*У(xi)/10 -> У=0.2*У yˆ=0.70704354x+7.30010695 // А и В просто в 10 раз меньше стали, а ситуация не изменилась. Вроде цифры уже меньше и погрешность должна бы уменьшиться, но получаем ровно такую же картину, как и при У=2У. В общем, хочешь поднимай, хочешь опускай - расползаются точки на графике. Ну, повезло Блондинке в шок. :) Отредактировано Шухер; 24.05.2017 в 11:28. Причина: ! | | |
93
- 24.05.2017 - 12:03
|
Dctv Ghtdtl! Я думаю это видео немного подходит для данного случая,особливо концовка :) | | |
94
- 24.05.2017 - 12:11
| Есть куда более крутые способы аппроксимации, чем полиномиальные (то есть степенями X), например сплайнами. | | |
95
- 24.05.2017 - 12:15
| https://www.youtube.com/watch?v=-ckaPGoQ6XU | | |
96
- 24.05.2017 - 12:47
| На Ютубе лучше Алишера Усманова посмотрим ) честного нашего олигарха | | |
97
- 24.05.2017 - 12:53
| не повезло, а простое понимание. на пальцах: Нарисуй треугольник. Прямоугольный. С катетами равными 1. Проведи высоту из прямого угла к гипотенузе. Проведи перпендикулярно высоте (раздели пополам высоту) штрих-линию, параллельно гипотенузе. Легко увидеть, что кратчайшее расстояние от этой линии к любой вершине треугольника равно 0,3536... т.е. меньше 0.5. Иными словами, я могу "низложить треугольник до отрезка" :) с погрешностью 0,3536. А результат мы округяем до целых, т.е. погрешность меньше половины младшего разряда У. Изначально у тебя ступенька (перелом) была на 1. апроксимирующая линия "условно посередины" высоты и "двигая" эту линию вдоль высоты, мы имеем запас (0,5-0,35=0,15), некую возможность подвести ближе/дальше линию к нужной вершине (округлить до 1 к нужному нам результату). Поэтому я осознавала, что имеется возможность аппроксимировать твои ступеньки. а вот при 2У треугольник уже получается с высотой больше 1 и ты не сможешь провести апроксимирующую линию так, чтобы расстояние до всех из вершин треугольника было меньше 0.5. Поэтому для 2У я даже и начинать не буду, потому что заведомо " превратить треугольник в отрезок с погрешностью меньше половины младшего разряда У " не получится :) несколько сумбурно, но это дольше рассказывалось, а на самом деле мелькнуло в голове и все. | | |
98
- 24.05.2017 - 13:01
| (92)Просветление ) не иначе как Николай Угодник помог )) | | |
99
- 24.05.2017 - 17:28
| Ну так покажи решение более крутым способом, без лишних слов. Эта задача давно решена программно, мне просто интересно вспомнить математику. И не Николай Угодник, а Пискунов Н.С. помогает. Скачал оба тома, сижу вспоминаю забытое. | | |
100
- 24.05.2017 - 17:32
| А 0.2У - почему не получается. И почему 2У - нельзя построить треугольник и считать за 1. На самом деле ряд с У, который решили, это 0.5 от этого нового ряда 2У. | | |
101
- 24.05.2017 - 17:34
| (99)я не увидел нигде задачи. В чем она состоит ? закинута какая то мулька - кто предложит самый короткий код. Это не задача, это упражнение для смекалки. Если есть задача, то ее надо нормально ставить | | |
102
- 24.05.2017 - 17:58
| Ясно. Видимо задача слишком мелка, чтобы ты её увидел. Тебе три раза пришлось таблицу показывать, стрелки рисовать. Ну а задачу с 2У я просто даже не берусь ставить, не подъемно для меня пока. | | |
103
- 24.05.2017 - 18:10
| (102)так тебе дали цже несколько решений, чем они не устраивают ? Задача - это не таблицу нарисовать. Для меня тоже неподьемно, что ты хочешm от этой функции. А когда я не понимаю, то не могу решить. | | |
104
- 24.05.2017 - 18:14
| Есть целые книжки по аппроксимации. Но решение часто зависит от предметной области, в которой процессы подчиняются или описываются некоторыми уже общепринятыми закономерностями. Например экспоненциальными функциями, а не простыми степенными рядами. Что надо то ???) | | |
105
- 24.05.2017 - 18:21
| Таблица - это набор точек. Можно просто записать их в массив или в таблицу значений и извлекать оттуда. Вот и вся задача. Называется - табличное хранение данных, Но если не знать, что же надо решить, то и не решить никогда. Может просто я такой тупой, не отрицаю. Но я так и не врубился в чем смысл этой темы. То кто короче, то кто точнее, то кто быстрее. Зачем, почему? Если просто головоломка - это одно, если есть прикладной смысл - другое | | |
106
- 24.05.2017 - 18:32
|
Задача уже решена. Сейчас, используя любую на выбор модель регрессии: линейную, квадратичную, кубическую ... любую, или какие другие еще круче, построить математическую формулу, по которой точно определяется значение у от х. То есть написать функцию у=f(x). Здесь значения Х, и соответствующие им значения У Х (может принимать целые положительные значения от 29 до 62) 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 Соответствующие им занчения У 278 286 292 300 306 314 320 328 334 342 348 356 362 370 376 384 392 398 406 412 420 426 434 440 448 454 462 468 476 484 490 498 504 512 Пример: у=f(x) y=f(29) = 278 29 - 278 30 - 286 и так далее. Можно использовать округление какое угодно, вверх/вниз, до целого. Нельзя использовать условные операторы "Если", и поиск по таблице. Значения "У" получены путем умножения чисел на 2. Можешь скачать таблицу из задания в теме, которую я тебе уже показывал, подставить формулу =2*У, и получишь нужный ряд. Что-то не понятно? | | |
107
- 24.05.2017 - 18:56
|
Бесценная книжка. Цена 1руб 10 коп. | | |
108
- 24.05.2017 - 19:09
|
Если задача уже решена, то зачем ее решать ?)) По Пискунову не учился, за него били, учился по Фехтейнгольцу. | | |
109
- 24.05.2017 - 19:18
| 1. Может у тебя найдется другое интересное решение по Фехтейнгольцу. У нас же разные школы :) 2. Решили для ряда У, а вот для ряда 2У (106) это решение уже не подходит. В (85) уже подробно все рассказал. Эта же линейная формула y = ax + b. Блондинка в шок объяснила на треугольнике, почему не получается. Слушай, может тебе пересказать своими словами всё с самого начала? А? :) | | |
110
- 24.05.2017 - 19:51
|
Золотые времена для учебы настали! Справочник по математике для инженеров и учащихся втузов Бронштейн И.Н. Семендяев К.А. Издание 1986 года Цена 4 руб. 10 коп. | | |
111
- 24.05.2017 - 20:19
|
У меня еще целый и многие годы неоткрываемый Корн и Корн "Справочник по математике", 1978, Цена 4 руб. Я еше раз говорю, что инженерные задачи так не ставятся, либо просто я чего-то не догоняю. Ну есть таблица (Х,Y). Надо построить функцию, которая с какой точностью приближается к выборке ? Только в заданных точках ? Если только в них, то задача практически не имеет смысла, зачем вычислять в точках, в которых итак все известно ? Какой у задачи практический смысл? Или это просто упражнение ? Аппроксимация - это построение функции для вычисления не только в заданных точках, а между ними. Интерполяция - обычно используется для прогнозирования. А тут я не пойму для чего) Не воспринимай как наезд, просто именно я не понимаю эту задачу | | |
112
- 24.05.2017 - 21:00
| Цитата:
Есть Таблица, я её показывал https://cloud.mail.ru/public/2MB5/xzW7mYrbU Красным выделено - это минимальные цены для оптовиков, по которым можно продавать алкоголь, для кодов АП (алкопрод) водки и прочие Найти("200,212,236,237,280",КодАП)>0 Тогда ---- емкостью 0.5 литра закон вступил в силу с 13 мая. 28, 29, --- 61, 62 - это градусы алкоголя Но емкости бывают разные, сам знаешь, чекушки там - 0.25... графины и так далее. Ну, а если продашь ниже минимальной цены, получаешь штрафы - 100 тр предприятие, 50тр должностное лицо, и главное - можешь лишиться лицензии, и пиши пропало. Так вот, при продажах надо контролировать цену, чтобы дешевле не продать. Но и дороже продавать себе в убыток, растеряешь клиентуру. Можно, конечно составить таблицу на все варианты, и по ней плясать, а можно написать ф-цию у=f(x) и сравнивать Возврат У; с ценой, цена ниже У - запрет операции. Есть еще для производителей, и розницы такие же ограничения. Ну, а мы занялись математикой. Ибо предположили, что ряд из каких-то соображений и по какой-то формуле составлялся. :) Но как выяснилось, после долгих мучений, без логики никак тут не обойтись. То есть уже никак не упрекнуть наших законодателей, что они вне всякой логики принимают свои законы. Научно доказано :) | | |
113
- 24.05.2017 - 21:09
|
Для Оптовиков так была решена задача: чиста программно, без арифметики. На входе Х уже округлена до целого. МинЦена=75+7*х+?(х%2=0,?(х>57,3,1),?(х>44,2,0)); //для 1 литра. МинЦена = мин(588,?(х>28,МинЦена,0))*Емкость; //тут по диапазонам обрезаем | | |
114
- 24.05.2017 - 21:15
|
Ошибка 588 - это для розницы Для Опта - 512 | | |
115
- 24.05.2017 - 21:40
| Шмука! Я понимаю, что совсем ни фига не понимаю в торговле. Видимо, какие-то новые тренды, я староват для них :( | | |
116
- 24.05.2017 - 21:42
| Наступили времена, когда продавать алкоголь дороже стало в убыток - куда мы катимся вообще? | | |
117
- 24.05.2017 - 21:44
| В Ехеле тренд - ф-ция Тенденция. Тренд - наша ваша не понимайт. | | |
118
- 25.05.2017 - 00:28
| Возможно, чего-то не понимаю. Но, зачем подбирать? Не проще в формулу Блондинки вставить 2*(формула)? | | |
119
- 25.05.2017 - 03:00
|
Я опять не все понял, пять утра,но я бы все таки подуиал именно а сторону табличного хранения данных,справочника или оегистра сведений, из которых доставать значения.не нужна тут формула. И работать будет быстро Ох | | |
120
- 25.05.2017 - 06:20
|
Вот же, пойдут на всякие ухищрения, лишь бы книжки не открывать, не учиться :) Хорошее решение, конечно, - умножить на два Формулу.БвШ. Чего проще, когда уже есть готовая формула. Ну, а как ты используешь Формулу.БвШ для другого ряда? На сколько надо умножить Формулу.БвШ ? Вот например: Значения Х: 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 Значения У: 0 0 0 0 0 0 0 0 0 0 169 173 176 180 183 186 190 193 197 200 204 207 210 214 217 221 224 228 228 228 228 228 228 228 То-то! Поэтому надо уметь решать подобные задачи. Можно в лоб - и по справочникам искать, но ведь справочники составляли тоже по каким-то формулам и правилам. Кому лень найти и понять эти формулы, пусть листают справочники. | |
| Интернет-форум Краснодарского края и Краснодара |