Antag, at vi har en funktion $ u $ defineret i en kugle på en diskret måde: vi kender kun værdierne på $ u $ i noderne $ (i, j, k) $ i sfærisk gitter, hvor $ i $ er en radiuskoordinat, $ j $ er en koordinat for vinkel $ \ varphi $, $ k $ er en koordinat for vinkel $ \ psi $ .

Overvej en vektorfunktion $$ \ 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} {\ delvis \ psi} _ {i, j, k} \ højre) – $$ gradient på $ u $.

Jeg har brug for at kende værdierne for $ \ nabla u_ {i, j, k} $ på z-akse i kartesiske koordinater, hvilket svarer til $ \ psi = 0 $ – akse i sfæriske koordinater, men vi kan ikke bruge formlen ovenfor, for hvis $ \ psi = 0 $ bliver det andet udtryk uendeligt.

Faktisk kan vi finde værdierne på $ \ frac {\ partial u} {\ partial z} $ ved hjælp af formlen for numerisk afledt, men vi har et problem med at finde $ \ frac {\ delvis u} {\ partial x} $, $ \ frac {\ partial u} {\ partial y} $, fordi gitteret ikke er rektangulært. Kan du hjælpe mig med disse ting og rådgive mig, hvad jeg skal gøre?

Kommentarer

  • Kunne du ikke beregne det numeriske derivat i $ (r, \ varphi, \ psi) $ koordinatsystem? Dette skal give dig en vektor, som du derefter kan projicere på $ x $ – $ y $ – og $ z $ -akserne for at give dig $ x $ – $ y $ – og $ z $ -komponenterne i gradienten
  • Nej, vi kan ikke beregne numerisk derivat, for for $ \ psi = 0 $ $ \ varphi $ -angle er ikke defineret, og vi har enestående i formlen.
  • Der er sandsynligvis en løsning ved hjælp af kvaternioner, men det er lidt vanskeligt at finde ud af, hvad der præcist ligner wrt. din nomenkaltur. Den effekt, du prøver at kæmpe, kaldes almindeligvis " gimbal-lock "
  • Jeg fandt en variant til at håndtere disse ting korrekt: her kan vi bruge mindst kvadratisk metode til gradientrekonstruktion, men jeg fandt ikke nøjagtig forklaring på, hvordan man bruger den
  • Måske er det ' tilfældet – for moderat velopdragne $ u $$ – at $ \ lim _ {\ psi \ til 0} \ frac {1} {\ sin \ psi} \ frac {\ partial u} {\ partial \ phi} = 0 $. Men jeg tror ikke ' ikke den midterste komponent i din vektor har betydning, så hvis du ' tilslutter dette til en differentialligning i polar koordinerer differentialligningen giver muligvis heller ikke nogen vægt til den midterste koordinat.

Svar

Der er 3 måder at undgå denne situation, men inden brug skal man kontrollere, om denne måde er egnet på grund af beregningsfejl:

1) Green-Gauss cellemetode: her anvendes definitionen af gradient:

$$ \ 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}, $$ hvor $ k $ – antal naboer af celle $ V_ {i} $

2) Metode med mindste firkanter: fejlen

$$ \ 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 $$ skal minimeres, derfor får vi komponenterne i $ \ nabla u_i $

3) Interpolationsmetode. Værdien af gradient interpoleres fra værdierne for gradientvektorfunktion.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *