2D ফাংশনটি অভিযোজিতভাবে নমুনার জন্য কোন সহজ পদ্ধতি রয়েছে?


22

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

এটি করার জন্য কোন ভাল পদ্ধতি রয়েছে?

আমার এতদিন যা আছে

  • আমি বিদ্যমান পয়েন্টগুলির একটি সেট থেকে শুরু করি যেখানে আমি ইতিমধ্যে ফাংশন মানটি গণনা করেছি (এটি পয়েন্ট বা অন্য কোনও কিছুর বর্গক্ষেত্র হতে পারে)।

  • তারপরে আমি এই পয়েন্টগুলির একটি ডেলাউন ট্রাইঙ্গুলেশন গণনা করি।

  • ডেলাউন ট্রায়াঙ্গুলেশনের দুটি প্রতিবেশী পয়েন্ট যদি যথেষ্ট পরিমাণে ( ) হয় এবং ফাংশনের মান তাদের ( > Δ ) এর মধ্যে যথেষ্ট পরিমাণে পৃথক হয় , তবে আমি তাদের মধ্যবর্তী স্থানে একটি নতুন পয়েন্ট sertোকাব। আমি প্রতি প্রতিবেশী পয়েন্ট-জুটির জন্য এটি করি।>Δএক্স>Δ

এই পদ্ধতিতে কী ভুল?

ঠিক আছে, এটি তুলনামূলকভাবে ভাল কাজ করে, তবে এটির মতো একই ক্রিয়াকলাপগুলিতে এটি আদর্শ নয় কারণ নমুনা পয়েন্টগুলি রিজটিকে "ওভার লাফিয়ে" ঝোঁক দেয় এবং এটি সেখানেও লক্ষ্য করে না।

গণিত গ্রাফিক্স

এটি এর জাতীয় ফলাফল তৈরি করে (যদি প্রাথমিক পয়েন্ট গ্রিডের রেজোলিউশন পর্যাপ্ত রুক্ষ হয়):

গণিত গ্রাফিক্স

উপরের এই প্লটটি ফাংশনটির মান গণনা করা হয় এমন পয়েন্টগুলি দেখায় (আসলে তাদের চারপাশে ভোরোনাই কোষ)।

গণিত গ্রাফিক্স

উপরের এই প্লটটি একই পয়েন্টগুলি থেকে উত্পন্ন লিনিয়ার অন্তরঙ্গকরণ দেখায় এবং এটি ম্যাথমেটিকার অন্তর্নির্মিত নমুনা পদ্ধতির সাথে তুলনা করে (প্রায় একই শুরুর রেজোলিউশনের জন্য)।

কীভাবে এটি উন্নত করা যায়?

আমি মনে করি যে এখানে মূল সমস্যাটি হল আমার পদ্ধতিটি সিদ্ধান্ত নিয়েছে যে কোনও পরিশোধন বিন্দু যুক্ত করা যায় বা গ্রেডিয়েন্টের ভিত্তিতে নয়।

পরিশোধক পয়েন্ট যুক্ত করার সময় বক্রতা বা কমপক্ষে দ্বিতীয় ডেরাইভেটিভকে বিবেচনায় নেওয়া ভাল।

প্রশ্ন

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

বা সর্বোত্তম উপায়ে পরিশোধন পয়েন্টের অবস্থান গণনা করার অন্যান্য কোন সহজ উপায় আছে?

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

আমি কী ব্যবহারিক সমস্যায় এটি প্রয়োগ করছি

আমি একটি ফেজ ডায়াগ্রাম গণনা করছি। এটি একটি জটিল আকার আছে। একটি অঞ্চলে এর মান 0, অন্য অঞ্চলে এটি 0 এবং 1 এর মধ্যে রয়েছে regions দুটি অঞ্চলের মধ্যে তীক্ষ্ণ লাফ রয়েছে (এটি বিচ্ছিন্ন)) যে অঞ্চলে ফাংশনটি শূন্যের চেয়ে বেশি, সেখানে কিছু মসৃণ প্রকরণ এবং কিছুটা বিচ্ছিন্নতা রয়েছে।

মন্টি কার্লো সিমুলেশনের উপর ভিত্তি করে ফাংশনটির মান গণনা করা হয়, তাই মাঝে মাঝে একটি ভুল ফাংশন মান বা শব্দের প্রত্যাশা করা হয় (এটি খুব বিরল, তবে প্রচুর পয়েন্টের ক্ষেত্রে এটি ঘটে থাকে, যেমন স্থির অবস্থার কারণে যখন পৌঁছানো হয় না) কিছু এলোমেলো ফ্যাক্টর)

