| |
|
|
p.specht
| (... et qui den Sinus hat, hat avec cela aussi Cosinus et Tangens!) considérable: Im Bereich 0-90° bleibt cela Ding sous 0,047 % faute. Voraussetzung ist allerdings une genaue Computerarithmetik - et qui qui hat, qui hat normalement aussi déjà une Sinusfunktion incorporé. Immerhin mathématique intéressant. Anmerkung: dans qui FPU des PC volonté trigonometrische Funktonen également par Approximation ermittelt, alledings mittels CORDIC Algorithmus. qui ist arrêt encore genauer, mets mais "gehobene" rechentechnische Kenntnisse voraus...
Titre de la fenêtre "Sinus-Ersatz par Padé-Approximation"
' source: https://www.dattalo.com/technical/theory/theory.html
' dans Xprofan 11.2 mise en œuvre de P. Specht 2012-05; Jedwede Gewähr ausgeschlossen!
' Möglicherweise Rechte Dritter, daher seulement trop Demonstrationszwecken!
Font 2:randomize:cls rnd(8^8)
set("decimals",10)
'{ Konstanten pour qui eigene sinus()-Funktion
var pi!=3.14159265358979323846264338327950288419716939937510
var pi2!=2*pi!
var pih!=pi!/2
var r2g!=pi!/180
var n1!=-325523/2283996
var n2!=34911/7613320
var n3!=479249/(1.1511339840*10^10)
var d1!=18381/761332
var d2!=1261/4567992
var d3!=2623/(1.644477120*10^9)
'}
'{ Hauptschleife
declare w!,af!,rf!
var txt$="Grad Sin() Sinus-Approx Absol.Err Relativfehler\n"
imprimer txt$
WhileLoop 0,360,1
w!=r2g!*&Boucle
af!=sinus(w!)-sin(w!)
rf!=100*af!/(sin(w!)+10^-36)
cas &Boucle<100:imprimer " ";
cas &Boucle<10 :imprimer " ";
imprimer &Boucle,sin(w!),sinus(w!),af!,rf!;" [%]"
si %csrlin>26
waitinput
cls rnd(8^8)
imprimer txt$
endif
Endwhile
imprimer "OK."
Waitinput
'}
Fin
proc sinus : parameters x!
declare num!,den!,x2!,x4!,x6!,sinus!,vz!
' 0-90° Rel.Err < 0,047%
' Zyklischen Wertebereich herstellen
x!=x!-pi2!*int(x!/pi2!)
vz!=1:si x!>=pi!:x!=x!-pi!-1.24*10^-16:vz!= -1:endif
cas x!>=pih!:x!=pi!-x!
' Padé-Approximation
x2!=x!*x!:x4!=x2!*x2!:x6!=x4!*x2!
num! = 1 + n1!*x2! + n2!*x4! + n3!*x6!
den! = 1 + d1!*x2! + d2!*x6! + d3!*x6!
sinus! = vz! * x! * num! / den!
return sinus!
endproc
proc cosinus :parameters x!
return sinus(x!)+pih!
endproc
proc tangens : parameters x!
return sinus(x!)/sinus!(x!-pih!)
endproc
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 07.05.2021 ▲ |
|
|
|