Trouble with NDSolve Function

• To: mathgroup at smc.vnet.net
• Subject: [mg5374] Trouble with NDSolve Function
• From: wdavis at csranet.com (Wayne Davis)
• Date: Thu, 5 Dec 1996 14:50:16 -0500
• Organization: From Home
• Sender: owner-wri-mathgroup at wolfram.com

```I have had some trouble getting the Mathematica NDSolve function to accept
and solve problems containing certain types of conditionals in the dif eq,
even though the problem seems properly stated to me. I am attaching an
example and would like to know what I'm doing wrong. (It appears that the
assignments don't get substituted into the conditional terms so that
NDSolve can handle them as numerical values).

imax=3;ya=100.;k=.5;c=.1;tmax=2.;
q[1]=If[t<1,10.,0];
q[imax+1]=0.;
q[i_]=If[y[i-1][t]>ya,q[i-1],k (y[i-1][t]-y[i][t])];
difeqs=Table[c y[i]'[t]==q[i]-q[i+1],{i,1,imax}];
ics=Table[y[i][0]==25,{i,1,imax}];
eqs=Flatten[Join[difeqs,ics]];
vars=Table[y[i],{i,1,imax}];
soln=NDSolve[eqs,vars,{t,0,tmax}]
NDSolve::ndnum:
Differential equation does not evaluate to a number at
t = 0..
{{y[1] -> InterpolatingFunction[{0., 0.}, <>],

y[2] -> InterpolatingFunction[{0., 0.}, <>],

y[3] -> InterpolatingFunction[{0., 0.}, <>]}}

Thanks in advance for any help.