Changes between Initial Version and Version 7 of Ticket #10132

10/20/10 00:27:25 (11 years ago)

to Joris The work you did is really great. Thank you also for the reference to the page with instructions. I have just come back to Bogota, so I could not look in details in the code improvements you did. I will carefully study them and then comment in details. Anyway, it is incredible help.

Now concerning the remarks:

Sometimes the terminology "vector" is used where "vector field" would be more appropriate.

Yes, sure, we will change this.

It seems as if this class would benefit from having a small template for a generic tensor class. Right now, many of the member functions return tensors as lists (which is fine), but there are also member functions which take an optional argument to return only one component of that tensor. This code then needs to check whether the optional argument is valid, adding some complexity to the code. Maybe we could define a simple tensor class which just has getitem and setitem and then let this class deal with components, input checking, etc.

Also agree.

I think that some of the functions in the vector_functions module have Sage alternatives, which should be used instead.

It is interesting, I could not find these alternatives, maybe because I do not know Sage well enough. If such alternatives exist, surely we need to use them.

We need to think on providing an interface to parametric_plot3d, so that these kind of surfaces can easily be plotted.

I also had this idea, for example for plotting vector fields along the surface (see examples in the worksheet). However, I decided to use Unix way: small programs from which the user organizes something like a pipe to get the result. The reason is that it is easier to tune small stones, than to handle big rocks :) May be I am wrong, we should think about this possibility: an interface to plotting routines.

Caching the result of computing the fundamental forms, the Christoffel symbols, etc. This would make subsequent calls to the components of these tensors much faster, at the expense of some memory.

Sometimes, it is needed to find one Christoffel symbol, or a coordinate of a metric tensor (we should take into account the fact that calculations in differential geometry may be very very long). So, from my point of view, it possible to use two approaches (as it was done in Maxima). If a user needs all the information on the surface in order to solve some problem, the class calculates everything (first and second fundamental forms, curvatures, etc) and caches it. But also user may say that he needs only one thing, then the class returns exactly the required object.

The numerical routines should be optimized for float operations using fast_float or similar.

Completely agree, we should do it.

To Andrei: Wiki, it is a good idea, thank you! I will look how to do it, and surely this is the decision.

It may be useful to consider creating some classes for "generic manifolds" and then specialize them to curves and surfaces. This can be useful to ensure uniform interface in the future and have a possibility right from the start to put "generic methods" into appropriate places.

Certainly, there are such methods, for example, find Christoffel symbols of a metric, find a geodesic, etc. which can be included in the more general class of Riemannian manifold.

I submitted a request to join the group Sage-devel, but there is no response up to now. When I manage to join, I will post the information in this group as well.


  • Ticket #10132

    • Property Cc jvkersch mhampton niles jason novoselt added
  • Ticket #10132 – Description

    initial v7  
    1 I am working in the field of differential geometry (research and teaching) and use SAGE for two or three years in the research work and in the teaching as well.
    3 SAGE includes rather developed methods in algebra, number theory, algebraic geometry, etc. but lacks the differential geometry. Therefore I would like to contribute to the SAGE development in this direction.
    5 To start with, I wrote a class 'parametrized_surface3d', and made a worksheet "Ellipsoid via SAGE" which demonstrates the methods of the class in work.  I attached the corresponding files to this ticket.
    6 Note that, at this moment, the class is not optimized from the programing point of view (calculation time, catching exeptions, etc), but somehow it works.
    8 I plan to write also the similar classes for curves on the plane and in the 3-dimensional space, as well as a class for a surface given implicitly. The further plans are Riemannian geometry, etc, though the life is short :) so I do not know if I will be able to complete this program. Anyway, I hope I will write a text-book "Elementary differential geometry via SAGE" which in some sense will be similar to A.Gray's book "Differential geometry via Mathematica".
    10 So I would be thankful if I could get answers on the following questions:
    12 1) What do you think, is it important to include the differential geometric stuff to SAGE?
    14 2) Are there other people who work in the same direction? It would be good if I could cooperate with them.
    16 3) What recommendations can you give concerning the code of the class for I could take into account in my future work.