Modello di linearizzazione della RG

Giampaolo Bottoni - 11 aprile 2010

Propongo un modo innovativo per linearizzare ( in modo NON lineare ) le
equazioni della Relatività Generale.
Con questo modello potrei studiare le interazioni gravitazionali tra buchi
neri ed il pregio del modello è che, nel caso in cui uno solo dei buchi neri
sia nettamente prevalente su tutti gli altri, le equazioni ottenute
tendono ad essere quelle esatte ossia tali per cui il tensore di
Ricci risulti ovunque nullo.
Nelle vicinanze di un singolo buco nero l'azione del buco nero è
nettamente prevalente rispetto a quelle di tutti gli altri e dunque
questo modello fornisce una ottima approssimazione delle equazioni della
RG tanto migliore quanto più la RG si discosta dal classico modello
gravitazionale newtoniano.

(%i1) (if atom(lg) then load(ctensor));
Result

Inizializzo la libreria ctensor di Maxima.

(%i2) init_ctensor();
Result

Definisco una funzione del tutto generica delle coordinate oltre alla funzione
di servizio rq.

(%i3) rq:x^2+y^2+z^2;
Result

La funzione U(x,y,z) del tutto generica è ricavata dalla classica funzione
potenziale newtoniana. Specifico genericamente le variabili da cui dipende.

(%i4) depends(U,[x,y,z]);
Result

La funzione b mi serve solo per semplificare l'input.

(%i5) b:U/(U-1);
Result

(%i6) lgmia: matrix (
[ 1-U, 0,0,0 ],
[ 0,-1+b*x^2/rq,b*x*y/rq, b*x*z/rq ],
[ 0,b*x*y/rq,-1+b*y^2/rq,b*y*z/rq ],
[ 0,b*x*z/rq,b*y*z/rq,-1+b*z^2/rq]);

Result

Dichiaro alla libreria ctensor che faccio uso di coordinate cartesiane

(%i7) ct_coords: [t,x,y,z];
Result

In base alle esigenze della libreria ctensor di cui ho fatto il
load, inizializzo il tensore metrico covariante che si deve chiamare lg.

(%i8) lg:ratsimp(lgmia);
Result

Calcolo la metrica ovvero il tensore metrico controvariante
che deve essere la matrice inversa del tensore metrico
covariante.

(%i9) cmetric();
Result

(%i10) uug:ug$

Cerco di semplificare il piu' possibile l'espressione del
tensore metrico controvariante

(%i11) ug:ratsimp(uug);
Result

Anche se non serve ora faccio vedere che lg ed ug sono una la matrice
inversa dell'altra

(%i12) ratsimp(ug . lg);
Result

Ora calcolo i simboli di christoffel di prima e seconda specie
visualizzandoli tutti. Attenzione alle regole della libreria ctensor che
mette come terzo indice quello che di solito viene scritto come
primo indice.

(%i13) christof(all);
Result

Provo a semplificare una delle componenti del simbolo di Christoffel
di seconda specie.

(%i61) ratsimp(mcs[2,2,2]);
Result

Creo il tensore di Riemann sopprimendo l'output che probabilmente sarebbe
troppo lungo per essere stampato.

(%i62) riemann(false);
Result

Ora faccio lo stesso calcolando il tensore di Ricci.

(%i63) ricci(false);
Result

Ora trasformo il tensore di Ricci in matrice.

(%i64) mat_ricci: ratsimp( matrix(
[ ric[1,1],ric[1,2],ric[1,3],ric[1,4]],
[ ric[2,1],ric[2,2],ric[2,3],ric[2,4]],
[ ric[3,1],ric[3,2],ric[3,3],ric[3,4]],
[ ric[4,1],ric[4,2],ric[4,3],ric[4,4]]))$

Innanzi tutto controllo che i termini non diagonali della
prima riga e colonna siano degli zeri.

(%i65) forsezeri: [ratsimp(ric[2,1]),ratsimp(ric[3,1]),ratsimp(ric[4,1]),
ratsimp(ric[1,2]),
ratsimp(ric[1,3]),
ratsimp(ric[1,4])];

Result

Controllo che il tensore di ricci e' un tensore simmetrico... come da manuale
ma se uno vuol fare il san Tommaso...

(%i66) certozeri: [ratsimp(ric[2,3]-ric[3,2]), ratsimp(ric[2,4]-ric[4,2]),
ratsimp(ric[3,4]-ric[4,3]) ];