আমি এটি ইতিমধ্যে গণিত.এসইতে জিজ্ঞাসা করেছি তবে আমি এটির সাথে লিঙ্ক করতে পারি না কারণ এটি এখনও ব্যক্তিগত বিটাতে রয়েছে। এখানে এই প্রশ্নটি পদ্ধতি সম্পর্কে, বাস্তবায়ন নয়।


@ সুকিকে উত্তর দিন

এটি কি আপনার প্রস্তাবিত বিভাগের ধরণ, অর্থাৎ ত্রিভুজগুলির মাঝখানে একটি নতুন পয়েন্ট রেখে দেওয়া?

গণিত গ্রাফিক্স গণিত গ্রাফিক্স গণিত গ্রাফিক্স গণিত গ্রাফিক্স

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

হালনাগাদ

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

এখানে দুটি উদাহরণ দেওয়া হল:

ex1 ex2

সরল বিচ্ছিন্নতার আশেপাশে নমুনা দেওয়ার সময় প্রথমটি শেষ ফলাফলটি দেখায়। দ্বিতীয়টি একই ধরণের ক্ষেত্রে স্যাম্পলিং পয়েন্ট বিতরণ দেখায়।

এটি এড়াতে কোন সহজ উপায় আছে? বর্তমানে আমি eg দস্তাবেজগুলি কেবল একটি পুনরুক্তির পরে অদৃশ্য হয়ে যাওয়াগুলিকেই বিভক্ত করছি, তবে এটি হ্যাকের মতো অনুভূত হয় এবং প্রতিসাম্যযুক্ত জালের ক্ষেত্রে যেমন একটি স্কোয়ার গ্রিডের মতো রয়েছে সেখানে বেশ কয়েকটি বৈধ ডেলাউন ত্রিভুজ রয়েছে, সুতরাং প্রান্তগুলি পরিবর্তন হতে পারে এলোমেলোভাবে retriangulation পরে।


এই ইস্যুতে কোন নতুন অগ্রগতি আছে?
আন্দ্রে

উত্তর:


10

আমি কিছুক্ষন আগে এর অনুরূপ একটি সমস্যায় কাজ করেছি।

আমি মনে করি আমাদের বাস্তবায়নের মধ্যে প্রধান পার্থক্য হ'ল আমি বেছে নিচ্ছিলাম যেখানে ত্রিভুজগুলির উপর ভিত্তি করে পয়েন্ট যুক্ত করব, কিনারা নয়। আমি প্রান্তগুলির পরিবর্তে ত্রিভুজগুলির ভিতরে নতুন পয়েন্টগুলিও চয়ন করি।

আমার অনুভূতি আছে যে ত্রিভুজগুলির ভিতরে পয়েন্টগুলি যুক্ত করা পুরানো পয়েন্টগুলি থেকে নতুন একটিতে দূরত্বের গড় দূরত্বকে সামান্য বৃদ্ধি দিয়ে এটি আরও দক্ষ করে তুলবে।

যাইহোক, প্রান্তগুলির পরিবর্তে ত্রিভুজগুলি ব্যবহার করার বিষয়ে আর একটি সুন্দর জিনিস হ'ল এটি নির্দিষ্ট প্রান্তের সাথে theালের পরিবর্তে গ্রেডিয়েন্ট ভেক্টরটির একটি অনুমান দেয়।

আমার মাতলাব কোডে আমি কয়েকটি বিমূর্ত পদ্ধতি সহ বেশিরভাগ যন্ত্রপাতি যত্ন নিতে একটি বেস ক্লাস ব্যবহার করেছি:

  • weight(self) অগ্রাধিকার সিদ্ধান্ত নিয়েছে যার ত্রিভুজগুলি পরবর্তী উপ-বিভাগে to
  • choosePoints(self,npoints = "auto") প্রতিটি ত্রিভুজটির ওজনের উপর ভিত্তি করে মূল্যায়ন করার জন্য নতুন পয়েন্টগুলি স্থির করতে।

