Benutzer-Werkzeuge

Webseiten-Werkzeuge


analogrechner:vektorlaenge

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
analogrechner:vektorlaenge [2018-01-31 15:59] – inverse methode nach vorne, als beste angesehen raineranalogrechner:vektorlaenge [2021-12-11 14:01] (aktuell) rainer
Zeile 106: Zeile 106:
  
 Wird anstelle der integrierten Schaltung eine Schaltung aus vorhandenen Elementen verwendet, so ergibt sich die Schaltung zu: Wird anstelle der integrierten Schaltung eine Schaltung aus vorhandenen Elementen verwendet, so ergibt sich die Schaltung zu:
 +   `v=x + y^2 / (v+x)
 +
  
 [svg:analogrechner/VektorlaengeQ.svg:,] [svg:analogrechner/VektorlaengeQ.svg:,]
Zeile 111: Zeile 113:
 Wegen `v ge |x|` ist auch für `x<0` die Summe `v+x ge 0`, so dass hier Wegen `v ge |x|` ist auch für `x<0` die Summe `v+x ge 0`, so dass hier
 der Divisor nicht negativ ist. der Divisor nicht negativ ist.
 +Auch hier kann allerdings `v+x > 1 ` werden, so dass -- nicht gezeigt -- skaliert werden muss.
  
 Die in der vorigen und dem folgenden Schema gezeigten Addierer sind Die in der vorigen und dem folgenden Schema gezeigten Addierer sind
 **nicht** invertierend, weil bei der praktischen Umsetzung ohnehin **nicht** invertierend, weil bei der praktischen Umsetzung ohnehin
-Änderungen notwendig sind, da einige Dividierer beispielsweise invertierte+Änderungen notwendig sind, da einige Dividierer invertierte
 Ergebnisse liefern, u.s.w. Ergebnisse liefern, u.s.w.
  
Zeile 122: Zeile 125:
 Eine bessere Aussteuerung wird erreicht, wenn  anstelle des Quadrierers Eine bessere Aussteuerung wird erreicht, wenn  anstelle des Quadrierers
 ein Multplizierer verwendet wird und die Faktoren vertauscht werden: ein Multplizierer verwendet wird und die Faktoren vertauscht werden:
 +
 +   `v=x + y * (y / (v+x))
 +
  
 [svg:analogrechner/Vektorlaenge.svg:,] [svg:analogrechner/Vektorlaenge.svg:,]
Zeile 148: Zeile 154:
 nicht ausreichend groß. nicht ausreichend groß.
  
 +Polynom-Approximation
 +--------------------
 +
 +Wegen
 + `sqrt(x^2+y^2) >= max(x,y)
 +
 +kann man auch durch einen linearen Ausdruck approxmieren:
 +      `sqrt(x^2 + y^2) ~~ alpha x + beta y
 +      
 +Hierbei ist für `x > y` der Koeffizient `alpha` ungefähr 1; 
 +dies wird als "Alpha max plus beta min" Verfahren bezeichnet (siehe [https://en.wikipedia.org/wiki/Alpha_max_plus_beta_min_algorithm]  für Werte von `alpha` und `beta`).
 +
 +Damit für `y=0` der Funktionswert nicht kleiner als `x` wird, ist `alpha = 1` vorzuziehen.
 +
 +Dies entspricht einer Approximation
 +      `sqrt(1+x^2) ~~ 1 + 0.38 x if |x| <= 1
 +
 +wobei der Wert 0.38 durch Probieren ermittelt wurde. Mit dem Faktor `sqrt(2)-1 ~~ 0.414` wird der Fehler am Bereichsende minimiert. 
 +
 +Besser ist freilich eine Taylorreihe (für `x<=1`) mit
 +
 +    `sqrt(1+x^2) ~~ 1 + 0.41*x^2 if |x| <= 1
 +    
 +benötigt aber einen Quadrierer (anstelle von dreien).     
 +    
 +Mit einem zusätzlichen Multiplizierer ist der Fehler unter 1%:
 +
 +     `sqrt(1+x^2) ~~ 1 + (0.47 - 0.06x)*x^2 if |x| <= 1
 +     
 +Die Koeffizienten sind wieder empirisch ermittelt; gegebenenfalls können optimale Koeffizienten über eine
 +[https://rclab.de/analogrechner/tschebyscheffapproximation Tschebyscheff-Approximation] bestimmt werden.
  
-\ASCIIMATHML ./ASCIIMathML.js+\ASCIIMATHML https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/latest.js?config=AM_CHTML
  
  
  
 </nimla> </nimla>
analogrechner/vektorlaenge.1517410744.txt.gz · Zuletzt geändert: 2018-01-31 15:59 von rainer