Re: For Loop and NDSolve
- To: mathgroup at smc.vnet.net
- Subject: [mg85227] Re: For Loop and NDSolve
- From: PV <prasanna.phys at gmail.com>
- Date: Sat, 2 Feb 2008 23:31:21 -0500 (EST)
- References: <fnuh4s$9ni$1@smc.vnet.net> <fo19o9$fu8$1@smc.vnet.net>
Hello Here is a stand alone version of my code, I have not got rid of the for loop as suggested by Szabolcs here but Iam trying something like that right now! I would be grateful to anybody who can give me a hint or two abot which part of this code is eating up excessive memory! Cheers Prasanna (**********************************) c3 = 0.035896 N0 = 80 k0 = 1/40 L = 80 =A6=D0 =A6=C7 = 1.0485203*10^6 =A6=C3 = 1.85353*^6 =A6=CA = 3.707*^6 delt = 1/1000 a = 0.26452763498582404 V0[a_]:= 79.06*Abs[a]^2 deltanew[n_]:= If [Mod[n,N0]==0, N0*1/(Sqrt[L])*NIntegrate[E^(-I*n*k0*= z)*MathieuC[-0.81399423,-1.383053249,z],{z,0,Pi}], 0] list1 = 1/(L)*Chop[Table[deltanew[n],{n,-4*N0,4*N0}]]; zeropad = Table[0,{l,1,16*N0}]; wavefn = Join[list1,zeropad]; fieldlist3 = {} couplinglist = {} normlist = {} For[j=1,j=A1=DC100, t = j*1/1000; solnmatrix =-I/c3* SparseArray[{{i_,i_} -> (-V0[a]/2 + ((i-(4* N0+1))*k0-2*t)^2), {m_,n_}/;Abs[m-n]==N0 -> -V0[a]/4},{24* N0+1,24*N0+1}] ; soln = NDSolve[{u'[p]== solnmatrix.u[p],u[0]==wavefn},u,{p,0,del= t}]; wavefn = First[u[delt]/.soln]; C1 = ( Tr[Abs[wavefn]^2/2]+0.25* Sum[Conjugate[ wavefn[[n]]]*wavefn[[n+N0]],{n,1,23*N0+1}] + 0.25*Sum[Conjugate[ wavefn[[n]]]*wavefn[[n-N0]],{n,N0+1,24*N0+1}])*L; b= -=A6=C7/(I*=A6=C3*C1 - =A6=CA) + ((=A6=C7 + (I*=A6=C3*C1 - =A6=CA)* a )/(I*=A6=C3*C1 - =A6=CA))*E^(delt*0.0011*(I*=A6=C3*C1 - =A6=CA)); a = b; AppendTo[fieldlist3,a]; AppendTo[normlist,L*Tr[Abs[wavefn]^2]]; AppendTo[couplinglist,C1]; j++; ] (******************************) On Feb 2, 3:31 am, Szabolcs <szhor... at gmail.com> wrote: > One more thing .... since that sparse array is diagonal you might try > using a vector instead, something like > > f[x_?VectorQ] := {1, 2} x > NDSolve[{u'[t] == f[u[t]], u[0] == {0, 0}}, u, {t, 0, 1}] > > This make make things better ... or worse ...