Math 480, Computational Algebraic Geometry

From cartan.math.umb.edu

Math 480 -- Computational Algebraic Geometry

Welcome to the wiki! Editing this page is exactly like editing Wikipedia. You may wish to see their help pages on editing and on typesetting mathematics.

Code repository

Please clone the course's git repository to your local machine and submit code assignments with git push. (See this link for instructions on installing git, after which you might want to type man gittutorial from your machine's command line.)

Course Textbook

The course mainly follows Ideals, Varieties, and Algorithms by Cox, Little, and O'Shea, however other textbooks can also provide supplementary material.

Overview[edit]

One may read about the history of Algebraic Geometry in the Wikipedia article on the subject. There is also thorough examination of the history of the subject written by Dieudonne, which is available here.

Algebraic Geometry is a very active research field -- a quick glance at the recent additions to the arXiv supports this assertion. There are quite a few research opportunities for undergraduates interested in Algebraic Geometry, especially in the North-Eastern region of the US. AGNES is a series of biannual weekend workshops in algebraic geometry. MIT and Harvard host a Algebraic Geometry seminar. Oakland University in Michigan organizes a yearly conference in Algebraic Geometry (MCAG). SIAM AG hosts a Algebraic Geometry mailing list. Finally, there is a REU program in Algebraic Geometry at Clemson University in South Carolina.

Course Structure[edit]

A typical semester spent on this course will reach Chapter 7 of the course textbook, "Invariant Theory of Finite Groups". Progress through the material can either be measured weekly through the completion of programming assignments or short presentations of material. A source code repository for the course is available here.

  • Chapter 1: Geometry, Algebra, and Algorithms
    • Programming Assignment:
Write a python program which can determine whether a polynomial is within the ideal generated by a given list of polynomials.
  • Chapter 2: Groebner Bases
    • Programming Assignment:
Implement the multi-variable division algorithm in Python.
Implement Buchberger's Algorithm.
  • Chapter 3: Elimination Theory
    • Programming Assignment:
  • Chapter 4: The Algebra-Geometry Dictionary
    • Programming Assignment:
  • Chapter 5: Polynomial and Rational Functions on a Variety
    • Programming Assignment:
  • Chapter 6: Robotics and Automatic Geometric Theorem Proving
    • Programming Assignment:
  • Chapter 7: Invariant Theory of Finite Groups
    • Programming Assignment:

Questions[edit]

Programming Assignments[edit]

Chapter 1[edit]

Chapter 2[edit]

Representing Multivariable Polynomials[edit]

I think I'll implement the polynomials as a list of dictionaries, so what I'll be storing is a list of unordered monomials:

Eg.

p = [{ 'c' : 6, 'x_1' : 2 , 'x_2' : 3, 'x_3' : 1}, { 'c' : 2, 'x_1' : 4, 'x_2' : 4, 'x_3' : 2}]

would represent \(6x_1^2x_2^3x_3 + 2x_1^4x_2^4x_3^2\)

For a moment, I thought about implementing the polynomial as a class, and add orderings as a class method. However, I think it would be more correct to order a polynomial by calling a library function:

ordered_p = polynomial.order(p, 'grevlex')

Or something similar; I don't think returning differently ordered lists as a class method is very Python like, which is why I'm leaning towards a library/module function. Patrickmclaren 02:49, 3 May 2012 (BST)

I think Sage has a class for rings and creates an instance of this class to store things like variable names and monomial orders. Then it has enother class for ring elements; instances of this class store things like monomials and coefficients (and an identifier for the ring that the element belongs to). Then the elements get simpler -- for example I think your polynomial above could get stored as a single dictionary, say

p = {(2, 3, 1): 6, (4, 4, 2): 2}

and the __repr__ method asks the ring for the variable names and the monomial ordering. Steven Glenn Jackson 12:04, 3 May 2012 (BST)