Sorun, "iyi şartlandırılmış" kelimesiyle gösterilir. Bu bir bilgisayar aritmetik sorunudur, matematik değil.
İşte dikkat etmeniz gereken temel bilgiler:
Yeryüzündeki bir radyan neredeyse 10 ^ 7 metredir.
Bağımsız değişkenler için kosinüs fonksiyonu x , 0'a yakın yaklaşık 1 eşit - X ^ 2/2.
Çift duyarlıklı kayan nokta yaklaşık 15 ondalık basamağa sahiptir.
Noktalar (2) ve (3), x'in bir metre civarında veya 10 ^ -7 radyan (nokta 1) civarındayken, neredeyse tüm hassasiyetlerin kaybolduğunu belirtir : 1 - (10 ^ -7) ^ 2 = 1 - 10 ^ - Şekil 14, 15 önemli hanenin ilk 14'ünün iptal ettiği ve sonucu temsil etmek için sadece bir rakam bırakan bir hesaplamadır. Bunun tersine çevrilmesi (ters kosinüs, "acos", bunun tersidir) , sayaç uzunluklarına karşılık gelen açılar için hesaplama acos'larının anlamlı bir hassasiyetle yapılamayacağı anlamına gelir . (Bazı kötü durumlarda, hassasiyet kaybı, acos'un tanımlanmadığı yerlerde bile bir değer verir, bu nedenle kod bozulur ve cevap vermez, saçma bir cevap verir veya makineyi kilitler.) Benzer düşünceler, ters kosinüs kullanmaktan kaçınmanız gerektiğini gösterir. Birkaç yüz metreden daha kısa mesafeler söz konusuysa, ne kadar hassasiyeti kaybetmek istediğinize bağlı olarak.
Acos'un naif-kosinüs formülünde oynadığı rol, açıyı bir mesafeye dönüştürmektir. Bu rol, haversin formülünde atan2 tarafından oynanır. Küçük bir açının x tanjantı yaklaşık olarak x'in kendisine eşittir . Sonuç olarak, bir sayının ters tanjantı, yaklaşık olarak bu sayıdır, esasen hassasiyette bir kayıp olmadan hesaplanır. Bu nedenle, haversin formülünün matematiksel olarak kosinüs formül yasasına eşdeğer olmasına rağmen, küçük mesafeler için (1 metre veya daha az bir sıra ile) çok daha üstündür .
İşte dünyadaki 100 rastgele nokta çifti kullanan iki formülü karşılaştırmak (Mathematica'nın çift hassasiyetli hesaplamaları kullanarak).
Yaklaşık 0,5 metreden daha kısa mesafeler için iki formülün ayrıldığını görebilirsiniz. 0,5 metrenin üzerinde anlaşmaya varırlar. Ne kadar yakın bir şekilde anlaştıklarını göstermek için, bir sonraki komplo kosinüs kanununun oranlarını gösterir: enlemler ve boylamlar rastgele olarak 5 metreye kadar değişen 100 rastgele nokta çifti için.
Bu, kosinüs formülünün yasasının mesafe 5-10 metreyi aştığında 3-4 ondalık basamağa kadar iyi olduğunu gösterir. Ondalık doğruluk yeri sayısı karesel olarak artar; Böylece 50-100 metrede (bir büyüklük sırası) 5-6 dp hassasiyet elde edersiniz (iki büyüklük sırası); 500-1000 metrede 7-8 dp, vb.