/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 13.04.2 ] */ /* [wxMaxima: comment start ] ...Jacobiano+ tensore metrico...

Jacobiano e nuovo tensore metrico in coordinate sferiche

http://www.elegio.it/omnia/mc/ argomenti di meccanica classica...

Dopo avere installato sul proprio PC il gratutito e trasportabilissimo, su chiavetta USB, wxMaxima...

http://www.elegio.it/omnia/mc/mc20140203.mac.html

http://www.elegio.it/omnia/mc/mc20140203.wxm.html

   [wxMaxima: comment end   ] */

/* [wxMaxima: comment start ]
Pro memoria di come visualizzare numeri in virgola
mobile e con alta precisione
   [wxMaxima: comment end   ] */

/* [wxMaxima: input   start ] */
fpprec:36$
print("256 elevato a 1250 vale quasi ",
" 2 moltiplicato per 10 alla 3010")$
print(bfloat(256^1250))$
print("Un numeretto non molto piccolino...")$
/* [wxMaxima: input   end   ] */

/* [wxMaxima: comment start ]
Ecco le due funzioni fondamentali definite qui per lavorare
in spazi CLASSICI ossia in TRE DIMENSIONI
   [wxMaxima: comment end   ] */

/* [wxMaxima: input   start ] */
fajacobiano(X,Y,Z):=block([mj],
mj:matrix([diff(X,x),diff(X,y),diff(X,z)],
[diff(Y,x),diff(Y,y),diff(Y,z)],
[diff(Z,x),diff(Z,y),diff(Z,z)]),
return(ratsimp(mj)))$
print("definisco la funzione: fajacobiano(X,Y,Z)")$
/*
*/ nuovogm(GM,Xv,Yv,Zv):=block([gmp,gm,jacobiano], gmp:trigsimp(ev(GM, X=Xv,Y=Yv,Z=Zv)), jacobiano:matrix([diff(Xv,x),diff(Xv,y),diff(Xv,z)], [diff(Yv,x),diff(Yv,y),diff(Yv,z)], [diff(Zv,x),diff(Zv,y),diff(Zv,z)]), gm:ratsimp(transpose(jacobiano).gmp.jacobiano), return (trigsimp(ev(gm,x=X,y=Y,z=Z))) )$ print("definisco la funzione: nuovogm(GM,Xv,Yv,Zv)")$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora scrivo le coordinate cartesiane espresse come funzioni delle coordinate sferiche tradizionali... [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ X1 : x*sin(y)*cos(z)$ Y1 : x*sin(y)*sin(z)$ Z1 : x*cos(y)$ print("Cartesiane classiche espresse da sferiche classiche ")$ print("X1 vale: ",X1)$ print("Y1 vale: ",Y1)$ print("Z1 vale: ",Z1)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ecco come viene lo jacobiano usato per ottenere il tensore metrico in coordinate sferiche classiche [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ fajacobiano(X1,Y1,Z1); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora scrivo le coordinate sferiche classiche espresse come coordinate cartesiane classiche: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ X2:sqrt(x^2+y^2+z^2)$ Y2:acos(z/sqrt(x^2+y^2+z^2))$ Z2:asin(y/sqrt(x^2+y^2))$ print("Sferiche classiche espresse tramite le cartesiane")$ print("X2 vale : ",X2)$ print("Y2 vale : ",Y2)$ print("Z2 vale : ",Z2)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Il tensore metrico cartesiano in tre dimensioni e' semplicissimo ossia e' la matrice identita' [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ gmcartesiana:diag_matrix(1,1,1)$ print("Il tensore metrico cartesiano classico !")$ print("Semplicemente una matrice identita' ", "e il covariante coincide col controvariante")$ print("gmcartesiana vale: ",gmcartesiana)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Calcolo dal cartesiano classico e dalle formule per ottenere il cartesiano note le coordinate sferiche classiche: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ gmsferico:nuovogm(gmcartesiana,X1,Y1,Z1)$ print("calcolo nuovogm(gmcartesiana,X1,Y1,Z1) ")$ print("X1 : ",X1)$ print("Y1 : ",Y1)$ print("Z1 : ",Z1)$ print("Ed ecco il tensore metrico covariante sferico classico ")$ print("gmsferico vale ",gmsferico)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Per curiosita' vediamo cosa e' la matrice jacobiana quando si vuole riottenere il tensore metrico cartesiano ossia la semplicissima matrice identita' [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ print(" La matrice jacobiana delle coordinate sferiche ", "espresse tramite le coordinate cartesiane")$ print("fajacobiano(X2,Y2,Z2) : ", fajacobiano(X2,Y2,Z2))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Se il tensore metrico sferico covariante e' giusto, facendo l'operazione inversa debbo riottenere il classicissimo tensore metrico cartesiano ossia la matrice identita' di ordine 3. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ gmcartesianaricalcolata:nuovogm(gmsferico,X2,Y2,Z2)$ print("Lecito chiedersi se gmsferico e' giusto")$ print("Verifico facendo l'operazione inversa")$ print("Uso il tensore metrico sferico", " per riottenere il cartesiano")$ print("calcolo nuovogm(gmsferico,X2,Y2,Z2) ")$ print("X2 : ",X2)$ print("Y2 : ",Y2)$ print("Z2 : ",Z2)$ print("Ed ecco il tensore metrico covariante cartesiano ")$ print("gmcartesianaricalcolata vale ", gmcartesianaricalcolata)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ determinant(gmsferico); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ]
[wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Qui iniziano le formule non ovvie... [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ X3 : x*sqrt(1-y^2)*cos(z)$ Y3 : x*sqrt(1-y^2)*sin(z)$ Z3 : x*y$ print("Cartesiane classiche espresse da sferiche NON classiche ")$ print("X3 vale: ",X3)$ print("Y3 vale: ",Y3)$ print("Z3 vale: ",Z3)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Per calcolare le sferiche NON classiche usando le solite coordinate cartesiane : [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ X4:sqrt(x^2+y^2+z^2)$ Y4:z/sqrt(x^2+y^2+z^2)$ Z4:asin(y/sqrt(x^2+y^2))$ print("Sferiche NON classiche espresse tramite le cartesiane")$ print("X4 vale : ",X4)$ print("Y4 vale : ",Y4)$ print("Z4 vale : ",Z4)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ecco come viene bene il tensore metrico usando queste coordinate sferiche NON classiche ossia quando uso per theta che sarebbe 90-latitudine ossia vale 0 al polo Nord e 180 al polo sud o meglio, in radianti %pi... [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ gmsferico2:nuovogm(gmcartesiana,X3,Y3,Z3)$ print("calcolo nuovogm(gmcartesiana,X3,Y3,Z3) ")$ print("X3 : ",X3)$ print("Y3 : ",Y3)$ print("Z3 : ",Z3)$ print("Ed ecco il tensore metrico covariante sferico NON classico ")$ print("gmsferico2 vale ",gmsferico2)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] A questo punto controllo se, noto il tensore metrico sferico NON classico riesco a riottenere quello solito cartesiano... [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ gmcartesianaricalcolata2:nuovogm(gmsferico2,X4,Y4,Z4)$ print("Lecito chiedersi se gmsferico2 e' giusto")$ print("Verifico facendo l'operazione inversa")$ print("Uso il tensore metrico sferico NON classico", " per riottenere il cartesiano")$ print("calcolo nuovogm(gmsferico2,X4,Y4,Z4) ")$ print("X4 : ",X4)$ print("Y4 : ",Y4)$ print("Z4 : ",Z4)$ print("Ed ecco il tensore metrico covariante cartesiano ")$ print("gmcartesianaricalcolata2 vale ", gmcartesianaricalcolata2)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Pero' c'e' questo difettuccio ossia il determinante della metrica non vale 1 ossia non e' indipendente dal valore locale delle coordinate... [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp(determinant(gmsferico2)); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ma se voglio NON far dipendere il determinante del tensore metrico dalle coordinate, come posso fare ? [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] ECCO COME SI FA ! [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ X5 : (3*x)^(1/3)*sqrt(1-y^2)*cos(z)$ Y5 : (3*x)^(1/3)*sqrt(1-y^2)*sin(z)$ Z5 : (3*x)^(1/3)*y$ print("Cartesiane classiche espresse da sferiche BISNON classiche ")$ print("X5 vale: ",X5)$ print("Y5 vale: ",Y5)$ print("Z5 vale: ",Z5)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Da cui mi vien fuori questo tensore metrico [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ gmsferico3:nuovogm(gmcartesiana,X5,Y5,Z5)$ print("calcolo nuovogm(gmcartesiana,X5,Y5,Z5) ")$ print("X5 : ",X5)$ print("Y5 : ",Y5)$ print("Z5 : ",Z5)$ print("Ed ecco il tensore metrico ", "covariante sferico BISNON classico ")$ print("gmsferico3 vale ",gmsferico3)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Dunque con questa metrica sferica BISNON classica il determinante del tensore metrico vale 1 come nel caso della metrica cartesiana e questo fatto semplifica la scrittura di certi operatori differenziali e varie altre cose... [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp(determinant(gmsferico3)); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Lo scrivo perche' e' TROOOOPPPO BELLO ! [wxMaxima: comment end ] */ /* [wxMaxima: comment start ]

gmbello:diag_matrix(1/(3*X)^(4/3), (3*X)^(2/3)/(1-Y^2),(3*X)^(2/3)*(1-Y^2))

   [wxMaxima: comment end   ] */

/* [wxMaxima: input   start ] */
gmbello:diag_matrix(1/(3*X)^(4/3),
(3*X)^(2/3)/(1-Y^2),(3*X)^(2/3)*(1-Y^2))$
print("gmbello ossia gmsferico3 vale:",gmbello)$
/* [wxMaxima: input   end   ] */

/* [wxMaxima: comment start ]
Faccio molti errorini ... controllo di non avere
sbagliato...
   [wxMaxima: comment end   ] */

/* [wxMaxima: input   start ] */
print("Verifico di non avere fatto errori : ")$
print("ratsimp(gmbello-gmsferico3) vale :",
ratsimp(gmbello-gmsferico3))$
/* [wxMaxima: input   end   ] */

/* [wxMaxima: comment start ]
Certo in gmbello mi compaiono un po' di radici cubiche 
ma in fondo non e' un dramma...
   [wxMaxima: comment end   ] */

/* [wxMaxima: comment start ]
Se ho le coordinate cartesiane e voglio esprimerle
come BISNON classiche devo ysare queste formule che mi
servono anche per verificare la correttezza del
tensore metrico covariante espresso nelle coordinate
BISNON classiche...
   [wxMaxima: comment end   ] */

/* [wxMaxima: input   start ] */
X6:(sqrt(x^2+y^2+z^2)^3)/3$
Y6:z/sqrt(x^2+y^2+z^2)$
Z6:asin(y/sqrt(x^2+y^2))$
print("Sferiche BISNON classiche",
" espresse tramite le cartesiane :")$
print("X6 vale : ",X6)$
print("Y6 vale : ",Y6)$
print("Z6 vale : ",Z6)$
/* [wxMaxima: input   end   ] */

/* [wxMaxima: comment start ]
In sostanza la coordinata radiale diventa PROPORZIONALE
AL VOLUME DELLA SFERA COL CENTRO 
ALL'ORIGINE DELLE COORDINATE
   [wxMaxima: comment end   ] */

/* [wxMaxima: comment start ]
Infatti facendo la verifica riottengo il tensore metrico
cartesiano ossia la solita matrice identita'
   [wxMaxima: comment end   ] */

/* [wxMaxima: input   start ] */
gmcartesianaricalcolata3:nuovogm(gmsferico3,X6,Y6,Z6)$
print("Lecito chiedersi se gmsferico3 e' giusto")$
print("Verifico facendo l'operazione inversa")$
print("Uso il tensore metrico sferico NON classico",
" per riottenere il cartesiano")$
print("calcolo nuovogm(gmsferico3,X6,Y6,Z6) ")$
print("X6 : ",X6)$
print("Y6 : ",Y6)$
print("Z6 : ",Z6)$
print("Ed ecco il tensore metrico covariante cartesiano ")$
print("gmcartesianaricalcolata3 vale ",
gmcartesianaricalcolata3)$
/* [wxMaxima: input   end   ] */

/* [wxMaxima: comment start ]

Per usare questo file con http://maxima.sourceforge.net/ cancellare l'estensione .html e lasciargli l'estensione .mac se e' stato creato con questa estensione da wxMaxima.oppure se e' un file che aveva estensione .wxm a cui io ho aggiunto, per camuffarlo da file di internet, l'estensione .html bisogna cancellare questa e ridargli la estensione che aveva all'origine ossia .wxm

[wxMaxima: comment end ] */ /* [wxMaxima: comment start ]

Di solito Windows NASCONDE LE ESTENSIONI per evitare che un utente pasticcione ed ignorante che non sa che servono per identificare il tipo del file le cancelli volendo scrivere nomi di file senza punti

[wxMaxima: comment end ] */ /* [wxMaxima: comment start ]

Pero' questa precauzione intralcia quando si vuole mascherare una estensione per CAMUFFARE il file da file .html

[wxMaxima: comment end ] */ /* [wxMaxima: comment start ]

Per aggirare questa difficolta' si puo' aprire il file usando NOTEPAD.EXE che e' un editor standard presente in qualunque calcolatore che usa Windows. Lo si apre e lo si salva mettendogli l'estensione giusta ossia, per wxMaxima, a seconda dei casi, .mac o .wxm

[wxMaxima: comment end ] */ /* [wxMaxima: comment start ]

Amen e BUON DIVERTIMENTO con gli Jacobiani !

[wxMaxima: comment end ] */ /* Maxima can't load/batch files which end with a comment! */ "Created with wxMaxima"$