দুটি অক্ষাংশ-দ্রাঘিমাংশের পয়েন্টের মধ্যে দূরত্ব গণনা করার সময় কেন কোসাইনগুলির আইন হ্যাঁস্রিনের চেয়ে বেশি পছন্দনীয়?


41

প্রকৃতপক্ষে, সিনট যখন হ্যাশারিন সূত্র প্রকাশ করেছিল, তখন গণনার যথার্থতা সীমাবদ্ধ ছিল। আজকাল, জাভাস্ক্রিপ্ট (এবং বেশিরভাগ আধুনিক কম্পিউটার ও ভাষাগুলি) আইইইই 754 64-বিট ফ্লোটিং-পয়েন্ট নম্বর ব্যবহার করে, যা 15 উল্লেখযোগ্য পরিসংখ্যান সরবরাহ করে। এই নির্ভুলতার সাথে, কোসাইন সূত্রের সরল গোলাকার আইন ( cos c = cos a cos b + sin a sin b cos C) প্রায় 1 মিটারের মতো ছোট দূরত্বগুলিতে শর্তযুক্ত ফলাফল দেয়। এটির পরিপ্রেক্ষিতে বেশিরভাগ পরিস্থিতিতে কোসাইনের সরল আইন বা হ্যার্সিনের অগ্রাধিকারের ক্ষেত্রে আরও সঠিক উপবৃত্তাকার ভিনসেন্টি সূত্র ব্যবহার করা সম্ভবত এটি মূল্যবান! (গোলাকার মডেলের যথার্থতার সীমাবদ্ধতার উপর নীচে নোটগুলি মনে রাখবেন)।
সূত্র: http://www.movable-type.co.uk/scriptts/latlong.html

কোজিনগুলির আইন আরও বেশি পছন্দ করার কারণ কী?

দ্রষ্টব্য: উদ্ধৃত পাঠ্যটি নীচে উল্লিখিত অনুসারে এর লেখক আপডেট করেছেন ।


10
কিভাবে কোসাইন আইন "পছন্দনীয়"? আমরা এটি দুটি উপায়ে জবাব দিতে পারি: কম্পিউটার এবং প্রোগ্রামারটির জন্য। কম্পিউটারের জন্য, haversine সূত্রটি কম ট্রিিগ ফাংশন ব্যবহার করে তবে দুটি বর্গমূলের প্রয়োজন। গণনার দক্ষতার জন্য, তারপর, এটি একটি টস-আপ। প্রোগ্রামারটির জন্য হ্যাওয়ারসিন সূত্রটি কিছুটা দীর্ঘ। যাইহোক, কোসাইন সূত্রের আইনটির জন্য একটি ACos বাস্তবায়ন হওয়া দরকার যা এটি এটিান বাস্তবায়নের চেয়ে একটু কম ঘন ঘন দেখা যায়। তদতিরিক্ত , বুলেটপ্রুফ কোড লিখতে আপনাকে পরীক্ষা করতে হবে যে ACos ব্যর্থ হবে না। একা এই কারণেই আমাদের হ্যাশারিন পছন্দ করা উচিত।
হোবার

2
আমি পাইথনে সবেমাত্র হাওয়ারসাইন এবং কোসাইন প্রয়োগ করেছি। এই কম্পিউটারে হরসিনটি ৩.৩μ লাগে এবং কোসাইন ২.২μs লাগে যা আপনার যদি অনেক কিছু করার দরকার হয় তবে তা যথেষ্ট তাৎপর্যপূর্ণ
gnibbler

1
কিছু ভাল পর্যবেক্ষণ এবং তথ্যের জন্য প্রত্যেককে ধন্যবাদ। আমি প্রশ্নটিতে উদ্ধৃত পাঠ্যটি আপডেট করেছি, আশা করি বরং আরও উদ্দেশ্যমূলক এবং সহায়ক।
ক্রিসভি

@ ক্রিসভি, আপডেটের জন্য ধন্যবাদ! আমি এটি একটি মন্তব্যে স্থানান্তরিত করেছি কারণ এটি সরাসরি প্রশ্নের উত্তর নয়, আপনার দুর্দান্ত সাইটের জন্য ধন্যবাদ।
স্কু

উত্তর:


48

সমস্যাটি "শীতাতপ নিয়ন্ত্রিত" শব্দটি দ্বারা নির্দেশিত। এটি গণিতের নয়, কম্পিউটার গণিতের একটি সমস্যা।

এখানে বিবেচনা করার জন্য মৌলিক তথ্যগুলি এখানে:

  1. পৃথিবীতে একটি রেডিয়ান প্রায় 10 ^ 7 মিটার পর্যন্ত বিস্তৃত।

  2. X এর নিকটে আর্গুমেন্টের জন্য কোসাইন ফাংশনটি প্রায় 1 - x ^ 2/2 এর সমান ।

  3. ডাবল-স্পষ্টতা ভাসমান পয়েন্টের যথাযথতার প্রায় 15 দশমিক সংখ্যা রয়েছে।

পয়েন্টগুলি (2) এবং (3) বোঝায় যে যখন x প্রায় এক মিটার বা 10 ^ -7 রেডিয়ান (পয়েন্ট 1) হয় তখন প্রায় সমস্ত নির্ভুলতা নষ্ট হয়: 1 - (10 ^ -7) = 2 = 1 - 10 ^ - 14 একটি গণনা যেখানে 15 টি উল্লেখযোগ্য অঙ্কের প্রথম 14 টি বাতিল করে ফলাফলকে উপস্থাপনের জন্য কেবল একটি অঙ্ক রেখে digit এটিকে চারপাশে উল্টানো (যা বিপরীত কোসাইন, "অ্যাকোস" করে) এর অর্থ মিটার দৈর্ঘ্যের দূরত্বের সাথে সমান কোণগুলির জন্য অ্যাকোস গণনা কোনও অর্থবহ নির্ভুলতার সাথে করা যায় না। (কিছু খারাপ ক্ষেত্রে নির্ভুলতার ক্ষতি একটি মান দেয় যেখানে অ্যাকোস এমনকি সংজ্ঞায়িতও হয় না, সুতরাং কোডটি ভেঙে দেওয়া হবে এবং কোনও উত্তর দেবে না, একটি বাজে উত্তর, বা মেশিন ক্র্যাশ করবে)) অনুরূপ বিবেচনাগুলি আপনাকে বিপরীত কোসাইন ব্যবহার করা এড়ানো উচিত আপনি কতটা নির্ভুলতা হারাতে ইচ্ছুক তার উপর নির্ভর করে যদি কয়েক শ মিটারেরও কম দূরত্ব জড়িত থাকে।

নিষ্কলুষ আইন-উপ-মহাসাগর সূত্রে অ্যাকোস দ্বারা পরিচালিত ভূমিকাটি একটি কোণকে দূরত্বে রূপান্তর করা। সেই ভূমিকা হ্যান্সারিন সূত্রে এটিান 2 দ্বারা অভিনয় করে। একটি ছোট কোণ x এর স্পর্শক প্রায় নিজেই x এর সমান । ফলস্বরূপ কোনও সংখ্যার বিপরীত স্পর্শক, প্রায় এটিই সংখ্যা হিসাবে নির্ভুলভাবে কোনও ক্ষতি ছাড়াই মূলত গণনা করা হয়। এই কারণেই হ্যাশারিন সূত্রটি গাণিতিকভাবে কোসাইন সূত্রের আইনের সমতুল্য হলেও ছোট দূরত্বের (1 মিটার বা তার কম ক্রমের) তুলনায় অনেক বেশি উন্নত

এখানে পৃথিবীতে 100 টি এলোমেলো পয়েন্ট-জোড়া ব্যবহার করে দুটি সূত্রের তুলনা করা হয়েছে (ম্যাথমেটিকার দ্বৈত-নির্ভুল গণনাগুলি ব্যবহার করে)।

বিকল্প পাঠ

আপনি দেখতে পাচ্ছেন যে প্রায় 0.5 মিটারের চেয়ে কম দূরত্বের জন্য দুটি সূত্রই আলাদা হয়ে যায়। 0.5 মিটার উপরে তারা সম্মত হন। তারা কতটা ঘনিষ্ঠভাবে সম্মত হন তা দেখানোর জন্য, পরবর্তী প্লটটি কোসাইনের আইনের অনুপাত দেখায়: হ্যাশারিনের ফলাফল আরও 100 টি এলোমেলো পয়েন্ট জোড়ের জন্য, যার অক্ষাংশ এবং দ্রাঘিমাংশ 5 মিটার পর্যন্ত এলোমেলোভাবে পৃথক হয়।

