Re: Q: NDSolve
- To: mathgroup at smc.vnet.net
- Subject: [mg21576] Re: Q: NDSolve
- From: Bojan Bistrovic <bojanb at physics.odu.edu>
- Date: Sat, 15 Jan 2000 02:04:19 -0500 (EST)
- Organization: Old Dominion Universityaruba
- References: <85mmgb$268@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Christoph Handel wrote: > > howdy, > > is there a nice way to solve an equation like this: > > x'[t] == aMatrix[t] . x[t] > > where x ist a Vector. > > I tried something like this: > > NDSolve[{x'[t]== aMatrix[t] . x[t], x[0]=={1,2,3...}},x,{t,0,42}] > > Greetings > Christoph > -- > the adress is valid > for faster reply use handel at the same host This might not be "a nice" way, but it works: In[1]:= MyEqual[arg1_List==arg2_List]:=Map[Part[Thread[#1],1]&,Thread[arg1==arg2]] In[2]:= MyEqual[arg1_==arg2_]:= Map[Part[Thread[#1],1]&,Thread[MyThread[arg1]==MyThread[arg2]]] In[3]:= SetAttributes[MyApplyFunction,Listable] In[4]:= MyApplyFunction[f_,t_]:=f[t]/;MyfunctionTest[f] In[5]:= MyApplyFunction[f_,t_]:=f/;Not[MyfunctionTest[f]] In[6]:= MyThread[xx_/;Head[Head[xx]]===List]:= xx//.aa_List[t_]:>Map[MyApplyFunction[#1,t]&,aa] In[7]:= MyThread[xx_[t_]/;Head[Head[xx]]===Derivative]:= MyThread[Map[Thread,Thread[xx]][t]] In[8]:= MyThread[xx_==yy_]:=MyThread[xx]==MyThread[yy] In[9]:= MyThread[xx_ .yy_]:=MyThread[xx].MyThread[yy] In[10]:= x={{f1},{f2}}; In[11]:= A={{2, t},{t+3,5}}; In[12]:= NDSolve[Join[MyEqual[x'[t]==A[t].x[t]],MyEqual[MyThread[x[0]]=={1,2}]], Map[Part[#1,1]&,x],{t,0,10}] Out[12]:={{f1 -> InterpolatingFunction[{{0.,10.}},"<>"], f2 -> InterpolatingFunction[{{0.,10.}},"<>"]}} You'll probably want to modify MyfunctionTest to fit your needs. Bye, Bojan -- ------------------------------------------------------------- Bojan Bistrovic, bojanb at physics.odu.edu Old Dominion University, Physics Department, Norfolk, VA -------------------------------------------------------------