Supponiamo di avere una funzione $ u $ definita in una palla in modo discreto: conosciamo solo i valori di $ u $ nei nodi $ (i, j, k) $ della griglia sferica, dove $ i $ è una coordinata del raggio, $ j $ è una coordinata per langolo $ \ varphi $, $ k $ è una coordinata per langolo $ \ psi $ .
Considera una funzione vettoriale $$ \ nabla u_ {i, j, k} = \ left (\ frac {\ partial u} {\ partial r} _ {i, j, k}, \ frac {1} {r_i \ sin \ psi_k} \ frac {\ partial u} {\ partial \ varphi} _ {i, j, k}, \ frac {1} {r_i} \ frac {\ partial u} {\ parziale \ psi} _ {i, j, k} \ right) – $$ gradiente di $ u $.
Ho bisogno di conoscere i valori di $ \ nabla u_ {i, j, k} $ sullasse z in coordinate cartesiane, che corrisponde a $ \ psi = 0 $ – asse in coordinate sferiche, ma non possiamo usare la formula sopra, perché nel caso $ \ psi = 0 $ il secondo termine diventa infinito.
In realtà, possiamo trovare i valori di $ \ frac {\ partial u} {\ partial z} $ con laiuto della formula della derivata numerica, ma abbiamo un problema nel trovare $ \ frac {\ parziale u} {\ parziale x} $, $ \ frac {\ parziale u} {\ parziale y} $, perché la griglia non è rettangolare. Potresti aiutarmi con questa roba e consigliarmi cosa fare?
Commenti
- Non potresti calcolare la derivata numerica in $ (r, \ varphi, \ psi) $ sistema di coordinate? Questo dovrebbe darti un vettore che puoi quindi proiettare sulle $ x $ – $ y $ – e $ z $ -ax per darti i $ x $ – $ y $ – e $ z $ -componenti del gradiente
- No, non possiamo calcolare la derivata numerica, perché per $ \ psi = 0 $ $ \ varphi $ -angolo non è definito e abbiamo la singolarità nella formula.
- Probabilmente cè una soluzione usando i quaternioni, ma è un po difficile capire che aspetto abbia esattamente. la tua nomencaltura. Leffetto che stai cercando di combattere è comunemente indicato come " gimbal-lock "
- Ho trovato una variante per gestire correttamente queste cose: qui possiamo usare il metodo dei minimi quadrati per la ricostruzione del gradiente, ma non ho trovato una spiegazione esatta, come usarlo
- Forse ' è il caso – per $ u $$ moderatamente ben educati – che $ \ lim _ {\ psi \ to 0} \ frac {1} {\ sin \ psi} \ frac {\ partial u} {\ partial \ phi} = 0 $. Ma non ' penso che il componente centrale del tuo vettore abbia un significato, quindi se ' lo colleghi a unequazione differenziale in polare coordinate lequazione differenziale potrebbe anche non dare peso alla coordinata centrale.
Risposta
Ci sono 3 modi per evitare questa situazione, ma prima delluso è necessario verificare se questa modalità è adatta a causa di un errore di calcolo:
1) Metodo delle celle di Green-Gauss: qui viene utilizzata la definizione di gradiente:
$$ \ nabla u_i \ approx \ frac {1} {V_ {i}} \ int \ limits _ {\ partial V_i} ud \ overline {S} \ approx \ sum \ limits_ {k = 1} ^ {n} {u_ {f_k} S_k \ overline {n} _k}, $$ dove $ k $ – numeri dei vicini della cella $ V_ {i} $
2) Metodo dei minimi quadrati: lerrore
$$ \ sum \ limits_ {k = 1} ^ {n} {\ frac {1} {d_ {ik}} E_ {i, k} ^ {2}}, E_ {i, k} = \ nabla u_i \ cdot \ Delta r_ {i, k} + u_i-u_k $$ deve essere minimizzato, quindi otteniamo i componenti di $ \ nabla u_i $
3) Metodo di interpolazione. Il valore del gradiente viene interpolato dai valori della funzione vettoriale del gradiente.