Thank you Jeff.
On Friday, August 21, 2015 at 3:51:41 PM UTC-5, Jeffrey Sarnoff wrote: > > you created R to hold 600 things, things indexable as R[1]..R[600] > > mnths=600 > R=zeros(Float64,mnths) > > later you bring Julia's attention to R[600+1], just one step 'out of > bounds' > when i is 600, i+1 is 601 > > In Julia, the top part of the range is included > That loop should be > > for i in 3:(600-1) > R[i+1] = .. > end > > > On Friday, August 21, 2015 at 4:37:48 PM UTC-4, Tj Midkiff wrote: >> >> I am trying to write a small script to help my company out. I came >> across Julia on a web search naturally when looking for more speed. I am >> just getting my feet wet with programming so please be patient with me. >> >> This is one piece of the code that I know is very inefficient, so any >> help is greatly appreciated. FYI, the final version will include pulling >> the initial variables from a SQL database that could include 100k records. >> So basically this code could be ran 100k times in the final version at any >> time (along with many more calculations). Please comment anywhere I could >> add more efficiency, because speed is absolutely critical. >> >> I have a spreadsheet I can provide that shows the methodology a little >> clearer if it would help. >> >> My main question though is why am I getting the BoundsError()... >> >> Thanks for all of the help. >> >> >> qi=3454.0 >> di=0.6 >> b=0.9 >> mnths=600 >> >> AI=(1/b)*((1-di)^-b-1) >> ai=AI/12 >> q(t)=qi/(1+b*ai*t)^(1/b) >> Q=[q(t-1) for t=1:3] >> a=((Q[2]/Q[3])^b-1)/b >> mOil=zeros(Float64,mnths) >> >> #Is it worth creating a function here? >> mOil[1]=(Q[1]^b/((1-b)*ai))*(Q[1]^(1-b)-Q[2]^(1-b)) >> mOil[2]=(Q[2]^b/((1-b)*a))*(Q[2]^(1-b)-Q[3]^(1-b)) >> R=zeros(Float64,mnths) >> R[1]=mOil[2]/(mOil[2]-mOil[1])+b >> for i=1:2 >> R[i+1]=R[1]-i*b >> end >> >> for i=3:600 #Getting a BoundsError() here >> #mOil[i]=mOil[i-1]*(R[i]/(R[i]-1)) >> R[i+1]=R[1]-i*b >> end >> >> >>