Chinaunix首页 | 论坛 | 博客
  • 博客访问: 421651
  • 博文数量: 78
  • 博客积分: 1527
  • 博客等级: 上尉
  • 技术积分: 830
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-27 20:57
文章分类

全部博文(78)

文章存档

2011年(1)

2008年(12)

2007年(53)

2006年(12)

我的朋友

分类:

2007-09-12 23:34:56

Recently, I became one of the developers of the open-source computer algebra system (CAS) called .

Maxima is the open source descendant of the first ever computer algebra system, . Initially developed by the US Department of Defense, it was later commercialized. The company behind commercial MACSYMA has since disappeared, but in the late 1990s, the DOE agreed to permit the original version to be released under an open-source license.

My interest in Maxima is due to my interest in general relativity. Perhaps more than most other areas of physics, general relativity relies heavily on computer algebra tools, due to the complexity involved with defining and analyzing metrics in curved spacetime.

Maxima has two packages related to general relativity work. They both perform complicated tensor calculations. One package, itensor, is a general-purpose package that deals with indexed objects: specifically, objects with covariant, contravariant, and derivative indices. The package knows about contraction rules, the raising and the lowering of indices, ordinary and covariant differentiation, and Christoffel symbols. The other package, ctensor, is really a collection of subroutines that are designed to compute tensor components used mainly in general relativity, including the components of the Christoffel symbols, the Riemann tensor, the Ricci tensor, and the Weyl tensor. The two packages neatly complement each other: many problems can be solved by writing up and deriving indicial tensor equations using itensor, and then using a special function provided by the itensor package to convert the result into component form that can then be processed by ctensor.

The main problem with the tensor packages was, simply put, that they were broken! This is where I come in: having been able to fix the core functionality in itensor, I decided to offer my services to the Maxima development team.

I'm working on more than mere fixes, however. I have also extended the functionality of the tensor packages. On the one hand, I improved the algebraic power of itensor, introducing a new notation that helps preserve index ordering in more complicated tensor equations. On the other hand, I added to both ctensor and itensor the capability to deal with not just the standard metric formalism, but also with rigid frames, torsion, and conformal nonmetricity. Time permitting, I'd also like to add more capabilities in the future, to make Maxima "competitive" with other well-known tensor packages, such as SHEEP, CLASSI, and grTensorII.

Meanwhile, I added a third tensor package: atensor is a package that can deal with generalized (tensor) algebras, including Clifford, Grassmann, and Lie-algebras. I also fixed the cartan package, a package that deals with with differential forms. Last but not least, I changed these four packages so that their naming conventions now conform to that of commercial MACSYMA.

I have drafted that summarizes the work I've done. For additional reference, here's a link to the tensor package manuals (snapshot from the current development version of Maxima) and some demos:

The following are two more complete examples that demonstrate some of the new capabilities that I added to these packages:

The Kaluza-Klein Metric

In 1919, Theodor Kaluza proposed an extension to general relativity: using an appropriately constructed fifth dimension, he was able to incorporate electromagnetism into Einstein's theory of gravity. Recently, I the most basic of Kaluza's results: the equation of motion for a particle in empty five-dimensional space, as seen from a four-dimensional perspective.

Now that I am working with Maxima, the question arose: can the same result be reproduced using this computer algebra system? Surprisingly, the answer is a yes. With only minor changes to the current Maxima code base, I was able to .

The Petrov Classification

One of the common problems in general relativity is determining the equivalence of two metrics. Because the same manifold can be mapped using drastically different coordinate systems, it is usually not at all evident whether or not two metrics describe the same manifold. A that I am working on make it possible to derive the Petrov class for a metric specified using an orthonormal tetrad base.

From:

阅读(1115) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~