[Архив!] Чистая математика, физика, химия и т.п.: задачки для тренировки мозгов, никак не связанные с торговлей - страница 451

 

Вот результ при SMax=3000

2011.01.15 19:14:26 MetaSage (EURUSD,M1) //+---- Максимальная сумма = 3000 -------------------+
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=89; P=1168; a=16; b=73
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 19:14:21 MetaSage (EURUSD,M1) //+---- Максимальная сумма = 3000 -------------------+

 
И сколько времени считал? Ну не 5 же секунд...
 
Mathemat:

1. По большому счету надо снимать ограничения на сумму. Все рассуждения остаются по сути такими же, просто их больше.

2. Судя по тому, что в цитате челу потребовался Cray 1, его алгоритм был менее оптимизирован, чем твой :)

1. По большому не получится - у меня таблица разложений на множители в памяти не помещается уже при SMax=3400.

Есть продвижки с леммой для максимального произведения при заданном SMax ?

Вот распчатка для 3300:

2011.01.15 19:18:12 MetaSage (EURUSD,M1) //+---- Максимальная сумма = 3300 -------------------+
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=89; P=1168; a=16; b=73
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 19:18:06 MetaSage (EURUSD,M1) //+---- Максимальная сумма = 3300 -------------------+

.

2. Да не, просто mql5 очень скорострельный язык... :)

 
Mathemat:
И сколько времени считал? Ну не 5 же секунд...
С минуту примерно.
 
MetaDriver: Есть продвижки с леммой для максимального произведения при заданном SMax ?
Пока нет, еще только думаю, стоит ли этим озабочиваться :)
 

Проверил при SMax=3350. Результат тот же. Считает где-то с минуту, даже поменьше.

Основное ограничение сейчас память. Нужно ограничить таблицу разложений на множители.

Текущая версия PMax=SMax*(SMax/2-1). Можно ещё уменьшить? Разрешаешь?

Мне кажется можно достаточно легко доказать, что PMax<=SMax*(sqrt(SMax)-1). Щас попробую запустить, ежли крякнется- значит неправ. :)

 
Дай осмыслить.
 

Не прокатило (таблица построилась, но оказалась маловата), однако удалось выцепить ещё одно решение (!) :-)

2011.01.15 19:40:28 MetaSage (EURUSD,M1) Array out of range in 'MetaSage.mq5' (100,47)
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=343; P=9952; a=32; b=311
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=89; P=1168; a=16; b=73
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 19:40:24 MetaSage (EURUSD,M1) //+---- Максимальная сумма = 4000 -------------------+
2011.01.15 19:40:24 MetaSage (EURUSD,M1) //============== СТАРТ ========================

 

Вот теперь бы еще убедиться в том, что это не просто потенциальные решения, а реальные.

ОК, можно подумать и дальше, поставив ограничение, скажем, 10000.

P.S. Это сколько у тебя чисел в таблице при 3300?

3300*(3300/2-1) ~ 5 млн?

 
Mathemat:

1. Вот теперь бы еще убедиться в том, что это не просто потенциальные решения, а реальные.

ОК, можно подумать и дальше, поставив ограничение, скажем, 10000.

2. P.S. Это сколько у тебя чисел в таблице при 3300?

3300*(3300/2-1) ~ 5 млн?

1. Ну при помощи скрипта и нужно убеждаться. Переделать в проверочную версию. Сделаем, только с PMax разберёмся сначала.

2. ДА.

Вот пошаманил с размером таблицы. Получил результаты с SMax=4100.

PMax задавал так: SMax*(uint)(SMax/6-1) = 2796200

2011.01.15 20:21:29 MetaSage (EURUSD,M1) //+---- Максимальная сумма = 4100 -------------------+
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=343; P=9952; a=32; b=311
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=137; P=4672; a=64; b=73
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=89; P=1168; a=16; b=73
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 20:21:18 MetaSage (EURUSD,M1) //+---- Максимальная сумма = 4100 -------------------+
2011.01.15 20:21:18 MetaSage (EURUSD,M1) //============== СТАРТ ========================

2011.01.15 20:21:00 MetaSage (EURUSD,M1) SMax*(uint)(SMax/6-1) = 2796200

.

Как видим, в серединке появилось ещё одно решение: S=137; P=4672; a=64; b=73

Причина обращения: