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

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>

Anmelden