ভেক্টরগুলির মধ্যে কোণগুলির কম্পিউটিংয়ের সংখ্যাগত স্থিতিশীল উপায়


14

দুটি ভেক্টরের মধ্যবর্তী কোণের জন্য শাস্ত্রীয় সূত্র প্রয়োগ করার সময়:

α=arccosv1v2v1v2

একটিকে দেখতে পাওয়া যায় যে খুব ছোট / তীব্র কোণগুলির জন্য, নির্ভুলতার ক্ষতি হয় এবং ফলাফলটি সঠিক হয় না। এই স্ট্যাক ওভারফ্লো উত্তরে বর্ণিত হিসাবে , এর একটি সমাধান হ'ল পরিবর্তে আর্কটেন্ট ব্যবহার করা:

α=arctan2(v1×v2,v1v2)

এবং এটি প্রকৃতপক্ষে আরও ভাল ফলাফল দেয়। তবে আমি আশ্চর্য হয়েছি যে এটি যদি this পাই / 2 এর খুব কাছাকাছি কোণগুলির জন্য খারাপ ফলাফল দেয় π/2। এটা কি ঘটনা? যদি তা হয় তবে কোনও ifশাখার ভিতরে সহনশীলতার জন্য পরীক্ষা না করে সঠিকভাবে কোণগুলি গণনা করার কোনও সূত্র আছে কি?


1
এটি দুটি প্যারামিটার ইনভার্স ট্যানজেন্ট ফাংশন বাস্তবায়নের উপর নির্ভর করতে চলেছে। ধীর, স্থিতিশীল সংস্করণগুলি যথাযথতা বজায় রাখার জন্য x / y এবং y / x এর সাথে কাজ করার মধ্যে শর্তসাপেক্ষে স্যুইচ করে, যখন দ্রুততমগুলি কেবল ডান কোয়াড্রেন্টে জিনিসগুলিকে আঁকড়ে ধরে রাখে এবং সুতরাং এটি প্যারামিটার সংস্করণের চেয়ে আরও নির্দিষ্ট কিছু নয়।
অরিগেম্বো

আপনার "নির্ভুলতার ক্ষতি" সংজ্ঞায়িত করা উচিত: মনে করুন সঠিক উত্তরটি হ'ল α এবং আপনি পরিবর্তে পেয়ে যাবেন α+Δ । আপনার কি Δα বা Δπ যথেষ্ট?
স্টেফানো এম

এই ক্ষেত্রে, সঠিক উত্তরটি ছিল এবং আমি পেয়েছি , উভয়ই । αα1081
অ্যাস্ট্রজুয়ানলু

উত্তর:


18

( আমি এই পদ্ধতির আগেও পরীক্ষা করেছি, এবং আমি মনে করি এটি সঠিকভাবে কাজ করেছে, তবে আমি এই প্রশ্নের জন্য এটি বিশেষভাবে পরীক্ষা করি নি। )

যতদূর আমি বলতে পারি, উভয়ই এবং বিপর্যয়কর বাতিল হতে পারে যদি তারা প্রায় সমান্তরাল / লম্ব হয় — আতন 2 যদি ইনপুট বন্ধ থাকে তবে আপনাকে ভাল সঠিকতা দিতে পারে না।v1×v2v1v2

পাশের দৈর্ঘ্য ত্রিভুজের কোণ খুঁজে হিসাবে সমস্যাটি সংস্কার করে শুরু করুন ,এবং(এগুলি সবগুলি ভাসমান পয়েন্ট গণিতগুলিতে নির্ভুলভাবে গণনা করা হয়)। কাহানের কারণে হেরনের সূত্রের একটি সুপরিচিত বৈকল্পিক রয়েছে ( মিউজিকুলেটিং অঞ্চল এবং একটি সূঁচের মতো ত্রিভুজের কোণ ), যা আপনাকে এর পাশের দৈর্ঘ্য দ্বারা নির্দিষ্ট ত্রিভুজের ক্ষেত্র এবং কোণ ( এবং ) গণনা করতে দেয় , এবং এটি সংখ্যাগতভাবে stably করুন। যেহেতু এই সাব-প্রবলেমে হ্রাস এছাড়াও সঠিক, এই পদ্ধতির স্বেচ্ছাচারিত ইনপুটগুলির জন্য কাজ করা উচিত।a=|v1|b=|v2|c=|v1v2|ab

Paper , এখানে সমস্ত বন্ধনী সাবধানে স্থাপন করা হয়েছে, এবং সেগুলি গুরুত্বপূর্ণ; যদি আপনি নিজেকে একটি নেতিবাচক সংখ্যার বর্গমূল গ্রহণ করে দেখেন তবে ইনপুট পাশের দৈর্ঘ্যগুলি একটি ত্রিভুজের পাশের দৈর্ঘ্য নয়।ab

μ={c(ab),if bc0,b(ac),if c>b0,invalid triangle,otherwise
angle=2arctan(((ab)+c)μ(a+(b+c))((ac)+b))

কাহানের পত্রিকায় অন্যান্য সূত্রগুলি ব্যর্থ হয়েছে এমন মানগুলির উদাহরণ সহ এটি কীভাবে কাজ করে তার একটি ব্যাখ্যা রয়েছে। জন্য আপনার প্রথম সূত্র হল 4 পৃষ্ঠার।αC

আমি কাহানের হেরনের সূত্রটির মূল পরামর্শ দিচ্ছি কারণ এটি খুব সুন্দর আদিম করে তোলে ar প্রচুর সম্ভাব্য কৌশলগত পরিকল্পনাকারী জ্যামিতি প্রশ্নগুলি একটি স্বেচ্ছাসেবী ত্রিভুজের ক্ষেত্র / কোণ খুঁজে বের করার ক্ষেত্রে হ্রাস করা যেতে পারে, তাই যদি আপনি নিজের সমস্যাটিকে হ্রাস করতে পারেন তবে এটির জন্য একটি দুর্দান্ত স্থিতিশীল সূত্র এবং আপনার নিজের থেকে কিছু নিয়ে আসার দরকার নেই।

সম্পাদনা করুন স্টেফানো এর মন্তব্য অনুসরণ, আমি একটি জন্য আপেক্ষিক ত্রুটির চক্রান্ত তৈরি , ( কোড )। দুটি লাইন অনুভূমিক অক্ষের সাথে going এবং , আপেক্ষিক ত্রুটি । মনে হচ্ছে এটি কাজ করে। v1=(1,0)v2=(cosθ,sinθ)θ=ϵθ=π/2ϵϵএখানে চিত্র বর্ণনা লিখুন


লিঙ্ক এবং উত্তরের জন্য ধন্যবাদ! দুর্ভাগ্যক্রমে আমি যে দ্বিতীয় সূত্রটি লিখেছি তা নিবন্ধে উপস্থিত হয় না। অন্যদিকে, এই পদ্ধতিটি কিছুটা জটিল আকার ধারণ করতে পারে, কারণ এটি 2 ডি-তে প্রক্ষেপণ প্রয়োজন।
অ্যাস্ট্রোজুয়ানলু

2
@ এস্ট্রোজুয়ানলু এখানে 2 ডি-তে কোনও প্রক্ষেপণ নেই: দুটি 3 ডি ভেক্টর যাই হোক না কেন, তারা তাদের মধ্যে একটি একক (প্ল্যানার) ত্রিভুজটি সংজ্ঞায়িত করেন - আপনাকে কেবল এর পাশের দৈর্ঘ্যগুলি জানতে হবে।
কিরিল

আপনারা ঠিক বলেছেন, আমার মন্তব্যটি কোনও মানে করে না। আমি দৈর্ঘ্যের পরিবর্তে স্থানাঙ্কে চিন্তা করছিলাম। আবার ধন্যবাদ!
অ্যাস্ট্রোজুয়ানলু

2
@ মাস্ট্রজুয়ানলু আরও একটি জিনিস আমি লক্ষ করতে চাই: এটি দেখে মনে হচ্ছে যে কোনও সূক্ষ্ম ক্ষেত্রটি কোনও ত্রিভুজের অঞ্চলটি কীভাবে গণনা করতে হবে সে সম্পর্কে ফর্মাল প্রমাণটি সঠিক : ফর্মাল ব্যবহার করে একটি ফর্মাল রিভিসিট , সিলভি বোল্ডো।
কিরিল

দুর্দান্ত উত্তর, তবে আমি বিতর্ক করি যে আপনি সর্বদা ভাসমান পয়েন্ট গণিতগুলিতে সঠিকভাবে গণনা করতে পারেন । প্রকৃতপক্ষে যদি তবে এর উপাদানগুলি গণনা করার সময় বিপর্যয়কর বাতিল হয় । cc<ϵmin(a,b)(v1v2)
স্টেফানো এম

7

এই প্রশ্নের কার্যকর উত্তরটি ভেলভেল কাহানের আরেকটি নোটে খুব আশ্চর্যের মতো নয় :

α=2arctan(v1v1+v2v2,v1v1v2v2)

যেখানে আমি অনুভূমিক অক্ষের সাহায্যে দ্বারা তৈরি কোণ হিসাবে ব্যবহার করি । (কিছু ভাষায় আপনাকে আর্গুমেন্টের ক্রমটি ফ্লিপ করতে হতে পারে))arctan(x,y)(x,y)

(আমি এখানে কাহানের সূত্রটির গাণিতিক প্রদর্শন করেছি ))


আপনি মানে ? arctan2
অ্যাস্ট্রোজুয়ানলু

1
আমি ঠিক যেমন দুই যুক্তি পরিধির টেনজেন্ট পেশ ব্যবহার করছি , হ্যাঁ। ফরট্রানের মতো ভাষায় সমান হবে । arctan(x,y)ATAN2(Y, X)
জেএম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.