ভিনসেন্টি বা হ্যাওয়ারিন বা কোসাইনের গোলাকৃতি আইন ব্যবহার করা হোক না কেন, আপনি যে কোডটি ব্যবহার করার পরিকল্পনা করছেন সেটি যে কোনও সম্ভাব্য সমস্যা সম্পর্কে সচেতন হওয়ার বুদ্ধি রয়েছে, কীভাবে ভিনসেন্টি বনাম হ্যাজারিন বনাম স্লোক ইস্যুগুলির সাথে একটি আচরণ করে প্রত্যেকের লুকোচুরি বিষয়গুলি / এজজাগুলি সম্পর্কে সচেতন হওয়ার সাথে সাথে পৃথক হবে, যা সম্ভবত পরিচিত বা নাও হতে পারে। পাকা প্রোগ্রামার এটি জানেন। Newbies না পারে। আমি যখন কোনও ফোরামের স্নিপেট কিছু ক্ষেত্রে অপ্রত্যাশিতভাবে কিছু করি তখন আমি তাদের মধ্যে কিছুটা হতাশার হাত থেকে রক্ষা পাওয়ার আশা করি। যদি কেউ গুরুত্ব সহকারে এর কোনও সংস্করণ, ভিনসেন্টি, হ্যারসাইন, স্লোক, এসই, এসও, রেডডিট, কোওড়া ইত্যাদি ব্যবহার করতে পারে তবে সমাধানের প্রাথমিক কোডিংয়ে সীমিত সহায়তা দিতে পারে, তবে এর অর্থ এই নয় যে তাদের সমাধান বা গৃহীত 'উত্তর' সমস্যাগুলি মুক্ত। যদি কোনও প্রকল্প যথেষ্ট গুরুত্বপূর্ণ, তবে এটি উপযুক্ত যুক্তিসঙ্গত গবেষণার দাবিদার। ম্যানুয়ালটি পড়ুন, দস্তাবেজগুলি পড়ুন এবং যদি সেই কোডটির একটি কোড পর্যালোচনা বিদ্যমান থাকে তবে তা পড়ুন। একশ বা তারও বেশি বার উত্থাপিত একটি স্নিপেট বা টুকরোটি অনুলিপি করা এবং আটকানোর অর্থ এই নয় যে এর সুরক্ষাটি বিস্তৃত এবং আশ্বাসযুক্ত।
সিএফকে পোস্ট করা উদ্বেগজনক উত্তরটি প্যাকেজযুক্ত সমাধানগুলিতে লুক্কায়িত এজক্যাসগুলি সম্পর্কে সচেতন হওয়ার বিষয়টি উত্থাপন করে, এটি ব্যতিক্রম বা অন্যান্য সমস্যা তৈরি করতে পারে । এই পোস্টে সুনির্দিষ্ট দাবিগুলি বর্তমানে অনুসরণ করার জন্য আমার সময় বাজেটের বাইরে, তবে আমি এ থেকে দূরে সরে যাচ্ছি যে কমপক্ষে একটি ভিনসেন্টি বাস্তবায়ন সহ কয়েকটি প্যাকেজগুলিতে প্রকৃতপক্ষে রীতিমতো সমস্যা রয়েছে, যার বিষয়ে কমপক্ষে একজন ব্যক্তি উন্নতির প্রস্তাব করেছেন এই সমস্যাগুলির মুখোমুখি হওয়ার ঝুঁকি হ্রাস বা হ্রাস করার জন্য এক বা অন্য উপায়। আমি ভিনসেন্টি সম্পর্কিত এ বিষয়ে আর যুক্ত করব না (এটি সম্পর্কে খুব বেশি অজ্ঞ) তবে এটিকে পরিবর্তে হেরসিনে পরিণত করব, কমপক্ষে আংশিকভাবে ওপি নিয়ে এই বিষয়টিতে।
অজগর বা অন্য কোন ভাষাতে জনপ্রিয়ভাবে প্রকাশিত হরসিন সূত্রটি সম্ভবত আজ প্রায় সকল ইন্টেল এবং ইন্টেল-জাতীয় সিস্টেমে এবং আইআরএম প্রসেসর, পাওয়ারপিসি, ইত্যাদিতে আইইইই 754 ফ্লোটিং পয়েন্ট স্পেস ব্যবহার করে চলেছে, এটি চলছে ভাসমান পয়েন্ট আনুমানিকতা এবং বৃত্তাকার কারণে খুব কাছাকাছি বা 180 ডিগ্রি তোরণ দূরত্ব, অ্যান্টিপোডাল পয়েন্টগুলিতে খুব বিরল তবে বাস্তব এবং পুনরাবৃত্তযোগ্য ব্যতিক্রম ত্রুটিগুলির প্রতিও সংবেদনশীল হতে পারে। কিছু নবজাতক সম্ভবত এখনও এই পরিস্থিতি দ্বারা কামড়ায় না। যেহেতু এই এফপি স্পেকটি প্রায় এবং গোলাকার হয়, এর অর্থ এই নয় যে কোনও কোড যা fp64 এ কল করে ব্যতিক্রম ত্রুটি ঘটাতে পারে, না। তবে কিছু কোড, কিছু সূত্রে এত সুস্পষ্ট প্রান্তকোষ নাও থাকতে পারে যেখানে আইইইই 754 এফপি 64 এর আনুমানিকতা এবং রাউন্ডিংগুলির কারণে কোনও গণিত পদ্ধতির ডোমেনের বাইরে কোনও মান ভ্রান্ত হতে পারে যা নির্দ্বিধায় এই জাতীয় মানের মূল্যায়নের প্রত্যাশা করে। একটি উদাহরণ ... বর্গ ()। যদি একটি নেতিবাচক মান স্কয়ার্ট () যেমন স্কয়ার্ট (-0.00000000000000000122739) এর দিকে সন্ধান করে তবে ব্যতিক্রম ত্রুটি থাকবে। হ্যাওয়ারসিন সূত্রে, এটি যেভাবে সমাধানের দিকে অগ্রসর হয়, সেখানে অ্যাটান 2 () এ দুটি স্কয়ার্ট () পদ্ধতি রয়েছে। দ্যএকটি যা গণনা করা হয় এবং তারপরে স্কয়ার্ট () এ ব্যবহৃত হয়, এটি পৃথিবীর অ্যান্টিপোডাল পয়েন্টগুলিতে 0.0 এর নীচে বা 1.0 এর উপরে সামান্য বিভ্রান্ত হতে পারে, খুব কম fp64 আনুমানিকতা এবং বৃত্তাকার কারণে, তবে খুব সম্ভবত পুনরাবৃত্তি হয়। ধারাবাহিকভাবে নির্ভরযোগ্য পুনরাবৃত্তিযোগ্যতা, এই প্রসঙ্গে, এটিকে একটি ব্যতিক্রম ঝুঁকি, সুরক্ষার জন্য একটি কিনার, একটি বিচ্ছিন্ন এলোমেলো ফ্লুকের পরিবর্তে প্রশমিত করতে পারে makes প্রয়োজনীয় সুরক্ষা ছাড়াই এখানে হ্যারসিনের একটি সংক্ষিপ্ত অজগর 3 স্নিপেটের একটি উদাহরণ রয়েছে:
import math as m
a = m.sin(dlat / 2)**2 + m.cos(lat1) * m.cos(lat2) * m.sin(dlon / 2)**2
c = 2 * m.atan2(m.sqrt(a), m.sqrt(1 - a))
distance = Radius * c
অ্যান্টিপোডাল পয়েন্টগুলির খুব কাছাকাছি বা কাছাকাছি সময়ে, সূত্রের প্রথম লাইনে গণনা একটি ঘৃণিত হতে পারে, খুব কমই, তবে একইভাবে দীর্ঘ একই স্থানাঙ্কের সাথে পুনরাবৃত্তি হয়। রক্ষা করার জন্য / ঐ বিরল ঘটনার সংশোধন, কেবল এক যোগ করতে পারেন, পরে একটি হিসাব, নিচের দেখা গেছে:
import math as m
note = ''
a = m.sin(dlat / 2)**2 + m.cos(lat1) * m.cos(lat2) * m.sin(dlon / 2)**2
if a < 0.0: a = 0.0 ; note = '*'
if a > 1.0: a = 1.0 ; note = '**'
c = 2 * m.atan2(m.sqrt(a), m.sqrt(1 - a))
distance = Radius * c
# note = '*' # a went below 0.0 and was normalized back to 0.0
# note = '**' # a went above 1.0 and was normalized back to max of 1.0
অবশ্যই আমি এখানে পুরো ফাংশনটি দেখাইনি তবে একটি সংক্ষিপ্ত স্নিপেট যেমন প্রায়শই পোস্ট করা হয়। কিন্তু এই এক শো SQRT () এর জন্য সুরক্ষা, পরীক্ষার দ্বারা একটি এবং যদি প্রয়োজন এটা স্বাভাবিক, এছাড়াও ব্যতীত ব্যবহার করে দেখুন পুরো জিনিস রাখা প্রয়োজন সংরক্ষণ। নোট = '' আপ টপটি হ'ল বাইটকোড পর্যায়ের প্রতিবাদ করা থেকে বিরত রাখা that নোটটি কোনও কার্য নির্ধারিত ফলাফলের সাথে ফিরিয়ে দেওয়া হলে কোনও মূল্য নির্ধারিত হওয়ার আগে ব্যবহার করা হচ্ছে।
এই সহজ পরিবর্তনের সাথে সাথে, দুই যোগ করার একটি পরীক্ষার, বর্গমূল () ফাংশন খুশি হবে, এবং কোড এখন একটি অতিরিক্ত আছে নোট যে কোড কলিং, সতর্কতা যে এর ফলে সামান্য স্বাভাবিক করা হয়েছে, এবং কেন ফিরে যেতে পারে। কিছু যত্ন নিতে পারে, কিছু নাও পারে, তবে এটি সেখানে রয়েছে, ব্যতিক্রমী ত্রুটি প্রতিরোধ করে, অন্যথায় ঘটতে পারে 'পারে'। ব্লক ব্যতীত একটি চেষ্টা ব্যতিক্রমটি ধরতে পারে তবে এটি ঠিক করতে পারে না, যদি না তা করার জন্য স্পষ্টভাবে লেখা হয়। এটা তোলে কোড সংশোধন লাইন (গুলি) অবিলম্বে পরে করা আরো সহজ বলে মনে হয় একটি হিসাব লাইন। পুঙ্খানুপুঙ্খভাবে স্ক্র্যাব করা ইনপুটটির জন্য এখানে মোটেও ব্লক ব্যতীত চেষ্টা করার দরকার নেই।
সারাংশ, haversine ব্যবহার করা হয় তবে, বরং স্পষ্টভাবে কোডেড একটি প্যাকেজ বা গ্রন্থাগার ব্যবহার করে, কোন উপায় আপনার ভাষা ব্যাপার চেয়ে, এটা পরীক্ষা করার জন্য একটি ভাল ধারণা হবে এবং স্বাভাবিক একটি অনুক্রমে 0.0 এর প্রয়োজনীয় পরিসর ফিরে <= একটি <= 1.0 তার সি গণনা সহ পরবর্তী লাইন রক্ষা করতে । তবে বেশিরভাগ হ্যাশারিন কোড স্নিপেটগুলি এটি দেখায় না এবং ঝুঁকিটি উল্লেখ করে না।
অভিজ্ঞতা: বিশ্বজুড়ে পুরোপুরি পরীক্ষার সময়, ০.০০১১ ডিগ্রি ইনক্রিমেন্টে, আমি ল্যাট লম্বা সংমিশ্রণগুলির সাথে একটি হার্ড ড্রাইভ পূরণ করেছি যা একটি ব্যতিক্রম ঘটেছে, একটি নির্ভরযোগ্য ধারাবাহিক পুনরাবৃত্তযোগ্য ব্যতিক্রম, এক মাসের মধ্যেও সিপিইউ কুলিংয়ের নির্ভরযোগ্যতা পরীক্ষা করার জন্য অনুরাগী, এবং আমার ধৈর্য। হ্যাঁ, আমি তখন থেকে বেশিরভাগ লগ মুছে ফেলেছি, যেহেতু তাদের উদ্দেশ্যটি মূলত পয়েন্টটি প্রমাণ করার জন্য ছিল (যদি শাস্তির অনুমতি দেওয়া হয়)। তবে আমার পরীক্ষার উদ্দেশ্যে রাখা সমস্যা 'ল্যাট লম্বাল মান' এর কিছু সংক্ষিপ্ত লগ রয়েছে।
নির্ভুলতা: একটি এবং পুরো হ'রসাইন রেজাল্ট ডোমেনে এই সামান্য কিছুটা স্বাভাবিক করে কিছু সঠিকতা হারাবে? খুব বেশি নয়, সম্ভবত ইতিমধ্যে fp64 অনুমান এবং রাউন্ডিংগুলি পরিচয় করিয়ে দেওয়া হয়েছিল, যার ফলে ডোমেনের সামান্য ড্রিফ্ট হয়েছিল। যদি আপনি ইতিমধ্যে ভিনসেন্টির চেয়ে হেরসাইন গ্রহণযোগ্য পেয়েছেন - সহজ, দ্রুত, কাস্টমাইজ করা সহজ, সমস্যা সমাধান এবং রক্ষণাবেক্ষণ করে থাকেন তবে হ্যাচারিন আপনার প্রকল্পের জন্য একটি ভাল সমাধান হতে পারে।
আকাশের বস্তুগুলির মধ্যে কৌনিক দূরত্ব পরিমাপের জন্য আমি একটি ওভারহেড প্রজেক্টড আকাশচুম্বীতে হাওয়ারসিন ব্যবহার করেছি, যেমন পৃথিবীর অবস্থান থেকে দেখা যায়, আজিমূথ এবং এলইটিকে আকাশচুম্বী ল্যাট লম্বার সমতুল্য স্থানাঙ্কগুলির ম্যাপিং করা হয়েছে, একেবারে বিবেচনার জন্য কোনও এলিপসয়েড নেই পৃথিবীর পৃষ্ঠের অবস্থান থেকে দুটি বস্তুর মধ্যে কৌণিক দূরত্বের কোণটি পরিমাপ করার ক্ষেত্রে প্রজেক্টড তাত্ত্বিক আকাশচুম্বী একটি নিখুঁত গোলক is এটি আমার প্রয়োজনগুলি পুরোপুরি ফিট করে। সুতরাং, কিছু নির্দিষ্ট অ্যাপ্লিকেশনগুলিতে (আমার উদ্দেশ্যগুলির মধ্যে ভাল) হ্যাশারিন এখনও খুব দরকারী এবং খুব নির্ভুল ... তবে আপনি যদি এটি জিআইএস বা নেভিগেশনের জন্য পৃথিবীতে বা আকাশের বস্তু পর্যবেক্ষণ এবং পরিমাপে ব্যবহার করেন তবে এটি সুরক্ষিত রাখুন এটি অ্যান্টিপোডাল পয়েন্টগুলির ক্ষেত্রে বা অ্যান্টিপোডাল পয়েন্টগুলির খুব কাছাকাছি সময়ে, পরীক্ষা করেএবং যখন প্রয়োজন হয় তখন এটিটিকে প্রয়োজনীয় ডোমেইনে ফিরিয়ে আনা হচ্ছে।
অরক্ষিত হাওয়ারসাইন পুরো ইন্টারনেট জুড়ে রয়েছে এবং আমি কেবল একটি পুরাতন ইউজনেট পোস্ট দেখেছি যা কিছু সুরক্ষা দেখিয়েছে, আমি জেপিএল-এর কারও কাছ থেকে মনে করি, এবং এটি 1985-এর প্রাক হতে পারে, আইইইইই 754 এর ভাসমান পয়েন্ট স্পেস। অন্য দুটি পৃষ্ঠাতে অ্যান্টিপোডাল পয়েন্টগুলির নিকটে সম্ভাব্য সমস্যাগুলি উল্লেখ করা হয়েছে, তবে এই সমস্যাগুলি কীভাবে বর্ণনা করা যায় নি, বা কীভাবে এগুলি প্রশমিত করতে পারে। সুতরাং নতুনদের (আমার মতো) যারা উদ্ভাবন করেছেন তারা সবসময় ভাল অনুশীলনটি আরও গবেষণার জন্য ভালভাবে বুঝতে না পারার জন্য এবং এজডেস কেস পরীক্ষা করতে পারেন যা তারা কোনও প্রকল্পের অনুলিপি অনুলিপি করে আটকানো হয়েছিল। সিএফকেকের আকর্ষণীয় পোস্টটি সতেজ ছিল যে এই ধরণের সমস্যাগুলির সাথে এটি সর্বজনীন ছিল, যা প্রায়শই উল্লেখ করা হয় না, স্নিপেটগুলিতে সুরক্ষার জন্য খুব কমই প্রকাশ্যে কোড করা হয় এবং পোস্ট করা অনিরাপদ ও অনির্দিষ্ট সংস্করণের পরিমাণের তুলনায় খুব কমই এইভাবে আলোচনা করা হয়।
20190923 পর্যন্ত, হ্যাশারিন সূত্রের উইকি পৃষ্ঠায় কমপিউটিং ডিভাইসগুলিতে ভাসমান পয়েন্ট সমস্যার কারণে অ্যান্টিপোডাল পয়েন্টগুলিতে সম্ভব সমস্যাটি উল্লেখ করা হয়েছে ... উত্সাহজনক ...
https://en.wikipedia.org/wiki/Haversine_formula
(কারণ সেই উইকি পৃষ্ঠাটিতে এই মুহুর্তে আমি যে বিভাগে সরাসরি লিঙ্ক করব তার জন্য এইচটিএমএল অ্যাঙ্কর নেই, সুতরাং পৃষ্ঠাটি লোড হওয়ার পরে, 'এই সূত্রগুলি ব্যবহার করার সময়' জন্য সেই ব্রাউজার পৃষ্ঠায় একটি অনুসন্ধান করুন এবং আপনি উল্লিখিত অ্যান্টিপোডাল পয়েন্টগুলির সাথে হেরসিনের সমস্যাটি দেখুন, আরও সরকারীভাবে)
এবং এই অন্যান্য সাইটেরও এর একটি খুব সংক্ষিপ্ত উল্লেখ রয়েছে:
https://www.movable-type.co.uk/scripts/latlong.html
'রাউন্ডিং ত্রুটিগুলির বিরুদ্ধে সুরক্ষা সহ' এর জন্য যদি কেউ এই পৃষ্ঠায় সন্ধান করে তবে এটি রয়েছে ...
যদি অ্যাটান 2 পাওয়া না যায় তবে সিটিকে 2 ⋅ আসিন (মিনিট (1, )a)) (গোলাকার ত্রুটির বিরুদ্ধে সুরক্ষা সহ) থেকে গণনা করা যেতে পারে।
এখন একটি বিরল উদাহরণ রয়েছে যেখানে রাউন্ডিং ত্রুটিগুলি উল্লেখ করা হয়েছে এবং আসিন () সংস্করণটির জন্য সুরক্ষা দেখানো হয়েছে, তবুও এটান 2 () সংস্করণটির জন্য উল্লেখ করা বা প্রদর্শিত হয়নি। তবে কমপক্ষে গোল করার ত্রুটির ঝুঁকি উল্লেখ করা হয়েছে।
imho, hasrsine ব্যবহার করে যে কোনও 24/7/365 অ্যাপ্লিকেশন, একটি গুরুত্বপূর্ণ এবং সাধারণ বিশদ হিসাবে অ্যান্টিপোডাল পয়েন্টগুলির কাছে এই সুরক্ষা প্রয়োজন।
আমি জানি না কোন হ'রসিন প্যাকেজগুলি এই সুরক্ষাটি অন্তর্ভুক্ত করে বা না করে তবে আপনি যদি এই সমস্ত ক্ষেত্রে নতুন হন এবং আপনি জনপ্রিয়ভাবে প্রকাশিত 'স্নিপেট' সংস্করণ (গুলি) ব্যবহার করতে চলেছেন তবে এখন আপনি জানেন যে এটির সুরক্ষা প্রয়োজন, এবং এই সুরক্ষাটি প্রয়োগ করা খুব সহজ, এটি হ'ল যদি আপনি ভিনসেন্টি ব্যবহার না করে থাকেন এবং প্যাকেজের কোডটি পরিবর্তন করতে সহজ অ্যাক্সেস ছাড়াই প্যাকেজড হ'রসিন ব্যবহার করছেন না।
আইউডাব্লু, ভিনসেন্টি বা হ্যাশারিন বা স্লোক ব্যবহার করা সত্ত্বেও, কোডের সাথে যে কোনও সমস্যা সম্পর্কে নজর রাখা উচিত, কীভাবে নজরদারি করা উচিত এবং কীভাবে তা হ্রাস করা উচিত এবং ভিনসেন্টি বনাম হ্যাভারসিন বনাম স্লোক ইস্যুগুলির সাথে কীভাবে আচরণ করা যায় তা আলাদা হয়ে যাবে কারণ প্রত্যেকের সচেতন হওয়ার সাথে সাথে লুকোচুরি ইস্যু / এজক্যাসগুলি, যা সম্ভবত পরিচিত বা নাও হতে পারে।