আমি এই সেটআপটি খুব নমনীয় পেয়েছি:

  • weight()ত্রিভুজের অঞ্চলে একটি উপ-শ্রেণীর ফাংশন সেট করা একটি ধ্রুবক জাল ঘনত্ব উত্পাদন করে।
  • weight()ত্রিভুজের ক্ষেত্রফলের গড় ফাংশন মানের বার গণনা করতে সেটিংটি অর্ধ-এলোমেলো সম্ভাবনার নমুনা দেয়।
  • ব্যবহার var(triangle.zs)করতে পারে ফাংশন বাইনারি আউটপুট আছে, আমি কি অনুভব 1 এর অধিক মাত্রা করার জন্য একটি দ্বিখণ্ডন অনুসন্ধান একটি সাধারণীকরণ হয়।
  • ব্যবহার area + var(triangle.zs)সর্বত্র একটি ধ্রুবক ঘনত্ব স্থাপনে বেশ কার্যকর ছিল, এবং কোনও opeালু বর্ধমান ঘনত্ব (আপনার কাছে এখন যা আছে প্রায়)।

আমি প্রথম মান অর্ডারের প্রভাবগুলির (slাল) গুরুত্বের অনুমানের জন্য z মানগুলির বৈচিত্রটি ব্যবহার করেছি কারণ ভেরিয়েন্সটি theালের কানের মতো অনন্ততায় যাবে না।

শেষ উদাহরণের জন্য ব্যাকগ্রাউন্ডের ঘনত্ব ভাল ছিল কারণ আমি কম মূল্যের স্থানে উচ্চ মানের বিচ্ছিন্ন ব্লবগুলি অনুসন্ধান করছিলাম। সুতরাং এটি ধীরে ধীরে পুরো জালটি পূরণ করবে এবং যখন এটি একটি ফোড়া আবিষ্কার করবে এটি ব্লাডের প্রান্তটি পুরো পথটি ঘিরে রাখবে কারণ আমি উচ্চতর ওজনকে gradালুতে রেখেছি (এবং এটি কেবল শীর্ষ nত্রিভুজগুলিতে ভরাট হয়েছে) প্রতিটি পুনরাবৃত্তির উপর)। শেষে আমি জানতে পারি ফলাফলের ব্যাকগ্রাউন্ড জাল ঘনত্বের চেয়ে বড় আকারের কোনও (যুক্তিসঙ্গত আকারের) ব্লব (বা আমার ব্লবগুলিতে ছিদ্র) নেই।

আপনার মত আমিও আমার ফলাফলগুলিতে কিছু খারাপ পয়েন্ট পেয়েছি, সেগুলি আমার পক্ষে সমস্যা ছিল না কারণ ত্রুটিটি এমন ছিল যে আপনি যদি কাছের পয়েন্টগুলিতে পুনরায় দৌড়ান তবে তারা সম্ভবত সঠিক উত্তর দেবে। আমি আমার খারাপ পয়েন্টগুলির চারপাশে বর্ধিত জাল ঘনত্বের ব্লিপগুলি দিয়ে শেষ করব।

আপনি যাই করুন না কেন আমি সর্বদা ত্রিভুজ আকারের সাথে সম্পর্কিত ওজনগুলি তৈরি করার পরামর্শ দিই, যাতে সমস্ত কিছু সমান হয়, বড় ত্রিভুজগুলি প্রথমে ভেঙে যায়।

আপনার জন্য একটি সমাধান হ'ল আমার পদ্ধতির আরও একধাপ এগিয়ে নিয়ে যাওয়া এবং সেই ত্রিভুজাকার ঘরের সামগ্রীর উপর ভিত্তি করে ত্রিভুজগুলির মূল্যায়ন না করে one ও তিনটি সংলগ্ন ত্রিভুজগুলির ভিত্তিতে মূল্যায়ন করুন।

এতে সম্পূর্ণ হেসিয়ান ম্যাট্রিক্সের একটি অনুমান পেতে পর্যাপ্ত তথ্য থাকবে। আপনি z = c1*x + C2*y c11*x^2+c12*x*y+c22*y^2আগ্রহের ত্রিভুজগুলিতে (সমস্ত ত্রিভুজের স্থানাঙ্ক ব্যবস্থাটি প্রথমে কেন্দ্র করে) কমপক্ষে সমস্ত স্কোয়ার্সের উপরে ফিট করে এটি পেতে পারেন ।

আমি গ্রেডিয়েন্ট বা হেসিয়ান (const ধ্রুবকগুলি) সরাসরি ব্যবহার করব না কারণ তারা বিরতিতে অনন্ততায় যাবে।

