Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

2D-Gradient auf Kugeloberfläche

214 views
Skip to first unread message

Karlo Janos

unread,
Nov 11, 2011, 7:02:50 AM11/11/11
to
Hallo,

ich habe einen Datensatz von Höhenangaben der Erdoberfläche. Die
Funktionszuordnung lautet also H(theta,phi), wobei theta und phi
Kugelkoordinaten sein sollen, die sich aus den Breiten- und
Längengraden der Erde ausrechnen lassen.
Nun möchte ich gerne den Gradienten herleiten, mit dem man bei einer
kontinuierlichen (also nicht diskreten) Funktion die stärkste
Höhenänderung an jedem Punkt auf der Oberfläche ausrechnen kann. Zu
Beginn meiner Überlegungen hielt ich das noch für eine simple Aufgabe.
Zwar ist es keine Zauberei, aus der Literatur die Beschreibung des
Nabla-Operators in Kugelkoordinaten herauszufinden, aber dabei handelt
es sich ja um 3D-Koordinaten.
Mich interessiert aber lediglich die maximale Höhenänderung auf der
_Kugeloberfläche_, also in 2 Dimensionen!
Und der naive Ansatz, einfach die Funktion H(theta,phi) einzeln nach
theta und nach phi abzuleiten, gibt mir zwar die Richtungsableitungen
in theta- und phi-Richtung, aber eben nicht den Betrag der _maximalen_
Höhenänderung an einem bestimmten Punkt auf der Oberfläche, die ja
irgendwo zwischen der theta- und phi-Richtung liegen kann.
Kann mir jemand auf die Sprünge helfen, wie man korrekterweise ansetzen
muss?
MfG

Karlo

Jan Fricke

unread,
Nov 11, 2011, 8:39:13 AM11/11/11
to
Du muss die unterschiedlichen Längen der Koordinatenrichtungen beachten.
Glücklicherweise sind die beiden hier orthogonal, da ist es etwas einfacher.

Sei E das Quadrat der Norm von d/d theta und G das von d/d phi ist, dann
ändert sich das Verhältnis der theta- und phi- Richtung um den Faktor
E/G gegenüber dem "normale" Gradienten.


Viele Grüße Jan

Vogel

unread,
Nov 14, 2011, 4:49:06 AM11/14/11
to
"Karlo Janos" <groups.2...@spamgourmet.com> wrote in
news:j9j2ta$11e$1...@speranza.aioe.org:

> Hallo,
>
> ich habe einen Datensatz von Höhenangaben der Erdoberfläche.
>
Also keine analytische Funktion?
>
> Die Funktionszuordnung lautet also H(theta,phi), wobei theta und phi
> Kugelkoordinaten sein sollen, die sich aus den Breiten- und
> Längengraden der Erde ausrechnen lassen.
>
Ob Kartesiche- oder Kugelkoordinaten ist wurscht.
>
> Nun möchte ich gerne den Gradienten herleiten, mit dem man bei einer
> kontinuierlichen (also nicht diskreten) Funktion die stärkste
> Höhenänderung an jedem Punkt auf der Oberfläche ausrechnen kann.
>
Kennst du denn H(theta,phi) analytisch?
>
Wie willst du den Gradienten herleiten wenn du H(theta,phi) nicht
analytisch kennst?
>
Kennt man H(theta,phi) analytisch, so ist ein Punkt P0(theta0,phi0) und
eine Richtung e(theta0,phi0) gesucht in welchem die Steigung maximal
ist.
>
Man sucht also ein lokales Extremum der Steigung.
>
Es gilt dann
>
dH(theta,phi)/de = grad H(theta0,phi0) * e
>
dH(theta,phi)/de = |grad H(theta0,phi0)| * cos(psi)
>
Gesucht sind (theta,phi) für psi=0
>
Leider ist es nur so, dass du viele lokale Extrema haben wirst.
>
Das heisst deine analytische Funktion H(theta,phi) wird eine Funktion
höheren Grades(>2) sein. Es gibt also ein Set von Lösungen
(theta_i,phi_i)
>
Daraus muss man den höchsten Wert der Steigung herausfiltern.
>
Es ist anzunhemen, dass dich H(theta,phi) als eine Fourierreihe
ermitteln lässt.
>
> Zu Beginn meiner Überlegungen hielt ich das noch für eine simple
> Aufgabe. Zwar ist es keine Zauberei, aus der Literatur die
> Beschreibung des Nabla-Operators in Kugelkoordinaten herauszufinden,
> aber dabei handelt es sich ja um 3D-Koordinaten.
>
Dann nimmst du halt den 3D-Gradienten für ein konstantes R. Das heisst
die Ableitungen nach R fallen weg.
>
Wird dir aber nicht viel weiter helfen. Du brauchst eine Methodik nicht
eine Formel alleine.
>
> Mich interessiert aber lediglich die maximale Höhenänderung auf der
> _Kugeloberfläche_, also in 2 Dimensionen! Und der naive Ansatz,
> einfach die Funktion H(theta,phi) einzeln nach theta und nach phi
> abzuleiten, gibt mir zwar die Richtungsableitungen in theta- und
> phi-Richtung, aber eben nicht den Betrag der _maximalen_ Höhenänderung
> an einem bestimmten Punkt auf der Oberfläche, die ja irgendwo zwischen
> der theta- und phi-Richtung liegen kann. Kann mir jemand auf die
> Sprünge helfen, wie man korrekterweise ansetzen muss? MfG
>
Hoffe zumindest aufklärerisch geholfen zu haben.
>

Karlo Janos

unread,
Nov 14, 2011, 7:18:24 AM11/14/11
to
Jan Fricke wrote:

> Du muss die unterschiedlichen Längen der Koordinatenrichtungen
> beachten. Glücklicherweise sind die beiden hier orthogonal, da ist
> es etwas einfacher.
>
> Sei E das Quadrat der Norm von d/d theta und G das von d/d phi ist,
> dann ändert sich das Verhältnis der theta- und phi- Richtung um den
> Faktor E/G gegenüber dem "normale" Gradienten.

Ich denke mal, dass dein Hinweis in die Richtung geht, wie es auch zu
berücksichtigen ist, wenn man den Nabla-Operator von kartesischen zu
Kugelkoordinaten transformiert, ja?

Vorausgesetzt ich habe zu den diskreten Daten H(theta_i,phi_i) eine
kontinuierliche Funktionsbeschreibung H(theta,phi) (z. B. als
Entwicklung mit reellen Kugelflächenfunktionen), dann komme ich also zu:


GRADIENT = NORM( (|dH/dphi|^2 / |dH/dtheta|^2 * d/dphi , d/dtheta
) H(theta,phi) )


War es so gemeint?
Danke und Gruß!

Karlo

Karlo Janos

unread,
Nov 14, 2011, 7:32:35 AM11/14/11
to
Vogel wrote:

> > ich habe einen Datensatz von Höhenangaben der Erdoberfläche.
> >
> Also keine analytische Funktion?

Doch schon, z. B. als Entwicklung nach reellen Kugelflächenfunktionen.


> Kennt man H(theta,phi) analytisch, so ist ein Punkt P0(theta0,phi0)
> und eine Richtung e(theta0,phi0) gesucht in welchem die Steigung
> maximal ist.

Von der Idee her durchaus nachvollziehbar.
Da aber der Gradientoperator nach einer Anwendung auf ein Skalarfeld
mit anschließender Bestimmung des Betrags die maximale Steigung angibt
(sofern die Richtung egal ist), suche ich nach einem entsprechenden
Ansatz für die zwei Dimensionen des orthogonalen und krummlinigen
(theta,phi)-Koordinatensystems.


