Apa yang merupakan kesalahan perkiraan dari Teorema Pythagoras vs Haversine dalam mengukur jarak di bola pada berbagai skala?

30

Banyak orang ketika pertama kali mencoba menghitung jarak antara dua pasangan garis bujur / garis lintang bertanya apakah teorema Pythagoras berfungsi sebagai fungsi jarak yang sesuai.

Paling sering orang menjawab "tidak, teorema Pythagoras hanya bekerja pada pesawat Euclidean 2D." Namun, jarang orang menyebutkan efek skala dan lokasi pada bola pada seberapa akurat teorema Pythagoras.

Gagasan dasarnya adalah pada skala yang sangat kecil, permukaan bola terlihat sangat mirip pesawat. Pada skala yang sangat besar, jarak di sepanjang permukaan lebih melengkung dan oleh karena itu perbedaan antara Teorema Pythagoras yang salah dan Formula Haversine yang benar lebih besar.

Adakah yang tahu rumus atau aturan praktis yang memberi tahu Anda perbedaan antara dua ukuran jarak berdasarkan skala jarak yang Anda coba ukur?

Saya pikir memiliki ini secara eksplisit akan membantu dalam:

  1. menjelaskan mengapa Teorema Pythagoras tidak sempurna; dan
  2. membiarkan orang yang mencari jarak "kasar" lebih tahu kapan Pythagoras benar-benar akan memenuhi tujuan mereka.
Amos Budde
sumber

Jawaban:

34

Menggunakan rumus Pythagoras pada posisi yang diberikan dalam lintang dan bujur masuk akal sesederhana, katakanlah, menghitung luas lingkaran menggunakan rumus untuk persegi: meskipun menghasilkan angka, tidak ada alasan untuk menganggap itu harus bekerja.

Meskipun pada skala kecil setiap permukaan terlihat halus seperti pesawat, keakuratan rumus Pythagoras tergantung pada koordinat yang digunakan. Ketika koordinat itu adalah garis lintang dan bujur pada sebuah bola (atau ellipsoid), kita dapat mengharapkan itu

  1. Jarak sepanjang garis bujur akan cukup akurat.

  2. Jarak di sepanjang Khatulistiwa akan cukup akurat.

  3. Semua jarak lain akan keliru, dalam proporsi kasar dengan perbedaan dalam lintang dan bujur.

Kesalahan tergantung pada titik awal dan akhir perhitungan jarak. Namun, karena baik bola dan ellipsoid memiliki simetri melingkar di sekitar sumbu, kesalahan hanya bergantung pada perbedaan garis bujur, jadi untuk mempelajari kesalahan ini kita mungkin juga mengambil titik asal berada di Prime Meridian. Karena baik bola dan ellipsoid simetris di bawah refleksi utara-selatan, kita hanya perlu mempelajari titik-titik asal di belahan bumi selatan. Untuk setiap titik seperti itu kita dapat menggambar peta kontur kesalahan relatif, sama dengan [perhitungan Pythagoras] / [True distance].

Rumus Pythagoras, menggunakan jari-jari rata-rata bumi, adalah

Pythagorean distance =  6371000. * Sqrt[dx^2 + dy^2]] * pi / 180 meters

di mana dx adalah perbedaan dalam bujur dan dy adalah perbedaan dalam lintang, keduanya dalam derajat. (Perbedaan dalam nilai bujur dikurangi modulo 360 untuk memberikan nilai dx yang tepat ketika melintasi antimeridian; jika tidak melakukan hal itu akan menimbulkan kesalahan artifisial besar yang tidak memberi tahu kita apa pun tentang rumus Pythagoras itu sendiri.)

Plot berikut menunjukkan kesalahan relatif dibandingkan dengan jarak yang benar pada ellipsoid WGS 84 untuk garis lintang dari -70 ke 0 dalam peningkatan 10 derajat. Koordinat horizontal adalah perbedaan dalam bujur dan koordinat vertikal adalah garis lintang dari tujuan. Wilayah cahaya memiliki kesalahan yang relatif kecil: garis kontur berada pada 1, 1.01, 1.02, 1.05, 1.1, 1.2, 1.5, 2, dll. (Area putih murni di sudut adalah tempat di mana kesalahan melampaui jangkauan kontur ini .) Titik-titik merah menunjukkan titik asal.

Plot

Pita putih vertikal bersaksi tentang kebenaran harapan (1): Jarak Pythagoras akurat ketika ada perbedaan kecil dalam bujur. Pita putih horizontal pada garis lintang rendah mengkonfirmasi harapan (2): dekat Khatulistiwa, jarak horizontal cukup akurat. Kalau tidak, seperti yang disaksikan oleh daerah gelap yang luas, di semua jarak lain rumus Pythagoras buruk.


Kita dapat membuat estimasi kuantitatif secara maksimalkesalahan diperoleh untuk pasang titik terdekat (dalam, katakanlah, beberapa ratus kilometer dari satu sama lain). Skala - menggunakan nilai yang sesuai untuk jari-jari - benar di sepanjang meridian tetapi di sepanjang lingkaran garis lintang keliru kira-kira oleh garis potong garis lintang. Misalnya, pada garis lintang 40 derajat garis potong adalah 1,31, menyiratkan rumus Pythagoras akan memberikan jarak sekitar 31% terlalu besar ke arah timur-barat. (Ini terlihat jelas pada plot kontur kanan atas, untuk titik asal pada garis lintang -40 derajat, di mana wilayah segera timur-barat dari titik merah terletak di antara kontur 1,2 dan 1,5.) Jarak pendek di semua arah lain akan menjadi terlalu besar dengan jumlah antara 0% dan 31%; jarak yang lebih jauh mungkin keliru lebih banyak lagi (seperti yang ditunjukkan oleh kontur).