বিকল্প পাঠ

এটি দেখায় যে কোসাইন সূত্রের আইনটি দূরত্ব 5-10 মিটার ছাড়িয়ে গেলে 3-4 দশমিক জায়গায় ভাল। যথার্থ দশমিক জায়গাগুলির সংখ্যা চতুর্ভুজ বৃদ্ধি পায়; এইভাবে 50-100 মিটার (এক মাত্রার এক ক্রম) এ আপনি 5-6 ডিপি যথাযথতা পাবেন (প্রস্থের দুটি আদেশ); 500-1000 মিটারে আপনি 7-8 ডিপি ইত্যাদি পান


কিছু সস্তা পরীক্ষা আছে - উদাহরণস্বরূপ delta latitude > .1 || delta longitude > .1গতিশীলভাবে কোসাইন (বড় জন্য) বা হাওয়ারসাইন (ছোট দূরত্বের জন্য) চয়ন করুন? যাতে সেরা পারফরম্যান্স এবং ভাল নির্ভুলতা পাওয়া যায়।
অ্যানি-মৌসে

@ অ্যানি-মাউস দু'টি সূত্রই এক-চতুর্থাংশ দূরত্বের জন্য এক শতাংশের কয়েক দশমাংশ দ্বারা বিশ্বজুড়ে বন্ধ করা যেতে পারে, সুতরাং ততক্ষণে আমরা নির্ভুলতার বিষয়ে ঝাঁকুনি করব না! সুতরাং যে কোনও পরীক্ষার মধ্যবর্তী সবকিছু থেকে প্রায় diametrically বিপরীত পয়েন্টগুলি (প্রায় 20 মিলিয়ন মিটার) থেকে নিকট পয়েন্টগুলি (কয়েকশো মিটার) পার্থক্য করতে পারে তা যথেষ্ট হওয়া উচিত।
whuber

সংখ্যাসমূহের atan2বেশি উপকার দেওয়া যায় না asin? আমি বেঞ্চমার্কগুলি দেখেছি, যেখানে atan22-3x এর চেয়ে ধীর গতিতে ছিল asinএবং আমাদের একটি সেকেন্ডও দরকার sqrt
এরিচ শুবার্ট

@ এরিচ আমি পার্থক্যটি অধ্যয়ন করি নি, তবে নোট করুন যে asinমূলত একই জিনিস acosএবং তাই নির্দিষ্ট মূল্যবোধের জন্য যথাযথতার একই ক্ষতিতে ভুগছে - এই ক্ষেত্রে, 1 এবং -1 এর নিকটে যুক্তির জন্য। নীতিগতভাবে, atan2যে সমস্যা নেই।
whuber

এটা কি খুব বড় দূরত্বে হবে? উপরে @ অ্যানি-মুউসের পরামর্শের সাথে মিলিত হওয়া তখন আকর্ষণীয় বলে মনে হচ্ছে।
এরিচ শুবার্ট

6

একটি historicalতিহাসিক পাদটীকা:

হ্যাওয়ারসিন হ'ল গণনাগুলিতে বৃহত রাউন্ড-অফ ত্রুটিগুলি এড়ানোর একটি উপায় ছিল

1 - cos(x)

যখন এক্স ছোট হয়। আমাদের আছে haversine শর্তাবলী

1 - cos(x) = 2*sin(x/2)^2
           = 2*haversin(x)

এবং 2 * sin (x / 2) x 2 x ছোট হলেও সঠিকভাবে গণনা করা যায়।

পুরানো দিনগুলিতে, হর্সাইন সূত্রে একটি সংযোজন এড়াতে অতিরিক্ত সুবিধা ছিল (যার মধ্যে একটি অ্যান্টলোগুলি অনুসন্ধান, সংযোজন এবং লগ লুকে অন্তর্ভুক্ত ছিল)। একটি ত্রিকোণমিতিক সূত্র যা কেবলমাত্র গুণকে অন্তর্ভুক্ত করে বলেছিল "লোগারিদমিক ফর্ম" এ।

আজকাল, haversine সূত্র ব্যবহার সামান্য anacronistic। এটি হতে পারে যে কোণটি এক্স পদে প্রকাশিত হয়েছে sin(x)এবং cos(x)(এবং এক্স সম্ভবত স্পষ্টভাবে জানা যায় না)। 1 - cos(x)সেক্ষেত্রে হ্যাওয়ারসাইন সূত্রের মাধ্যমে কম্পিউটিংয়ের জন্য একটি আর্কট্যানজেন্ট (কোণ x পেতে), অর্ধেক হওয়া (পেতে x/2), একটি সাইন (পেতে sin(x/2)), একটি বর্গ (পেতে sin(x/2)^2) এবং একটি চূড়ান্ত দ্বিগুণ অন্তর্ভুক্ত থাকে। আপনি মূল্যায়ন ব্যবহার করা থেকে অনেক ভাল

1 - cos(x) = sin(x)^2/(1 + cos(x))

যা ত্রিকোণমিতিক ক্রিয়াকলাপগুলির জন্য কোনও মূল্যায়ন করে না। (স্পষ্টতই ডান হাতটি কেবল তখনই ব্যবহার করুন যদি cos(x) > 0অন্যথায়, 1 - cos(x)সরাসরি ব্যবহার করা ঠিক আছে ))


1

কোসাইন সূত্রটি এক লাইনে প্রয়োগ করা যেতে পারে:

  Distance = acos(SIN(lat1)*SIN(lat2)+COS(lat1)*COS(lat2)*COS(lon2-lon1))*6371

Haversine সূত্র একাধিক লাইন লাগে:

  dLat = (lat2-lat1)
  dLon = (lon2-lon1)
  a = sin(dLat/2) * sin(dLat/2) + cos(lat1) * cos(lat2) * sin(dLon/2) * sin(dLon/2)
  distance = 6371 * 2 * atan2(sqrt(a), sqrt(1-a))

গাণিতিকভাবে, অভিন্ন আছে, তাই কেবল পার্থক্য হ'ল বাস্তবতার মধ্যে একটি।


মূল হ্যাভারসাইন কম্পিউটার সম্পর্কিত atan2সূত্র ব্যবহার করে না , এমন কিছুই নেই যা উপরের 4 টি লাইনকে একটি সূত্রে পুনরায় লেখা থেকে বিরত রাখে।
আরজান

@Arjan, সত্য, কিন্তু এটা অদক্ষ হতে কারণ আপনার গনা করতে হবে হবে একটি দুইবার। সূত্রটি স্ক্র্ট (ক) এবং স্ক্র্যাট (1-এ) উভয়কেই জড়িত করা জরুরী, কারণ যদিও এর মধ্যে একটি খুব ছোট বা খুব বড় দূরত্বের জন্য সংখ্যাগতভাবে অস্থির হবে তবে অন্যটি হবে না: এটাই এই পদ্ধতির কাজ করে।
হোবার

সত্য, @ হুবুহু তবে এখনও আমি সন্দেহ করি যে লাইন সংখ্যা আমাকে কখনই অন্যের থেকে একটি বেছে নেবে। (এবং যেমন আপনি ইতিমধ্যে আপনার উত্তরে ব্যাখ্যা করেছেন , একটির পক্ষে যাওয়ার পক্ষে আরও অনেক গুরুত্বপূর্ণ কারণ রয়েছে))
আরজান

3
@ আরজান আমি সম্মত একটির প্রথম অগ্রাধিকারটি প্রোগ্রামিং কার্যের জন্য কোডের পর্যাপ্ততা হওয়া উচিত। এর পরে আমি স্পষ্টতা রাখব: এটি হ'ল পাঠযোগ্যতা, রক্ষণাবেক্ষণযোগ্যতা এবং সাক্ষরতার ডকুমেন্টেশন। এই জাতীয় প্রসঙ্গে অনুপস্থিত, কোডের লাইনের সংখ্যা গণনা অর্থহীন।
whuber

1
atan2(sqrt(a), sqrt(1-a))হিসাবে একইasin(sqrt(a))
user102008
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.