Result

Questi non sono zeri ma se la funzione U(x,y,z) assume
dei valori adeguati lo debbono diventare...
Intanto li stampo...

(%i67) ratsimp(ric[1,1]);
Result

(%i68) ratsimp(ric[2,2]);
Result

(%i69) ratsimp(ric[3,3]);
Result

(%i70) ratsimp(ric[4,4]);
Result

(%i71) ratsimp(ric[2,3]);
Result

(%i72) ratsimp(ric[2,4]);
Result

(%i73) ratsimp(ric[3,4]);
Result

Ora mi preparo a specificare cosa deve valere la funzione U(x,y,z) per fare
in modo che la metrica sia quella di un buco nero neutro ossia sia la metrica
di Schwarzschild.

(%i74) v0n:2*m/rq^(1/2);
Result

Specifico tutte le derivate di primo e secondo ordine.

(%i75) vxn:ratsimp(diff(v0n,x));
Result

(%i76) vyn:ratsimp(diff(v0n,y))$

(%i77) vzn:ratsimp(diff(v0n,z))$

(%i78) vxxn:ratsimp(diff(vxn,x));
Result

(%i79) vyyn:ratsimp(diff(vyn,y))$

(%i80) vzzn:ratsimp(diff(vzn,z))$

(%i81) vxyn:ratsimp(diff(vxn,y));
Result

(%i82) vxzn:ratsimp(diff(vxn,z))$

(%i83) vyzn:ratsimp(diff(vyn,z))$

Ora sostituisco alle derivate alcuni simboli ossia uso v0, vx, vy, vz, vxx,
vxy, vzz, vxy, vxz, vyz.
Inizio la procedura con ric[1,1]

(%i84) rics:ratsimp(ric[1,1]);
Result

(%i85) ric1:ratsimp(subst(vx,diff(U,x),rics))$

(%i86) ric2:ratsimp(subst(vy,diff(U,y),ric1))$

(%i87) ric3:ratsimp(subst(vz,diff(U,z),ric2))$

(%i88) ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$

(%i89) ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$

(%i90) ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$

(%i91) ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$

(%i92) ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$

(%i93) ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$

(%i94) rica:ratsimp(subst(v0,U,ric9));
Result

Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n.

(%i95) ric1n:ratsimp(subst(vxn,vx,rica))$

(%i96) ric2n:ratsimp(subst(vyn,vy,ric1n))$

(%i97) ric3n:ratsimp(subst(vzn,vz,ric2n))$

(%i98) ric4n:ratsimp(subst(vxxn,vxx,ric3n))$

(%i99) ric5n:ratsimp(subst(vyyn,vyy,ric4n))$

(%i100) ric6n:ratsimp(subst(vzzn,vzz,ric5n))$

(%i101) ric7n:ratsimp(subst(vxyn,vxy,ric6n))$

(%i102) ric8n:ratsimp(subst(vxzn,vxz,ric7n))$

(%i103) ric9n:ratsimp(subst(vyzn,vyz,ric8n))$

(%i104) rican:ratsimp(subst(v0n,v0,ric9n))$

Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero
o cosa vien fuori ?

(%i105) ratsimp(rican);
Result

Ripeto tutta la procedura con ric[2,2]

(%i106) rics:ratsimp(ric[2,2]);
Result

(%i107) ric1:ratsimp(subst(vx,diff(U,x),rics))$

(%i108) ric2:ratsimp(subst(vy,diff(U,y),ric1))$

(%i109) ric3:ratsimp(subst(vz,diff(U,z),ric2))$

(%i110) ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$

(%i111) ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$

(%i112) ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$

(%i113) ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$

(%i114) ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$

(%i115) ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$

(%i116) rica:ratsimp(subst(v0,U,ric9));
Result

Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n.

(%i117) ric1n:ratsimp(subst(vxn,vx,rica))$

(%i118) ric2n:ratsimp(subst(vyn,vy,ric1n))$

(%i119) ric3n:ratsimp(subst(vzn,vz,ric2n))$

(%i120) ric4n:ratsimp(subst(vxxn,vxx,ric3n))$

(%i121) ric5n:ratsimp(subst(vyyn,vyy,ric4n))$

(%i122) ric6n:ratsimp(subst(vzzn,vzz,ric5n))$

(%i123) ric7n:ratsimp(subst(vxyn,vxy,ric6n))$

