मुझे यकीन नहीं है कि अगर यहां तक कि ड्रैग या विंड के लिए एक बंद फॉर्म मौजूद है, लेकिन चरण-वार फैशन में अनुकरण करना काफी आसान है (जैसे सभी भौतिकी पुस्तकालय करते हैं):
अपनी प्रारंभिक स्थिति निर्धारित करें:
एक्स , वाई, वीएक्स, वीy( के लिए टी = 0 )
अद्यतन स्थिति:
x = x + ( v)एक्स× डीटी )y= x + ( v)y× डीटी )
(जहां dt अंतिम अपडेट के बाद समाप्त हुआ समय है, उर्फ डेल्टा समय)
इन वेग सहायकों की गणना करें:
v2| वी |= ( v)एक्स)2+ ( v)y)2= वी2--√
| वी |v
ड्रैग फोर्स की गणना करें:
चघr a g= सी × वी2
(जहाँ c घर्षण का गुणांक छोटा है! )
बलों को जमा करें:
चएक्सचy= ( - चघr a g× वीएक्स| वी |)= ( - चघr a g× वीy| वी |) +(-जी× हूँ एक रों रों )
मी एस ए एस
अद्यतन वेग:
vएक्स= वीएक्स+ चएक्स× डीटीमी एस ए एसvy= वीy+ चy× डीटीमी एस ए एस
यह मूल रूप से उन भौतिक विज्ञान का अनुमान लगाने के लिए यूलर की विधि है ।
टिप्पणियों में अनुरोध के अनुसार अनुकरण पर थोड़ा और अधिक:
- प्रारंभिक स्थिति ( t = 0 ) आपके मामले में है
एक्सyvएक्सvy= 0= 0= वी0× c o s ( θ )= वी0× s i n ( θ )
यह मूल रूप से आपके मूल प्रक्षेपवक्र सूत्र के समान है जहां t की प्रत्येक घटना को 0 से बदल दिया जाता है।
गतिज ऊर्जा कइ= 0.5 मीटर ( वी2) हर के लिए मान्य है टी। देखv2 ऊपर (3) के रूप में।
संभावित ऊर्जा पीइ= एम × जी× य हमेशा मान्य है।
यदि आप करंट प्राप्त करना चाहते हैं ( एक्स , वाई) दिए हुए के लिए टी1, आपको क्या करने की आवश्यकता है, इसके लिए सिमुलेशन को इनिशियलाइज़ करें t = 0 और जब तक छोटे dt अपडेट न करें t = t1
यदि आपने पहले से ही गणना की है ( एक्स , वाई) के लिए टी1 और आप उनके मूल्यों को जानना चाहते हैं टी2 कहाँ पे टी1< टी2, आपको केवल उन छोटे dt अपडेट चरणों की गणना करने की आवश्यकता है टी1 सेवा टी2
छद्म कोड:
simulate(v0, theta, t1)
dt = 0.1
x = 0
y = 0
vx = v0 * cos(theta)
vy = v0 * sin(theta)
for (t = 0; t < t1; t += dt)
x += vx * dt
y += vy * dt
v_squared = vx * vx + vy * vy
v_length = sqrt(v_squared)
f_drag = c * v_squared
f_grav = g * mass
f_x = (-f_drag * vx / v_length)
f_y = (-f_drag * vy / v_length) + (-f_grav)
v_x += f_x * dt / mass
v_y += f_y * dt / mass
end for
return x, y
end simulate