এই পয়েন্টগুলির পরিকল্পনাকারী প্রাক্কলনের তুলনায় z মানগুলির সমষ্টি-বর্গ-ত্রুটি দ্বিতীয় ক্রমের প্রভাবগুলি কতটা আকর্ষণীয় তা কার্যকর উপকরণ হতে পারে।


আপডেট করা হয়েছে:

এটা আমার কাছে যুক্তিসঙ্গত মনে হচ্ছে।

আমি কখনই প্রান্তগুলি বিশেষ কেসিংয়ের কাছাকাছি পাইনি। এটি আমাকে একটু বিরক্ত করেছিল তবে আমি যা করছি তার জন্য, এটি কেবল প্রান্তগুলির চারপাশে প্রচুর পয়েন্ট দিয়ে শুরু করার জন্য যথেষ্ট ছিল।

আরও মার্জিত হ'ল আমাদের দুটি পন্থা, ওজনযুক্ত প্রান্ত এবং ত্রিভুজ একত্রিত করা। তারপরে যদি কোন প্রান্তটি দীর্ঘ হয় তবে এটি অর্ধেক করে কেটে দিন ... আমি যেভাবে ধারণাটি উচ্চ মাত্রায় সাধারণীকরণ করেছি তা পছন্দ করি (তবে সংখ্যাগুলি দ্রুততর হয়) ...

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

একটি জিনিস যার জন্য আমি কখনই একটি ভাল সমাধান পাইনি তা হ'ল আমার সংস্করণটি কখনই প্রাথমিক বিন্দু সেটটির উত্তল হলের বাইরে অন্বেষণ করতে পারে না।


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

আপনি কি আমার সম্পাদনাটি দেখতে এবং স্পষ্ট করতে পারেন?
কাজ Szabolcs

এটিতে দেখা যাচ্ছে যে বিশেষ প্রচ্ছদগুলি প্রান্তগুলি অনিবার্য what আমার ক্ষেত্রে আমার প্রান্তটি একটি উচ্চতর গ্রেডিয়েন্ট লম্ব আছে, তবে এটির সাথে সমান্তরাল নয়, যা বিষয়গুলিকে অকার্যকর করে তুলছিল যদি আমি বিশেষ ক্ষেত্রে প্রান্তগুলি না করি।
Szabolcs

আমি আর একটি সমস্যা খুঁজে পেলাম যে পুনরায় ত্রিভুজির ফলে মাঝে মাঝে বড় ত্রিভুজ দেখা দেয় যেখানে অনুভূমিকাগুলির বিভিন্ন ফাংশনের মান থাকে। আমি এই জাতীয় জিনিসগুলি দিয়ে শেষ করেছি: i.stack.imgur.com/nRPwi.png হ'ল লিনিয়ার ইন্টারপোল্টেড ডেনসিটি প্লট এবং i.stack.imgur.com/208bP.png স্যাম্পলিং পয়েন্টগুলি (একেবারে একই নয়)। এটি একটি সোজা প্রান্ত বরাবর কেবল একটি বিরতি। আপনি কি এই সমস্যাটি আঘাত করেছেন? যদি হ্যাঁ, আপনি এটি সমাধান কিভাবে? আপনি কি প্রতিটি মহকুমা পদক্ষেপের পরে সম্পূর্ণরূপে retriangulate করেছেন?
Szabolcs

আমি নিশ্চিত নই যে এখানে ত্রিভুজাকরণটির অর্থ কিছু আছে। আপনি যে প্রতিটি পয়েন্টটি মূল্যায়ন করেছেন তা হল একটি বিন্দুতে ফাংশনের মান, তাই তারা জাল-মুক্ত পদ্ধতিতে ব্যবহার করার মতো কিছু করবেন না কেন? en.wikipedia.org/wiki/Smoothed-particle_hydrodynamics এছাড়াও আপনি ডেরাইভেটিভস এই ভাবে অনুমান করতে পারেন ...
meawoppl

0

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

একটি দ্রুত ফিক্স হ'ল চারটি পয়েন্টের সেটগুলি বিবেচনা করে তাদের মাধ্যাকর্ষণ কেন্দ্র গ্রহণ করা এবং আনুমানিক | dfdx | + | ডিএফডি | এই চারটি পয়েন্ট ব্যবহার করে। অন্য বিকল্পটি হ'ল তিনটি পয়েন্ট (অর্থাত্ একটি ত্রিভুজ) নেওয়া এবং তাদের উপরে পৃষ্ঠের সর্বাধিক গ্রেডিয়েন্ট নেওয়া।

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