(%i124) ric8n:ratsimp(subst(vxzn,vxz,ric7n))$

(%i125) ric9n:ratsimp(subst(vyzn,vyz,ric8n))$

(%i126) rican:ratsimp(subst(v0n,v0,ric9n))$

Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero
o cosa vien fuori ?

(%i127) ratsimp(rican);
Result

Ripeto tutta la procedura con ric[3,3]

(%i128) rics:ratsimp(ric[3,3]);
Result

(%i129) ric1:ratsimp(subst(vx,diff(U,x),rics))$

(%i130) ric2:ratsimp(subst(vy,diff(U,y),ric1))$

(%i131) ric3:ratsimp(subst(vz,diff(U,z),ric2))$

(%i132) ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$

(%i133) ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$

(%i134) ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$

(%i135) ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$

(%i136) ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$

(%i137) ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$

(%i138) rica:ratsimp(subst(v0,U,ric9));
Result

Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n.

(%i139) ric1n:ratsimp(subst(vxn,vx,rica))$

(%i140) ric2n:ratsimp(subst(vyn,vy,ric1n))$

(%i141) ric3n:ratsimp(subst(vzn,vz,ric2n))$

(%i142) ric4n:ratsimp(subst(vxxn,vxx,ric3n))$

(%i143) ric5n:ratsimp(subst(vyyn,vyy,ric4n))$

(%i144) ric6n:ratsimp(subst(vzzn,vzz,ric5n))$

(%i145) ric7n:ratsimp(subst(vxyn,vxy,ric6n))$

(%i146) ric8n:ratsimp(subst(vxzn,vxz,ric7n))$

(%i147) ric9n:ratsimp(subst(vyzn,vyz,ric8n))$

(%i148) rican:ratsimp(subst(v0n,v0,ric9n))$

Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero
o cosa vien fuori ?

(%i149) ratsimp(rican);
Result

Ripeto tutta la procedura con ric[4,4]

(%i150) rics:ratsimp(ric[4,4]);
Result

(%i151) ric1:ratsimp(subst(vx,diff(U,x),rics))$

(%i152) ric2:ratsimp(subst(vy,diff(U,y),ric1))$

(%i153) ric3:ratsimp(subst(vz,diff(U,z),ric2))$

(%i154) ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$

(%i155) ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$

(%i156) ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$

(%i157) ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$

(%i158) ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$

(%i159) ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$

(%i160) rica:ratsimp(subst(v0,U,ric9));
Result

Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n.

(%i161) ric1n:ratsimp(subst(vxn,vx,rica))$

(%i162) ric2n:ratsimp(subst(vyn,vy,ric1n))$

(%i163) ric3n:ratsimp(subst(vzn,vz,ric2n))$

(%i164) ric4n:ratsimp(subst(vxxn,vxx,ric3n))$

(%i165) ric5n:ratsimp(subst(vyyn,vyy,ric4n))$

(%i166) ric6n:ratsimp(subst(vzzn,vzz,ric5n))$

(%i167) ric7n:ratsimp(subst(vxyn,vxy,ric6n))$

(%i168) ric8n:ratsimp(subst(vxzn,vxz,ric7n))$

(%i169) ric9n:ratsimp(subst(vyzn,vyz,ric8n))$

(%i170) rican:ratsimp(subst(v0n,v0,ric9n))$

Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero
o cosa vien fuori ?

(%i171) ratsimp(rican);
Result

Ora verifico anche i termini NON DIAGONALI che possono essere diversi
da zero se la funzione non possiede le opportune caratteristiche.

(%i172) rics:ratsimp(ric[2,3]);
Result

(%i173) ric1:ratsimp(subst(vx,diff(U,x),rics))$

(%i174) ric2:ratsimp(subst(vy,diff(U,y),ric1))$

(%i175) ric3:ratsimp(subst(vz,diff(U,z),ric2))$

(%i176) ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$

(%i177) ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$

(%i178) ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$

(%i179) ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$

(%i180) ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$

(%i181) ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$

(%i182) rica:ratsimp(subst(v0,U,ric9));
Result

Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n.

(%i183) ric1n:ratsimp(subst(vxn,vx,rica))$

(%i184) ric2n:ratsimp(subst(vyn,vy,ric1n))$

(%i185) ric3n:ratsimp(subst(vzn,vz,ric2n))$

(%i186) ric4n:ratsimp(subst(vxxn,vxx,ric3n))$

