Алгебраи c устанавливает вычисления с последовательностями - PullRequest
0 голосов
/ 18 марта 2020

Я посещаю алгебру c геометрию, и мы имеем дело с алгебраическими c множествами в алгебре полиномов. Я хотел создать код, который получит несколько полиномов и даст мне определенную декомпозицию его набора алгебр c, но я не уверен, как это сделать. Не могли бы вы дать мне несколько советов? Я знаком с python, но я даже не знаю каждый язык, который бы использовал. Я думал о MATLAB или Mathematica, потому что они хорошо работают с математикой, и мой университет дает это бесплатно для нас. Код будет делать следующее:

  1. Он получит конечную последовательность полиномов от нескольких переменных. Если более одного из них является мономом со степенью k> 1, он остановится и покажет сообщение об ошибке. Если ровно один из них является мономом со степенью k> 1, он разбивает последовательность на k последовательностей. Каждая из k новых последовательностей будет переменной вместо монома, а полиномы получаются при замене этой переменной на ноль в них. Например, последовательность (xyz, xy + yz + xz) будет разбита на (x, yz), (y, xz), (z, xy).
  2. После этого она проверит, если последовательности равны. Если они есть, они сольются. Если это не так, он будет работать с ними отдельно. Например, (xy, y + x) разделится на (x, y) и (y, x). Они равны, поэтому они объединятся в (x, y).
  3. Теперь он проверит каждую последовательность, полученную для разбиения. Если у него есть моном со степенью больше единицы, то он будет равен 1. В противном случае он ничего не будет делать.
  4. Если нет последовательности, полученной для разбиения, имеющей моном с степенью более одного, то он остановится и покажет каждую полученную последовательность.

Для примера, код получения (xyz, xy + yz + xz). Это сделает шаг 1, разделяя его на (x, yz), (y, xz), (z, xy). Затем, шаг 2 увидит, что нечего объединять. Затем шаг 3 увидит, что вы можете разделить его и выполнить шаг 1, разбив их на (x, y), (x, z), (y, x), (y, z), (z, x), (z, у). Затем шаг 2 проверит, что вы можете объединить их в (x, y), (y, z) и (x, z). Наконец, он пройдет шаг 3, а шаг 4 вернет (x, y), (y, z) и (x, z).

С другой стороны, если он получит (xy, wz), он вернет сообщение об ошибке.

Может ли кто-нибудь помочь мне с этим? Код не должен быть идеальным, потому что я собираюсь использовать только действительно хорошие полиномы. Полиномы индексируются как i, j, l, а переменные - X_ {i, j, l}. Спасибо за помощь.

...