> Dann nimmst du halt den 3D-Gradienten für ein konstantes R. Das heisst
> die Ableitungen nach R fallen weg.

Das war auch mein erster Gedanke. Allerdings hielt ich ihn für einen
falschen Ansatz auf Grund der möglicherweise falschen Skalierung der
Koordinatenrichtungen.

Danke und Gruß

Karlo

Jan Fricke

unread,
Nov 14, 2011, 9:37:55 AM11/14/11
to
On 11/14/2011 01:18 PM, Karlo Janos wrote:
> Jan Fricke wrote:
>
>> Du muss die unterschiedlichen Längen der Koordinatenrichtungen
>> beachten. Glücklicherweise sind die beiden hier orthogonal, da ist
>> es etwas einfacher.
>>
>> Sei E das Quadrat der Norm von d/d theta und G das von d/d phi ist,
>> dann ändert sich das Verhältnis der theta- und phi- Richtung um den
>> Faktor E/G gegenüber dem "normale" Gradienten.
>
> Ich denke mal, dass dein Hinweis in die Richtung geht, wie es auch zu
> berücksichtigen ist, wenn man den Nabla-Operator von kartesischen zu
> Kugelkoordinaten transformiert, ja?
Ja, genau. Da die Koordinatenlinien orthogonal sind, ist die
entsprechende Matrix diagonal, und Du hast dann nur noch die Längen der
Ableitungen in Koordinatenrichtung zu beachten.

