LO SPAZIO COMPLESSO 3D,4D
ABSTRACT
The basic theory of 3D,4D complex space is show.
There are many news in theoretical physics,one have a new formula for the speed quadrivector.
The partial basic software give good results.
2000 MSC : 30A99,58J05
1.GLI SPAZI COMPLESSI
In questo paragrafo dopo aver illustrato la metodologia di verifica di uno spazio complesso, generato da un dato prodotto di due numeri, si passa alla rassegna di spazi complessi 2D, 3D e 4D. Si calcola poi il logaritmo naturale 3D di un numero complesso per determinare il prodotto versore g uguale al prodotto dei due versori complessi. Infine si discute sull’equazione di Laplace.
1.1 Verifica di un prodotto
Nello studio degli spazi complessi per effettuare la divisione di 2 numeri z1/z2 si ricorre all’artificio di moltiplicare numeratore e denominatore per un terzo numero z : z1 z / z2 z , in modo da avere che z2 z sia un numero reale, cosa che ci rende possibile la divisione. Quindi per poter verificare un prodotto si può ricorrere alla divisione ed è quello che si è fatto in un primo tempo verificando la tangente, calcolata come seno diviso coseno, con l’arcotangente, naturalmente dopo aver verificato seno con arcoseno e coseno con arcocoseno. L’autore ha fatto ciò per una decina di campi 3D ed un paio 4D, riconosciuto l’onerosità di ciò e visti i risultati positivi, ha fatto altre verifiche solo con la messa appunto di seno e arcoseno, infine ha rinunciato pure a ciò per l’alto numero di spazi che via via andava a scoprire.
Non si è operato direttamente sul controllo moltiplicazione divisione, che involve due argomenti z1 z2, in quanto la moltiplicazione a destra z1 z2 è diversa da quella a sinistra z2z1 (per n>2), mentre la funzione tangente involve un solo argomento e quindi senza possibilità di equivoci.
1.2 Il Numero Complesso
Un numero complesso z nello spazio n-dimensionale è caratterizzato dalla somma di n prodotti di un versore per la componente omologa del numero stesso. Se zi è la componente i-esima e pi il versore i-esimo ( con i che varia da 1 a n ), in formula si avrà
z = p1 z1 + p2 z2 + ... + pn zn .
Il versore generico pi può assumere i 2 n valori ±1, ±Ö-1, … , ±2^((n-1)Ö-1 , dando luogo a ( 2 n )n rappresentazioni.
I versori sono ortogonali ed in uno spazio a 3 dimensioni possiamo avere una rappresentazione di una terna trirettangola.
Il versore generico pi può essere assimilato ad una operazione geometrica che ruota di 90° l’asse reale della componente zi per pi ¹±1 e di 0°,180° per pi = ±1.
I versori prodotti pi2 e pipj sono una doppia operazione di rotazione, possono assumere tutti i valori di pi, inoltre può essere pipj = pjpi o pipj = - pjpi . pipj può assumere l’ulteriore valore g , che determineremo oltre.
I prodotti, e quindi gli spazi possibili, sono (2n)2n.
Per n = 2 , con pi uguale a ±1 o a ±Ö-1 si hanno 16 rappresentazioni :
p1 z1 + p2z2
Circa il prodotto sarà, con 16 x 16 prodotti possibili
p12 z12 + p22 z22 + p1 p2 z1 z2 + p2 p1 z2z1.
Per n=3 si avranno 63 rappresentazioni e 66 prodotti. Per n = 4 le rappresentazioni saranno 84 e i prodotti 88.
Da notare che tali prodotti comprendono _i prodotti dell’aritmetica di binomi per n=2, di trinomi per n=3 etc. _il prodotto del campo complesso usato normalmente _il prodotto tridimensionale della fisica classica.
Con questi prodotti è possibile il calcolo delle funzioni elementari espresse in termini di serie di potenze.
1.3 Calcolo di g
Oltre alla rappresentazione cartesiana, già vista, di un numero complesso è possibile la sua rappresentazione geografica tridimensionale per n=3 (quadridimensionale per n=4) data dalle formule :
z1 = ro cos t1
z2 = ro sin t1 cos t2
z3 = ro sin t1 sin t2 ( cos t3 )
( z4 = ro sin t1 sin t2 sin t3 )
con le formule inverse
ro = Ö (z12 + z22 + z32 ) ( ro = Ö( z12 + z22 + z32 + z42 ) )
tg t2 = z3 / z2 ( tg t3 = z4 / z3 )
tg t1 = Ö( z22 + z32) / z1 ( tg t2 = Ö ( z42 + z32) / z2 )
( tg t1 = Ö ( z42 + z32 + z22) / z1 )
Se ne può avere anche una rappresentazione esponenziale calcolando il numero complesso z
( qualunque sia il suo ordine) come l’esponenziale del logaritmo naturale di z stesso; dove il logaritmo è calcolato come l’integrale definito tra 1 e z della funzione 1 / z. In formule (indicando con zc il numero complesso coniugato di z tale che z zc = ro2 e cioè zc = z1 – i z2 – j z3 , dove i e j sono i versori complessi a quadrato uguale a - 1)
æz æz æz
ç dz / z = ç ( zc / ro2 ) dz = ç ( 1 / ro2 ) ro (cos t1 – i sin t1 cos t2 - j sin t1 sin t2 ) d ( ro (cos t1 +
ø1 ø1 ø1
æz
+ i sin t1 cos t2 + j sin t1 sin t2 )) = ç ( 1 / ro ) dro + ( cos t1 – i sin t1 cos t2 – j sin t1 sin t2 ) d ( cost1
ø1
æz
+ i sin t1 cos t2 + j sin t1 sin t2 ) = ln ro + ç d ( ( cos 2 t1 ) / 2 ) + i sin2 t1 cos t2 dt1 + j sin2 t1 sin t2
ø 1
dt1 + i cos t1 (sin t1 dcos t2 + cos t2 dsin t1 ) + d ( ( sin2 t1 cos2 t2 ) / 2 ) - ji sin t1 sin t2
( dsin t1 cos t2 + sin t1 dcos t2 ) + j cos t1 ( dsin t1 sin t2 + sin t1 dsin t2 ) - ij sin t1 cos t2
(dsin t1 sin t2 + sin t1 dsin t2 ) + d ( ( sin2 t1 sin2 t2 ) / 2 ) =
= ln ro + i t1 cos t2 + j t1 sin t2 .
[ Nello sviluppare i calcoli si è supposto ij = -- ji inoltre tutti i differenziali in t2 sono stati trascurati in quanto il punto 1 e il punto z giacciono sullo stesso piano t2 = costante. ]
Facendo l’esponenziale di tale formula si ha
z = ro e i t1 cos t2 + j t1 sin t2 ( * )
che può essere considerata un prolungamento della stessa formula bidimensionale, alla quale si riduce ponendo t2 = 0. Inoltre può facilmente essere estesa al caso quadridimensionale
z = ro e i t1 cos t2 + j t1 sin t2 cos t3 + k t1 sin t2 sin t3
e di qui ad uno spazio n-dimensionale con qualsivoglia n.
Il prodotto z di due numeri z1 e z2 in forma esponenziale sarà ( con ovvio significato dei simboli)
z = ro e i t1 cos t2 + j t1 sin t2 = z1 z2 = ro1 ro2 ei ( t11 cos t12 + t21 cos t22 ) + j ( t11 sin t12 + t21 sin t22 )
sostituendo i valori dei versori i = ( 1, p / 2, 0 ) e j = (1, p / 2, p / 2 ) ed uguagliando si ha
t1 cos t2 = t11 cos t12 + t21 cos t22 = p / 2
t1 sin t2 = t11 sin t12 + t21 sin t22 = p / 2
da cui
t2 = arctg 1 = p / 4 t1 = p / Ö 2
e di qui infine il valore di g, prodotto dei due versori immaginari :
g = cos ( p / Ö 2 ) + i sin ( p / Ö 2 ) cos ( p / 4 ) + j sin ( p /Ö 2 ) cos ( p / 4 )
1.4 L’equazione di Laplace e gli spazi complessi
Finora si è usato il campo complesso bidimensionale, con la rappresentazione del numero
z = z1 + i z2 con i = Ö -1, per problemi retti dall’equazione di Laplace, per una generica funzione f , fz1z1 + fz2z2 = 0, che esso soddisfa.
Consideriamo la rappresentazione generica di un punto bidimensionale z = q1 z1 + q2 z2 con q1 e q2 che possono assumere i valori ± 1 e ± Ö -1 che da luogo a 16 rappresentazioni.
Sia f ( z) = p1 f1 + p2 f2 con f1 e f2 funzioni reali di due variabili reali e con p1 e p2 versori che possono assumere gli stessi valori di q1 e q2.
Le derivate di f ( z ) per i percorsi q1z1 e q2z2 saranno
( p1 / q1 ) ( ¶ f1 / ¶ z1 ) + ( p2 / q1 ) ( ¶ f2 / ¶ z1 )
( p1 / q2 ) ( ¶ f1 / ¶ z2 ) + ( p2 / q2 ) ( ¶ f2 / ¶ z2 )
e per definizione di derivata tali derivate devono essere uguali.
Per p1 / q1 = 1 , p2 / q2 = 1, p2 / q1 = i e p1 / q2 = -i la funzione f soddisfa l’equazione di Laplace, in quanto è
f1z1 = f2z2 f2z1 = -f1z2
f1z1z1 = f2z2z1 = - f1z“z2
f2z1z1 = - f1z2z1 = - f2z2z2 .
Uno studio caso per caso ci porta a considerare 44 problemi potendo il rapporto pi / qj assumere 4 valori. Se tutti i versori e tutti i loro rapporti assumono il valore 1 si ha il caso dello studio di una funzione reale di due variabili reali.
Nello spazio 3D, rappresentato come z = z1 + i z2 + j z3 , si dimostra nel paragrafo successivo che è soddisfatta l’equazione di Laplace per ij = ± 1.
Nel campo 4D , rappresentato come z = z1 + i z2 + j z3 + k z4, se il prodotto tra i versori i, j e k, soddisfano l’usuale prodotto vettoriale della fisica è verificata l’equazione di Laplace.
X.Il teorema di Cauchy
In questo .paragrafo si dimostra che è DD f = 0, con DD operatore di Laplace e f una data funzione analitica, per lo spazio complesso tridimensionale, nel caso ij=±1 e per quello quadridimensionale, con l’usuale prodotto della fisica classica tra i versori complessi. Mentre per lo spazio quadridimensionale, avendo un numero di termini pari, che si annullano a due a due, risulta tutto semplice, per lo spazio tridimensionale si ricorre ad un artificio, che porti ad avere un numero pari di termini e ciò è dato dal prodotto di f per il prodotto unitario di due termini complessi coniugati: a ac :in formule
DD f = DD (1 f ) = DD (a ac f) = a DD ( ac f) = a DD f '
per cui dimostrando che DD f ' =0 lo sarà anche DD f = 0.
Quindi si può affermare, riferendosi ad uno spazio n-dimensionale qualunque,che è necessario avere nella formula DD f = 0 un numero pari di termini che si elideranno a due a due: per n pari, chiaramente, mi trovo nelle condizioni richieste ma per n dispari devo ricorrere ad una moltiplicazione per avere un numero di termini pari.
Si prosegue con la ricerca delle condizioni per cui è valido il teorema di Cauchy.
X.1 Relazioni tra gli inversi per n = 3.
Dimostriamo che per il caso tridimensionale è
i = -1 / i ; j = - 1 / j; i j = 1 / (i j) ; i / j = j / i ;
(la prima relazione è sempre verificata per definizione);
sia per j2 = -1 :
j = - 1 / j ; i j = (- 1 / i ) ( - 1 / j ) = 1 / ( i j ) ; i / j = - j / ( - i ) = j / i (ij=±1) ;
sia per j2 = i :
j = j^3 = i j = - j / i = - 1 / j
- essendo identiche le due relazioni restanti-.
In ambedue i casi è verificata la relazione
1 /( i j) = - i / j = - j / i .
X.2 Teorema fondamentale per n = 3.
Se f è una funzione analitica allora è DD f = 0 e DD fi =0 ( con DD operatore di Laplace ) , nella rappresentazione generalizzata.
Naturalmente risulta:
z = z1 + i z2 + j z3 + i j z4;
f(z) = f1(z) + i f2(z) + j f3(z) + i j f4(z) ;
Dz = Dz1 + i Dz2 + j Dz3 + i j Dz4 ;
con z variabile complessa, f funzione complessa e Dz differenziale complesso , tridimensionali.
Per l'analiticità di f si ha che esiste ed è continua la sua derivata; cioè
f(z+Dz) - f(z)
f'(z) = lim -------------- =
Dz -- 0 Dz
f1(z+Dz) - f1(z) f2(z+Dz) - f2(z)
= lim ---------------- + i ----------------- +
Dz1 -- 0 Dz Dz
Dz2 -- 0
Dz3 -- 0
Dz4 -- 0
f3(z+Dz) - f3(z) f4(z+Dz) - f4(z)
+ j ----------------- + i j ----------------- .
Dz Dz
Facendo tendere al limite separatamente ognuna delle quattro componenti del differenziale Dz e calcolando le rispettive derivate; si ha:
per Dz = Dz1 f ' = f1,z1 + i f2,z1 + j f3,z1 + i j f4,z1
per Dz = i Dz2 f ' = - i f1,z2 + f2,z2 + (j/i) f3,z2 + j f4,z2
per Dz = j Dz3 f ' = - j f1,z3 + (i/j) f2,z3 + f3,z3 + i f4,z3
per Dz = i j Dz4 f ' = ( 1/i j) f1,z4 +- j f2,z4 - i f3,z4 + f4,z4 .
Uguagliando le derivate si hanno le seguenti relazioni sui singoli termini
f1,z1 = f2,z2 = f3,z3 = f4,z4
f2,z1 = - f1,z2 = f4,z3 = -f3,z4
f3,z1 = - f1,z3 = f4,z2 = - f2,z4
f4,z1 = f1,z4 = - f2,z3 = - f3,z2
Poichè è
f1,z1z1 = f2,z2z1 f1,z2z2 = -f2,z1z2
f1,z3z3 = -f3,z1z3 = -f4,z1z4 f1,z4z4 = f4,z1,z4
sarà
DD f1 = f1,z1z1 + f1,z2z2 + f1,z3z3 + f1,z4z4 = 0.
Essendo
f2,z1z1 = -f1,z2z1 = -f2,z2z2 f2,z3z3 = f3,z2z3 = f2,z2z2
f2,z4z4 = -f4,z2z4 = -f2,z2z2
è DD f2 = 0.
Visto che
f3,z1z1 = -f1,z3z1 = -f3,z3z3 f3,z2z2 = f2,z3z2 =f3,z3z3
f3,z4z4 = -f4,z3z4 = -f3,z3z3
si ha DD f3 = 0.
Infine dalle relazioni
f4,z1z1 = f1,z4z1 = f4,z4z4 f4,z2z2 = - f2,z4z2 = -f4,z4z4
f4,z3z3 = -f3,z4z3 = -f4,z4z4
segue che è
DD f4 =0.
Quindi è
DD f = 0
come volevasi dimostrare.
X.3 Relazioni tra i versori per n = 4.
Sussistono le seguenti relazioni tra i versori dello spazio complesso per n = 4:
i . j = k i = k / j
j . k = i j = i / k
k . i = j k = j / i
j . i = - k - j = k / i
k . j = -i - k = i / j
i . k = - j - i = j / k
X.4 Teorema fondamentale per n = 4.
Come nel caso per n = 3 facciamo tendere al limite ognuna delle quattro componenti della derivata e procediamo analogamente.
Le quattro derivate sono:
f1,z1 + i f2,z1 + j f3,z1 + k f4,z1
- i f2,z1 + f2,z2 + (j / i ) f3,z2 + ( k / i ) f4,z2
- j f1,z3 + (i / j) f2,z3 + f3,z3 + (k / j ) f4,z3
- k f1,z4 + ( i / k ) f2,z4 + ( j /k ) f3,z4 + f4, z4 .
Facendo le opportune sostituzioni si ottiene
f1,z1 + i f2,z1 + j f3,z1 + k f4,z1
- i f1,z2 + f2,z2 + k f3,z2 - j f4,z2
- j f1,z3 - k f2,z3 + f3,z3 + i f4,z3
- k f1,z4 + j f2,z4 - i f3,z4 + f4,z4 .
Uguagliando termine a termine si hanno le seguenti relazioni
f1,z1 = f2,z2 = f3,z3 = f4,z4
f2,z1 = - f1,z2 = f4,z3 = - f3,z4
f3,z1 = - f1,z3 = - f4,z2 = f2,z4
f4,z1 = - f1,z4 = f3,z2 = - f2,z3 .
Dalle uguaglianze
___f1,z2z2 = - f2,z1z2 = - f1,z1z1 f1,z4z4 = f2,z3z4 = - f1,z3z3
___f2,z1z1 = -f1,z2z1 = - f2,z2z2 f2,z3z3 = f1,z4z3 = - f2,z4z4
___f3,z1z1 = - f1,z3z1 = - f3,z3z3 f3,z2z2 = -f1,z4,z2 = -f3,z4z4
___f4,z1z1 = - f1,z4z1 = - f4,z4z4 f4,z2z2 = f1,z3z2 = - f4,z3z3
segue che è
DD fi = fi,z1z1 + fi,z2z2 + fi,z3z3 + fi,z4z4 = 0 con i = 1,2,3,4
e quindi
DD f = DD f1 + DD f2 + DD f3 + DD f4 = 0 .
X.5 Calcolo del lavoro elementare.
Al fine della dimostrazione del teorema di Cauchy abbiamo bisogno di definire il lavoro elementare di data funzione f(z) per lo spostamento dz per l'analisi 3D e 4D.
Tale prodotto sarà in 3D:
f(z) dz = (f1 + i f2 + j f3 ) (dx1 + i dx2 + j dx3)
e in 4D
f(z) dz = ( f1 + i f2 + j f3 + k f4) (dx1 + i dx2 +j dx3 + k dx4).
Si riportano, per comodità, in una rappresentazione per righe e colonne i prodotti dei versori (che moltiplicati per le rispettive parti scalari andranno sommati):
1 i j 1 i j k
i -1 ij i -1 ij ik
j ji j2 j ij j2 jk
k ik jk k2 .
Poichè il prodotto è scalare si avrà che i prodotti commutano, per esempio ij=ji,inoltre sostituendo ai quadrati dei versori i possibili fattori si avranno rappresentazioni e modelli diversi.
Per la rappresentazione quadridimensionale nel modello in cui tutti i quadrati dei versori sono uguali a -1 si ha
dL = f1 dx1 - f2 dx2 -f3 dx3 -f4 dx4 + i (f1 dx2 + f2 dx1) + j (f1 dx3 + f3 dx1) + k (f1 dx4 +f4 dx1)
+ ij (f2 dx3 + f3 dx2) +ik (f2 dx4 +f4 dx2) + jk (f3 dx4 + f4 dx3) .
X.6 Il teorema di Cauchy e le sue implicazioni.
Se è valido il teorema di Cauchy per lo spazio complesso n-dimensionale allora si possono fare due cose fondamentali:1.calcolare l'integrale definito e curvilineo solo in funzione dei punti estremi di detti integrali e 2.sviluppare ogni funzione complessa in serie di Taylor (fatto di notevole importanza perchè conosciamo bene le serie di potenze e le loro proprietà).
L'integrale curvilineo di una data funzione f(z) lungo una data curva G è
æ
÷ f(z) dz
øG
ma f(z) dz si calcola come lavoro elementare, e ripetiamo a seconda delle scelte dei prodotti dei versori si hanno più modelli.Per il teorema di Cauchy, che andiamo a dimostrare, per qualunque modello n-dimensionale nello spazio complesso è
æ
÷ f(z) dz = 0
øG
con G curva chiusa.
Per tutti i modelli si ha che per i termini simmetrici di posto m,l ed l,m è (applicando il teorema della divergenza)
æ
÷ (fm dxl +fl dxm) = 0
øG
in quanto è l'integrale di volume
æ
÷ (d fm / dxm - d fl /dxl ) dV = 0
ø
poichè l'espressione tra parentesi è uguale a zero come abbiamo visto calcolando il teorema fondamentale.
L'integrale della somma dei termini sulla diagonale, che possiamo scrivere (intendendo po = 1 )
æ
÷ S(pi-12 fi dxi)
øG
sarà uguale a zero, per G curva chiusa, se imponiamo che
f1 dx1 = f2 dx2 + f3 dx3.
X.7 Il teorema di Cauchy in 4D
Andando a dimostrare il teorema di Cauchy,nella rappresentazione in cui tutti i quadrati dei versori sono posti uguali a -1, si ha
æ
÷ f1 dx1 - f2 dx2 - f3 dx3 - f4 dx4 = 0
øG
che con le posizioni
f1 = x1 = c t xi = fi = xi-1 per i= 2,3,4
si trasforma in
æ
÷ c2 dt2 - dx12 - dx22 - dx32 = 0
øG
che è verificata puntualmente dalla velocità della luce, c.
Assumendo la stessa relazione valida per tutte le altre funzioni si ha
f1 dx1 - f2 dx2 - f3 dx3 - f4 dx4 = 0
e cioè
f1 = f2 dx2/dx1 + f3 dx3/dx1 + f4 dx4/dx1 ( p+ )
1_L’equazione di Laplace nello spazio quadridimensionale complesso è soddisfatta dal potenziale gravitazionale con la derivata parziale seconda rispetto al tempo ottenuta dal teorema di Cauchy, è soddisfatta, pure, dai campi elettrici e magnetici normalizzando la velocità della luce a quadrato a -hm per le onde elettromagnetiche nei dielettrici omogenei,isotropi e neutri.
2_Il quadrivettore complesso
c dt i dx j dy k dz
moltiplicato per il suo trasposto, con la regpla matriciale riga per colonna, dà
c2 dt2 -dx2 -dy2 -dz2 risultato su cui si basa tutta la teoria dei campi.
3_Il vettore dello spazio tempo che riassume la potenza specifica di corrente e le forze ponderomotrici per unità di volume : Ka, rispetta la formula p+.
4_E’ possibile un nuovo quadrivettore nella teoria relativistica di Einstein
i qx j qy k qz q2
________ _________ __________ __________
q (1-q2)0.5 q (1-q2)0.5 q (1-q2)0.5 q (1-q2)0.5
Fluidodinamica incompressibile
_Tutte le funzioni complesse 3D soddisfano l’equazione di Laplace e quindi permettono il calcolo di un campo di moto incompressibile,inviscido e a potenziale. La migliore di tutte è la funzione logaritmica,che rappresentando il potenziale di velocità,ci dà come velocità la funzione 1/x che soddisfa la condizione all’infinito di velocità nulla.
Calcolo delle reti elettriche
Nel calcolo dell’impedenza Z di un circuito elettrico si può separare i tre effetti: resistivo Z1 = R,
capacitivo Z2 = 1 / (ω C ) ed induttivo Z3 = ωL e rappresentare l’impedenza totale Z come un punto dello spazio complesso tridimensionale:
Z = Z1 + i Z2 + j Z3
Nel calcolo dei circuiti serie i calcoli restano immutati. Nel calcolo dei circuiti parallelo il modulo dell’impedenza R2 + (ω C )-2 + ( ω L )2 risulta diverso da quello calcolato finora per il fattore
-2 L / C .
UN’APPLICAZIONE DELLO SPAZIO COMPLESSO 4D: l’altra teoria
I.1 La formula p+
La formula p+,ricavata dal teorema di Cauchy per lo spazio complesso, per lo spazio complesso quadridimensionale da la componente temporale in funzione delle tre componenti spaziali.
Siano indicate con x1,x2 e x3 le tre componenti spaziali di un dato punto P nello spazio 3D ordinario e con t la variabile tempo.
Tra le componenti di una funzione complessa f = f1 + i f2 + j f3 + f4 sussiste la relazione p+
f1 = f2 ¶x2/¶t + f3 ¶x2/¶t + f3 ¶x3/¶t (p+)
I.2 Il vettore posizione in 4D
Siano i,j,k i tre versori complessi che con l'asse reale formano uno spazio quadridimensionale, con quadrato uguale a -1.
Partendo dal vettore posizione di un punto P nello spazio 3D
P = i x1 +j x2 + k x3
si calcoli la quarta componente (quella reale) con la formula p+:
x0 = x1 ¶x1/¶t + x2 ¶x2/¶t + x3 ¶x3/¶t ,
(da cui ricavo che le xi devono essere normalizzata rispetto alla velocità)
considerando i differenziali si avra'
¶ x0 = ¶x1 ¶x1/¶t + ¶x2 ¶x2/¶t + ¶x3 ¶x3/¶t ,
ove indicando con vi = ¶xi/¶t la componente della velocita' lungo l'asse i, con la posizione
¶xi ¶xi/¶t = vi2¶t
si arriva alla formula
¶x0 = ( v12 + v22 + v32 ) ¶t = v2 ¶t ,
con v modulo della velocita' e con il termine v2 ¶t che presenta le dimensioni di un'energia per un tempo.
Adimensionalizzando rispetto alla velocita' della luce c e ponendo
qi = vi / c q = v / c e ¶xi = ¶xi / c
si ha infine il vettore quadridimensionale differenziale ¶s
i ¶x1 + j ¶x2 + k ¶x3 + q2 ¶t.
I.3 Tempo proprio
Dato un punto P(x1,x2,x3) in movimento si considerino due sistemi di riferimento: uno riferito alla nostra posizione ed un altro riferito al punto stesso.
Siano indicati i due riferimenti con K=K(x1,x2,x3,t) e K'(x1',x2',x3',t').
Calcolando i quadrati del vettore posizione (con la regola del prodotto tensoriale)
¶s = i ¶x1 + j ¶x2 + k ¶x3 + q2 ¶t
per i due sistemi,si avrà per il primo (fermo rispetto a noi)
¶s2 = - ¶x12 - ¶x22 -¶x32 + q4 ¶t2
per il secondo (fermo rispetto al punto)
¶s'2 = q'4 ¶t'2.
Uguagliando questi quadrati e imponendone l'invarianza si ha
¶s2 = - q2 ¶t2 + q4¶t2 = ¶s'2 = q'4 ¶t'2
uguagliando ¶s2/¶t'2 = -1 ( * )
(cosa che verificheremo, e che significa che normalizzo la velocità a quadrato
uguale a - 1)
si ottiene
¶s2 = -¶t'2 = (q4 - q2) ¶t2
e quindi
¶t'2 = (q2 - q4) ¶t2
cioè
¶t' = q Ö(1-q2) ¶t.
I.4 Il quadrivettore velocità
La velocità sarà
¶s i qx j qy k qz q
------ = --------------- + --------------- + --------------- + --------------
¶t' q Ö(1 - q2) q Ö(1 - q2) q Ö(1 - q2) Ö(1 - q2)
e come si è imposto in I.3.* si ha ¶s2/¶t'2 = -1
I.5 Trasformazione di coordinate
Affrontiamo il problema della trasformazione delle coordinate passando da un sistema K(x1,x2,x3,q2 t )ad un altro sistema K'(x1',x2',x3',q'2 t'2).
Imponendo l'eguaglianza dei moduli del vettore spostamento nei due sistemi si perviene alla formula
¶s2 = - x2 + q4 t2 = -x'2 + q'4 t'2 .
Verifichiamo che le formule di trasformazione sono
x = x' ch j + q'2 t' sh j q2 t = x' shj + q'2 t' ch j (*)
¶s2 =- x'2 ch2j - q'4 t'2 sh2j + x' sh2j + q'4 t'2 ch2j=
= x'2 (sh2j - ch2j ) + q'4 t'2 (ch2j - sh2j) = - x'2 + q'4 t'2 (c.v.d.)
in quanto è
shj = thj / Ö(1 - th2j ) e chj = 1 / Ö (1 - th2j) con thj = x / ( q2 t )
calcolata considerando il moto di K' nell'origine di K cioè con x' = 0 ,dimodocchè con semplici passaggi
x = q'2 t' sh j q2 t = q'2 t' ch j .
Sostituendo nell'espressione (*) i valori ricavati si ha
x = ( x' + q'2 t' x / (q2 t )) / ( 1 - ( x / ( q2 t ))2)
q2 t = ( x' x / (q2 t) + q'2 t' ) / ( 1 - ( x / ( q2 t ))2) .
Per controllare che tali formule ci diano le formule galileiane consideriamo lo sviluppo in serie [ ] di 1 / Ö ( 1 - ( x / ( q2 t )2) e abbiamo che è uguale a
1 + 0.5 ( x / (q2 t))2 + ( 3/8) ( x / (q2 t ))4 + ...
che vediamo che per x®0 (cioè in prossimità dell'origine delle coordinate) tende all'unità, considerando, ancora, q'2 dello stesso ordine di q2 abbiamo finalmente
x = x' + v t e t=t'.
Ripetendo le ipotesi fatte abbiamo considerato una porzione di spazio prossima all'origine delle coordinate (che sono adimensionalizzate rispetto alla velocità della luce) e che i quadrati delle velocità non siano molto differenti (velocità anch'esse adimensionalizzate rispetto alla velocità della luce).
I.6.Somma di velocita'
Dalle equazioni precedenti passando a differenziare si ha da
¶x' + (q' / q)2 v ¶t' ¶x ¶x' / q2 ¶t + q'2 ¶t'
¶x = ------------------------ ¶t = ---------------------------
Ö (1 - ( v / q2 )2 q2 Ö (1 - ( v / q2 )2
¶x q2 ( ¶x' + ( q' /q )2 v ¶t')
---- = ------------------------------
¶t ¶x' ¶x / q2 ¶t + q'2 ¶t'
che per ¶x®0 e per q'2 » q2 da' ¶x/¶t = v' + v (espressione galileiana) .
Per q' = k q q = v / c = v ¶x' = q' c ¶t' = k q ¶t' ¶x = q c ¶t = q ¶t si ha
¶x q2 ( k q + k2 q )
---- = --------------------
¶t k + k2 q2 .
Imponendo a q di appartenere all'intervallo [-1,1] si puo' verificare che ê¶x/¶t ê£ 1.
Cio' fisicamente significa, cosa che si sa gia', che non si puo' mai superare la velocita' della luce (che e' stata assunta unitaria).
ULTERIORI CONSIDERAZIONI
1.Sulla validità dell’altra teoria per uno spazio non laplaciano
Alla base dell’altra teoria c’è la validità del teorema di Cauchy sull’integrabilità delle funzioni e il fatto di poter normalizzare la velocità a quadrato uguale a -1, pertanto non è necessario la risoluzione dell’equazione di Laplace, come potrebbe sembrare a prima vista.
Uno spazio che soddisfa questi requisiti è rappresentato come z = z1 + i z2 + j z3 + k z4, con le zi componenti di z e i j k versori complessi tali che i = 1, j = 1, k = 1, i2 = -1, j2 = -1, k2 = -1 ed i prodotti seguano la regola della fisica classica per cui i j = k, j k = i etc. Si noti che i quadrati dei versori non hanno nessuna relazione con i valori dei versori e sono considerati come operatori indipendenti svincolati da qualunque relazione tra di loro.
Tale spazio, come si può dimostrare con un calcolo un poco fastidioso, a_ non verifica l’equazione di Laplace né tanto meno qualche altra equazione, b_ soddisfa il teorema di Cauchy e c_ permette di normalizzare il quadrato della luce a -1.
2.Sulla condizione sufficiente e necessaria per la convergenza delle serie delle funzioni sviluppabili in serie complesse di ordine n.
Fissiamo l’attenzione sulla funzione seno ( la trattazione è uguale per le altre funzioni sviluppabili in serie ).
Sia n l’ordine del numero complesso z = Σ1n pi zi : con pi versori e zi componenti di z. Dimostriamo che sen z , qualunque siano i pi , converge se converge sen( Σ1n zi ) con la funzione seno reale in quest’ultima formula.
Ora lo sviluppo di una serie di una data funzione è basato sul prodotto dell’argomento ed è una somma di prodotti che convergono ( Σ1n zi ) n; considerare il prodotto di zn = ( Σ1n pi zi )n non è che un altro modo di riarrangiare le somme dei prodotti che convergono, pertanto l’asserto nella sua condizione di sufficienza e di necessarietà.
Consideriamo n=3 ed il prodotto z2 avremo se z = p1 z1 + p2 z2 + p3 z3
(*) z2 = z12 + z22 + z32 + 2 z1 z2 + 2 z1 z3 + 2 z2 z3
(**) z2 = p12 z12 + p22 z22 + p32 z32 + ( p1 p2 + p2 p1 ) z1 z2 + ( p1 p3 + p3 p1 ) z1 z3 +
( p2 p3 + p3 p2 ) z2 z3
ora dimostriamo che dalla assoluta convergenza della ( * ) segue la ( ** ).
Se la (*) converge convergeranno i singoli termini e quindi la (**).E’ come si estraesse dalla serie (*) delle serie estratte e riarrangiate in (**).
Fin qui si è parlato di prodotti anziché di potenze perché nella pratica di calcolo le potenze sono calcolate come prodotti successivi.
!programma scritto in fortran f_world
!modulo delle operazioni e funzioni elementari dello spazio complesso 3D
module cmpl3dm
implicit none
public ::tracargeoat3,trageocar3,per3,div3,pot3,ln3,exp3,sin3,asin3,&
pers3,divs3,cos3,tan3,ckasin3,atan3,acos3,exps3,sqrt3
integer,parameter,public::kd=selected_real_kind(15,307)
real (kind=kd),parameter,private::pigreco=3.141592653589793238
real (kind=kd),public::prc
contains
function tracargeoat3(zcar) result(zgeo)
real(kind=kd),dimension(:),intent(in)::zcar
real(kind=kd),dimension(3)::zgeo
real (kind=kd),parameter::uno=1.0_kd
!start function tracargeoat3
if (abs(zcar(2))<prc) then
zgeo(3)=pigreco/2*sign(uno,zcar(3))
else
zgeo(3)=atan(zcar(3)/zcar(2))
endif
if (abs(zcar(1))<prc) then
zgeo(2)=pigreco/2
if ((abs(zcar(1))<prc).and.(abs(zcar(2))<prc)) then
zgeo(2)=0.0_kd
endif
else
zgeo(2)=atan(sqrt(zcar(3)*zcar(3)+zcar(2)*zcar(2))/zcar(1))
endif
zgeo(1)=sqrt(zcar(1)*zcar(1)+zcar(2)*zcar(2)+zcar(3)*zcar(3))
if (zcar(1)<-prc) then
zgeo(2)=zgeo(2)+pigreco
endif
if (zcar(2)<-prc) then
zgeo(3)=zgeo(3)+pigreco
endif
if ((zcar(1)>-prc).and.(abs(zcar(2))<prc).and.(abs(zcar(3))<prc)) then
zgeo(2)=0.0_kd
zgeo(3)=0.0_kd
endif
if ((zcar(1)<-prc).and.(abs(zcar(2))<prc).and.(abs(zcar(3))<prc)) then
zgeo(2)=pigreco
zgeo(3)=0.0_kd
endif
if ((abs(zcar(1))<prc).and.(abs(zcar(3))<prc)) then
zgeo(2)=pigreco/2*sign(uno,zcar(2))
zgeo(3)=0.0_kd
endif
if ((abs(zcar(1))<prc).and.(abs(zcar(2))<prc)) then
zgeo(2)=pigreco/2
zgeo(3)=pigreco/2*sign(uno,zcar(3))
endif
end function tracargeoat3
function trageocar3 (zgeo) result(zcar)
real(kind=kd),dimension(:),intent(in)::zgeo
real(kind=kd),dimension(3)::zcar
!start function trageocar
zcar(1)=zgeo(1)*cos(zgeo(2))
zcar(2)=zgeo(1)*sin(zgeo(2))*cos(zgeo(3))
zcar(3)=zgeo(1)*sin(zgeo(2))*sin(zgeo(3))
end function trageocar3
function pers3(zcar1,zcar2) result (zcar3)
real(kind=kd),dimension(:),intent(in) ::zcar1,zcar2
real(kind=kd),dimension(4):: zcar3
real(kind=kd)::uno
!start function pers
uno=(zcar1(2)*zcar2(3)+zcar1(3)*zcar2(2))
zcar3(1)=zcar1(1)*zcar2(1)-zcar1(2)*zcar2(2)-zcar1(3)*zcar2(3)
zcar3(2)=zcar1(1)*zcar2(2)+zcar1(2)*zcar2(1)
zcar3(3)=zcar1(1)*zcar2(3)+zcar1(3)*zcar2(1)
zcar3(4)=zcar1(2)*zcar2(3)+zcar1(3)*zcar2(2)
end function pers3
function div3(zcar1,zcar2) result(zcar3)
real(kind=kd),intent(in),dimension(:)::zcar1,zcar2
real(kind=kd),dimension(3)::zcar3
real(kind=kd),dimension(3)::zcar2c
real(kind=kd)::ro2
integer::i
!start function div
ro2=zcar2(1)*zcar2(1)+zcar2(2)*zcar2(2)+zcar2(3)*zcar2(3)
if (ro2==0.0) then
! "fatal error hai diviso per 0.0"
stop
endif
zcar2c(1)=zcar2(1)
zcar2c(2)=-zcar2(2)
zcar2c(3)=-zcar2(3)
zcar3=per3(zcar1,zcar2c)
do i=1,3
zcar3(i)=zcar3(i)/ro2
end do
end function div3
function per3(zcar1,zcar2) result (zcar3)
real(kind=kd),dimension(:),intent(in) ::zcar1,zcar2
real(kind=kd),dimension(3):: zcar3
real (kind=kd)::uno,due
!start function per
uno=zcar1(2)*zcar2(3)-zcar1(3)*zcar2(2)
due=0.562640006184190 * uno
zcar3(1)=zcar1(1)*zcar2(1)-zcar1(2)*zcar2(2)-zcar1(3)*zcar2(3)&
-0.605699946517314*uno
zcar3(2)=zcar1(1)*zcar2(2)+zcar1(2)*zcar2(1)+due
zcar3(3)=zcar1(1)*zcar2(3)+zcar1(3)*zcar2(1)+due
end function per3
function divs3(zcar1,zcar2) result(zcar3)
real(kind=kd),intent(in),dimension(:)::zcar1,zcar2
real(kind=kd),dimension(3)::zcar3
real(kind=kd),dimension(3)::zcar2c,zcar
real(kind=kd)::ro2
integer::i
!start function divs
ro2=zcar2(1)*zcar2(1)+zcar2(2)*zcar2(2)+zcar2(3)*zcar2(3) &
+zcar2(2)*zcar2(3)*2
ro2=ro2*ro2
zcar2c(1)=zcar2(1)
zcar2c(2)=-zcar2(2)
zcar2c(3)=-zcar2(3)
! zcar3=pers3(zcar1,zcar2c)
if (ro2==0.0) then
!"fatal error hai diviso per 0.0"
stop
endif
! zcar=pers3(zcar2,zcar2c)
! zcar3=zcar3/ro2
zcar3=div3(zcar3,zcar)
end function divs3
function pot3(zcar1,r) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),intent(in)::r
real(kind=kd),dimension(3)::zcar2
real(kind=kd),dimension(3)::zgeo1,zgeo2
!start pot3d
if ((zcar1(1)==0.0_kd).and.(zcar1(2)==0.0_kd).and.(zcar1(3)==0.0_kd))then
zcar2=0.0_kd
else
zcar2=exp3(r*ln3(zcar1))
endif
end function pot3
function ln3(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(3)::zcar2
real(kind=kd),dimension(3)::zgeo
!start function ln3d
zgeo=tracargeoat3(zcar1)
if (zgeo(1)==0.0) then
!" hai cercato di fare ln 0.0"
stop
else
zcar2(1)= log(zgeo(1))
zcar2(2)=zgeo(2)*cos(zgeo(3))
zcar2(3)=zgeo(2)*sin(zgeo(3))
endif
end function ln3
function exp3(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(3)::zcar2
real(kind=kd),dimension(3)::zcar3,zcar4
integer ::i,j
!start exp3d
zcar2(1)=1.0_kd
zcar2(2)=0.0_kd
zcar2(3)=0.0_kd
zcar3=zcar1
zcar2=zcar2+zcar1
do i=1,1000
zcar4(1)=zcar3(1)*zcar1(1)-zcar3(2)*zcar1(2)-zcar3(3)*zcar1(3)
zcar4(2)=zcar3(1)*zcar1(2)+zcar3(2)*zcar1(1)
zcar4(3)=zcar3(1)*zcar1(3)+zcar3(3)*zcar1(1)
zcar3=zcar4/(i+1)
zcar2=zcar2+zcar3
if((abs(zcar4(1))<10e-30).and.(abs(zcar4(2))<10e-30).and.(abs(zcar4(3))<10e-30))then
exit
endif
end do
end function exp3
function sin3(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(3)::zcar2
real(kind=kd),dimension(3)::zcar3,zcar4,zcar5
integer::i,j,k,l
!start function sin3d
zcar5=zcar1
if (zcar1(1)>4*pigreco) then
zcar5(1)=zcar1(1)-2*pigreco*(int(zcar1(1)/2/pigreco)-2)
endif
l=1
zcar2=zcar5
zcar3=zcar5
do i=1,10000
l=-l
do j=1,2
zcar4(1)=zcar3(1)*zcar5(1)-zcar3(2)*zcar5(2)-zcar3(3)*zcar5(3)
zcar4(2)=zcar3(1)*zcar5(2)+zcar3(2)*zcar5(1)
zcar4(3)=zcar3(1)*zcar5(3)+zcar3(3)*zcar5(1)
zcar3=zcar4
end do
zcar3=zcar4/(2*i+1)/i/2
zcar2=zcar2+zcar3*l
if((abs(zcar3(1))<1.0e-30).and.(abs(zcar3(2))<1.0e-30).and.&
(abs(zcar3(3))<1.0e-30))then
exit
endif
end do
end function sin3
function ckasin3 (zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(3)::zcar2
real(kind=kd),dimension(3)::zcar3,zcar4,zcar5,zcar6
!start function asin3d
zcar3=(/0,1,1/)
zcar3=zcar3/sqrt(2.0)
zcar4=per3(zcar1,zcar3)
zcar5=per3(zcar4,zcar4)
zcar5(1)=1.0+zcar5(1)
zcar6=ln3(zcar4+pot3(zcar5,0.5_kd))
zcar2=div3(zcar6,zcar3)
end function ckasin3
function cos3(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(3)::zcar2
real(kind=kd),dimension(3)::zcar3,zcar4,zcar5
integer::i,j,l
!start function cos3
zcar5=zcar1
if (zcar1(1)>4*pigreco) then
zcar5(1)=zcar1(1)-2*pigreco*(int(zcar1(1)/2/pigreco)-2)
endif
l=-1
zcar2=0.0_kd
zcar2(1)=1.0_kd
zcar3(1)=(zcar5(1)*zcar5(1)-zcar5(2)*zcar5(2)-zcar5(3)*zcar5(3))
zcar3(2)=zcar5(1)*zcar5(2)*2
zcar3(3)=zcar5(1)*zcar5(3)*2
zcar3=zcar3/2
zcar2=zcar2-zcar3
do i=1,2000
l=-l
do j=1,2
zcar4(1)=zcar3(1)*zcar5(1)-zcar3(2)*zcar5(2)-zcar3(3)*zcar5(3)
zcar4(2)=zcar3(1)*zcar5(2)+zcar3(2)*zcar5(1)
zcar4(3)=zcar3(1)*zcar5(3)+zcar3(3)*zcar5(1)
zcar3=zcar4
end do
zcar3=zcar4/(2*(i+1)-1)/(2*(i+1))
zcar2=zcar2+l*zcar3
if((abs(zcar3(1))<1.0e-20).and.(abs(zcar3(2))<1.0e-20).and.&
(abs(zcar3(3))<1.0e-20)) then
exit
endif
end do
end function cos3
function tan3(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(3)::zcar2
real(kind=kd),dimension(3)::zcar3,zcar4
real(kind=kd),parameter::uno=1.0_kd
!start function tan3
zcar3=sin3(zcar1)
zcar4=cos3(zcar1)
if ((zcar4(1)==0.0_kd).and.(zcar4(2)==0.0).and.(zcar4(3)==0.0_kd)) then
stop
else
zcar2=div3(zcar3,zcar4)
endif
end function tan3
function asin3(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(3)::zcar2
real(kind=kd),dimension(3)::zcar3,zcar4
real(kind=kd)::ro2
integer::i,j
!start function asin3
ro2=zcar1(1)*zcar1(1)+zcar1(2)*zcar1(2)+zcar1(3)*zcar1(3)
if (ro2>=1.0_kd) then
stop
endif
zcar2=zcar1
zcar3=zcar1
do i=1,1000
do j=1,2
zcar4(1)=zcar3(1)*zcar1(1)-zcar3(2)*zcar1(2)-zcar3(3)*zcar1(3)
zcar4(2)=zcar3(1)*zcar1(2)+zcar3(2)*zcar1(1)
zcar4(3)=zcar3(1)*zcar1(3)+zcar3(3)*zcar1(1)
zcar3=zcar4
end do
zcar3=zcar4/i/2*(2*i-1)
zcar2=zcar2+zcar3/(2*i+1)
if((abs(zcar3(1))<1.0e-50).and.(abs(zcar3(2))<1.0e-50)&
.and.(abs(zcar3(3))<1.0e-50)) then
exit
endif
end do
end function asin3
function acos3(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(3)::zcar2
!start function acos3
if ((zcar1(1)==0.0_kd).and.(zcar1(2)==0.0_kd).and.(zcar1(3)==0.0_kd)) then
zcar2=0.0_kd
else
zcar2(1)=zcar1(1)*zcar1(1)-zcar1(2)*zcar1(2)-zcar1(3)*zcar1(3)
zcar2(2)=2*zcar1(1)*zcar1(2)
zcar2(3)=2*zcar1(1)*zcar1(3)
zcar2=-zcar2
zcar2(1)=zcar2(1)+1
zcar2=asin3(pot3(zcar2,0.5_kd))
endif
end function acos3
function atan3(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(3)::zcar2
!start function acos3
zcar2(1)=zcar1(1)*zcar1(1)-zcar1(2)*zcar1(2)-zcar1(3)*zcar1(3)
zcar2(2)=2*zcar1(1)*zcar1(2)
zcar2(3)=2*zcar1(1)*zcar1(3)
zcar2(1)=zcar2(1)+1
zcar2=pot3(zcar2,0.5_kd)
zcar2=asin3(div3(zcar1,zcar2))
end function atan3
function exps3(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(4)::zcar2
real(kind=kd),dimension(4)::zcar3,zcar4
integer ::i,j
!start exps3d
if ((abs(zcar1(1))>50.0).or.(abs(zcar1(2))>50.0).or.(abs(zcar1(3))>50.0)) then
stop
endif
zcar2=0.0_kd
zcar2(1)=1.0_kd
zcar3=zcar1
zcar2=zcar2+zcar1
do i=1,150
zcar4(1)=zcar3(1)*zcar1(1)-zcar3(2)*zcar1(2)-zcar3(3)*zcar1(3)+zcar3(4)*zcar1(4)
zcar4(2)=zcar3(1)*zcar1(2)+zcar3(2)*zcar1(1)-zcar3(3)*zcar1(4)-zcar3(4)*zcar1(3)
zcar4(3)=zcar3(1)*zcar1(3)+zcar3(3)*zcar1(1)-zcar3(2)*zcar1(4)-zcar3(4)*zcar1(2)
zcar4(4)=zcar3(1)*zcar1(4)+zcar3(4)*zcar1(1)+zcar3(2)*zcar1(3)+zcar3(3)*zcar1(2)
zcar3=zcar4/(i+1)
zcar2=zcar2+zcar3
if((abs(zcar3(1))<10e-30).and.(abs(zcar3(2))<10e-30).and. &
(abs(zcar3(3))<10e-30).and.(abs(zcar3(4))<10e-30))then
exit
endif
end do
end function exps3
function sqrt3(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(3)::zcar2
!start function sqrt3
zcar2=pot3(zcar1,0.5_kd)
end function sqrt3
end module cmpl3dm
! programma scritto in fortran f_world
!modulo delle operazioni e funzioni elementari dello spazio complesso 4D
module cmplx4dm
implicit none
public ::tracargeoat4,trageocar4,per4,div4,pot4,ln4,exp4,sin4,asin4,&
pers4,divs4,cos4,tan4,ckasin4,atan4,acos4,sqrt4
integer,parameter,public::kd=selected_real_kind(15,99)
real (kind=kd),parameter,private::pigreco=3.141592653589793
real(kind=kd),public::prc
contains
function tracargeoat4(zcar) result(zgeo)
real(kind=kd),dimension(:),intent(in)::zcar
real(kind=kd),dimension(4)::zgeo
real (kind=kd),parameter::uno=1.0_kd
!start function tracargeoat4
zgeo(1)=sqrt(zcar(1)*zcar(1)+zcar(2)*zcar(2)+zcar(3)*zcar(3)+zcar(4)*zcar(4))
if (abs(zcar(3))<prc) then
zgeo(4)=pigreco/2*sign(uno,zcar(4))
else
zgeo(4)=atan(zcar(4)/zcar(3))
endif
if (abs(zcar(2))<prc) then
zgeo(3)=pigreco/2
else
zgeo(3)=atan(sqrt(zcar(4)*zcar(4)+zcar(3)*zcar(3))/zcar(2))
endif
if (zcar(3)<-prc) then
zgeo(4)=zgeo(4)+pigreco
endif
if (zcar(2)<-prc) then
zgeo(3)=zgeo(3)+pigreco
endif
if ((abs(zcar(2))<prc).and.(abs(zcar(4))<prc)) then
zgeo(3)=pigreco/2*sign(uno,zcar(3))
zgeo(4)=0.0_kd
endif
if ((abs(zcar(2))<prc).and.(abs(zcar(3))<prc)) then
zgeo(3)=pigreco/2
zgeo(4)=pigreco/2*sign(uno,zcar(4))
endif
if (abs(zcar(1))<prc) then
zgeo(2)=pigreco/2
else
zgeo(2)=atan(sqrt(zcar(4)*zcar(4)+zcar(3)*zcar(3)+zcar(2)*zcar(2))/zcar(1))
endif
if ((abs(zcar(2))<prc).and.(abs(zcar(3))<prc) &
.and.(abs(zcar(4))<prc))then
zgeo(2)=0.0_kd
zgeo(3)=0.0_kd
zgeo(4)=0.0_kd
endif
if(zcar(1)<-prc) then
zgeo(2)=zgeo(2)+pigreco
endif
end function tracargeoat4
function trageocar4 (zgeo) result(zcar)
real(kind=kd),dimension(:),intent(in)::zgeo
real(kind=kd),dimension(4)::zcar
!start function trageocar
zcar(1)=zgeo(1)*cos(zgeo(2))
zcar(2)=zgeo(1)*sin(zgeo(2))*cos(zgeo(3))
zcar(3)=zgeo(1)*sin(zgeo(2))*sin(zgeo(3))*cos(zgeo(4))
zcar(4)=zgeo(1)*sin(zgeo(2))*sin(zgeo(3))*sin(zgeo(4))
end function trageocar4
function pers4(zcar1,zcar2) result (zcar3)
real(kind=kd),dimension(:),intent(in) ::zcar1,zcar2
real(kind=kd),dimension(4):: zcar3
!start function per
zcar3(1)=zcar1(1)*zcar2(1)-zcar1(2)*zcar2(2) &
-zcar1(3)*zcar2(3)-zcar1(4)*zcar2(4)
zcar3(2)=zcar1(1)*zcar2(2)+zcar1(2)*zcar2(1) &
+zcar1(3)*zcar2(4)+zcar1(4)*zcar2(3)
zcar3(3)=zcar1(1)*zcar2(3)+zcar1(3)*zcar2(1) &
+zcar1(2)*zcar2(4)+zcar1(4)*zcar2(2)
zcar3(4)=zcar1(1)*zcar2(4)+zcar1(4)*zcar2(1) &
+zcar1(2)*zcar2(3)+zcar1(3)*zcar2(2)
end function pers4
function div4(zcar1,zcar2) result(zcar3)
real(kind=kd),intent(in),dimension(:)::zcar1,zcar2
real(kind=kd),dimension(4)::zcar3
real(kind=kd),dimension(4)::zcar2c
real(kind=kd)::ro2
integer::i
!start function div
ro2=zcar2(1)*zcar2(1)+zcar2(2)*zcar2(2)+zcar2(3)*zcar2(3)+zcar2(4)*zcar2(4)
if (ro2==0.0) then
! "fatal error hai diviso per 0.0"
stop
endif
zcar2c(1)=zcar2(1)
zcar2c(2)=-zcar2(2)
zcar2c(3)=-zcar2(3)
zcar2c(4)=-zcar2(4)
zcar3=per4(zcar1,zcar2c)
zcar3=zcar3/ro2
end function div4
function per4(zcar1,zcar2) result (zcar3)
real(kind=kd),dimension(:),intent(in) ::zcar1,zcar2
real(kind=kd),dimension(4):: zcar3
real (kind=kd)::uno,due,tre,quattro
!start function per
uno=zcar1(2)*zcar2(3)-zcar1(3)*zcar2(2)
tre=zcar1(2)*zcar2(4)-zcar1(4)*zcar2(2)
quattro=zcar1(3)*zcar2(4)-zcar1(4)*zcar2(3)
due=0.562640006184190
zcar3(1)=zcar1(1)*zcar2(1)-zcar1(2)*zcar2(2)-zcar1(3)*zcar2(3)&
-zcar1(4)*zcar2(4)-0.605699946517314*(uno+tre+quattro)
zcar3(2)=zcar1(1)*zcar2(2)+zcar1(2)*zcar2(1)+due*(uno+tre)
zcar3(3)=zcar1(1)*zcar2(3)+zcar1(3)*zcar2(1)+due*(uno+quattro)
zcar3(4)=zcar1(1)*zcar2(4)+zcar1(4)*zcar2(1)+due*(tre+quattro)
end function per4
function divs4(zcar1,zcar2) result(zcar3)
real(kind=kd),intent(in),dimension(:)::zcar1,zcar2
real(kind=kd),dimension(4)::zcar3
real(kind=kd),dimension(4)::zcar2c,zcar
real(kind=kd)::ro2
integer::i
!start function divs
ro2=zcar2(1)*zcar2(1)+zcar2(2)*zcar2(2)+zcar2(3)*zcar2(3)+zcar2(4)*zcar2(4)
zcar2c=-zcar2
zcar2c(1)=zcar2(1)
zcar3=pers4(zcar1,zcar2c)
ro2=ro2+2*(zcar2(2)*zcar2(3)+zcar2(2)*zcar2(4)+zcar2(3)*zcar2(4))
if (ro2==0.0) then
! "fatal error hai diviso per 0.0"
stop
endif
zcar=pers4(zcar2,zcar2c)
zcar3=div4(zcar3,zcar)
!zcar3=zcar3/ro2
end function divs4
function pot4(zcar1,r) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),intent(in)::r
real(kind=kd),dimension(4)::zcar2
real(kind=kd),dimension(4)::zgeo1,zgeo2
!start pot4d
if ((zcar1(1)==0.0_kd).and.(zcar1(2)==0.0_kd).and.(zcar1(3)==0.0_kd)&
.and.(zcar1(4)==0.0_kd))then
zcar2=0.0_kd
else
zcar2=exp4(r*ln4(zcar1))
endif
end function pot4
function ln4(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(4)::zcar2
real(kind=kd),dimension(4)::zgeo
!start function ln4d
zgeo=tracargeoat4(zcar1)
if (zgeo(1)==0.0) then
!" hai cercato di fare ln 0.0"
stop
else
zcar2(1)= log(zgeo(1))
zcar2(2)=zgeo(2)*cos(zgeo(3))
zcar2(3)=zgeo(2)*sin(zgeo(3))*cos(zgeo(4))
zcar2(4)=zgeo(2)*sin(zgeo(3))*sin(zgeo(4))
endif
end function ln4
function exp4(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(4)::zcar2
real(kind=kd),dimension(4)::zcar3,zcar4
integer ::i,j
!start exp4d
zcar2=(/1,0,0,0/)
zcar3=zcar1
zcar2=zcar2+zcar1
do i=1,1150
zcar4(1)=zcar3(1)*zcar1(1)-zcar3(2)*zcar1(2)-zcar3(3)*zcar1(3)-zcar3(4)*zcar1(4)
zcar4(2)=zcar3(1)*zcar1(2)+zcar3(2)*zcar1(1)
zcar4(3)=zcar3(1)*zcar1(3)+zcar3(3)*zcar1(1)
zcar4(4)=zcar3(1)*zcar1(4)+zcar3(4)*zcar1(1)
zcar3=zcar4/(i+1)
zcar2=zcar2+zcar3
if((abs(zcar4(1))<10e-20).and.(abs(zcar4(2))<10e-20).and.(abs(zcar4(3))<10e-20) &
.and.(abs(zcar4(4))<10e-20))then
exit
endif
end do
end function exp4
function sin4(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(4)::zcar2
real(kind=kd),dimension(4)::zcar3,zcar4,zcar5
integer::i,j,k,l
!start function sin4d
l=1
zcar5=zcar1
if (zcar1(1)>4*pigreco) then
zcar5(1)=zcar5(1)-2*pigreco*(int(zcar1(1)/2/pigreco)-2)
endif
zcar2=zcar5
zcar3=zcar5
do i=1,2000
l=-l
do j=1,2
zcar4(1)=zcar3(1)*zcar5(1)-zcar3(2)*zcar5(2) &
-zcar3(3)*zcar5(3)-zcar3(4)*zcar5(4)
zcar4(2)=zcar3(1)*zcar5(2)+zcar3(2)*zcar5(1)
zcar4(3)=zcar3(1)*zcar5(3)+zcar3(3)*zcar5(1)
zcar4(4)=zcar3(1)*zcar5(4)+zcar3(4)*zcar5(1)
zcar3=zcar4
end do
zcar3=zcar4/2/i/(2*i+1)
zcar2=zcar2+zcar3*l
if((abs(zcar3(1))<1.0e-30).and.(abs(zcar3(2))<1.0e-30).and.&
(abs(zcar3(3))<1.0e-30).and.(abs(zcar3(4))<1.0e-30))then
exit
endif
end do
end function sin4
function ckasin4 (zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(4)::zcar2
real(kind=kd),dimension(4)::zcar3,zcar4,zcar5,zcar6
!start function asin4d
zcar3=(/0,1,1,1/)
zcar3=zcar3/sqrt(3.0)
zcar4=per4(zcar1,zcar3)
zcar5=per4(zcar4,zcar4)
zcar5(1)=1.0+zcar5(1)
zcar6=ln4(zcar4+pot4(zcar5,0.5_kd))
zcar2=-per4(zcar6,zcar3)
end function ckasin4
function cos4(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(4)::zcar2
real(kind=kd),dimension(4)::zcar3,zcar4,zcar5
integer::i,j,l
!start function cos4
l=-1
zcar5=zcar1
if(zcar1(1)>4*pigreco) then
zcar5(1)=zcar1(1)-2*pigreco*(int(zcar1(1)/2/pigreco)-2)
endif
zcar2=(/1,0,0,0/)
zcar3(1)=zcar5(1)*zcar5(1)-zcar5(2)*zcar5(2) &
-zcar5(3)*zcar5(3)-zcar5(4)*zcar5(4)
zcar3(2)=zcar5(1)*zcar5(2)*2
zcar3(3)=zcar5(1)*zcar5(3)*2
zcar3(4)=zcar5(1)*zcar5(4)*2
zcar3=zcar3/2
zcar2=zcar2-zcar3
do i=1,1000
l=-l
do j=1,2
zcar4(1)=zcar3(1)*zcar5(1)-zcar3(2)*zcar5(2) &
-zcar3(3)*zcar5(3)-zcar3(4)*zcar5(4)
zcar4(2)=zcar3(1)*zcar5(2)+zcar3(2)*zcar5(1)
zcar4(3)=zcar3(1)*zcar5(3)+zcar3(3)*zcar5(1)
zcar4(4)=zcar3(1)*zcar5(4)+zcar3(4)*zcar5(1)
zcar3=zcar4
end do
zcar3=zcar4/(2*(i+1))/(2*(i+1)-1)
zcar2=zcar2+l*zcar3
if((abs(zcar4(1))<1.0e-30).and.(abs(zcar4(2))<1.0e-30).and.&
(abs(zcar4(3))<1.0e-30).and.(abs(zcar4(4))<1.0e-30)) then
exit
endif
end do
end function cos4
function tan4(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(4)::zcar2
real(kind=kd),dimension(4)::zcar3,zcar4
real(kind=kd),parameter::uno=1.0_kd
!start function tan4
zcar3=sin4(zcar1)
zcar4=cos4(zcar1)
if ((zcar4(1)==0.0_kd).and.(zcar4(2)==0.0).and. &
(zcar4(3)==0.0_kd).and.(zcar4(4)==0.0)) then
stop
else
zcar2=div4(zcar3,zcar4)
endif
end function tan4
function asin4(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(4)::zcar2
real(kind=kd),dimension(4)::zcar3,zcar4
real(kind=kd)::ro2
integer::i,j
!start function asin4
ro2=zcar1(1)*zcar1(1)+zcar1(2)*zcar1(2)+zcar1(3)*zcar1(3)*zcar1(4)*zcar1(4)
if (ro2>=1.0_kd) then
stop
endif
zcar2=zcar1
zcar3=zcar1
do i=1,150
do j=1,2
zcar4(1)=zcar3(1)*zcar1(1)-zcar3(2)*zcar1(2) &
-zcar3(3)*zcar1(3)-zcar3(4)*zcar1(4)
zcar4(2)=zcar3(1)*zcar1(2)+zcar3(2)*zcar1(1)
zcar4(3)=zcar3(1)*zcar1(3)+zcar3(3)*zcar1(1)
zcar4(4)=zcar3(1)*zcar1(4)+zcar3(4)*zcar1(1)
zcar3=zcar4
end do
do j=1,(2*i-1),2
zcar4=zcar4*j
end do
do j=1,i
zcar4=zcar4/j/2
end do
zcar2=zcar2+zcar4/(2*i+1)
if((abs(zcar4(1))<1.0e-30).and.(abs(zcar4(2))<1.0e-30)&
.and.(abs(zcar4(3))<1.0e-30).and.(abs(zcar4(4))<1.0e-30)) then
exit
endif
end do
end function asin4
function acos4(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(4)::zcar2
!start function acos4
if ((zcar1(1)==0.0_kd).and.(zcar1(2)==0.0_kd).and. &
(zcar1(3)==0.0_kd).and.(zcar1(4)==0.0_kd)) then
zcar2=0.0_kd
else
zcar2(1)=zcar1(1)*zcar1(1)-zcar1(2)*zcar1(2) &
-zcar1(3)*zcar1(3)-zcar1(4)*zcar1(4)
zcar2(2)=2*zcar1(1)*zcar1(2)
zcar2(3)=2*zcar1(1)*zcar1(3)
zcar2(4)=2*zcar1(1)*zcar1(4)
zcar2=-zcar2
zcar2(1)=zcar2(1)+1
zcar2=asin4(pot4(zcar2,0.5_kd))
endif
end function acos4
function atan4(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(4)::zcar2
!start function acos4
zcar2(1)=zcar1(1)*zcar1(1)-zcar1(2)*zcar1(2) &
-zcar1(3)*zcar1(3)-zcar1(4)*zcar1(4)
zcar2(2)=2*zcar1(1)*zcar1(2)
zcar2(3)=2*zcar1(1)*zcar1(3)
zcar2(4)=2*zcar1(1)*zcar1(4)
zcar2(1)=zcar2(1)+1
zcar2=pot4(zcar2,0.5_kd)
zcar2=asin4(div4(zcar1,zcar2))
end function atan4
function sqrt4(zcar1) result(zcar2)
real(kind=kd),dimension(:),intent(in)::zcar1
real(kind=kd),dimension(4)::zcar2
! start function sqrt4
zcar2=pot4(zcar1,0.5_kd)
end function sqrt4
end module cmplx4dm
[1]B.FINZI-M.PASTORI,”Calcolo tensoriale e applicazioni”,ZANICHELLI BOLOGNA,1971
[2]L.D.LANDAU-E.M.LIFSITS,”Teoria dei campi”,EDITORI RIUNITI,1976
[3]A.I.MARKUSEVIC,”Elementi di teoria delle funzioni analitiche”,EDITORI RIUNITI,1988
[4]A.G.SVESNIKOV,”Teoria delle funzioni di una variabile complessa”,EDITORI RIUNITI,1984