Antag att vi har en funktion $ u $ definierad i en boll på ett diskret sätt: vi vet bara värdena på $ u $ i noderna $ (i, j, k) $ för sfäriskt rutnät, där $ i $ är en radiekoordinat, $ j $ är en koordinat för vinkel $ \ varphi $, $ k $ är en koordinat för vinkel $ \ psi $ .

Tänk på 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} {\ partiell \ psi} _ {i, j, k} \ höger) – $$ gradient på $ u $.

Jag behöver veta värdena på $ \ nabla u_ {i, j, k} $ på z-axeln i kartesiska koordinater, vilket motsvarar $ \ psi = 0 $ – axel i sfäriska koordinater, men vi kan inte använda formeln ovan, för om $ \ psi = 0 $ blir den andra termen oändlig.

Egentligen kan vi hitta värdena $ \ frac {\ partial u} {\ partial z} $ med hjälp av formeln för numeriska derivat, men vi har problem med att hitta $ \ frac {\ delvis u} {\ partial x} $, $ \ frac {\ partial u} {\ partial y} $, eftersom rutnätet inte är rektangulärt. Kan du hjälpa mig med de här sakerna och ge mig råd om vad jag ska göra?

Kommentarer

  • Kunde du inte beräkna det numeriska derivatet i $ (r, \ varphi, \ psi) $ koordinatsystem? Detta ska ge dig en vektor som du sedan kan projicera på $ x $ – $ y $ – och $ z $ -axlarna för att ge dig $ x $ – $ y $ – och $ z $ -komponenterna i lutningen
  • Nej, vi kan inte beräkna numeriska derivat, för för $ \ psi = 0 $ $ \ varphi $ -vinkel är inte definierat och vi har singularitet i formeln.
  • Det finns troligen en lösning använder quaternions, men det är svårt att ta reda på hur exakt det ser ut wrt. din nomenkaltur. Effekten du försöker bekämpa kallas vanligtvis " gimbal-lock "
  • Jag hittade en variant för att hantera dessa saker korrekt: här kan vi använda minst kvadratisk metod för gradientrekonstruktion, men jag hittade inte exakt förklaring, hur man använder den
  • Kanske är det ' så – för måttligt uppfört $ u $$ – att $ \ lim _ {\ psi \ till 0} \ frac {1} {\ sin \ psi} \ frac {\ partial u} {\ partial \ phi} = 0 $. Men jag tror inte ' att mittkomponenten i din vektor har betydelse, så om du ' återansluter detta till en differentiell ekvation i polar koordinerar differentialekvationen kanske inte ger någon vikt till mittkoordinaten.

Svar

Det finns 3 sätt att undvik denna situation, men före användning måste man kontrollera om detta sätt är lämpligt på grund av beräkningsfel:

1) Green-Gauss cellmetod: här används definitionen 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}, $$ där $ k $ – antalet grannar i cellen $ V_ {i} $

2) Metoden med minsta kvadrater: felet

$$ \ 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åste minimeras, därför får vi komponenterna i $ \ nabla u_i $

3) Interpoleringsmetod. Gradientvärdet interpoleras från värdena för gradientvektorfunktion.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *