Anta at vi har en funksjon $ u $ definert i en ball på en diskret måte: vi kjenner bare verdiene til $ u $ i nodene $ (i, j, k) $ i sfærisk rutenett, hvor $ i $ er en radiuskoordinat, $ j $ er en koordinat for vinkel $ \ varphi $, $ k $ er en koordinat for vinkel $ \ psi $ .
Vurder en vektorfunksjon $$ \ 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øyre) – $$ gradient på $ u $.
Jeg trenger å vite verdiene til $ \ nabla u_ {i, j, k} $ på z-aksen i kartesiske koordinater, som tilsvarer $ \ psi = 0 $ – aksen i sfæriske koordinater, men vi kan ikke bruke formelen ovenfor, for i tilfelle $ \ psi = 0 $ blir den andre termen til uendelig.
Egentlig kan vi finne verdiene til $ \ frac {\ partial u} {\ partial z} $ ved hjelp av formelen for numeriske derivater, men vi har et problem med å finne $ \ frac {\ delvis u} {\ partial x} $, $ \ frac {\ partial u} {\ partial y} $, fordi rutenettet ikke er rektangulært. Kan du hjelpe meg med disse tingene og gi meg råd om hva jeg skal gjøre?
Kommentarer
- Kunne du ikke beregne det numeriske derivatet i $ (r, \ varphi, \ psi) $ koordinatsystem? Dette skal gi deg en vektor som du deretter kan projisere på $ x $ – $ y $ – og $ z $ -aksene for å gi deg $ x $ – $ y $ – og $ z $ -komponentene til gradienten
- Nei, vi kan ikke beregne numeriske derivater, for for $ \ psi = 0 $ $ \ varphi $ -angle er ikke definert, og vi har singularitet i formelen.
- Det er sannsynlig en løsning bruker quaternions, men det er litt vanskelig å finne ut hvordan det ser ut akkurat. din nomenkaltur. Effekten du prøver å kjempe blir ofte referert til som " gimbal-lock "
- Jeg fant en variant for å håndtere disse tingene riktig: her kan vi bruke minst kvadratisk metode for gradientrekonstruksjon, men jeg fant ikke nøyaktig forklaring på hvordan jeg brukte den
- Kanskje er det ' tilfelle – for moderat veloppdragen $ u $$ – at $ \ lim _ {\ psi \ til 0} \ frac {1} {\ sin \ psi} \ frac {\ partial u} {\ partial \ phi} = 0 $. Men jeg tror ikke ' at midtkomponenten i vektoren din har betydning, så hvis du ' kobler dette til en differensialligning i polar koordinerer differensialligningen, kan heller ikke gi vekt på midtkoordinaten.
Svar
Det er 3 måter å unngå denne situasjonen, men før bruk må man sjekke om denne måten er egnet på grunn av beregningsfeil:
1) Green-Gauss cellemetode: her brukes definisjonen av 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 $ – antall naboer til celle $ V_ {i} $
2) Metode for minste kvadrat: feilen
$$ \ 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 $$ må minimeres, derfor får vi komponentene til $ \ nabla u_i $
3) Interpolasjonsmetode. Verdien av gradient interpoleres fra verdiene for gradientvektorfunksjon.