में आई मैं "एक वसंत में गेंद के लिए" यूलर पद्धति का उपयोग करके एक कार्यक्रम बनाने के लिए है मॉडलRuntimeWarning: अमान्य मान डिवाइड
from pylab import*
from math import*
m=0.1
Lo=1
tt=30
k=200
t=20
g=9.81
dt=0.01
n=int((ceil(t/dt)))
km=k/m
r0=[-5,5*sqrt(3)]
v0=[-5,5*sqrt(3)]
a=zeros((n,2))
r=zeros((n,2))
v=zeros((n,2))
t=zeros((n,2))
r[1,:]=r0
v[1,:]=v0
for i in range(n-1):
rr=dot(r[i,:],r[i,:])**0.5
a=-g+km*cos(tt)*(rr-L0)*r[i,:]/rr
v[i+1,:]=v[i,:]+a*dt
r[i+1,:]=r[i,:]+v[i+1,:]*dt
t[i+1]=t[i]+dt
#print norm(r[i,:])
plot(r[:,0],r[:,1])
xlim(-100,100)
ylim(-100,100)
xlabel('x [m]')
ylabel('y [m]')
show()
मैं इस त्रुटि प्राप्त हो रही:
a=-g+km*cos(tt)*(rr-L0)*r[i,:]/rr
RuntimeWarning: invalid value encountered in divide
मैं कर सकते हैं यह समझ में नहीं आता, कोड के साथ क्या गलत है?
प्रिंट करें कि कोड की उस पंक्ति में प्रत्येक छोटी आइटम में क्या चल रहा है। इसे डीबग करने का यही एकमात्र तरीका है। – CppLearner
आपके पास 'rr' के लिए 'नान' है, जो उस त्रुटि को फेंक रहा है। 'आरआर' के साथ समस्या 'आर [i,:] 'से कुछ है, जो कुछ मामलों में' सरणी ([नैन, नान]) के बराबर है। जैसा कि @CppLearner ने उल्लेख किया है, कोड को डीबग करने (या लिखने) का सबसे अच्छा तरीका लागू करने से पहले प्रत्येक छोटे हिस्से का परीक्षण करना है। – cosmosis