সম্প্রতি আমি স্কিপি থেকে বিভিন্ন অ-লিনিয়ার সলভারগুলির সাথে তুলনা করছি এবং বিশেষত স্কিপি কুকবুকের নিউটন-ক্রিলোভ উদাহরণ দিয়ে মুগ্ধ হয়েছি যেখানে তারা প্রায় 20 লাইনের কোডে অ-রৈখিক প্রতিক্রিয়া শব্দটির সাথে একটি দ্বিতীয় ক্রম ডিফারেনশিয়াল সমীকরণের সমাধান করে।
আমি অর্ধপরিবাহী হিটারোস্ট্রাকচারের জন্য অ-রৈখিক পোইসন সমীকরণ ( যাকে পইসন-বোল্টজম্যান সমীকরণও বলা হয় , এই নোটগুলির পৃষ্ঠা 17 দেখুন) সমাধান করার জন্য উদাহরণ কোডটি সংশোধন করেছি , যার রূপ রয়েছে,
(এটি সেই অবশিষ্টাংশ যা সলভারকে দেওয়া হয়))
এটি একটি ইলেক্ট্রোস্ট্যাটিক্স সমস্যা যেখানে এবং পি ( এক্স , ϕ ) এন আই ( এক্স ) ই - ( ই আই ( এক্স , ϕ ) - ই চ ) ফর্মের জন্য ননলাইনী ফাংশন । এখানে বিশদটি গুরুত্বপূর্ণ নয়, তবে মূল কথাটি হ'ল অ-রৈখিক ক্রিয়াকলাপটি তাত্পর্যপূর্ণভাবে পরিবর্তিত হয় ϕ সুতরাং অবশিষ্টাংশগুলি একটি বিশাল পরিসরে পরিবর্তিত হতে পারে ( 10 - 6 - 10 16 )সামান্য পরিবর্তনের সঙ্গে ।
আমি এই সমীকরণটিকে স্কিপি-র নিউটন-ক্রিলোভের সাথে সংখ্যায়িতভাবে সমাধান করি, তবে এটি কখনই রূপান্তরিত হবে না (বাস্তবে এটি জ্যাকবীয়দের গণনা করে সর্বদা একটি ত্রুটি হিসাবে রিপোর্ট করবে)। আমি নিউটন-ক্রিলোভ সলভার থেকে fsolve (যা MINPACK হাইবার্ডের উপর ভিত্তি করে) এ চলেছি এবং এটি প্রথমবার কাজ করেছিল!
নিউটন-ক্রিলোভ কিছু সমস্যার পক্ষে উপযুক্ত নয় এমন সাধারণ কারণ রয়েছে কি? ইনপুট সমীকরণগুলি কি কোনওভাবে কন্ডিশনার করা দরকার?
মন্তব্য করার জন্য আরও তথ্যের প্রয়োজন হতে পারে তবে fsolve কেন এই ক্ষেত্রে কাজ করেছে বলে আপনি মনে করেন?
sol = newton_krylov(func, guess, method='gmres')
) পদ্ধতি পরিবর্তন করে সমস্যাটি স্থির করা হয়েছে। কেন ঠিক তা নিশ্চিত নয়, তবে এই সমস্যা সহ অন্য যে কেউ একই কাজটি বিবেচনা করতে পারে।