Note that there are some explanatory texts on larger screens.

plurals
  1. POHelp with Python UnboundLocalError: local variable referenced before assignment
    primarykey
    data
    text
    <p>I have post the similar question before,however,I think I may have misinterpreted my question,so may I just post my origin code here,and looking for someone can help me,I am really stuck now..thanks alot.</p> <pre><code>from numpy import * import math as M #initial condition All in SI unit G=6.673*10**-11 #Gravitational constant ms=1.9889*10**30 #mass of the sun me=5.9742*10**24 #mass of the earth dt=10 #time step #Creat arrays vs=array([[0,0,0]]) #1st element stand for x component of V of earth ve=array([[29770,0,0]]) rs=array([[0,0,0]]) re=array([[0,1.4960*10**11,0]]) #First update velocity in order to start leapfrog approximation fs=-G*ms*me*((rs-re)/(M.sqrt((rs-re)[0][0]**2+(rs-re)[0][1]**2+(rs-re)[0][2]**2))**3) fe=-fs vs=vs+fs*dt/ms ve=ve+fe*dt/me n=input('please enter the number of timestep you want it evolve:') #update force def force(n,ms,me,rs,re,G): rs,re=update_r(rs,re,n,dt) fs=-G*ms*me*((rs-re)/(M.sqrt((rs-re)[0][0]**2+(rs-re)[0][1]**2+(rs-re)[0][2]**2))**3) fe=-fs return fs,fe #update velocities def update_v(n,vs,ve,ms,me,dt,fs,fe): fs,fe=force(n,ms,me,rs,re,G) i=arange(n) vs=vs+fs[:]*i[:,newaxis]*dt/ms ve=ve+fe[:]*i[:,newaxis]*dt/me return vs,ve #update position def update_r(rs,re,n,dt): vs,ve=update_v(n,vs,ve,ms,me,dt,fs,fe) i=arange(n) rs=rs+vs[:]*i[:,newaxis]*dt re=re+ve[:]*i[:,newaxis]*dt return rs,re #there is start position,v,r,f all have initial arrays(when n=0). #then it should calculate f(n=1) then use this to update v(n=0) #to v(n=1),then use v(n=1) update r(n=0) to r(n=1),then use r(n=1) #update f(n=1) to f(n=2)....and so on until finish n.but this code seems doesnt do this,,how can I make it? – </code></pre> <p>when i call force python gives:</p> <pre><code>please enter the number of timestep you want it evolve:4Traceback (most recent call last): File "&lt;pyshell#391&gt;", line 1, in &lt;module&gt; force(n,ms,me,rs,re,G) File "/Users/Code.py", line 24, in force rs,re=update_r(rs,re,n,dt) File "/Users/Code.py", line 39, in update_r vs,ve=update_v(n,vs,ve,ms,me,dt,fs,fe) UnboundLocalError: local variable 'vs' referenced before assignment </code></pre> <p>can anyone give me some tips?thanks......</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload