/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 13.04.2 ] */ /* [wxMaxima: title start ] Per fare prove con la trasformata di Lorentz usando la load [wxMaxima: title end ] */ /* [wxMaxima: comment start ] Le funzioni che servono sono definite in un file esterno... [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ load("varie-lorentz-v84.mac"); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Questa piccola funzione normalizza ad 1 la sola parte spaziale di un quadrivettore a meno che non abbia tutte le componenti spaziali nulle. Ma la v3norma(vv) c'e' gia' nella libreria). [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ v3normabis(vv):=block([vsq,vn], vsq:sqrt(vv[2]^2+vv[3]^2+vv[4]^2), if vsq=0 then return([0,0,0]), vn:ratsimp([vv[2]/vsq,vv[3]/vsq,vv[4]/vsq]), return (vn))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] In coordinate sferiche rq, f ed h potrei usare questa ma la libreria mi fornisce la incart(ra,f,h). [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ sfer2(f,h):=block([bx,by,bz], bx:2*h*(1-f*f)/((1+f*f)*(1+h*h)), by:4*h*f/((1+f*f)*(1+h*h)), bz:(1-h*h)/(1+h*h), return( [bx,by,bz] ) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] La prima funzione crea la matrice di Lorentz facendo pero' uso della funzione sqrt(...) quindi con un piccolo rischio di complicazioni numeriche ossia che Maxima si incasini e non riesca a semplificare le espressioni. --- Questa funzione ha bisogno di due dati: 1) Il vettore che specifica la direzione della trasformazione ossia un vettore di 4 elementi di cui almeno uno dei primi tre elementi non deve essere nullo e l'ultimo, che controlla la formula globale, DEVE ESSERE OBBLIGATORIAMENTE POSITIVO, MAI NULLO. 2) La velocita' della luce ossia un numero positivo e mai nullo. --- Questa funzione produce tre risultati ossia : 1) La trasformazione di Lorentz. 2) Il quadrivettore che viene "fermato" dalla trasformazione di Lorentz ossia la trasformazione di Lorentz moltiplicata per questo vettore da' un vettore con le componenti spaziali tutte nulle. 3) Il tensore metrico covariante che si usa e che dipende da quale e' considerata la velocita' della luce nel vuoto. --- [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] La funzione lrazionale(rd,f,h,xlux) e' simile a quella precedente ma ha il GRANDE PREGIO DI NON FARE USO DELLA sqrt(...). Per evitare problemi impedisco di usare come primo argomento il valore zero che darebbe divisione per zero e dunque dati infiniti ossia errore di calcolo.... Il secondo ed il terzo argomento possono essere dati qualsiasi ed il quarto e' la velocita' della luce nel vuoto che deve ovviamente non essere mai uno zero.. Se si assegna zero viene usato il valore 1. ---- Importante questo fatto: se uso come primo argomento il quadrato ottengo il quadrato della trasformazione di Lorentz considerata di base mentre se uso come primo argomento la radice quadrata ottengo la radice quadrata della trasformazione di Lorentz considerata di base... Sono proprieta' molto importanti... ---- Nel caso della lsemplice(br,lux) lo stesso effetto lo ha il quarto elemento del vettore br ossia se uso, in un'altra trasformazione, questo quarto elemento al quadrato ottengo il quadrato della trasformazione di Lorentz considerata di base mentre se uso la radice quadrata del quarto elemento del vettore br, ottengo la radice quadrata della trasformazione di Lorentz considerata di base. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ra:2+random(10)$ rq:ra*ra$ ff:(5-random(10))/11$ hh:(1+random(10))/11$ cartesiane:incart(rq,ff,hh); lorbase:lrazionale(rq,ff,hh,81); print("La direzione spaziale dipende solo ", "dal secondo e terzo argomento di lrazionale ", incart(1,ff,hh))$ print("La direzione spaziale e' giusta nel ", "quadrivettore di lrazionale ",v3norma(lorbase[2]))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ lorquad:lrazionale(rq*rq,ff,hh,81); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Se ottengo tutti zeri va tutto bene... [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ lorbase[1].lorbase[1]-lorquad[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ lorsqrt:lrazionale(ra,ff,hh,81); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] E qui, calcolata la radice quadrata della matrice lorbase[1] se ottengo tutti zeri va tutto bene... [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ lorsqrt[1].lorsqrt[1]-lorbase[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Le tre direzioni spaziali sono le stesse e, normalizzate per verifica valogono 1 come deve essere... [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ spadir:v3norma(lorbase[2]); spadir[1]^2+spadir[2]^2+spadir[3]^2; v3norma(lorquad[2]); v3norma(lorsqrt[2]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ora rifaccio lo stesso ma con la prima versione della trasformazione di Lorentz [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ vetdir:[cartesiane[1],cartesiane[2],cartesiane[3],4]$ vetdirqd:[cartesiane[1],cartesiane[2],cartesiane[3],16]$ vetdirsq:[cartesiane[1],cartesiane[2],cartesiane[3],2]$ miavc:5$ print("Direzione normalizzata ", v3norma([0,vetdir[1],vetdir[2],vetdir[3]]) )$ Lorbase:lsemplice(vetdir,miavc); print("Stessa direzione normalizzata ", v3norma(Lorbase[2]))$ Lorqd:lsemplice(vetdirqd,miavc); print("Stessa direzione normalizzata ", v3norma(Lorqd[2]))$ Lorsq:lsemplice(vetdirsq,miavc); print("Stessa direzione normalizzata ", v3norma(Lorsq[2]))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ratsimp(Lorbase[1].Lorbase[1]-Lorqd[1]); ratsimp(Lorsq[1].Lorsq[1]-Lorbase[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Per concludere [wxMaxima: section end ] */ /* [wxMaxima: comment start ] Ho unito varie cose utili: mostrare al lavoro le formule di calcolo della trasformazione di Lorentz e come fare la load in wxMaxima per usare come libreria un altro documento salvato con l'estensione .mac e non con l'estensione .wxm [wxMaxima: comment end ] */ /* Maxima can't load/batch files which end with a comment! */ "Created with wxMaxima"$