ইন আমার উত্তর একটি থেকে MSE প্রশ্ন একটি 2 ডি হ্যামিল্টনিয়ান পদার্থবিদ্যা সিমুলেশন সংক্রান্ত, আমি একটি উচ্চ-অর্ডার ব্যবহার পরামর্শ দিয়েছেন symplectic একত্রকারী ।
তারপরে আমি ভেবেছিলাম যে বিভিন্ন অর্ডার সহ পদ্ধতিগুলির গ্লোবাল নির্ভুলতার উপর বিভিন্ন সময়ের পদক্ষেপের প্রভাবগুলি প্রদর্শন করা ভাল ধারণা হতে পারে এবং আমি সেজন্য একটি পাইথন / পাইলাব স্ক্রিপ্ট লিখেছি এবং পরিচালনা করেছি। তুলনার জন্য আমি বেছে নিয়েছি:
- ( Leap2 ) উইকিপিডিয়ার 2nd-অর্ডার উদাহরণ যা দিয়ে আমি পরিচিত নই যদিও আমি নামের অধীনে এটা জানা পৃষ্ঠলম্ফ ,
- ( ruth3 ) রূতের তৃতীয়-অর্ডার সিম্প্লেটিক ইন্টিগ্রেটার ,
- ( ruth4 ) রূথের ৪ র্থ অর্ডার সিম্পিলিক ইন্টিগ্রেটার ।
আশ্চর্যের বিষয়টি হ'ল, আমি যে টাইমস্টেপটিই বেছে নিই না কেন, রুথের 3 য়-অর্ডার পদ্ধতিটি আমার পরীক্ষায় রুথের 4 র্থ-ক্রম পদ্ধতির চেয়েও যথাযথ বলে মনে হয়েছে, এমনকি একটি মাত্রার অর্ডার দিয়েও।
আমার প্রশ্ন তাই: আমি এখানে কি ভুল করছি? নিচে বিস্তারিত.
পদ্ধতিগুলি পৃথক পৃথক হ্যামিলটোনীয়দের সাথে সিস্টেমে তাদের শক্তি উদ্ঘাটন করে , অর্থাৎ যেগুলি হিসাবে লেখা যেতে পারে
যেখানে সমস্ত অবস্থানের সমন্বয়কে সমন্বিত করে,
সংঘবদ্ধ মুহূর্তকে সমন্বিত করে, গতিগতকে
প্রতিনিধিত্ব করে শক্তি এবং সম্ভাব্য শক্তি।
আমাদের সেটআপে, জনসাধারণ প্রয়োগ করে তাদের দ্বারা আমরা বাহিনী এবং মুহুর্তগুলিকে স্বাভাবিক করতে পারি। সুতরাং বাহিনী ত্বরণে পরিণত হয়, এবং গতিবেগ বেগতে পরিণত হয়।
লক্ষণীয় ইন্টিগ্রেটারগুলি বিশেষ (প্রদত্ত, ধ্রুবক) সহগ সহ আসে যা আমি এবং । ঐ কোফিসিয়েন্টস সঙ্গে, সময় সিস্টেম নব্য জন্য এক ধাপ সময় ফর্ম নেয়
জন্য :
- কম্পিউট ভেক্টর সব accelerations এর দেওয়া ভেক্টর সব পজিশনের
- দ্বারা সমস্ত ভেক্টর পরিবর্তন করুন
- all দ্বারা সমস্ত পজিশনের ভেক্টর পরিবর্তন করুন
বুদ্ধি এখন সহগের মধ্যে রয়েছে। এগুলি
পরীক্ষার জন্য, আমি 1 ডি প্রাথমিক মান সমস্যা y ″ + y বেছে নিয়েছি
আমি এবং মধ্যে কোথাও বেছে নেওয়া একটি পূর্ণসংখ্যা সহ i of এর ধাপের সাথে উপরের পদ্ধতির সাথে আইভিপি সংহত করেছি । অ্যাকাউন্টে লিফ 2 এর গতি গ্রহণ করে আমি সেই পদ্ধতির জন্য তিনগুণ বাড়িয়েছি । আমি তখন পর্যায় স্থানের ফলাফলের বক্ররেখার প্লট করেছি এবং এ জুম করেছিলাম যেখানে বক্ররেখাগুলি আদর্শভাবে আবার পৌঁছাতে হবে ।এন(1,0)টি=2π
এবং জন্য প্লট এবং জুম রয়েছে :
জন্য , leap2 পদক্ষেপ আকার সঙ্গে চেয়ে বাড়ির কাছাকাছি পৌঁছা ঘটবে ruth4 পদক্ষেপ আকার সঙ্গে । জন্য , ruth4 উপর জয়ী leap2 । তবে, ruth4 হিসাবে একই ধাপের আকারের সাথে , roth3 , এখনও অবধি যে সমস্ত সেটিংসে আমি পরীক্ষা করেছি সেগুলিতে , অন্য উভয়ের তুলনায় বাড়ির খুব কাছাকাছি পৌঁছে।2 π 2π
পাইথন / পাইলাব লিপিটি এখানে:
import numpy as np
import matplotlib.pyplot as plt
def symplectic_integrate_step(qvt0, accel, dt, coeffs):
q,v,t = qvt0
for ai,bi in coeffs.T:
v += bi * accel(q,v,t) * dt
q += ai * v * dt
t += ai * dt
return q,v,t
def symplectic_integrate(qvt0, accel, t, coeffs):
q = np.empty_like(t)
v = np.empty_like(t)
qvt = qvt0
q[0] = qvt[0]
v[0] = qvt[1]
for i in xrange(1, len(t)):
qvt = symplectic_integrate_step(qvt, accel, t[i]-t[i-1], coeffs)
q[i] = qvt[0]
v[i] = qvt[1]
return q,v
c = np.math.pow(2.0, 1.0/3.0)
ruth4 = np.array([[0.5, 0.5*(1.0-c), 0.5*(1.0-c), 0.5],
[0.0, 1.0, -c, 1.0]]) / (2.0 - c)
ruth3 = np.array([[2.0/3.0, -2.0/3.0, 1.0], [7.0/24.0, 0.75, -1.0/24.0]])
leap2 = np.array([[0.5, 0.5], [0.0, 1.0]])
accel = lambda q,v,t: -q
qvt0 = (1.0, 0.0, 0.0)
tmax = 2.0 * np.math.pi
N = 36
fig, ax = plt.subplots(1, figsize=(6, 6))
ax.axis([-1.3, 1.3, -1.3, 1.3])
ax.set_aspect('equal')
ax.set_title(r"Phase plot $(y(t),y'(t))$")
ax.grid(True)
t = np.linspace(0.0, tmax, 3*N+1)
q,v = symplectic_integrate(qvt0, accel, t, leap2)
ax.plot(q, v, label='leap2 (%d steps)' % (3*N), color='black')
t = np.linspace(0.0, tmax, N+1)
q,v = symplectic_integrate(qvt0, accel, t, ruth3)
ax.plot(q, v, label='ruth3 (%d steps)' % N, color='red')
q,v = symplectic_integrate(qvt0, accel, t, ruth4)
ax.plot(q, v, label='ruth4 (%d steps)' % N, color='blue')
ax.legend(loc='center')
fig.show()
আমি ইতিমধ্যে সাধারণ ত্রুটিগুলি পরীক্ষা করে দেখেছি:
- কোনও উইকিপিডিয়া টাইপ নেই। আমি উল্লেখগুলি বিশেষভাবে ( 1 , 2 , 3 ) যাচাই করেছি ।
- আমি সহগ ক্রম ঠিক পেয়েছি। আপনি যদি উইকিপিডিয়ায় আদেশের সাথে তুলনা করেন তবে নোট করুন যে অপারেটর প্রয়োগের ক্রমটি ডান থেকে বামে কাজ করে। আমার নম্বরটি ক্যান্ডি / রোজমাসের সাথে একমত হয় । এবং তবুও যদি আমি অন্য অর্ডার দেওয়ার চেষ্টা করি তবে ফলাফল আরও খারাপ হয়।
আমার সন্দেহ:
- ভুল ধাপের ক্রম: সম্ভবত রুথের তৃতীয়-আদেশের স্কিমটি আরও কিছুটা ছোট ছোট সূচিত হয়েছে এবং যদি ধাপের আকারটি সত্যিই ছোট করা হয়, তবে চতুর্থ-আদেশের পদ্ধতিটি কী জিততে পারে? তবে আমি এমনকি চেষ্টা করে দেখেছি এবং তৃতীয়-অর্ডার পদ্ধতিটি আরও উচ্চতর।
- ভুল পরীক্ষা: আমার পরীক্ষা সম্পর্কে কিছু বিশেষ কি রূতের তৃতীয়-আদেশের পদ্ধতিটি একটি উচ্চ-অর্ডার পদ্ধতির মতো আচরণ করতে দেয়?