/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 0.8.4 ] */ /* [wxMaxima: title start ] Modello di linearizzazione della RG [wxMaxima: title end ] */ /* [wxMaxima: comment start ] 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. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ (if atom(lg) then load(ctensor)); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Inizializzo la libreria ctensor di Maxima. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ init_ctensor(); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Definisco una funzione del tutto generica delle coordinate oltre alla funzione di servizio rq. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ rq:x^2+y^2+z^2; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] La funzione U(x,y,z) del tutto generica è ricavata dalla classica funzione potenziale newtoniana. Specifico genericamente le variabili da cui dipende. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ depends(U,[x,y,z]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] La funzione b mi serve solo per semplificare l'input. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ b:U/(U-1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ 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]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Dichiaro alla libreria ctensor che faccio uso di coordinate cartesiane [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ct_coords: [t,x,y,z]; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] In base alle esigenze della libreria ctensor di cui ho fatto il load, inizializzo il tensore metrico covariante che si deve chiamare lg. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ lg:ratsimp(lgmia); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Calcolo la metrica ovvero il tensore metrico controvariante che deve essere la matrice inversa del tensore metrico covariante. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ cmetric(); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ uug:ug$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Cerco di semplificare il piu' possibile l'espressione del tensore metrico controvariante [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ug:ratsimp(uug); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Anche se non serve ora faccio vedere che lg ed ug sono una la matrice inversa dell'altra [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp(ug . lg); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] 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. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ christof(all); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Provo a semplificare una delle componenti del simbolo di Christoffel di seconda specie. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp(mcs[2,2,2]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Creo il tensore di Riemann sopprimendo l'output che probabilmente sarebbe troppo lungo per essere stampato. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ riemann(false); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora faccio lo stesso calcolando il tensore di Ricci. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ricci(false); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora trasformo il tensore di Ricci in matrice. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ 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]]))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Innanzi tutto controllo che i termini non diagonali della prima riga e colonna siano degli zeri. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ 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])]; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Controllo che il tensore di ricci e' un tensore simmetrico... come da manuale ma se uno vuol fare il san Tommaso... [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ certozeri: [ratsimp(ric[2,3]-ric[3,2]), ratsimp(ric[2,4]-ric[4,2]), ratsimp(ric[3,4]-ric[4,3]) ]; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Questi non sono zeri ma se la funzione U(x,y,z) assume dei valori adeguati lo debbono diventare... Intanto li stampo... [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp(ric[1,1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ratsimp(ric[2,2]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ratsimp(ric[3,3]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ratsimp(ric[4,4]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ratsimp(ric[2,3]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ratsimp(ric[2,4]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ratsimp(ric[3,4]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] 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. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ v0n:2*m/rq^(1/2); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Specifico tutte le derivate di primo e secondo ordine. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ vxn:ratsimp(diff(v0n,x)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vyn:ratsimp(diff(v0n,y))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vzn:ratsimp(diff(v0n,z))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vxxn:ratsimp(diff(vxn,x)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vyyn:ratsimp(diff(vyn,y))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vzzn:ratsimp(diff(vzn,z))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vxyn:ratsimp(diff(vxn,y)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vxzn:ratsimp(diff(vxn,z))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vyzn:ratsimp(diff(vyn,z))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] 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] [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ rics:ratsimp(ric[1,1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric1:ratsimp(subst(vx,diff(U,x),rics))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2:ratsimp(subst(vy,diff(U,y),ric1))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3:ratsimp(subst(vz,diff(U,z),ric2))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rica:ratsimp(subst(v0,U,ric9)); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ric1n:ratsimp(subst(vxn,vx,rica))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2n:ratsimp(subst(vyn,vy,ric1n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3n:ratsimp(subst(vzn,vz,ric2n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4n:ratsimp(subst(vxxn,vxx,ric3n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5n:ratsimp(subst(vyyn,vyy,ric4n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6n:ratsimp(subst(vzzn,vzz,ric5n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7n:ratsimp(subst(vxyn,vxy,ric6n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8n:ratsimp(subst(vxzn,vxz,ric7n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9n:ratsimp(subst(vyzn,vyz,ric8n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rican:ratsimp(subst(v0n,v0,ric9n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero o cosa vien fuori ? [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp(rican); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ripeto tutta la procedura con ric[2,2] [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ rics:ratsimp(ric[2,2]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric1:ratsimp(subst(vx,diff(U,x),rics))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2:ratsimp(subst(vy,diff(U,y),ric1))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3:ratsimp(subst(vz,diff(U,z),ric2))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rica:ratsimp(subst(v0,U,ric9)); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ric1n:ratsimp(subst(vxn,vx,rica))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2n:ratsimp(subst(vyn,vy,ric1n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3n:ratsimp(subst(vzn,vz,ric2n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4n:ratsimp(subst(vxxn,vxx,ric3n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5n:ratsimp(subst(vyyn,vyy,ric4n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6n:ratsimp(subst(vzzn,vzz,ric5n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7n:ratsimp(subst(vxyn,vxy,ric6n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8n:ratsimp(subst(vxzn,vxz,ric7n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9n:ratsimp(subst(vyzn,vyz,ric8n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rican:ratsimp(subst(v0n,v0,ric9n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero o cosa vien fuori ? [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp(rican); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ripeto tutta la procedura con ric[3,3] [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ rics:ratsimp(ric[3,3]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric1:ratsimp(subst(vx,diff(U,x),rics))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2:ratsimp(subst(vy,diff(U,y),ric1))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3:ratsimp(subst(vz,diff(U,z),ric2))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rica:ratsimp(subst(v0,U,ric9)); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ric1n:ratsimp(subst(vxn,vx,rica))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2n:ratsimp(subst(vyn,vy,ric1n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3n:ratsimp(subst(vzn,vz,ric2n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4n:ratsimp(subst(vxxn,vxx,ric3n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5n:ratsimp(subst(vyyn,vyy,ric4n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6n:ratsimp(subst(vzzn,vzz,ric5n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7n:ratsimp(subst(vxyn,vxy,ric6n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8n:ratsimp(subst(vxzn,vxz,ric7n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9n:ratsimp(subst(vyzn,vyz,ric8n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rican:ratsimp(subst(v0n,v0,ric9n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero o cosa vien fuori ? [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp(rican); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ripeto tutta la procedura con ric[4,4] [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ rics:ratsimp(ric[4,4]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric1:ratsimp(subst(vx,diff(U,x),rics))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2:ratsimp(subst(vy,diff(U,y),ric1))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3:ratsimp(subst(vz,diff(U,z),ric2))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rica:ratsimp(subst(v0,U,ric9)); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ric1n:ratsimp(subst(vxn,vx,rica))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2n:ratsimp(subst(vyn,vy,ric1n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3n:ratsimp(subst(vzn,vz,ric2n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4n:ratsimp(subst(vxxn,vxx,ric3n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5n:ratsimp(subst(vyyn,vyy,ric4n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6n:ratsimp(subst(vzzn,vzz,ric5n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7n:ratsimp(subst(vxyn,vxy,ric6n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8n:ratsimp(subst(vxzn,vxz,ric7n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9n:ratsimp(subst(vyzn,vyz,ric8n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rican:ratsimp(subst(v0n,v0,ric9n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero o cosa vien fuori ? [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp(rican); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora verifico anche i termini NON DIAGONALI che possono essere diversi da zero se la funzione non possiede le opportune caratteristiche. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ rics:ratsimp(ric[2,3]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric1:ratsimp(subst(vx,diff(U,x),rics))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2:ratsimp(subst(vy,diff(U,y),ric1))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3:ratsimp(subst(vz,diff(U,z),ric2))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rica:ratsimp(subst(v0,U,ric9)); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ric1n:ratsimp(subst(vxn,vx,rica))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2n:ratsimp(subst(vyn,vy,ric1n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3n:ratsimp(subst(vzn,vz,ric2n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4n:ratsimp(subst(vxxn,vxx,ric3n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5n:ratsimp(subst(vyyn,vyy,ric4n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6n:ratsimp(subst(vzzn,vzz,ric5n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7n:ratsimp(subst(vxyn,vxy,ric6n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8n:ratsimp(subst(vxzn,vxz,ric7n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9n:ratsimp(subst(vyzn,vyz,ric8n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rican:ratsimp(subst(v0n,v0,ric9n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero o cosa vien fuori ? [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp(rican); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Verifico anche il termine NON DIAGONALE r[2,4] che puo' essere diverso da zero se la funzione non possiede le opportune caratteristiche. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ rics:ratsimp(ric[2,4]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric1:ratsimp(subst(vx,diff(U,x),rics))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2:ratsimp(subst(vy,diff(U,y),ric1))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3:ratsimp(subst(vz,diff(U,z),ric2))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rica:ratsimp(subst(v0,U,ric9)); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ric1n:ratsimp(subst(vxn,vx,rica))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2n:ratsimp(subst(vyn,vy,ric1n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3n:ratsimp(subst(vzn,vz,ric2n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4n:ratsimp(subst(vxxn,vxx,ric3n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5n:ratsimp(subst(vyyn,vyy,ric4n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6n:ratsimp(subst(vzzn,vzz,ric5n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7n:ratsimp(subst(vxyn,vxy,ric6n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8n:ratsimp(subst(vxzn,vxz,ric7n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9n:ratsimp(subst(vyzn,vyz,ric8n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rican:ratsimp(subst(v0n,v0,ric9n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero o cosa vien fuori ? [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp(rican); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora verifico anche il termine NON DIAGONALE r[3,4] che potrebbe essere diverso da zero se la funzione non possiede le opportune caratteristiche. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ rics:ratsimp(ric[3,4]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric1:ratsimp(subst(vx,diff(U,x),rics))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2:ratsimp(subst(vy,diff(U,y),ric1))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3:ratsimp(subst(vz,diff(U,z),ric2))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4:ratsimp(subst(vxx,diff(U,x,2),ric3))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5:ratsimp(subst(vyy,diff(U,y,2),ric4))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6:ratsimp(subst(vzz,diff(U,z,2),ric5))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7:ratsimp(subst(vxy,diff(diff(U,x),y),ric6))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8:ratsimp(subst(vxz,diff(diff(U,x),z),ric7))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9:ratsimp(subst(vyz,diff(diff(U,y),z),ric8))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rica:ratsimp(subst(v0,U,ric9)); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora sostituisco ai simboli le vere funzioni dedotte a partire da v0n. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ric1n:ratsimp(subst(vxn,vx,rica))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric2n:ratsimp(subst(vyn,vy,ric1n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric3n:ratsimp(subst(vzn,vz,ric2n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric4n:ratsimp(subst(vxxn,vxx,ric3n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric5n:ratsimp(subst(vyyn,vyy,ric4n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric6n:ratsimp(subst(vzzn,vzz,ric5n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric7n:ratsimp(subst(vxyn,vxy,ric6n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric8n:ratsimp(subst(vxzn,vxz,ric7n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ric9n:ratsimp(subst(vyzn,vyz,ric8n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rican:ratsimp(subst(v0n,v0,ric9n))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ecco il test cruciale: sostituendo e sostituendo alla fine viene zero o cosa vien fuori ? [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp(rican); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Per finire ristampo il tensore metrico covariante che ho usato per trovare la metrica del buco nero neutro in coordinate cartesiane. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ lg; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] E per riepilogo ecco anche il tensore metrico in forma controvariante: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ug; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Una caratteristica fondamentale di questa metrica è il fatto che il determinante vale -1 ossia è identico a quello della metrica pseudoeuclidea. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp(determinant(lg)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ratsimp(determinant(ug)); /* [wxMaxima: input end ] */ /* Maxima can't load/batch files which end with a comment! */ "Created with wxMaxima"$