Posts Tagged ‘IRC’

Hi everyone, today I start to write a new class for dealing with non-Abelian forms, i.e., forms with values in a certain Lie-algebra. This could be really useful when computing Yang-Mills theories in physics.

So, I started by defining a new object which have two entries, a differential form and a matrix, and call it nAform. The code I wrote was,

class nAform(object): 
    def __init__(self, a, b): 
        self._form = a 
        self._matrix = b 
    def __add__(self, other): 
        if isinstance(other, nAform): 
            if (self._matrix == other._matrix): 
                return nAform(self._form + other._form, self._matrix) 
                return NotImplemented 
        return NotImplemented 
    def __mul__(self, other): 
        if isinstance(other, nAform): 
            return nAform(self._form.wedge(other._form), self._matrix.commutator(other._matrix)) 
        return NotImplemented 
    def diff(self): 
        return nAform(self._form.diff(), self._matrix) 
    def __repr__(self): 
        return str((self._form, self._matrix)) 
    def __str__(self): 
        return self.__repr__()


One should enter a couple of arguments when defining the nAform object. The __init__ attribute recognize them.

Then an addition attribute is defined, this is incomplete!!!

Another attribute is the multiplication, which take the wedge product of the forms and the commutator of the matrices.

I also implement the exterior derivative on nAform objects.

