К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

ОФФ: v77 Арифметика. Ряды чисел. Написать кратчайшуу ф-цию.

0 - 19.05.2017 - 19:40
Для тех, кому не лень размяться в арифметике - Задача :
Составить наикратчайшую функцию, вычисляющую У от Х.
Имеем Таблицу значений из двух колонок Х, У .
У= f(x); Написать ф-цию на 1Сv77. А можно и на любом языке, важен алгоритм.
Сравнивать длину кода будем по коду в 77.



81 - 23.05.2017 - 07:13
Цитата:
Сообщение от USSR Посмотреть сообщение
Задача поставлена некорректно, поэтому и решать ее бессмысленно.
Задача поставлена корректно, ты нашел Таблицу ?
Все опубликованные решения вычисляют значения у=f(x) с абсолютной точностью. Видел, там у всех ф-ция ОКР() используется ?

Цитата:
Сообщение от USSR Посмотреть сообщение
Параметр (х) - может принимать целые положительные значения от 0 до бесконечности." - с этим что делать?
Еще раз - Таблица
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
Цитата:
Сообщение от USSR Посмотреть сообщение
Деймос был хотя бы прикольнее
Да, по прикольности ему нет равных.
Что с интерполяцией, решается? Или ты так просто, жажда общения?
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!
Я думаю это видео немного подходит для данного случая,особливо концовка :)
https://www.youtube.com/watch?v=-ckaPGoQ6XU">https://www.youtube.com/watch?v=-ckaPGoQ6XU" type="application/x-shockwave-flash" width="425" height="350">
Гость
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
Цитата:
Сообщение от USSR Посмотреть сообщение
Есть куда более крутые способы аппроксимации
Ну так покажи решение более крутым способом, без лишних слов.
Эта задача давно решена программно, мне просто интересно вспомнить математику. И не Николай Угодник, а Пискунов Н.С. помогает. Скачал оба тома, сижу вспоминаю забытое.
100 - 24.05.2017 - 17:32
Цитата:
Сообщение от Блондинка в шок Посмотреть сообщение
2У треугольник уже получается с высотой больше 1
А 0.2У - почему не получается.
И почему 2У - нельзя построить треугольник и считать за 1. На самом деле ряд с У, который решили, это 0.5 от этого нового ряда 2У.
Гость
101 - 24.05.2017 - 17:34
(99)я не увидел нигде задачи. В чем она состоит ? закинута какая то мулька - кто предложит самый короткий код. Это не задача, это упражнение для смекалки. Если есть задача, то ее надо нормально ставить
102 - 24.05.2017 - 17:58
Цитата:
Сообщение от USSR Посмотреть сообщение
я не увидел нигде задачи.
Ясно. Видимо задача слишком мелка, чтобы ты её увидел.
Тебе три раза пришлось таблицу показывать, стрелки рисовать. Ну а задачу с 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
Цитата:
Сообщение от USSR Посмотреть сообщение
Если задача уже решена, то зачем ее решать ?
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
Цитата:
Сообщение от USSR Посмотреть сообщение
Если только в них, то задача практически не имеет смысла, зачем вычислять в точках, в которых итак все известно ?
Лан, раскрываю секрет, откуда цифры взялись.
Есть Таблица, я её показывал
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*У то есть Х, У, 2*У 29 139 278 30 143 286 31 146 292 и так далее, уже не получается подобрать а и в
Возможно, чего-то не понимаю. Но, зачем подбирать? Не проще в формулу Блондинки вставить 2*(формула)?
Гость
119 - 25.05.2017 - 03:00
Я опять не все понял, пять утра,но я бы все таки подуиал именно а сторону табличного хранения данных,справочника или оегистра сведений, из которых доставать значения.не нужна тут формула. И работать будет быстро
Ох
120 - 25.05.2017 - 06:20
Вот же, пойдут на всякие ухищрения, лишь бы книжки не открывать, не учиться :)
Цитата:
Сообщение от Оля П Посмотреть сообщение
Не проще в формулу Блондинки вставить 2*(формула)?
Хорошее решение, конечно, - умножить на два Формулу.БвШ. Чего проще, когда уже есть готовая формула.
Ну, а как ты используешь Формулу.БвШ для другого ряда? На сколько надо умножить Формулу.БвШ ?
Вот например:
Значения Х:
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

То-то! Поэтому надо уметь решать подобные задачи. Можно в лоб - и по справочникам искать, но ведь справочники составляли тоже по каким-то формулам и правилам. Кому лень найти и понять эти формулы, пусть листают справочники.


К списку вопросов






Copyright ©, Все права защищены