mboost-dp1

tan og cos


Gå til bund
Gravatar #1 - asger_ss
15. dec. 2006 17:54
vidste ikke lige hvor denne tåd hørte hjemme så det blev her.

når man regner med tan og cos vil resultatet så være en eksakte værdier eller en tilnærmelse?

ved godt at lommeregneren bruger en tilnærmelse, men behøver man nødvendigvis gøre det?
Gravatar #2 - arne_v
15. dec. 2006 18:06
du kan regne eksakt med cos(x) i symbolsk form, men i samme
øjeblik du begynderat regne med tal vil det næsten altid blive
tilnærmet, da cos(x) ikke vil kunne repræsenteres eksakt som
decimal i de fleste tilfælde
Gravatar #3 - mrmorris
15. dec. 2006 21:10
#1 Det kommer helt an på dit "miljø" om implementeringen, der ganske enkelt er nød til at vælge imellem korrekthed/præcision og hastighed. Jeg går ud fra du med dig spørgsmål tænker mere på beregningen af tan/cos end dét faktum at brøker ikke kan repræsenteres korrekt binært (IEEE floating point).

En PC's co-processsor (x87) tilbyder f.eks. assembler instruktionerne fsin og fcos når dit talområde er inden for [-pi/4, pi/4]. Uden for dette område kan man ikke regne med resultatet så derfor skal der software algoritmer til hjælp. Intel's Itanium er designet så meget senere, at her har man korrekt understøttelse i hardware for HELE talområdet pga. nye teknikker man har fundet frem til.

Java er f.eks. meget præcis for området uden for [-pi/4, pi/4], pga. sin måde at regne det ud på men er tilgængæld så langsom at ingen bruger det til noget seriøst. C# regner til sammenligning over 4 gange hurtigere med con/sin/tan grundet sin implementering via Taylor serier og en lookup tabel (formeentlig en fast fourier variation).

Så man KAN godt regne det ud eksakt (ned til en arbitrær præcision, ligesom PI) men hvad din CPU/lommeregner mm. gør ved kun den.
Gravatar #4 - arne_v
15. dec. 2006 21:19
#3

Arbitrær præcision og eksakt er da 2 modsætninger ...
Gravatar #5 - mrmorris
16. dec. 2006 02:04
#4 Med arbitrær mener jeg den præcision man nu engang vælger at regne med.(Wikipedia: Something is arbitrary if its value is not determined by anything but choice.)
(JavaDoc for BigDecimal: A BigDecimal consists of an arbitrary precision integer unscaled value and a 32-bit integer scale.)
Bemærk at der er forskel på korekthed (fejl på 5 decimal i en 64bit double) og præcision (afrunding på sidste decimal).
Gravatar #6 - asger_ss
17. dec. 2006 13:53
tak skal i have det var præcis det svar jeg havde brug for
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login