Anzeigen des Gesamtinhalts (oder Logo links anklicken) oder des Impressums.

Dies ist eine alte Version des Dokuments!


Berechnung einer Vektorlänge

Zur Berechnung der Vektorlänge

    `v = sqrt(x^2+y^2)

sind verschiedene Schaltungen möglich, die unterschiedliche und unterschiedlich viele Elemente benötigen. Sie unterscheiden sich auch in der Stabilität und Genauigkeit, wenn die Eingangswerte klein bzw. null sind.

Ferner ist zu untersuchen, ob die Kombination der Eingangswerte zu einem Ausgangswert größer als 1 führen kann; dann sind die Eingangswerte entsprechend zu skalieren, nötigenfalls beide mit dem Faktor `1/sqrt(2)`. Häufig sind aber die Eingangswerte in diesen Fällen ohnehin Komponenten eines Vektors, dessen Länge auf 1.0 beschränkt ist, so dass dieses Problem im folgenden nicht berücksichtigt wird.

Direkte Methode

Die Eingangswerte werden quadriert, addiert und die Wurzel gezogen. Die Wurzel wird bevorzugt mit einem Funktionsgenerator ermittelt, da dieser keine Instabilitäten, insbesondere im Nullpunkt, aufweist. Aus diesem Grunde sind auch (spezielle) Funktionsgeneratoren für die Quadrate vorzuziehen, wie sie in manchen Multipliziereren verwendet werden, aber leider selten extern verfügbar sind. So wird man in der Regel Multiplizier verwenden müssen, und die Quadratwurzel mit einem dritten Multiplizierer im Rückkopplungszweig eines offenen Verstärkers berechnen. Dies kann jedoch leicht zu Instabilitäten führen.

Alternative Quadratsumme

Wegen

    `x^2+y^2 = (x+y)^2 - 2 x y

kann man die Quadratsumme auch mit einem zusätzlichen Addierer, einem Quadrierer und einem Multiplizierer bilden und hat dabei größere Zwischenwerte, da man, mit `x=y=0.1`, die Subtraktion `0.04 - 0.02` anstelle der Addition `0.01+0.01` verwendet. Dieser Vorteil ist aber für einen weiteren Addierer nicht ausreichend groß.

Division mit AD433

In der Firmenzeitschrift Analog Dialogue der Firma Analog Devices wird ein Schaltung angegeben, mit der die Länge eines Vektors, d.h. die Funktion `v = sqrt(x^2+y^2)` mittels folgender Formel berechnet werden kann:

    `v=x + y^2 / (v+x)

Zum Beweis subtrahiert man x von der Gleichung und multipliziert anschließend `v+x`, so ergibt sich:

    `(v-x) * (v+x) = v^2 - x^2 = y^2

Verwendet werden soll der AD433, ein Multiplizierer mittels Logarithmusbildung, der gleichzeitig durch einen dritten Wert dividieren kann:

Die Schaltung ist nicht empfindlich für kleine Werte von `y` und auch wenig empfindlich für kleine Werte von `x`, solange das Ergebnis nicht nahe Null ist. Wenn allerdings beide Eingangswerte beide null sind, müsste durch Null dividiert werden. Letzter Fall könnte bei Verwendung des AD433 weniger gravierend sein als bei einem Aufbau mit einzelnen Multiplizieren und Dividierern.

Sei als Beispiel `x=y=0.1`, also `v=0.14` dann sind `y^2=0.01` und `v+x=0.24`, wobei der Eingangswert der Division von 0.01 nicht optimal ist. Ist `x=0.4` und `y=0.9`, mithin `v=0.978`, so ist `v+x=1.38` und damit ausserhalb des Rechenbereichs, obwohl das Ergebnis innerhalb ist. Dies ließe sich durch Faktoren <1 vor dem ersten Summierer A1 vermeiden.

Der den AD433 ersetzende AD538 ist relativ teuer im Vergleich zu zwei Multiplizierern AD633, so dass eine Ausführung mit getrennten Elementen sinnvoll sein kann.

Division mit getrennten Elementen

Wird anstelle der integrierten Schaltung eine Schaltung aus vorhandenen Elementen verwendet, so ergibt sich die Schaltung zu:

Wegen `v ge |x|` ist auch für `x<0` die Summe `v+x ge 0`, so dass hier der Divisor nicht negativ ist.

Die in der vorigen und dem folgenden Schema gezeigten Addierer sind nicht invertierend, weil bei der praktischen Umsetzung ohnehin Änderungen notwendig sind, da einige Dividierer beispielsweise invertierte Ergebnisse liefern, u.s.w.

Division vertauscht

Eine bessere Aussteuerung wird erreicht, wenn anstelle des Quadrierers ein Multplizierer verwendet wird und die Faktoren vertauscht werden:

Als Beispiel sei `x=y=0.1`, dann ist `v=0.14, v+x=0.24`. Im ersten Fall muss 0.01 durch 0.24 dividiert, im zweiten Fall 0.1 durch 0.24 dividiert und anschließend mit 0.1 multipliziert werden, was deutlich weniger ungenau ist. Die Aussteuerbarkeit ist unverändert, da nach wie vor der Term v+x gebildet wird.

Inverse Methode

Man kann auch die zweite Binomische Formel verwenden und durch einen einzigen offenen Verstärker `v` bestimmen:

    `y^2 = v^2 - x^2 = (v+x)*(v-x)

Hierbei wird ein Quadrierer und ein Multiplizierer benötigt:

Als Beispiel sei `x=y=0.1`, dann ist `v=0.14, v+x=0.24, v-x = 0.04`.


Übersetzungen:
Anmelden