Математика. Подготовка к ЕГЭ. Решение задач. https://alexlarin.com/ | |
Ludmila - решение нерешенных математических задач методом по https://alexlarin.com/viewtopic.php?f=4&t=17347 |
Страница 1 из 1 |
Автор: | Nevep [ 16 авг 2021, 14:39 ] |
Заголовок сообщения: | Ludmila - решение нерешенных математических задач методом по |
Ludmila - решение нерешенных математических задач методом подбора Описание Скрипт Ludmila предназначен для решения нерешенных математических задач методом подбора. Есть список элементов уравнений: - числа (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) - операции (+, *, /, -) - скобки (левая, правая) - степень (квадратная, кубическая, корень квадратный, корень кубический) - x (может быть несколько в наборе - x0, x1, x2, ...) Есть входящие наборы данных: - data1.txt (линейное уравнение) - data2.txt (теорема пифагора) - data3.txt (ряд простых чисел) Например набор data1.txt (линейное уравнение) выглядит вот так: 3235 51 62 73 3350 52 63 74 3467 53 64 75 ... и т.д. (всего 100 элеметов в наборе) Первая цифра значение y, последующие цифры значения x (в данном случае x0, x1, x2) Для нахождения верного уравнения перебираются комбинации уравнений. Выглядит это примерно так: y = 1 y = 2 ... перебираются все уравнения длинной 1, затем длинной 2. Уравнения длинной 3 могут выглядеть например так: y = 1 + x0 y = 1 + x1 ... и так далее, пока не дойдет до: y = x0 * x1 + x2 В итоге набор данных (3235 51 62 73) выдаст совпадение, далее эта форумла перебирает все наборы данных data1.txt их всего 100 штук. И если все 100 наборы данных прошли проверку, то уравнение считается решенным. Оптимизация Так как нет смысла уравнения в котором рядом стоят например два оператора +, поэтому есть правила конкатенации - что может стоять рядом друг с другом, а что нет. В результате чего скорость работы скрипта была увеличина в 15 раз. Правила конкатенации находятся в config.py, переменная types. Производительность Производительность на CPU: - Линейное уравнение решается за 7 секунд (5 символов) v|x0;o|*;v|x1;o|+;v|x2 - Теорема пифагора решается за 8100 секунд (8 символов) bl|(;v|x0;e|**2;o|+;v|x1;e|**2;br|);e|**0.5 Задачи Главной задачей данного скрипта является решение нерешенных математических задач - [Открытые математические проблемы](https://ru.wikipedia.org/wiki/%D0%9E%D1 ... 0%BC%D1%8B) - [Задачи тысячелетия](https://ru.wikipedia.org/wiki/%D0%97%D0 ... 0%B8%D1%8F) Но не все они могут быть представлены в виде наборов данных. To Do - Переделать, чтобы вычисления производились не на CPU, а на GPU (CUDA). - Добавить больше математических операций - sin, cos, tg, ctg, π, e, log (упадет производительность, но увеличится вероятность нахождения формулы). - Добавить наборы данных для других нерешенных математических задач. Запуск - в файле config.py в переменной data_id указать id набора данных (1 - линейное, 2 - теорема пифагора, 3 - ряд простых чисел) - запустить файл ludmila.py командой: c:\Python37\python e:\python\maths\ludmila.py - результат будет в консоле, а так же в лог файле log.txt Вопросы У меня есть два вопроса к сообществу: - Есть ли подобные скрипты? Возможно кто-то уже делал такое и мой скрипт бессмысленный потому что эта работа уже проделана кем-то другим. - Вопрос к тем кто работал с CUDA. Сейчас вычисления производятся на CPU. Возможно ли переделать на GPU тем самым повысив производительность в десятки раз? Ссылка на исходники https://github.com/nevstas/ludmila |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |