অস্থির ভাসমান পয়েন্ট গণনাগুলি কীভাবে চিহ্নিত করব?


15

সংখ্যায়, অস্থিতিশীল স্কিমগুলি সনাক্ত করতে এবং তাদের স্থায়িত্বের উন্নতি করতে সক্ষম হওয়া খুব গুরুত্বপূর্ণ। অস্থির ভাসমান পয়েন্ট গণনাগুলি কীভাবে চিহ্নিত করব?

আমি একটি খুব জটিল সিমুলেশন নিয়ে কাজ করছি যেখানে অনেকগুলি সংখ্যার স্কিম একসাথে কাজ করে এবং আমি এর দুর্বল অংশগুলি সনাক্ত করার জন্য একটি পদ্ধতি অনুসন্ধান করছি। আমি ডিফারেনশিয়াল সমীকরণ জড়িত একটি শারীরিক মডেল নিয়ে কাজ করছি। সামগ্রিক প্রক্রিয়াটির একটি পাখির দৃষ্টিভঙ্গি হ'ল:

  1. (প্রাথমিক পদক্ষেপ) শারীরিক পর্যবেক্ষণ সংগ্রহ করুন পি

  2. সিমুলেশনের প্রাথমিক পরামিতিগুলি নির্ধারণ করুন। এটি একটি অপ্টিমাইজেশন অ্যালগরিদম ব্যবহার করে, যেখানে আমরা একটি প্যারামিটার স্পেসে চলি এবং সি প্যারামিটারগুলি সন্ধান করি যেমন কিছু ত্রুটি ফাংশন E (F (C), P) হ্রাস করা হয়, যেখানে এফটি প্যারামিটারগুলির কিছু প্রাপ্ত পরিমাণ is

  3. সিমুলেশন ইঞ্জিনে সি প্লাগ করুন । এটি ইডিপির একটি অয়লার স্কিম, যাতে প্রতিটি সময়ে পদক্ষেপে আমরা গতিশীল ড্রাইভিং শর্তগুলি গণনা করি (তাদের প্রত্যেকটি একটি জটিল ক্রিয়া, সম্ভাব্যত অস্থিরতার সাপেক্ষে) এবং পরবর্তী গতিতে এই গতিশীল পদগুলির সাথে ইউলার স্কিমটি খাওয়ান অবস্থা. এটি হাজার সময় পয়েন্টের জন্য যায়।

  4. সিমুলেশন শেষে, আমরা চূড়ান্ত রাষ্ট্র এস এর কিছু ফাংশন প্রুফ (এস) গণনা করি এবং পর্যবেক্ষণকৃত পরিমাণগুলি থেকে প্রাপ্ত কিছু পরিমাণের প্রয়োজনীয় (পি) সাথে তুলনা করি । এটি ফলাফলের কোনও আনুষ্ঠানিক প্রমাণ নয়, আরও একটি করণীয় পরীক্ষা।

এছাড়াও, আমি জটিল অপারেশনগুলির একটি টাওয়ার দেখতে পাই ( প্রুফের মধ্যে এলিউর স্কিমের মধ্যে গতিশীল পদগুলির গণনা )। এবং "খারাপ অংশগুলি" সনাক্ত করতে এবং সেগুলি ঠিক করতে চাই।

আমি অনুমান করি যে হ্রাসযুক্ত নির্ভুলতার সাথে ভাসমান পয়েন্ট সংখ্যার একটি সফ্টওয়্যার বাস্তবায়ন ব্যবহার করে অঙ্কের স্কিমগুলির অস্থিরতা বাড়িয়ে তোলে, এইভাবে বিভিন্ন বাস্তবায়নের মধ্যে তুলনাকে সহজ করা যায়। এই প্রশ্নটি তদন্ত করার কোনও সাধারণ কৌশল? প্রোগ্রামটি পরিবর্তন না করে এটি অর্জনের জন্য কি বোচস হিসাবে ভার্চুয়াল মেশিন ব্যবহার করা সম্ভব?

স্থিতিশীলতার প্রশ্নের সাথে যথাযথভাবে মোকাবিলা করার জন্য, কখনও কখনও এটি সংখ্যার পদ্ধতির সাধারণ ইনপুটকে লক্ষ্য করে গ্রহণযোগ্য হয়, যাতে এটির ইনপুটটি ভালভাবে সম্পাদন করা যায় এবং অন্য বৈধ, তবুও অসম্ভাব্য, ইনপুটটিতে এটি আরও ভালভাবে করা যায়। সাধারণ ইনপুটগুলির নমুনা দেওয়া, কিছু মধ্যবর্তী ফলাফল স্নুপ করা এবং তাদের জন্য একটি পরিসংখ্যানের প্রোফাইল প্রস্তুত করা সম্ভব । আবার, স্থিতিশীলতার বিষয়গুলি অধ্যয়ন করার কি সাধারণ কৌশল? ভার্চুয়াল মেশিন কি এর জন্য দরকারী?



@ সিমন আপনি সঠিক হতে পারেন, তবে এটি অবশ্যই একটি ক্রস-ডোমেন প্রশ্ন। আমি অনুমান করি যে ব্যক্তিরা উত্তর দিতে সক্ষম হবেন তারা গণিত এবং প্রোগ্রামার উভয়ই বা নিখরচায় নিবন্ধিত… এই প্রশ্নের উত্তর এখানে পেলে কিছুটা অপেক্ষা করা যাক!
ব্যবহারকারী 40989

1
বিরতি গণিত?
এসকে-যুক্তি


2
রাষ্ট্রের প্রচারের জন্য অয়লারকে ব্যবহার করা অশুভ নয়; উভয়ই অপ্টিমাইজেশন নয়, তবে আপনাকে সমস্যাটিকে সাবটাস্কে ভাগ করতে হবে। সংখ্যার অস্থিরতা আপনার দুর্দশাগুলির মধ্যে সর্বনিম্ন হতে পারে - একটি মিথ্যা সর্বাধিক রূপান্তরকরণ এবং এর চেয়ে বড় ওডিইডি / পিডিই লুমসের কড়াকড়ি সম্পর্কিত সমস্যা। এবং হ্যাঁ, কখনও একক নির্ভুলতা ব্যবহার করবেন না :)
হরিণ হান্টার

উত্তর:


6

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

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

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


3

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

এনজে হিহাম। সংখ্যাগত অ্যালগরিদমের যথার্থতা এবং স্থায়িত্ব। সোসাইটি ফর ইন্ডাস্ট্রিয়াল অ্যান্ড ফলিত গণিত, ফিলাডেলফিয়া, পিএ, মার্কিন যুক্তরাষ্ট্র, দ্বিতীয় সংস্করণ, ২০০২। আইএসবিএন 0-89871-521-0

কী ধরণের গণনা, ভাষা ইত্যাদির বিষয়ে আরও না জানার কারণে অনেক বেশি সুনির্দিষ্ট উত্তর দেওয়া শক্ত হয়ে যায়। এখানে একটি ভাল বক্তৃতা রয়েছে: http://introcs.cs.princeton.edu/java/91float/ এটি সামান্য প্রাথমিক হতে পারে তবে আপনি জাভা ব্যবহার করছেন তবে এটি একটি ভাল ভূমিকা।


1

অস্থির ভাসমান পয়েন্ট গণনাগুলি কীভাবে চিহ্নিত করব? এই প্রশ্নটি তদন্ত করার কোনও সাধারণ কৌশল?

আমি মনে করি যদি ত্রুটি সম্পর্কে আপনাকে কিছু পরিসংখ্যান দেখানোর দরকার না হয়, আপনার সত্যিই নমুনা সংগ্রহ করার দরকার নেই। আপনার যা প্রয়োজন তা হ'ল সংখ্যাসঙ্গিক বিশ্লেষণ , যা সংখ্যার পদ্ধতিগুলি, সংখ্যাগত লিনিয়ার বীজগণিত ইত্যাদি বিষয়ের অধীনে আসে এবং সেগুলি কম্পিউটার বিজ্ঞানের অংশ, সুতরাং আপনি সিএস.স্ট্যাকেক্সেঞ্জেনে খুব উত্তর পেতে পারেন।

যাইহোক, সাধারণ প্রোগ্রামিংয়ে, বেশিরভাগ সমস্যাগুলি ভাসমান পয়েন্ট এবং বেসিক সংখ্যাগত পদ্ধতিগুলি কীভাবে কাজ করে সে সম্পর্কে কিছু প্রাথমিক ধারণা দেওয়া সহজ spot তবুও আরও জটিল সমস্যাটি 128-বিট ফ্লোটের প্রাপ্যতা সহ ত্রুটি নমুনা তৈরির কম কারণেই আজ সমাধান করা সহজ "সহজ"। আমার বক্তব্যটি দেখানোর জন্য এখানে কয়েকটি উদাহরণ সমস্যা রয়েছে:

  1. আর্থিক মান গণনা করার জন্য ভাসমান পয়েন্ট ব্যবহার করে।
  2. বড় সংখ্যার জন্য ভাসমান পয়েন্ট ব্যবহার করে।
  3. এটি করা সম্ভব হলে অন্যান্য ক্রিয়াকলাপগুলির আগে বিভাগগুলি না করা। (মান 0 এর কাছাকাছি করা)
  4. ত্রুটি প্রচারের জন্য বিশেষ চিকিত্সা ছাড়াই দীর্ঘ গণনা।

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


আপনার উত্তরের জন্য আপনাকে ধন্যবাদ, আমি তবে আরও বিস্তারিত তথ্য খুঁজছি। আমার একটি খুব বড় গণনা আছে এবং এর দুর্বল অংশগুলি সনাক্ত করতে চাই। আমি সেই অনুসারে প্রশ্নটি সম্পাদনা করেছি।
ব্যবহারকারী 40989

যখন আপনি বলছেন যে আপনার কাছে বড় গণনা রয়েছে এবং দুর্বল অংশগুলি সনাক্ত করতে চান তখন আপনার পরিস্থিতিটি কী তা আমি ঠিক নিশ্চিত নই। সংখ্যার গণনাগুলিতে সহজাতভাবে ত্রুটি থাকে, এমনকি একটি সাধারণ অ্যাড অপারেশন। সুতরাং, যদি না আপনার বৃহত গণনা ত্রুটির ক্ষতিপূরণ না হয় তবে এগুলি সম্পূর্ণরূপে ঠিক করা দরকার। দুর্বল দাগগুলি উন্নত করা যথেষ্ট ভাল নাও হতে পারে। আপনি যদি এখন আপনার ভাসমান পয়েন্ট মডেলের "এপসিলন" হন তবে একটি সাধারণ বিশ্লেষণ দেখায় যে তারা দীর্ঘ গণনার মাধ্যমে প্রচার করতে গিয়ে ত্রুটিটি কত বড় হতে পারে।
imel96

0

আপনি উপযুক্ত ডেটা ধরণের (যেমন উদাহরণস্বরূপ, অবিরত ভগ্নাংশ) ব্যবহার করে সংখ্যাসূচক ত্রুটিগুলি এড়াতে পারবেন can আপনার যদি প্রয়োজন হয় বা ফ্লোটিং পয়েন্ট গাণিতিক ব্যবহার করতে চান তবে আপনার ত্রুটিগুলি জানার জন্য সংখ্যাগত জ্ঞাত-পদ্ধতি প্রয়োগ করতে হবে।


আমি সংখ্যাসূচক ত্রুটিগুলি এড়াতে চাই না, আমি গণনাটির কোন অংশটি অস্থির তা খুঁজে পেতে চাই। গতির জন্য অনুকূলকরণ করার সময় এটি স্থানীয়করণের গতির বাধাগুলির মতো similar সুতরাং আমি নির্ভুলতা অনুকূল করতে চাই এবং সেইজন্য নির্ভুলতার বাধা খুঁজে পেতে চাই। (অবিরত ভগ্নাংশগুলি এখানে কার্যকর নয়))
ব্যবহারকার 40989

1
@ ব্যবহারকারী 40989, তারপরে অবশ্যই আপনার অবশ্যই বিরতি গণিতের প্রয়োজন।
এসকে-যুক্তি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.