Ассоциация с дженгой понравилась. С деривативами тоже хорошо. Я бы ещё добавил ассоциацию с птолемеевским добавлением эпициклов, потому что часто задачи начинают не лучше или иначе анализировать, а просто отдавать всё более монструозным нейронкам. Хотя городить очень большие архитектуры тоже непросто, да и с эпициклами для орбит планет вряд ли было просто.
Если вы хотите в режиме отладки в PyCharm видеть точность переменных, вам для этого не требуется никакой плагин, достаточно наличия xnumpy в вашем venv. Рядом с переменными по ходу вычислений вы увидите значения с вопросами вместо неточных цифр, в списке локальных переменных аналогично. Выглядит это вот так:
Мы старались, чтобы практически все операции, где может теряться точность, автоматически приводили ndarray с dtype=float64 к xf64array, а также заменили тип float64 по умолчанию на xf64 в функциях, создающих новые массивы, чтобы учёт точность требовал минимума изменений в коде.
Проблема в том, что для точных вычислений надо либо вычислять значение в ленивой семантике, где требуемая в конце точность определяет точность предыдущих вычислений в направленном графе вычисления, что при неточностях начальных данных может быть проблематично, либо использовать символическую алгебру, что несильно спасёт.
При работе с большими данными структуры данных для точных вычислений на практике невозможны, вы не сможете сохранить в памяти и одно вещественное число полностью в десятичной или двоичной записи. На практике все используют что-то типа float64 или float32 в большинстве случаев.
Структуры для более точных вычислений (например, предоставляемые библиотекой gmp) дают повышенную точность, но всё равно не учитывают уровень ошибок. Но уже они неприменимы в больших вычислениях, так как очень медленно производятся. XNumPy решает проблему в стандартно используемом f64 (в перспективе f32 и прочих), не меняя само вычисление, но давая оценку точности.
Сборка производилась при помощи manylinux, так что на других Linux вроде как должно тоже работать, но пока что на других библиотека не тестировалась. В целом специфичны могут быть версии имеющихся от numpy зависимостей, таких как glibc, openblas и так далее.
Под Windows сложность в том, что библиотека включает бинарники (shared libraries в Linux, аналогично dll в Windows), а формат бинарников под Windows и Linux разный, так что бинарники одной ОС не запускаются в другой, для этого нужна отдельная сборка, ей пока не занимались.
А вот ссылки на первоисточники, откуда взят материал, только почему-то ни на что нет ссылки. Вопрос о существовании трегугольника Шарыгина -- журнал Квант, I. F. Sharygin, About bisectors, J. Kvant 1983 (1983), no. 8, 32–36. Нахождение первого целочисленного треугольника -- S. Markelov, Diophantine... bisectors!, unpublished manuscript accepted to Kvant, 2017. Доказательство существования бесконечного числа целочисленных попарно не подобных треугольников Шарыгина и описание группы рациональных точек эллиптической кривой, параметризующей треугольники Шарыгина -- Igor V. Netay, Alexei V. Savvateev, “Sharygin Triangles and Elliptic Curves”, Bull. Korean Math. Soc., 54:5 (2017), 1597–1617, arXiv: https://arxiv.org/abs/1610.04626.
И ещё чуть-чуть про треугольники. Второй треугольник Шарыгина (для краткости стороны разложены на простые множители): (2^5 · 5^2 · 17 · 23 · 137 · 7901 · 943429^2 , 29^2 · 37 · 1291 · 3041^2 · 11497^2 , 3 · 19 · 83 · 2593 · 14741 · 227257 · 7704617), третий (5 · 17 · 29 · 97 · 17182729 · 32537017 · 254398174040897 · 350987274396527, 7 · 1093889^2 · 4941193 · 894993889^2 · 331123185233, 83^2 · 571^2 · 13873 · 337789537 · 16268766383521^2 ), у пятого есть сторона, которая делится на простое число 3646312514774768838959262707271994342627321. А начиная с шестого, даже разложить на простые множители вычислительно проблематично.ничего из этого нет в библиографии
Уместность -- исключительно вопрос традиции. Говорить "операция" в неизвестной ситуации не любят. А если операция одна и отсутствует контекст, то заведомо коммутативную нередко называют сложением, а заведомо некоммутативную обычно умножением. Но появление контекста может внести изменения. Например, когда речь про моноид мономов в кольце многочленов, он обычно коммутативен, но их всё-таки перемножают.
Смотря в каком кольце. Если в , то да. В этом кольце есть норма , она мультипликативна (то есть ), всегда принимает целое значение и для равна , а если норма с такими свойствами числа простое целое, то само число простое в кольце с нормой.
Если, например, в , то нет, потому что там нет простых чисел: в полях нет необратимых элементов, кроме .
В тексте говорится о системах, замкнутых относительно умножения -- о полугруппах (есть множество, ассоциативная операция, в общем-то всё, мультипликативная система, если операцию мы назвали умножением), к которым, конечно, относятся степени двойки и "наоборот" -- нечётные числа. Наоборот в том смысле, что они пересекаются по единице и вместе порождают натуральные числа. Однако полугруппы рассматриваются в другом контексте, чем более "повседневная" структура -- кольцо, где есть сложение и умножение, часто связываемая с видом чисел не "внутри" (как чётные в целых), а в целом -- целые, рациональные...
Основная теорема арифметики нередко формулируется для целых, а не натуральных. Но как быть с тем, что Это два разложения. А что с множителями? Ведь тоже простое, как и . Этот вопрос решается в алгебре понятием идеала (подмножество, где можно умножать и складывать), где мы можем выбрать образующую -- чиселку, умножением на которую получаются все. Мы можем выбрать и и С этим хорошо, выкрутились :) Хотя научно это называется не "выкрутились", а "формализовали и дали строгое определение", хотя разница не очень большая.
С представлением в виде произведения меньших его чисел в определении тоже есть момент с целыми и знаками. Ведь же произведение и так что же, не простое? Они ж меньше! И вот тут алгебра "выкручивается" введением обратимости: число обратимо, если имеет обратное. Обратимых целых всего два -- Если представлять число как произведение необратимых, то всё ок. Разложение единственно, если оно единственно на меньшие или равные необратимые с точностью до домножения их на любые обратимые элементы и перестановок. И вот так оно работает без других оговорок полностью (в кольцах главных идеалов).
Зачем появляются вот эти все слова: идеал, обратимость, образующая? Они нужны, чтобы понятия имели однозначные определения без разных трактовок. Они и были придуманы, чтобы не было разных определений и многих случаев, чтобы всё подчинялось общему правилу. Так нам (алгебраистам) проще работать. Если начать копаться, то это упрощение, а не усложнение, и всё становится на свои места, ради чего и городится огород.
Как говорится в тексте, мы легко получаем, что кольцо целых имеет единственное разложение на простые, если в нём можно делить с остатком, тогда запускаем алгоритм Евклида, и он заканчивается. И так в более общем случае, где мы можем "выкрутиться" -- придумать деление с остатком.
Свойство кольца иметь деление с остатком (и потому алгоритм Евклида) называется евклидовостью, а единственность разложения на простые множители -- факториальностью (не потому что "факториал", а потому что "фактор" -- делитель). И аналогично лемме выше любое евклидово кольцо факториально. Если можете делить с остатком, то можете раскладывать на простые множители. Однако обратное неверно, но это существенно сложнее этого материала, так что за этим лучше обращаться в специальную литературу (по алгебраической геометрии или алгебраической теории чисел).
В моей памяти курсов мехмата и не только эйлеровыми называются целые с , а там история несколько другая, чем .
У меня как-то была история с простыми числами: в ларьке ночью при продаже пива меня продавщица спросила, не могу ли я разложить несколько чисел на простые множители. Она не пыталась взламывать RSA (алгоритм шифрования, основанный на основной теореме арифметики: разложить большое число на простые множители не так-то просто, а сложность задачи может подтвердить, что знающий правильный ответ не смог его подобрать на ходу), а хотела помочь дочери в школе. И ей удалось быстро разобраться, как это делать, чтобы дальше делать самой и объяснить дочери))
Фактическая ошибка: автор не является сотрудником мехмата (официальный список, включая бывших сотрудников).
КМК, тут всё скомканно, и чем перечислять список терминов и глав примерно по порядку программы экзамена курса алгебры мехмата, проще дать на него ссылку.
Для изучения алгебры в зависимости от подходящего уровня и стиля изложения я бы советовал такие варианты:
Винберг, "Курс алгебры" (в первую очередь!)
Городенцев, "Алгебра" (для более смелых)
Ван дер Варден "Алгебра" (доступный очень хороший старый учебник, изложение отличается от современных по стилю, для базового освоения алгебры ещё как хватит; незаслуженно редко упоминается)
упомянутые выше книги Куроша и Кострикина
Если (а лучше — когда) этих базовых книг окажется мало, и будет хотеться больше алгебры, попробуйте почитать Харриса "Введение в алгебраическую геометрию", чтобы увидеть, как красиво алгебра продолжается за пределы стандартного курса и что на самом деле следует за школьной планиметрией в современной науке (спойлер: она вся становится частью алгебры, но при этом все геометрические объекты не только остаются, а становятся интереснее и разнообразнее, взять хоть эллиптические кривые, которые имеют очень большие применения к современной криптографии).
По части приложений скажу, что тут и правда в тексте не перечислено ничего явного (видимо, практическая мотивация у автора целью не является), но чем больше и глубже знаешь алгебру, тем больше всего может помочь даже из достаточно абстрактного, потому что все вычисления в явном виде об алгебре и/или численных методах. Например, мне улучшить качество модели в рамках Speech Recognition как-то помогло бирациональное преобразование пространства параметров модели. Помогло сделать раздутия с цетрами с центрах кластеров и сдуть лишние образовавшиеся дивизоры, так что кластеры стали иметь более хороший вид, и нейросеть начала лучше учиться за счёт перепараметризации, каким не учат на вайтишных курсах. Но если вы знаете алгебру и начала алгебраической геометрии, то вы можете придумать такое сами, поковырявшись в данных. Алгебра очень часто о том, что мы можем вычислить явно (если не учитывать большие базисы Грёбнера и вот такое), так что применимость в приложениях ограничена только вашей изобретательностью и знанием алгебры и алгоритмов.
Вдогонку пример (статья в соавторстве с Лёшей Савватеевым), как задачу из геометрии с треугольничками решает настоящая глубокая алгебра, и попутно пригождаются и сравнения по модулю, и комплексные числа, и Великая Теорема Ферма.
И ещё вдогонку: алгебре ещё лучше, чем на мехмате (и где-либо), учат в НМУ бесплатно без смс и регистрации, ограничение только по вместимости здания. Неважен возраст, социальный статус, образование и что угодно ещё. Хотите очный курс алгебры — вот.
Хорошее годное улучшение. Однако в задачах метрических оптимизаций среди фрактальных кривых чаще дают большее преимущество непрерывные кривые, так что Z-кривая может быть не лучшим выбором. Хотя, конечно, куда лучше покоординатного обхода. Попробуйте непрерывные: кривая Гильберта (посложнее и потяжелее), H-кривая (попроще, поэффективнее: https://github.com/Kryptonite-RU/Hcurve). Это может улучшить результаты.
Ассоциация с дженгой понравилась. С деривативами тоже хорошо. Я бы ещё добавил ассоциацию с птолемеевским добавлением эпициклов, потому что часто задачи начинают не лучше или иначе анализировать, а просто отдавать всё более монструозным нейронкам. Хотя городить очень большие архитектуры тоже непросто, да и с эпициклами для орбит планет вряд ли было просто.
Если вы хотите в режиме отладки в PyCharm видеть точность переменных, вам для этого не требуется никакой плагин, достаточно наличия xnumpy в вашем venv. Рядом с переменными по ходу вычислений вы увидите значения с вопросами вместо неточных цифр, в списке локальных переменных аналогично. Выглядит это вот так:
Мы старались, чтобы практически все операции, где может теряться точность, автоматически приводили ndarray с dtype=float64 к xf64array, а также заменили тип float64 по умолчанию на xf64 в функциях, создающих новые массивы, чтобы учёт точность требовал минимума изменений в коде.
Проблема в том, что для точных вычислений надо либо вычислять значение в ленивой семантике, где требуемая в конце точность определяет точность предыдущих вычислений в направленном графе вычисления, что при неточностях начальных данных может быть проблематично, либо использовать символическую алгебру, что несильно спасёт.
При работе с большими данными структуры данных для точных вычислений на практике невозможны, вы не сможете сохранить в памяти и одно вещественное число полностью в десятичной или двоичной записи. На практике все используют что-то типа float64 или float32 в большинстве случаев.
Структуры для более точных вычислений (например, предоставляемые библиотекой gmp) дают повышенную точность, но всё равно не учитывают уровень ошибок. Но уже они неприменимы в больших вычислениях, так как очень медленно производятся. XNumPy решает проблему в стандартно используемом f64 (в перспективе f32 и прочих), не меняя само вычисление, но давая оценку точности.
Да, опечатка, спасибо. Должно быть arcsin(1.0).
Сборка производилась при помощи manylinux, так что на других Linux вроде как должно тоже работать, но пока что на других библиотека не тестировалась. В целом специфичны могут быть версии имеющихся от numpy зависимостей, таких как glibc, openblas и так далее.
Под Windows сложность в том, что библиотека включает бинарники (shared libraries в Linux, аналогично dll в Windows), а формат бинарников под Windows и Linux разный, так что бинарники одной ОС не запускаются в другой, для этого нужна отдельная сборка, ей пока не занимались.
А вот ссылки на первоисточники, откуда взят материал, только почему-то ни на что нет ссылки. Вопрос о существовании трегугольника Шарыгина -- журнал Квант, I. F. Sharygin, About bisectors, J. Kvant 1983 (1983), no. 8, 32–36. Нахождение первого целочисленного треугольника -- S. Markelov, Diophantine... bisectors!, unpublished manuscript accepted to Kvant, 2017. Доказательство существования бесконечного числа целочисленных попарно не подобных треугольников Шарыгина и описание группы рациональных точек эллиптической кривой, параметризующей треугольники Шарыгина -- Igor V. Netay, Alexei V. Savvateev, “Sharygin Triangles and Elliptic Curves”, Bull. Korean Math. Soc., 54:5 (2017), 1597–1617, arXiv: https://arxiv.org/abs/1610.04626.
И ещё чуть-чуть про треугольники. Второй треугольник Шарыгина (для краткости стороны разложены на простые множители): (2^5 · 5^2 · 17 · 23 · 137 · 7901 · 943429^2 , 29^2 · 37 · 1291 · 3041^2 · 11497^2 , 3 · 19 · 83 · 2593 · 14741 · 227257 · 7704617), третий (5 · 17 · 29 · 97 · 17182729 · 32537017 · 254398174040897 · 350987274396527, 7 · 1093889^2 · 4941193 · 894993889^2 · 331123185233, 83^2 · 571^2 · 13873 · 337789537 · 16268766383521^2 ), у пятого есть сторона, которая делится на простое число 3646312514774768838959262707271994342627321. А начиная с шестого, даже разложить на простые множители вычислительно проблематично.ничего из этого нет в библиографии
Уместность -- исключительно вопрос традиции. Говорить "операция" в неизвестной ситуации не любят. А если операция одна и отсутствует контекст, то заведомо коммутативную нередко называют сложением, а заведомо некоммутативную обычно умножением. Но появление контекста может внести изменения. Например, когда речь про моноид мономов в кольце многочленов, он обычно коммутативен, но их всё-таки перемножают.
Смотря в каком кольце. Если в
, то да. В этом кольце есть норма
, она мультипликативна (то есть
), всегда принимает целое значение и для
равна
, а если норма с такими свойствами числа простое целое, то само число простое в кольце с нормой.
Если, например, в
, то нет, потому что там нет простых чисел: в полях нет необратимых элементов, кроме
.
Тут прямо просится дополнение.
В тексте говорится о системах, замкнутых относительно умножения -- о полугруппах (есть множество, ассоциативная операция, в общем-то всё, мультипликативная система, если операцию мы назвали умножением), к которым, конечно, относятся степени двойки и "наоборот" -- нечётные числа. Наоборот в том смысле, что они пересекаются по единице и вместе порождают натуральные числа. Однако полугруппы рассматриваются в другом контексте, чем более "повседневная" структура -- кольцо, где есть сложение и умножение, часто связываемая с видом чисел не "внутри" (как чётные в целых), а в целом -- целые, рациональные...
Основная теорема арифметики нередко формулируется для целых, а не натуральных. Но как быть с тем, что
Это два разложения. А что с множителями? Ведь
тоже простое, как и
. Этот вопрос решается в алгебре понятием идеала (подмножество, где можно умножать и складывать), где мы можем выбрать образующую -- чиселку, умножением на которую получаются все. Мы можем выбрать и
и
С этим хорошо, выкрутились :) Хотя научно это называется не "выкрутились", а "формализовали и дали строгое определение", хотя разница не очень большая.
С представлением в виде произведения меньших его чисел в определении тоже есть момент с целыми и знаками. Ведь
же произведение
и
так что же, не простое? Они ж меньше! И вот тут алгебра "выкручивается" введением обратимости: число обратимо, если имеет обратное. Обратимых целых всего два --
Если представлять число как произведение необратимых, то всё ок. Разложение единственно, если оно единственно на меньшие или равные необратимые с точностью до домножения их на любые обратимые элементы и перестановок. И вот так оно работает без других оговорок полностью (в кольцах главных идеалов).
Зачем появляются вот эти все слова: идеал, обратимость, образующая? Они нужны, чтобы понятия имели однозначные определения без разных трактовок. Они и были придуманы, чтобы не было разных определений и многих случаев, чтобы всё подчинялось общему правилу. Так нам (алгебраистам) проще работать. Если начать копаться, то это упрощение, а не усложнение, и всё становится на свои места, ради чего и городится огород.
Как говорится в тексте, мы легко получаем, что кольцо целых имеет единственное разложение на простые, если в нём можно делить с остатком, тогда запускаем алгоритм Евклида, и он заканчивается. И так в более общем случае, где мы можем "выкрутиться" -- придумать деление с остатком.
Свойство кольца иметь деление с остатком (и потому алгоритм Евклида) называется евклидовостью, а единственность разложения на простые множители -- факториальностью (не потому что "факториал", а потому что "фактор" -- делитель). И аналогично лемме выше любое евклидово кольцо факториально. Если можете делить с остатком, то можете раскладывать на простые множители. Однако обратное неверно, но это существенно сложнее этого материала, так что за этим лучше обращаться в специальную литературу (по алгебраической геометрии или алгебраической теории чисел).
В моей памяти курсов мехмата и не только эйлеровыми называются целые с
, а там история несколько другая, чем
.
У меня как-то была история с простыми числами: в ларьке ночью при продаже пива меня продавщица спросила, не могу ли я разложить несколько чисел на простые множители. Она не пыталась взламывать RSA (алгоритм шифрования, основанный на основной теореме арифметики: разложить большое число на простые множители не так-то просто, а сложность задачи может подтвердить, что знающий правильный ответ не смог его подобрать на ходу), а хотела помочь дочери в школе. И ей удалось быстро разобраться, как это делать, чтобы дальше делать самой и объяснить дочери))
Фактическая ошибка: автор не является сотрудником мехмата (официальный список, включая бывших сотрудников).
КМК, тут всё скомканно, и чем перечислять список терминов и глав примерно по порядку программы экзамена курса алгебры мехмата, проще дать на него ссылку.
Для изучения алгебры в зависимости от подходящего уровня и стиля изложения я бы советовал такие варианты:
Винберг, "Курс алгебры" (в первую очередь!)
Городенцев, "Алгебра" (для более смелых)
Ван дер Варден "Алгебра" (доступный очень хороший старый учебник, изложение отличается от современных по стилю, для базового освоения алгебры ещё как хватит; незаслуженно редко упоминается)
упомянутые выше книги Куроша и Кострикина
Если (а лучше — когда) этих базовых книг окажется мало, и будет хотеться больше алгебры, попробуйте почитать Харриса "Введение в алгебраическую геометрию", чтобы увидеть, как красиво алгебра продолжается за пределы стандартного курса и что на самом деле следует за школьной планиметрией в современной науке (спойлер: она вся становится частью алгебры, но при этом все геометрические объекты не только остаются, а становятся интереснее и разнообразнее, взять хоть эллиптические кривые, которые имеют очень большие применения к современной криптографии).
По части приложений скажу, что тут и правда в тексте не перечислено ничего явного (видимо, практическая мотивация у автора целью не является), но чем больше и глубже знаешь алгебру, тем больше всего может помочь даже из достаточно абстрактного, потому что все вычисления в явном виде об алгебре и/или численных методах. Например, мне улучшить качество модели в рамках Speech Recognition как-то помогло бирациональное преобразование пространства параметров модели. Помогло сделать раздутия с цетрами с центрах кластеров и сдуть лишние образовавшиеся дивизоры, так что кластеры стали иметь более хороший вид, и нейросеть начала лучше учиться за счёт перепараметризации, каким не учат на вайтишных курсах. Но если вы знаете алгебру и начала алгебраической геометрии, то вы можете придумать такое сами, поковырявшись в данных. Алгебра очень часто о том, что мы можем вычислить явно (если не учитывать большие базисы Грёбнера и вот такое), так что применимость в приложениях ограничена только вашей изобретательностью и знанием алгебры и алгоритмов.
Вдогонку пример (статья в соавторстве с Лёшей Савватеевым), как задачу из геометрии с треугольничками решает настоящая глубокая алгебра, и попутно пригождаются и сравнения по модулю, и комплексные числа, и Великая Теорема Ферма.
И ещё вдогонку: алгебре ещё лучше, чем на мехмате (и где-либо), учат в НМУ бесплатно без смс и регистрации, ограничение только по вместимости здания. Неважен возраст, социальный статус, образование и что угодно ещё. Хотите очный курс алгебры — вот.
Алгебра — мать порядка!
Хорошее годное улучшение. Однако в задачах метрических оптимизаций среди фрактальных кривых чаще дают большее преимущество непрерывные кривые, так что Z-кривая может быть не лучшим выбором. Хотя, конечно, куда лучше покоординатного обхода. Попробуйте непрерывные: кривая Гильберта (посложнее и потяжелее), H-кривая (попроще, поэффективнее: https://github.com/Kryptonite-RU/Hcurve). Это может улучшить результаты.