|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
http://pickup.mofile.com/9709689597429336
以上是我编的程序函数打包,解压放到matlab目录下就可以。
说明一下每个函数的用途:
Dgqd(a)-------对度规a(当然是矩阵形式给出来的)求导得到的3指标函数
Sdgd(a)-------利用Dgqd所得的三指标重新排列,以便后用。
以上两个函数实际都不怎么会用到,只是为了以下3个函数所编。
Ksf(a)--------------给一个度规a,求出对应的克氏符号
Liman(a)-------求度规a所对应的4指标黎曼张量
Liqi(a)-----------求度规a对应的2指标里奇张量
Rmql(a)---------求度规a所对应的曲率标量
补充:4维以下都适用。请把坐标都换成t,x,y,z形式。算出来,再换回去就可以了.
(一)function a=Dgqd(b)
u=length(b);
v=['t','x','y','z'];
for u1=1:u
for v1=1:u
for w1=1:u
w(u1,v1,w1)=diff(b(u1,v1),v(1,w1),1);
end
end
end
a=simplify(w);
(二)function x1=Sdgd(y1)
a=length(y1);
for b=1:a
for c=1:a
for d=1:a
e(b,c,d)=y1(b,c,d)+y1(d,b,c)-y1(c,d,b);
end
end
end
x1=simplify(e);
(三)function x1=Ksf(y1)
a=length(y1);
b=inv(y1);
c=Dgqd(y1);
d=Sdgd(c);
for m=1:a
for n=1:a
for q=1:a
e=0;
for m1=1:a
e=e+1/2*b(m,m1)*d(m1,n,q);
end
f(m,n,q)=e;
end
end
end
x1=simplify(f);
(四)function x1=Liman(y1)
v=['t','x','y','z'];
a=length(y1);
c=Ksf(y1);
for m1=1:a
for m2=1:a
for m3=1:a
for m4=1:a
d1(m1,m2,m3,m4)=diff(c(m4,m1,m3),v(1,m2),1)-diff(c(m4,m2,m3),v(1,m1),1);
end
end
end
end
for n1=1:a
for n2=1:a
for n3=1:a
for n4=1:a
e=0;
for n5=1:a
e=e+c(n5,n3,n1)*c(n4,n2,n5)-c(n5,n3,n2)*c(n4,n1,n5);
end
d2(n1,n2,n3,n4)=e;
end
end
end
end
x1=simplify(d1+d2);
(五)function x1=Liqi(y1)
a=length(y1);
b=Liman(y1);
for m1=1:a
for m2=1:a
e=0;
for n1=1:a
e=e+b(m1,n1,m2,n1);
end
d(m1,m2)=e;
end
end
x1=simplify(d);
(六)function x1=Rmql(y1)
a=length(y1);
b=inv(y1);
c=Liqi(y1);
for c1=1:a
for d1=1:a
e=0;
for c2=1:a
e=e+b(c1,c2)*c(d1,c2);
end
d(c1,d1)=e;
end
end
f=0;
for e1=1:a
f=f+d(e1,e1) ;
end
x1=simplify(f);
[ 本帖最后由 donkeyxu 于 2007-3-15 18:19 编辑 ] |
评分
-
1
查看全部评分
-
|