|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|
Алгоритм расчета целых чисел29.06.2015, 21:18. Показов 3035. Ответов 31
Метки нет (Все метки)
Привет всем. Имеется матрица. Сумма всех членов в этой матрице равна К. Необходимо вычислить значение каждого члена матрицы так, чтобы сумма была равна целому числу Т и при этом каждый член матрицы тоже был целым числом, минимально отличающимся от исходного значения.
Если бы не было условия целости новых значений членов матрицы, то для вычисления этих значений нужно было бы применить формулу: Однако при этом члены матрицы получаются не целыми числами. Как сделать расчет (если это вообще возможно), чтобы члены матрицы были целыми числами? P.S. Изначально члены матрицы не целые числа.
0
|
|
| 29.06.2015, 21:18 | |
|
Ответы с готовыми решениями:
31
Алгоритм поиска целых простых чисел Алгоритм расчета рейтинга |
| 06.07.2015, 11:11 | ||||
0
|
||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,913
|
|
| 06.07.2015, 16:56 | |
|
Дано: { 6.42, 11.47, 1.83, 80.28 }, сумма 100
1. Округляем в ближайшую сторону. { 6, 11, 2, 80 } 2. Проверяем сумму. Сумма 99 2.а. Если сумма совпадает, то готово - выходим. 3. Вычисляем знак разницы dif = +1 // может быть +1 или -1 Наш критерий: Минимизировать f(n,d) = [(n - d)/d]^2; 4. Пробуем изменить на dif каждое из чисел, и смотрим, как изменится "ошибка": f(n+dif, d) - f(n, d) Находим такое число, для которого ошибка изменится меньше всего. Изменяем найденное число на dif. 5. Повторяем пункт 4, пока суммы на станет равна заданной. Добавлено через 14 минут Igor3D, Упс! Не видел Вашего сообщения, когда писал своё...
0
|
|
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|||
| 08.07.2015, 20:16 [ТС] | |||
|
Наверное Вы ошиблись (не в упрек Вам). Я понимаю так, что к этому числу надо прибавить 1, уменьшить на 1 delta и пересчитать фактор ошибки. Если delta не равно 0, то снова находим самый наименьший фактор и т. д. Верно? Пока писал сообщение, возник следующий вопрос. Мы округляем "по-бухгалтерски". В результате может получится так, что сумма членов округленной матрицы будет больше, чем требуемая сумма. Тогда delta, соответственно, будет отрицательна. В этом случае, как я понимаю, так же ищем минимальный фактор ошибки, но член матрицы увеличиваем не на 1, а на -1, то есть уменьшаем его, а delta увеличиваем на 1. Правильно я думаю? Добавлено через 4 минуты P.S. Чего то одна и та же ошибка у разных людей... Может я не прав?.. Или эти люди просто применительно к моей задаче писали алгоритм, а я рассуждаю в общем случае.
0
|
|||
| 09.07.2015, 10:46 | ||||
|
А поиск ошибок - дело хорошее, но начинать надо с себя
1
|
||||
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|
| 09.07.2015, 11:53 [ТС] | |
|
Igor3D, извините, только что понял. Просто в моем примере сумма была 99, а надо 100. Вот я и подумал, что delta находили разницей между требуемой суммой и той, что есть. Я прошу прощения, конечно, и не пытаюсь искать ошибки. Я пытаюсь понять принцип.
Спасибо всем за помощь. Буду реализовывать в программе.
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,913
|
|
| 09.07.2015, 17:01 | |
|
Фактор ошибки может быть равен нулю.
Условие: Дробная часть числа ровно 0.5 и дельта имеет "нужный" знак (+1, если число было округлено вниз, и наоборот). Элементы с нулевым фактором идеально подходят для "переокругления".
1
|
|
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|
| 09.07.2015, 20:02 [ТС] | |
|
Реализовал алгоритм на VBA в Exсel. Начал пробовать округлять. И сразу же возникли вопросы по 2-м ньюансам.
1. При нахождении округленного значения с минимальным фактором ошибки может возникнуть такой случай, когда в матрице будет 2 и больше членов, для которых фактор ошибки абсолютно одинаков. Как мне кажется, в таком случае необходимо из всех членов с одинаковым фактором ошибки (и одновременно самым малым из всех остальных членов матрицы) выбрать тот, который имеет самое большое по модулю значение, так как его увеличение (уменьшение) на 1 в процентном отношении будет самым малым. Если же будет несколько членов еще и с одинаковым значением, то можно выбрать любой из них. 2. В исходной матрице могут быть члены со значением равным 0. Для них вычислить фактор ошибки нельзя, ибо делить на 0 нельзя. Как я думаю, данные члены матрицы не должны участвовать в "подгонке" значений. Подскажите, я правильно решил данные особенности?
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,913
|
|
| 09.07.2015, 21:31 | |
|
2. Нули не трогаем. Для них фактор ошибки - бесконечность.
1. Любой. Изменяем на 1 мы не начальное число, а округлённое, которое само отличается от начального. Например. Мы округлили 10.4 до 10. Теперь мы изменяем 10 на 11. Раньше у нас число отличалось на 0.4, теперь будет отличаться на 0.6. Разница 0.2 всего, а не 1.
0
|
|
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|
| 10.07.2015, 08:00 [ТС] | |
|
По второму вопросу все ясно. По первому остались вопросы (прошу прощения за тавтологию).
Я понимаю, что мы изменяем не начальное число, а уже округленное, то есть уже измененное. Но ведь в начальной матрице наряду с дробными числами могут быть целые. После округления членов такой матрицы, эти ее изначально целые числа останутся без изменений. Соответственно, фактор ошибки для них будет 0. И тут вопрос: какой из членов матрицы с фактором ошибки 0 нужно изменять? Shamil1, может я не понял Вас, но вы говорите, что любой такой член можно изменить. А ведь такими членами могут быть числа 1 и 100. Как мне кажется, логичнее и правильно изменить число 100, так как это изменит его на 1%, в то время как изменение числа 1 изменит его на 100%.
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,913
|
||
| 10.07.2015, 08:13 | ||
|
0
|
||
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|
| 10.07.2015, 08:59 [ТС] | |
|
Почему для них фактор ошибки большой? Был член начальной матрицы А = 5. После округления он не изменился: B = 5. Находим фактор ошибки: F = ((A - B) / A)^2 = ((5 - 5) / 5)^2 = 0.
0
|
|
| 10.07.2015, 09:49 | ||
|
Об этом уже не раз говорилось выше, с примерами, будьте внимательны и не злоупотребляйте доверием отвечающих. Вообще здесь всех делов на полчаса, пыхтение и обширная дискуссия ни к чему. Умолкаю.
1
|
||
| 10.07.2015, 09:49 | |
|
Алгоритм расчета количества дней
Составьте программу, которая содержит оператор while, для расчета суммы целых чисел в диапазоне от а до b Алгоритм обработки целых чисел Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|