I have been searching Tensor software so long time, but collect a few before searching in wikipedia.
Here is a collection of tensor software from wikipedia.
- FTensor is a high performance tensor library written in C++.
- GRTensorII is a computer algebra package for performing calculations in the general area of differential geometry. GRTensor II is not a stand alone package, the program runs with all versions of Maple V Release 3 through Maple 9.5. A limited version (GRTensorM) has been ported to Mathematica.
- MathTensor is a tensor analysis system written for the Mathematica system. It provides more than 250 functions and objects for elementary and advanced users.
- Tensors in Physics is a tensor package written for the Mathematica system. It provides many functions relevant for General Relativity calculations in general Riemann-Cartan geometries.
- maxima is a free computer algebra system which should be usable for making tensor algebra calculations
- Ricci is a system for Mathematica 2.x and later for doing basic tensor analysis, available for free.
- Tela is a software package similar to Matlab and Octave, but designed specifically for tensors.
- Tensor Toolbox Multilinear algebra MATLAB software.
- TTC Tools of Tensor Calculus is a Mathematica package for doing tensor and exterior calculus on differentiable manifolds.
- EDC and RGTC “Exterior Differential Calculus” and “Riemannian Geometry & Tensor Calculus” are free Mathematica packages for tensor calculus especially designed but not only for general relativity.
- Tensorial “Tensorial 4.0″ is a general purpose tensor calculus package for Mathematica. Already a mature package, Tensorial was successfully applied in a broad range of fields including general relativity, continuum mechanics. A PDF image can be found at this web address .
- Cadabra “Cadabra” is a computer algebra system (CAS) designed specifically for the solution of problems encountered in field theory. It has extensive functionality for tensor polynomial simplification including multi-term symmetries, fermions and anti-commuting variables, Clifford algebras and Fierz transformations, implicit coordinate dependence, multiple index types and many more. The input format is a subset of TeX. Both a command-line and a graphical interface are available.
I have a debian cluster with 10 nodes(from node17 to node 26). And we need to login ether of them wihout password. Here is my configuration.
1. ssh installation
node26#apt-get install ssh
2. Generate a pair of authentication keys.
node26:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_ras.
Your public key has been saved in id_ras.pub.
The key fingerprint is:
fd:c9:22:7d:a4:08:4d:04:b1:c2:89:73:4b:93:61:e2 root@node26
3. generate authorized keys
node26:~#cd .ssh
node26:~#cat id_rsa.pub>>authorized_keys
node26:~#scp .ssh/* node17:~/.ssh/
root@node17’s password:
After inputting password, it works. Now I can log in node17 from node26 or in node26 from node17 without password.
Writing a shell script can easily to copy .ssh to every node.
Now it’s done.
Today I find another software on wikipedia which can deal with tensor, maybe more powerful then Maxima.
Here is an introduction for Cadabra:
Cadabra is a computer algebra system (CAS) designed specifically for the solution of problems encountered in field theory. It has extensive functionality for tensor polynomial simplification including multi-term symmetries, fermions and anti-commuting variables, Clifford algebras and Fierz transformations, implicit coordinate dependence, multiple index types and many more. The input format is a subset of TeX. Both a command-line and a graphical interface are available.
Key features of Cadabra:
Input and output using TeX notation.
Designed for field-theory problems, with handling of anti-commuting and non-commuting objects without special notations for their products, gamma matrix algebra, Fierz identities, Dirac conjugation, vielbeine, flat and curved, covariant and contravariant indices, implicit dependence of tensors on coordinates, partial and covariant derivatives…
Powerful tensor simplification algorithms, not just for mono-term symmetries but also for multi-terms symmetries like the Bianchi identity, or dimensionally-dependent symmetries like the Schouten identity.
Technical highlights:
Internal graph data structure based on tree.hh
A multiple-inheritance typing system using properties.
Open source C++ code, with documentation on how to extend the system with new algorithm modules.
Recently I’m trying to use Maxima to solve my problem as possibly as I can. It is a good CAS for me, although sometimes its variable and function defination is still strange for me! Always I need to look the Maxima manual when I work with Maxima.
April 14,I wrote a post “Solve A Transcendental Equation With Matlab“. Today I re-do it with Maxima. And I get it.
(%i1) f(x):=cos(x)*cosh(x)+1;
(%o1) f(x):=cos(x)*cosh(x)+1
(%i2) for i:1 step 1 thru 10 do a[i]:find_root(f(x),x,(i-1)*3,i*3);
(%o2) done
(%i3) listarray(a);
(%o3)[1.875104068711961,4.694091132974174,7.854757438237613,10.99554073487547,
14.13716839104647,17.27875953208824,20.42035225104125,23.56194490180645,
26.7035375555183,29.84513020910282]
(%i4) for i:1 step 1 thru 10 do display(f(a[i]));
f(1.875104068711961)=2.2204460492503131*10^-16
f(4.694091132974174)=-2.3980817331903381*10^-14
f(7.854757438237613)=-8.7041485130612273*10^-14
f(10.99554073487547)=7.3411277057289226*10^-12
f(14.13716839104647)=-9.372347342662124*10^-11
f(17.27875953208824)=1.7810393493356003*10^-8
f(20.42035225104125)=-6.8267788089215742*10^-8
f(23.56194490180645)=1.3439967981754286*10^-5
f(26.7035375555183)=6.2311912081280951*10^-6
f(29.84513020910282)=-0.0052798737740867
(%o4) done
It is more easier.
Sometimes I cooperate plot,ginput, and fzero these 3 functions to solve algebraic equation.
First, plot the algebraic equation’s drawing.
Then, catch the coordinates of these dots close to roots.
At the end, use command fzero to find the more precise roots with these roots.
e.g.
f=@(x) cos(x).*cosh(x)+1; %define the function
x=0:0.01:2*pi;
plot(x,f(x));
grid on;%then 2 roots will be found in the plotting.
[X,Y]=ginput(2); %catch two dots close to roots.
X =
1.8306
4.6855
Y =
-0.3655
0.6579
for i=1:length(X)
root(i)=fzero(f,X(i));
end
Now I get these two roots between 0 and 2*pi.