| |

Suche Visual-Basic CodeRe: Sinus Umkehrfunktion | |  | Autor: VestMerkur | Datum: 12.05.05 12:21 |
| Hallo Zardoz,
da mir dieser Verweis schon einmal aufgefallen ist, hierzu kurze Anmerkungen:
Zitat von
http://www.et.fh-merseburg.de/person/meinike/bpoldstuff/arti_015.htm
VB-Hilfe: Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
richtig: Arccos(X) = 2 * Atn(1) - Atn(X / Sqr(-X * X + 1))
Da kann man schon erschrecken, wenn man die Formel der VB-Hilfe verwendet.
Aber einmal Schritt für Schritt:
VB-Hilfe:
Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
= 2 * Atn(1) + Atn(-X / Sqr(-X * X + 1)) 'nur Summanden getauscht
= 2 * Atn(1) + Atn(-(X / Sqr(-X * X + 1))) 'nur Vorzeichen ausgeklammert
= 2 * Atn(1) - Atn(X / Sqr(-X * X + 1)) 'mit atan(-x)=-atan(x) umgeformt (s.a (30) der u.g. Quelle)
Nun hat man die "richtige" Form, die allerdings, wie gezeigt, mit der VB-Hilfe (die ja falsch sein soll) identisch ist!
Nun, wer braucht schon einmal cot/acot? Wohl eher selten! Dennoch:
IMHO ist der Verweis, dass die acot-Formel der VB-Hilfe falsch ist, richtig.
IMHO ist allerdings die "Korrektur" ebenso falsch!
Siehe zB: http://www.matha.rwth-aachen.de/lehre/SS02/Ana2/formel.pdf
Unter 2.2 findet man: acot(x)=Pi/2 - atan(x)
(s.a. (45) der Quelle)
Dafür, dass die "Korrektur" (Arccot(X) = [Sgn(X) * 2 * Atn(1)] - Atn(X)) falsch ist,
nur kurze Anmerkungen, ohne groß umzuformen:
Durch Anwendung der sgn-Funktion widerspricht sie acot(x)=Pi/2 - atan(x).
Für negative x ergeben sich negative Werte, die der acot nicht annimmt.
Für (-1) ergibt sich nach der "Korrektur"-Formel -Pi/4 !!!!! (richtig ist: 3/4 Pi)
Hierzu s.a. (40) der gen. Quelle: lim acot(x) für -oo = Pi, lim acot(x) für oo = 0, die Funktion ist stetig, streng monoton fallend und besitzt keine Nullstellen,
Der Grenzwert der "Korrektur"-Formel ist für -oo mitnichten Pi;
die Summation (acot, atan) für x<0 ist ebenso falsch, wie man mit (28) und (40) der Quelle leicht zeigen kann.
Viele Grüße
Zum Abschluss:
Public Function dblArcCos(Arg As Double) As Double
'Radiant-Form
If Abs(Arg) < 1 Then
dblArcCos = Atn(-Arg / Sqr(-Arg * Arg + 1)) + 2 * Atn(1)
' Devide by Zero abfangen:
ElseIf Arg = 1 Then
dblArcCos = 0
ElseIf Arg = -1 Then
dblArcCos = 4 * Atn(1) ' = Pi
End If
'
End Function |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Neu! sevDTA 3.0 Pro 
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|