>
> Vorausgesetzt ich habe zu den diskreten Daten H(theta_i,phi_i) eine
> kontinuierliche Funktionsbeschreibung H(theta,phi) (z. B. als
> Entwicklung mit reellen Kugelflächenfunktionen), dann komme ich also zu:
>
>
> GRADIENT = NORM( (|dH/dphi|^2 / |dH/dtheta|^2 * d/dphi , d/dtheta
> ) H(theta,phi) )
Diese Formel verstehe ich leider nicht :-(


Viele Grüße Jan

Vogel

unread,
Nov 14, 2011, 9:41:56 AM11/14/11
to
"Karlo Janos" <groups.2...@spamgourmet.com> wrote in news:j9r1p3
$hdo$1...@speranza.aioe.org:

> Vogel wrote:
>
>> > ich habe einen Datensatz von Höhenangaben der Erdoberfläche.
>> >
>> Also keine analytische Funktion?
>
> Doch schon, z. B. als Entwicklung nach reellen Kugelflächenfunktionen.
>
Sorry, hatte mich verlesen. Du suchst also die staerkste
Hoehenaenderung zu *jedem* Punkt.
>
>> Kennt man H(theta,phi) analytisch, so ist ein Punkt P0(theta0,phi0)
>> und eine Richtung e(theta0,phi0) gesucht in welchem die Steigung
>> maximal ist.
>
> Von der Idee her durchaus nachvollziehbar.
> Da aber der Gradientoperator nach einer Anwendung auf ein Skalarfeld
> mit anschließender Bestimmung des Betrags die maximale Steigung angibt
>
In einem in P(x,y) lokalen kartesischen System
>
grad H(x,y) = dH(x,y)/dx*i + dH(x,y)/dy*j
>
dH = grad H * ds
>
wobei "ds" in die Richtung zeigt welche durch "grad" lokal bestimmt wird.
>
Das brauchen wir nun in Kugelkoordinaten
>
grad H(theta,phi) = 1/r*(dH/dtheta*i + 1/sin(theta)*dH/dphi*j)
>
mit r=r0+H~r0
>
> (sofern die Richtung egal ist), suche ich nach einem entsprechenden
> Ansatz für die zwei Dimensionen des orthogonalen und krummlinigen
> (theta,phi)-Koordinatensystems.
>
Mir ist nicht klar was du suchst.
>
Du willst doch die grösste Höhenänderung(Steigung) in jedem Punkt als
Funktion dieser Koordinaten ermitteln. Die Koordinaten sind also nicht
gesucht, sondern gegeben.

Karlo Janos

unread,
Nov 15, 2011, 7:24:48 AM11/15/11
to
Jan Fricke wrote:

> > Ich denke mal, dass dein Hinweis in die Richtung geht, wie es auch
> > zu berücksichtigen ist, wenn man den Nabla-Operator von
> > kartesischen zu Kugelkoordinaten transformiert, ja?
>
> Ja, genau. Da die Koordinatenlinien orthogonal sind, ist die
> entsprechende Matrix diagonal, und Du hast dann nur noch die Längen
> der Ableitungen in Koordinatenrichtung zu beachten.

Ich habe mit einem Dozenten gesprochen, der mir die Angelegenheit mit
einem Skalierungstensor erläutern wollte. Leider war mir das gar nicht
mehr verständlich.


> > Vorausgesetzt ich habe zu den diskreten Daten H(theta_i,phi_i) eine
> > kontinuierliche Funktionsbeschreibung H(theta,phi) (z. B. als
> > Entwicklung mit reellen Kugelflächenfunktionen), dann komme ich
> > also zu:
> >
> >
> > GRADIENT = NORM( (|dH/dphi|^2 / |dH/dtheta|^2 * d/dphi ,
> > d/dtheta ) H(theta,phi) )
>
> Diese Formel verstehe ich leider nicht :-(

Das hatte ich schon befürchtet, als ich es geschrieben habe, wusste
aber nicht, wie ich es deutlicher hinschreiben kann.

Vielleicht noch mal in Stückchen:

Ich habe einen Spaltenvektor (d/dphi,d/dtheta) mit den partiellen
Ableitungen nach theta und phi.

Diesen skaliere ich in einer Komponente mit dem Quotienten des Quadrats
der beiden Richtungsableitungen: |dH/dphi|^2 / |dH/dtheta|^2
(Hier könnte aber auch ein Denkfehler vorliegen...)

Den resultierenden Vektor wende ich auf die skalare Funktion
H(theta,phi) an.

Das Ergebnis sollte ein Vektor sein, dessen Betrag (=Norm) die maximale
Steigung am Punkt (theta,phi) angibt.

So besser nachvollziehbar, was ich meinte?
Danke und Gruß

Karlo

Karlo Janos

unread,
Nov 15, 2011, 7:35:43 AM11/15/11
to
Vogel wrote:

> Sorry, hatte mich verlesen. Du suchst also die staerkste
> Hoehenaenderung zu jedem Punkt.

Korrekt.


> In einem in P(x,y) lokalen kartesischen System
> >
> grad H(x,y) = dH(x,y)/dx*i + dH(x,y)/dy*j
> >
> dH = grad H * ds
> >
> wobei "ds" in die Richtung zeigt welche durch "grad" lokal bestimmt
> wird.
> >
> Das brauchen wir nun in Kugelkoordinaten
> >
> grad H(theta,phi) = 1/r*(dH/dtheta*i + 1/sin(theta)*dH/dphi*j)
> >
> mit r=r0+H~r0

Die Bedeutung der Multiplikation mit i und j kann ich nicht
nachvollziehen. Sind das Skalierungen?
Und was stellt die "Tilde" in der letzten Gleichung dar?


> > (sofern die Richtung egal ist), suche ich nach einem entsprechenden
> > Ansatz für die zwei Dimensionen des orthogonalen und krummlinigen
> > (theta,phi)-Koordinatensystems.
> >
> Mir ist nicht klar was du suchst.
>
> Du willst doch die grösste Höhenänderung(Steigung) in jedem Punkt als
> Funktion dieser Koordinaten ermitteln. Die Koordinaten sind also
> nicht gesucht, sondern gegeben.

Genau. So ist es.
Vielleicht habe ich mich missverständlich ausgedrückt, aber dass ich
nach den Koordinaten suche, wollte ich nicht aussagen.
Gesucht ist, wie du schon schreibst, die lokale Steigung der Funktion H
abhängig von (theta,phi) im 2D-Koordinatensystem (theta,phi) auf einer
Kugeloberfläche.
Danke und Gruß

Karlo

Jan Fricke

unread,
Nov 15, 2011, 8:42:09 AM11/15/11
to
On 11/15/2011 01:24 PM, Karlo Janos wrote:
>[...]

Ich sortiere das mal ein wenig.

Zunächst hast Du Deine Fläche (d.h. die Kugeloberfläche) durch die Abbildung

f(ϑ,φ) = r (cos(ϑ) * cos(φ), cos(ϑ) * sin(φ), sin(ϑ))
gegeben.

Darauf hast Du eine skalare Funktion h(ϑ,φ). Du möchtest jetzt wissen,
in welche Richtung auf f sich h am stärksten ändert.

Wenn Du (ϑ,φ) in Richtung (x,y) änderst, dann ändert sich H um

<grad H, (x,y)>.

Der Punkt auf der Fläche ändert sich aber in Richtung des Vektors

Df * (x,y).

Die Norm |Df * (x,y)| von Df * (x,y) berechnet man schnell als

r * √(x^2 + cos(ϑ)^2 * y^2).

Wenn Du also eine Änderung von (ϑ,φ) haben willst, so dass sich der
Punkt in "Einheitsrichtung" ändert, musst Du statt (x,y) den Vektor

(x, y/cos(ϑ))/r

nehmen, denn die Abbildung

(x, y) |-> (x, y/cos(ϑ))/r

bildet jetzt den Einheitskreis im R² auf den Einheitskreis in der
Tangentenebene in f(ϑ,φ) ab.

Für die Änderung von H bekommst Du dann also mit grad(H)=(H_1,H_2):

<grad H, (x, y/cos(ϑ))/r> = < (H_1, H_2), (x, y/cos(ϑ))/r>
= < (H_1/r, H_2/(cos(ϑ)*r)) , (x,y) >.

Der "echte" Gradient auf der Oberfläche (also bezüglich einer normierten
ϑ-/φ-Richtung) ist dann also:

(H_1/r, H_2/(cos(ϑ)*r)).


Viele Grüße Jan

Roland Franzius

unread,
Nov 15, 2011, 11:37:04 AM11/15/11
to
Mit 3D-Ortsvektor auf der Kugelfläche von Radius R

P =R( cos phi sin theta, sin ph sin theta, cos theta)

hat man die Tangentialraumbasis

e_theta = d P/d theta =
R ( cos phi cos theta, sin phi cos theta, -sin theta)

e_phi = d P/ d phi

R( -sin phi sin theta, cos phi sin theta, 0)

e_theta^2=R^2
e_phi^2 = R^2 sin^2 theta

also ist

{ E_phi = e_phi/ (R sin theta), E_theta = e_theta / R}

Damit hat die Ableitung einer skalaren Funktion, die Linearform

d f(theta,phi ) = d f/ d theta d theta + d f/ d phi dphi

auf der normierten Basis wegen Dualität der ko- und kontravarianten
Basen der Formen und Richtungsableitungen

< dx^m, dX/x^n > =delta^m_n

die Werte

nabla_(E_theta) f(theta, phi) = <d f , E_theta >
= d f(theta,phi)/ d theta < d theta, dX /d theta *1/R >
= d f(theta,phi)/d theta * 1/R

und analog

grad_(E_phi) f = df (E_phi)
= d f(theta,phi)/ d phi <d phi, dX /d phi *1/(R sin theta )
= d f(theta,phi)/d phi * 1/(R sin theta )

Am Äquator also einfach die partiellen Ableitungen dividiert durch
Radius, zum Pol hin nimmt im Vergleich zur Länge R dphi am Äquator die
Länge in Richtung der Breitenkreise mit Faltor sin theta zum Pol hin ab.
An den Polen theta = 0, pi sind Karte und partielle Ableitungen
unbrauchbar.

--

Roland Franzius

Jan Fricke

unread,
Nov 15, 2011, 11:59:29 AM11/15/11
to
On 11/15/2011 05:37 PM, Roland Franzius wrote:
> Mit 3D-Ortsvektor auf der Kugelfläche von Radius R
>
> P =R( cos phi sin theta, sin ph sin theta, cos theta)

Du hast (ungewöhnlicherweise?) die Breitenkreise theta von 0 bis pi=180°
zu laufen. [Nur falls sich jemand wundert, dass hier durch sin(theta)
geteilt wird und nicht durch cos(theta) wie bei mir.]


Viele Grüße Jan

Roland Franzius

unread,
Nov 15, 2011, 12:25:53 PM11/15/11
to
Nun ja, es handelt sich um Mathematik und nicht um binäres Bonsai.

Falls sich jemand wundern sollte.

--

Roland Franzius

Karlo Janos

unread,
Nov 16, 2011, 3:02:54 AM11/16/11
to
Jan Fricke wrote:

> Du hast (ungewöhnlicherweise?) die Breitenkreise theta von 0 bis
> pi=180° zu laufen. [Nur falls sich jemand wundert, dass hier durch
> sin(theta) geteilt wird und nicht durch cos(theta) wie bei mir.]

Das kommt mir entgegen, weil ich das Kugelkoordinatensystem (nach der
Umrechnung der Breitenkreise) ebenfalls so definiert habe.

Vielen Dank schon mal für eure beiden Herleitungen. Ich werde mir das
nochmal selbst "analog" aufschreiben und in Ruhe zu Gemüte führen.
Gruß

Karlo

Axel Mueller

unread,
Feb 17, 2012, 8:17:56 AM2/17/12
to
Hallo zusammen,

nach etwas Zeit der Abwesenheit habe ich schließlich die Herleitungen
nachvollziehen können.
Dabei ist mir der Gedanke gekommen, dass ein Aspekt - nämlich der
richtungsabhängige Radius R(\theta,\phi) - evtl. noch nicht korrekt
berücksichtigt ist.

Meine Kugelbeschreibung sei folgendermaßen gegeben:

\vec{r}(\theta,\phi) = R(\theta,\phi) * ( sin(\theta) cos(\phi),
sin(\theta) sin(\phi), cos(\theta) )^T

Im Unterschied zu euren Herleitungen also mit R(\theta,\phi) an Stelle
von R = konstant.


Die nicht normierte Tangentialbasis lautet dann:

\vec{e}_\theta
= (d\vec{r})/(d\theta)
= dR(\theta,\phi)/d\theta * ( sin(\theta) cos(\phi), sin(\theta)
sin(\phi), cos(\theta) )^T + R(\theta,\phi) * ( cos(\theta) cos(\phi),
cos(\theta) sin(\phi), -sin(\theta) )^T


\vec{e}_\phi
= (d\vec{r})/(d\phi)
= dR(\theta,\phi)/d\phi * ( sin(\theta) cos(\phi), sin(\theta)
sin(\phi), cos(\theta) )^T + R(\theta,\phi) * ( -sin(\theta) sin(\phi),
sin(\theta) cos(\phi), 0 )^T


Und schließlich ist der Gradient:

grad R(\theta,\phi)
= ( dR(\theta,\phi)/d\theta * 1/|\vec{e}_\theta| ,
dR(\theta,\phi)/d\phi * 1/|\vec{e}_\phi| )^T


Liege ich damit richtig?

Viele Grüße!

Karlo

Axel Mueller

unread,
Feb 17, 2012, 8:22:04 AM2/17/12
to
BTW: Nicht über den Absender wundern. Ich habe hier nur gerade keinen
Zugriff auf mein eigenes Konto, so dass ich schnell mal als "Gast"
posten darf.
Gruß

Karlo
0 new messages