Finally the __repr__ and __str__ are attributes for returning the data.


  • I couldn’t implement the addition of nAform’s if the matrices are different. As
    Nicolas M. Thiery note, this objects should define a Monoid (or something quit close to it). But my programming skills are not so developed.
  • It would be great if one could define the multiplication by a constant or function.
  • The show attribute is not implemented, but one can show either forms of matrices by themselves… I think that is someone knows how they work, would be easy to do that! 😉
  • One could try to implement the simplification attributes on differential forms.
  • I don’t remember exactly why I was looking for it, but I think could be useful to define and attribute on forms which show the generator, like .gens(), but for a given differential form, say
    sage: x, y, z = var('x, y, z')
    sage: U = CoordinatePatch((x, y, z)); U
    Open subset of R^3 with coordinates x, y, z
    sage: F = DifferentialForms(U); F
    Algebra of differential forms in the variables x, y, z
    sage: F.gens()
    (dx, dy, dz)
    sage: F.ngens()

    I’d like one which do like this,

    sage: form1 = DifferentialForm(F, 1); form1.ngens()
    sage: form1 = DifferentialForm(F, 1); form1.gens()
    (dx, dy, dz)
    form2 = DifferentialForm(F, 2); form2.ngens()
    sage: form1 = DifferentialForm(F, 1); form1.gens()
    (dx/\dy, dy/\dz, dz/\dx)
  • Simple SAGE sheet


    Hope you can help me with these plenty tasks.




    Read Full Post »

    As I’ve mention before, actually I’m dealing with some messy supergravity calculations. 😛 Unlike most of my colleges, I don’t use Mathematica but their open source SAGE (applauses).

    Declaring (weird) Variables

    Through the calculations I should care about 10 dimensions, with a 5 dimensional restriction parametrized by  five different angles, which I call (\theta,\phi,\bar{\psi},\bar{\theta},\bar{\phi})… thus, naturally the question of whether a variable can be declared in a way s.t., when using the function show for printing the results, the latex equivalent to my expression is shown, appears!

    The answer came a few minutes ago! Thanks to Niels Bruin via sage-devel google group. 😉

    sage: var("bps", latex_name=r"\hat{\psi}")
    sage: expr = sin(bps)
    sage: show(expr)

    returns \sin(\hat{\psi}). 😀

    Really neat!!!

    Adding equations in the text

    Recently I re-discover the “office”-like functionality of sage notebook. Have you notice the thin blue line that appears when the cursor is about to reach the calculation window by above?

    If you click on the blue line, an intermediate calculation line will appear. Whilst, if you click on the line while holding the Shift key, a sort of office suite environment is opened!!!

    There you can write in a LibreOffice style!!!

    That’s not all. Jason Grout has pointed out to me that one can insert LaTeX equations in this environment just by using the dollar-dollar ($ <your code> $) for inline equations, or doubledollar-doubledollar ($$ <your code> $$) for centered-nonumbered equations.

    Fabulous, Isn’t it?!

    That’s all for now! 😉



    Read Full Post »

    Today I was calculating some stuff with the help of SAGE, and realize that the expressions got a lot (really, a lot) simpler if they where written in terms of  hyperbolic functions instead of exponentials.


    e^x = \cosh(x)+\sinh(x)

    e^{-x} = \cosh(x)-\sinh(x)


    So I enter the sage-devel channel of IRC (freenode), but there was a lazy day around… Sunday. Therefore I decided to write to the sage-dev group on Google groups.

    Francois Maltey answer my question on how to do the transformation… He has written a package that does it!

    Let follow his instructions…

  • Go to page http://wiki.sagemath.org/symbolics/rewrite
    look at the second line the “attachement” (in smaller characters)
    and get the most recent file.
  • Then put this file in your Sage directory
    In Sage, type : load “/the/good/file/in/the/good/directory’
    Then call the rewrite function.
  • Thank you Francois


    Suppose the path to the file is “/home/me/rewrite-xxx.sage”

    sage: load "/home/me/rewrite-xxx.sage"
    sage: A = exp(x) + exp(-x)
    sage: rewrite(A, 'exp2sinhconh')

    If you go to http://wiki.sagemath.org/symbolics/rewrite, will find all possible commands which perform such transformations.



    Read Full Post »

    Last week I was trying to integrate a power of the Hyperbolic Tangent  (tanh) in sage, so I first try,

    sage: n,x = var('n,x')
    sage: integrate(tanh(x)^n, x)

    but Sage didn’t integrate it. So I impose n to be an integer,

    sage: n,x = var('n,x')
    sage: assume(n, 'integer')
    sage: integrate(tanh(x)^n, x)

    and still nothing. However, for specific values of n it worked,

    sage: for n in range(1,6):
    ...  integrate(tanh(x)^n, x)

    the results were shown.

    In the other hand, Mathematica could solve the integration in general,

    Integrate[Tanh[x]^n, x]

    in terms of Hyperbolic Functions (which Maxima does not manages). Even in the case of specific values of n, the given results were much nicer because the answer were given in term of hyperbolic functions instead of exponential.

    Then, I decide to try the Sage-Mathematica synapses.

    What do we need?

    • Mathematica installed in the computer.
    • The License information of Mathematica (even if you have already registered it)
    • A working Sage installation.


    Open a terminal and call a sage subshell,

    $ sage -sh

    and call the mathematica kernel,

    $ math

    Here you will be asked to provide the license information. NOTE: It is possible that if runs without the information of the license, in that case you are ready to use Mathematica within Sage.

    After provide the information you are ready.

    Using it!

    The way of using is a bit weird, at the beginning,  for integrate the sine function, use this,

    sage: mathematica.Integrate(sin(x), x)


    Since we are welling to use Mathematica kernel, the first word would be mathematica, followed by a Mathematica command separated by a point. Then, using Sage notation the argument.

    This would work! However, the answer is presented in Mathematica notation. If you’d like to have the answer in Sage notation, use something like

    sage: eq = mathematica.Integrate(sin(x), x); eq._sage_()

    That’s it.

    I’d like to thank to schilly for his help.

    Read Full Post »

    I’ve been trying Sage(math) for the last three weeks, and I can say it’s a charming piece of software. Works very well, the IRC channel is really, really helpful, the interface is simple, the Python platform is rather natural to manage, evolves quickly… and so on.

    However, there are some weak points I’d like to comment…

    • Documentation: Since Sage(math) use about 70 different applications, the documentation is FAR of being complete. It would be useful if the documentation is improved, at least if it refers to, say, Maxima documentation… or Numpy… etc.
    • Hypergeometric Functions: Besides the confluent one, the hypergeometric functions are left behind. I guess the problem is the maxima support of Special Functions.
    • Browser Integration: There are still some weak points in browsers other than firefox… like Chromium-browser. A.f.a. I know, Chromium has problems opening new worksheets, and with some permissions settings.

    So, I recomend using firefox as the main browser for Sage(math) and if possible integrate it with other calculation programs like Maple or Mathematica. And finally look up further into Maxima, and other pieces of Sage documentation, as well as using the IRC channel (#sage-devel) an google groups for asking questions.

    Read Full Post »

    A few minuted ago I could install and use the sagetex package for Sage(math). I’d like to thank ElMonkey for helping me via the IRC channel #sage-devel.


    It is assumed that you have installed

    • A LaTeX compiler,
    • A LaTeX editor,
    • and Sage(math)

    all of them configured and working properly.

    Downloading the Package.

    Get the last version of the package in http://www.sagemath.org/packages/optional/.

    Installing the Package.

    Useful Advise.

    My Sage script is located in a sub/sub/sub/subfolder/Sage-4.3.1 (from my HOME folder), so when I want to running it, I should type

    $ sub/sub/sub/subfolder/Sage-4.3.1/./sage

    It isn’t nice to repeat this one and again, every day.

    Thus, I created an alias.

    Open the .bashrc file in your editor (gedit for example)

    $ gedit .bashrc

    add (at the end of the file) the line

    alias sage='/path/to/your/sage/folder/./sage'

    which in my example would be,

    alias sage='/home/doxdrum/sub/sub/sub/subfolder/Sage-4.3.1/./sage'

    Save and close the editor. Now in the terminal,

    $ source .bashrc

    and from now on I just type

    $ sage

    for running the program.

    The real installation.

    Now, type in the terminal

    $ sage -i sagetex-2.2.1.spkg

    and that’s it.


    After the installation, a new folder is placed into the Sage folder. Look into local/share/texmf. All files (and folders) inside it must be copied to the LaTeX tree.

    In a Linux distribution the LaTeX tree should be placed in /usr/share/texmf/tex/latex

    $ sudo cp -r /path/to/Sage-4.3.1/local/share/texmf \
    $ sudo mktexlsr /usr/share/texmf/tex/latex

    This should work. However, if it doesn’t… the desperate method is to copy the sagetex.sty from /path/to/Sage-4.3.1/local/share/texmf to the folder of the TEX file.

    The TeX File.

    It is time to create a file.tex, just as any other TEX file. Add the line


    to the preable.

    Compiling the TeX file.

    When you run

    $ pdflatex file.tex

    the compilator exits with errors… but you get a file.sage, sage-compile it and run pdflatex again,

    $ sage file.sage
    $ pdflatex file.tex

    There it is!!!

    A resume compilation line could be

    $ pdflatex file.tex && sage file.sage && pdflatex file.tex

    Enjoy it!

    Read Full Post »

    Adding a Calculation Line.

    For adding a calculation line between other two lines, pass the pointer between them and click the narrow line that appears close to the bottom line.

    Text in the Notebook.

    When you call the notebook from the terminal, it appear as a calculation line. If you’d like to add text, press the Shift-key when adding a new line where the text would be placed. NOTE: you can add math LaTeX symbols as usual surrounded by dollar symbols.

    LaTeX Text.

    When you add text in the work-sheet, It look more like OOfice than LaTeX. If in the calculation line you introduce the text precede by a line containing


    when you `evaluate’ the line, the LaTeX text would appear as result.

    I do not know if it’s possible to drop the text in the command line after its evaluation.

    Editing a Work-Sheet.

    For editing a worksheet,

    1. Click the  button Edit in the Upper-Right corner of the notebook page.
    2. In the text-like mode appearing erase the lines you’d like to drop.
    3. Save the changes (in the button over the first text line).
    4. Return to the Worksheet-mode.

    Another way (easier for small editing)

    1. Erase the text in the calculation line you want to drop
    2. In the empty line click the Backspace-key.

    Thanks to the people in the IRC channel #sage-devel.

    Read Full Post »

    Older Posts »