\n", "\n", "\n", "In SageMath, the function ``Polyhedron.restricted_automorphism_group`` computes the group of linear automorphisms, using non-trivial mathematics. You can use this to check your own program. In particular, try to match the [number of symmetries of the platonic solids](http://www-groups.mcs.st-andrews.ac.uk/~john/geometry/Lectures/L10.html):" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "120" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "I=polytopes.icosahedron()\n", "G = I.restricted_automorphism_group()\n", "G.order()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Multivariate interpolation\n", "For an infinite field $K$, a polynomial $f \\in K[x]$ of degree $d$ is uniquely determined by its values at $d+1$ points (see [here](https://en.wikipedia.org/wiki/Lagrange_polynomial)). This can be generalized to polynomials in multiple variables: if you know $f \\in K[x_1, \\ldots, x_n]$ at sufficiently many points, you can uniquely reconstruct it. In this project, you would write a function ``multivariate_interpolate`` which does this reconstruction.\n", "\n", "Inputs could either be lists ``points, values`` of the evaluation points and the values of $f$, or a function ``F`` which can be evaluated at concrete points $(x_1, \\ldots, x_n)$. Also, the bound on the degree of $f$ could be specified either as a bound on the total degree, or as a vector of length $n$ with bounds on the degree in each variable $x_i$. \n", "\n", "Further possible optional arguments:\n", "* ``symmetry = None`` allowing to specify that $f$ is invariant under certain permutations of its arguments (which can reduce the number of points needed to determine it)\n", "* ``check = False`` whether the interpolation function should evaluate at more points than necessary, to determine whether the given values/function ``F`` really is a polynomial of the specified degree\n", "\n", "*Remark:* Even though this is a very natural and useful function, it is currently not implemented in SageMath. If you do a good job with this project, you could consider submitting this as new code to be integrated into SageMath (and I would be happy to help with this)." ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.1", "language": "sage", "name": "sagemath" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }