Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: question ,,thankx!!!

  • To: mathgroup at smc.vnet.net
  • Subject: [mg70707] Re: question ,,thankx!!!
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Mon, 23 Oct 2006 05:45:09 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, UK
  • References: <ehhpuq$74a$1@smc.vnet.net>

walkon wrote:
> hello to everyone!
> here question is:
> input:
> r[t_] := 0 /; (t > 0) && (t < 100)
> r[t_] := 10 /; (t > 100) && (t < 110)
> r[t_] := 2.5 /; (t > 110) && (t < 200)
> r[t_] := 0 /; (t > 200) && (t < 400)

As written, r[t] is not defined at t == 0, therefore

> sol = NDSolve[{b'[t] == 30a'[t],
>          c'[t] == 10a[t](100 - c[t]) -0.3c[t],
>          d'[t] ==400a[t],
>          a'[t] + b'[t] + c'[t] + d'[t] == r[t],
>          a[0] == 0, b[0] == 0, c[0] == 0, d[0] == 0}, {a[t], b[t],
> c[t], d[t]}, {t, 0, 400}]

returns the following error message:
NDSolve::ndnum: Encountered non-numerical value for a derivative at t == 
0.`.

> Plot[({a[t], b[t], c[t], d[t]} /. sol[[1]] // Evaluate), {t, 0,400},
> PlotRange -> All, Frame -> True]

Also, since r[t] is not defined for t == 400, you should restrict the 
interval to {t, 0, 339}, say.

In[1]:=
r[t_]:=0/;(t>=0)&&(t<100)
r[t_]:=10/;(t>100)&&(t<110)
r[t_]:=2.5/;(t>110)&&(t<200)
r[t_]:=0/;(t>200)&&(t<400)

In[5]:=
sol=NDSolve[{b'[t]\[Equal]30a'[t],c'[t]\[Equal]10a[
         t](100-c[t])-0.3c[t],d'[t]\[Equal]400a[t],
         a'[t]+b'[t]+c'[t]+d'[t]\[Equal]r[t],a[0]\[Equal]0,
       b[0]\[Equal]0,c[
         0]\[Equal]0,d[0]\[Equal]0},{a[t],b[t],c[t],d[t]},{t,0,399}]

Out[5]=
{{a[t]\[Rule]
       InterpolatingFunction[{{0.,399.}},<>][t],b[t]\[Rule]\
InterpolatingFunction[{{0.,399.}},<>][t],c[
     t]\[Rule]InterpolatingFunction[{{0.,399.}},<>][t],d[t]\[Rule]\
InterpolatingFunction[{{0.,399.}},<>][t]}}
{t, 0, 399}]

In[8]=
Plot[Evaluate[{a[t], b[t], c[t], d[t]} /. sol[[1]]], {t, 0, 399}, 
PlotRange -> All, Frame -> True]

[...snipped...]

Regards,
Jean-Marc


  • Prev by Date: two questions
  • Next by Date: Re: Re: Programming style: postfix/prefix vs. functional
  • Previous by thread: question ,,thankx!!!
  • Next by thread: Re: question ,,thankx!!!