(%i187) ric5n:ratsimp(subst(vyyn,vyy,ric4n))$

(%i188) ric6n:ratsimp(subst(vzzn,vzz,ric5n))$

(%i189) ric7n:ratsimp(subst(vxyn,vxy,ric6n))$

(%i190) ric8n:ratsimp(subst(vxzn,vxz,ric7n))$

(%i191) ric9n:ratsimp(subst(vyzn,vyz,ric8n))$

(%i192) rican:ratsimp(subst(v0n,v0,ric9n))$

Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero
o cosa vien fuori ?

(%i193) ratsimp(rican);
Result

Verifico anche il termine NON DIAGONALE r[2,4] che puo' essere diverso
da zero se la funzione non possiede le opportune caratteristiche.

(%i194) rics:ratsimp(ric[2,4]);
Result

(%i195) ric1:ratsimp(subst(vx,diff(U,x),rics))$

(%i196) ric2:ratsimp(subst(vy,diff(U,y),ric1))$

(%i197) ric3:ratsimp(subst(vz,diff(U,z),ric2))$

(%i198) ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$

(%i199) ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$

(%i200) ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$

(%i201) ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$

(%i202) ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$

(%i203) ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$

(%i204) rica:ratsimp(subst(v0,U,ric9));
Result

Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n.

(%i205) ric1n:ratsimp(subst(vxn,vx,rica))$

(%i206) ric2n:ratsimp(subst(vyn,vy,ric1n))$

(%i207) ric3n:ratsimp(subst(vzn,vz,ric2n))$

(%i208) ric4n:ratsimp(subst(vxxn,vxx,ric3n))$

(%i209) ric5n:ratsimp(subst(vyyn,vyy,ric4n))$

(%i210) ric6n:ratsimp(subst(vzzn,vzz,ric5n))$

(%i211) ric7n:ratsimp(subst(vxyn,vxy,ric6n))$

(%i212) ric8n:ratsimp(subst(vxzn,vxz,ric7n))$

(%i213) ric9n:ratsimp(subst(vyzn,vyz,ric8n))$

(%i214) rican:ratsimp(subst(v0n,v0,ric9n))$

Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero
o cosa vien fuori ?

(%i215) ratsimp(rican);
Result

Ora verifico anche il termine NON DIAGONALE r[3,4] che potrebbe essere diverso
da zero se la funzione non possiede le opportune caratteristiche.

(%i216) rics:ratsimp(ric[3,4]);
Result

(%i217) ric1:ratsimp(subst(vx,diff(U,x),rics))$

(%i218) ric2:ratsimp(subst(vy,diff(U,y),ric1))$

(%i219) ric3:ratsimp(subst(vz,diff(U,z),ric2))$

(%i220) ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$

(%i221) ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$

(%i222) ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$

(%i223) ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$

(%i224) ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$

(%i225) ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$

(%i226) rica:ratsimp(subst(v0,U,ric9));
Result

Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n.

(%i227) ric1n:ratsimp(subst(vxn,vx,rica))$

(%i228) ric2n:ratsimp(subst(vyn,vy,ric1n))$

(%i229) ric3n:ratsimp(subst(vzn,vz,ric2n))$

(%i230) ric4n:ratsimp(subst(vxxn,vxx,ric3n))$

(%i231) ric5n:ratsimp(subst(vyyn,vyy,ric4n))$

(%i232) ric6n:ratsimp(subst(vzzn,vzz,ric5n))$

(%i233) ric7n:ratsimp(subst(vxyn,vxy,ric6n))$

(%i234) ric8n:ratsimp(subst(vxzn,vxz,ric7n))$

(%i235) ric9n:ratsimp(subst(vyzn,vyz,ric8n))$

(%i236) rican:ratsimp(subst(v0n,v0,ric9n))$

Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero
o cosa vien fuori ?

(%i237) ratsimp(rican);
Result

Per finire ristampo il tensore metrico covariante che ho usato
per trovare la metrica del buco nero neutro in coordinate
cartesiane.

(%i238) lg;
Result

E per riepilogo ecco anche il tensore metrico in forma controvariante:

(%i239) ug;
Result

Una caratteristica fondamentale di questa metrica è il fatto che
il determinante vale -1 ossia è identico a quello della metrica
pseudoeuclidea.

(%i240) ratsimp(determinant(lg));
Result

(%i241) ratsimp(determinant(ug));
Result


Created with wxMaxima.