নিউটনের পদ্ধতিটি কেন রূপান্তর হচ্ছে না?


22

আমি আংশিক ডিফারেনশিয়াল সমীকরণকে বিবেচনা করে প্রাপ্ত ননলাইন সমীকরণের একটি সিস্টেম সমাধান করার জন্য পিইটিএসসি'র ননলাইনার সলভার প্যাকেজ এসএনইএস ব্যবহার করছি । আমি কীভাবে নির্ধারণ করতে পারি যে সলভার কেন রূপান্তর করছে না এবং আমার সমীকরণগুলি সফলভাবে সমাধান করতে আমি কী করতে পারি?


8
যেকোন পুনরুক্তি পদ্ধতির মতো এটিও সর্বজনীন যে নিউটন-রাফসন পদ্ধতি শুরু করার জন্য একটি ভাল বীজ নিয়ে আসে। একটি দুর্বল সূচনা পয়েন্ট প্রায়শই বিশৃঙ্খলা সৃষ্টি করে।
জেএম

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

5
আমি ননটেকনিক্যাল অর্থে "বিশৃঙ্খলা" বলতে চাইছিলাম, @ ম্যাট; উদাহরণস্বরূপ, অনন্তের দিকে বিচ্যুতি, বা চক্রীয় আচরণ। "বিপর্যয়" শব্দগুলির একটি ভাল পছন্দ হতে পারে?
জেএম

উত্তর:


43

নিউটনের পদ্ধতিটি অনেক কারণে একসাথে রূপান্তর করতে পারে না, এখানে কয়েকটি সাধারণ।

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

নিউটনের একীকরণের অভাবকে ডিবাগ করতে সহায়তা করার কয়েকটি উপায় এখানে রইল।

  • অপশন দিয়ে চালান -snes_monitor -ksp_monitor_true_residual -snes_converged_reason -ksp_converged_reason। লিনিয়ার সলিউশন যদি রূপান্তর না করে তবে জ্যাকবিয়ান সঠিক কিনা তা পরীক্ষা করে দেখুন, তাহলে এই প্রশ্নটি দেখুন । পূর্বশর্তীকৃত অবশিষ্টাংশগুলি যদি রূপান্তর করে তবে সত্যিকারের অবশিষ্টাংশগুলি তা না করে, পূর্বশর্তটি একক হতে পারে। লিনিয়ার সলিউশনটি যদি ভালভাবে রূপান্তর করে তবে লাইন অনুসন্ধান ব্যর্থ হয়, জ্যাকবিয়ান ভুল হতে পারে।
  • সঙ্গে চালান -pc_type lu or -pc_type svdসমস্যাটি একটি দরিদ্র লিনিয়ার সল্ভার কিনা দেখতে
  • দিয়ে চালানো -mat_viewবা -mat_view_drawযদি Jacobian যুক্তিসঙ্গত মনে হচ্ছে দেখতে
  • সঙ্গে চালান -snes_type test -snes_test_displayযদি Jacobian আপনি ব্যবহার করছেন ভুল দেখতে। -mat_fd_type dsফলাফলটি পৃথক প্যারামিটারের নির্বাচনের ক্ষেত্রে সংবেদনশীল কিনা তা দেখার জন্য যুক্ত করার পরে আউটপুটটির তুলনা করুন ।
  • সঙ্গে চালান -snes_mf_operator -pc_type luযদি Jacobian আপনি ব্যবহার করছেন ভুল দেখতে। সরাসরি সমাধানের জন্য সমস্যাটি যদি খুব বড় হয় তবে চেষ্টা করুন -snes_mf_operator -pc_type ksp -ksp_ksp_rtol 1e-12-mat_mffd_type dsফলাফলটি পৃথক প্যারামিটারের নির্বাচনের ক্ষেত্রে সংবেদনশীল কিনা তা দেখার জন্য যুক্ত করার পরে আউটপুটটির তুলনা করুন ।
  • সমস্যাটি কেবল সমান্তরালে আছে কিনা তা দেখার জন্য একটি প্রসেসরে চালান।
  • সঙ্গে চালান -snes_ls_monitorযদি লাইন অনুসন্ধান ব্যর্থ হচ্ছে দেখতে (এই সাধারণত একটি খারাপ Jacobian লক্ষণ)।
  • -infoসমাধান প্রক্রিয়া সম্পর্কে আরও বিস্তারিত তথ্য পেতে চালনা করুন।

উপরের সমস্ত কিছু যদি চেক হয়ে যায় তবে নিউটন প্রক্রিয়াটিকে সহায়তা করার জন্য এখানে কিছু উপায় রয়েছে

  • আপনার সূক্ষ্ম জাল সম্পর্কে আরও ভাল প্রাথমিক অনুমান -snes_grid_sequenceকরার জন্য গ্রিড সিকোয়েন্সিংয়ের সাথে চালান ( একটি সাথে কাজ করা হলে আপনার প্রয়োজন কেবল DM)
  • কোয়াড নির্ভুলতার সাথে চালান ( ./configure --with-precision=__float128 --download-f2cblaslapackপিইটিএসসি ৩.২ এবং তারপরে, সংস্করণ ৪.6 বা তার পরে জিএনইউ সংকলক প্রয়োজন)
  • ইউনিটগুলি (ননডিমেনশনালাইজেশন), সীমানা শর্তের স্কেলিং বা সূত্রগুলি পরিবর্তন করুন যাতে জ্যাকবীয়ান আরও ভাল কন্ডিশড থাকে।
  • অবিচ্ছিন্ন প্রথম ডেরাইভেটিভস নেই এমন ফাংশনটিতে বৈশিষ্ট্যগুলি মলাইফাই করুন (প্রায়শই ঘটে যখন ifঅবশিষ্টাংশের মূল্যায়নে বিবৃতি দেওয়া হয়, যেমন পর্যায় পরিবর্তন বা টিভিডি সীমাবদ্ধ)। যদি বিচ্ছিন্নতাগুলির মৌলিক গুরুত্ব থাকে তবে একটি বৈকল্পিক বৈষম্য সমাধানকারী ( SNESVINEWTONRSLS ) ব্যবহার করুন ।
  • একটি বিশ্বাস অঞ্চল পদ্ধতি চেষ্টা করুন ( -ts_type tr, প্যারামিটারগুলি সামঞ্জস্য করতে হতে পারে)।
  • আপনি যে সমাধানটি জানেন সেখান থেকে কিছু ধারাবাহিকতা প্যারামিটার দিয়ে চালান, অবিচলিত-রাষ্ট্রীয় সমস্যাগুলি সমাধান করার জন্য টিএসপিএসইউডো দেখুন । পিএইচসিপ্যাকের মতো হোমোপিপি সলভার প্যাকেজ রয়েছে যা আপনাকে সমস্ত সম্ভাব্য সমাধান পেতে পারে (এবং আপনাকে বলবে যে এটি সবগুলি খুঁজে পেয়েছে) তবে সেগুলি পরিমাপযোগ্য নয় এবং ছোট সমস্যাগুলি ছাড়া আর কিছু সমাধান করতে পারে না।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.