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