DMUG-Archiv 2004

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Darstellung der Eigenvektoren

Hallo Peter,

PlotVectorField3D[] können Sie nicht anwenden, da PlotVectorField3D[] die Vektoren selbst herstellt, Sie aber die Vektoren aus Eigenvectors[] beziehen möchten. Da es um eine 3D Darstellungsfunktion geht, ist anzunehmen, dass die in Frage stehenden Matrizen reelle symmetrische 3 x 3 Matrizen sind. Stellt man sich als Anwendungsfall eine Kurve in R^3 vor und bildet aus der Parameterdarstellung der Kurve willkürlich eine symmetrische Matrix, deren Eigenvektoren man als Dreibein an der entsprechenden Stelle der Kurve antragen will, dann kann man folgendermassen verfahren:

In[1]:= <<Graphics`PlotField3D`
In[2]:= (* a symmetric matrix *)
Clear[klamserMatrix];
klamserMatrix[f_, g_, h_, t_] := {{f[t], g[t], h[t]}, {g[t], f[t], g[t]}, {h[t], g[t], f[t]}}

In[5]:= (* the plotter of klamserMatrix dreibein on the curve {f, g, h}*)
Clear[klamserDreiBein];
klamserDreiBein[f_, g_, h_, t_, t0_?NumberQ, t1_?NumberQ, n0_Integer?Positive] :=
Module[{picCurve, evArray, dt},
 dt = (t1 - t0)/n0;
picCurve = ParametricPlot3D[{f[t], g[t], h[t]}, {t, t0, t1}, DisplayFunction -> Identity, PlotPoints -> 73]; evArray = Flatten[Table[Outer[List, {{f[t0 + n dt], g[t0 + n dt], h[t0 + n dt]}},
   Eigenvectors[klamserMatrix[f, g, h, t0 + n dt]], 1], {n, 1, n0}], 2];
Show[{picCurve, ListPlotVectorField3D[evArray, VectorHeads -> True, DisplayFunction -> Identity]}, DisplayFunction -> $DisplayFunction]
] /; FreeQ[f, t] && FreeQ[g, t] && FreeQ[h, t] && AtomQ[t] && t0 < t1

Der Aufruf ist, etwa mit einer periodischen Kurve

In[8]:= Clear[f1, f2, f3];
f1[x_] := 3 Cos[x];
f2[x_] := 3 Sin[x];
f3[x_] := 3/2 Cos[3 x] Sin[7 x];
klamserDreiBein[f1, f2, f3, t, 0, 2. Pi, 7]

Sieben Dreibeine werden angetragen, zur Verschönerung der VectorHeads könnten Sie die Zuschrift von Herrn Kuska vom 11.6.2001 in dieser Gruppe konsultieren; das klamserDreiBein[] wird eventuell eleganter, wenn Sie die beiden lokalen Variablen picCurve und evArray einsparten.

Mit den besten Gruessen
Udo.

Uta & Peter Klamser wrote:

Hallo,

ich würde gerne die Eigenvektoren einer Matrix, die ich mit dem MMA Befehl Eigenvectors erhalten habe, möglichst elegant mit dem Befehl PlotVectorField3D darstellen.

Gruß
Peter



Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html