whuber
sumber
1
Benar-benar perlu ada fungsi 'jawaban favorit', untuk jawaban seperti ini.
Devdatta Tengshe
2
@DevdattaTengshe: ia secara eksplisit mengharuskannya waras: "di mana dx adalah perbedaan dalam bujur (dinyatakan antara -180 dan 180) dan dy adalah perbedaan dalam garis lintang, baik dalam derajat."
lynxlynxlynx
1
Itu 2, karena 2 * 179 lebih besar dari 180?
lynxlynxlynx
1
@whuber: Saya tahu ini dan Anda tahu ini, tetapi kebanyakan orang yang secara buta mencoba menggunakan geometri Pythagoras / Euclidean, bahkan tidak berpikir atau mengetahuinya. Akan membantu jika fakta ini (Anda harus menggunakan Mod 360) hadir dalam jawaban Anda.
Devdatta Tengshe
1
@ToolmakerSteve Tidak apa-apa - Saya sering menggunakan koreksi ini - tetapi saya berharap penggunanya memahami bahwa ini adalah perkiraan dan untuk jarak yang jauh dan beberapa keadaan lain, ini mungkin jauh dari sasaran.
Whuber
8

Saya menafsirkan "jarak Pythagonean" sebagai "jarak Euclidean". Maka jawabannya adalah sama dengan "apa perbedaan antara panjang akord lingkaran dan perimeter subtended?" Biarkan jari-jari R, sudut subtended adalah A (radian).

perimeter = L = A*R
chord = C = 2*sin(A/2)*R
diff = D = L - C
     = (A-2*sin(A/2))*R
     = A^3/24 * R  (for A small)
     = L^3/(24*R^2) (eliminating A)
relative error = D/L
               = (L/R)^2/24

Untuk bumi, gantikan R = 6400 km. Ngomong-ngomong, sebut saja "jarak lingkaran besar" (apa itu) bukan "jarak haversine" (bagaimana dihitung). (Ini mirip dengan perbedaan antara jarak Pythagoras dan jarak Euclidean.)

cffk
sumber
Mengikuti alasan Anda, Anda dapat lebih lanjut menggantikan L dan membuat perkiraan hanya membutuhkan A.
lynxlynxlynx
Bisakah Anda menguraikan ekspresi yang Anda dapatkan? Bagaimana A ^ 3/24 * R ini keluar?
penasaran
Perbanyak sin (A / 2) untuk A kecil, menggunakan sin (x) = x - x ^ 3/6, dan Anda mendapatkan hasil ini.
cffk
5

Untuk jawaban yang lengkap dan teliti lihat jawaban whuber di atas. Saya akan menjawab dengan cara yang lebih visual dan mendasar.

Alasan mengapa perhitungan planar / Pythagoras tidak tepat adalah karena perhitungan mengandalkan fakta bahwa bergerak satu langkah ke arah mana pun adalah perubahan besaran yang konstan di mana pun Anda berada pada grafik.

grafik polos

Garis bujur tidak sesuai dengan persyaratan ini. Garis-garis bujur bertemu di kutub.

globe menunjukkan konvergensi

Itu sebabnya ketika kita meratakan bumi untuk mencerminkan aturan grafik planar kita mendapatkan distorsi.

Peta proyeksi Mercator

Jika Anda melihat peta itu, tampak seolah-olah Greenland kira-kira seukuran Afrika dan Antartika kira-kira seukuran Eurasia. Tentu saja itu tidak benar. Greenland dan Antartika sama-sama sangat terdistorsi karena dekat dengan kutub di mana garis bujur bertemu.

pandangan dunia belahan bumi utara

Seperti yang Anda lihat, Greenland kira-kira seukuran Meksiko.

tampilan sarung tangan belahan bumi selatan

Dan Antartika kira-kira seukuran Afrika selatan (bukan Afrika Selatan).

Seperti yang Anda lihat kesalahan Anda akan menerapkan rumus Pythagoras lebih tergantung pada di mana titik-titik daripada jarak antara titik. Dengan peringatan penting bahwa jarak yang lebih jauh akan memperbesar kesalahan. Inilah sebabnya mengapa solusi planar, sementara menggoda, adalah pilihan yang buruk. Distorsi akan menggigit Anda dan itu tidak sesederhana offset. Kesalahan adalah hasil dari membengkokkan bumi agar sesuai dengan aturan yang tidak pantas.

Erik
sumber
Sebenarnya, apa yang Anda tampilkan adalah jenis kesalahan yang berbeda. Digunakan dengan benar, teorema pythagoras menghitung jarak bujur berdasarkan panjang di sepanjang garis lintang Anda, jadi dikalikan dengancos(lat) . Digunakan dengan cara ini, kesalahan kecil untuk jarak kecil, di mana saja pada bola (kecuali jika melewati kutub N atau S). Apa yang Anda tunjukkan adalah distorsi dari proyeksi seluruh bumi, di mana beberapa daerah pasti sangat terdistorsi. "kesalahan yang akan Anda dapatkan .. lebih bergantung pada di mana .. daripada jarak" tidak benar jika digunakan * cos(lat).
ToolmakerSteve