Re: "Declaring" a vector for NDSolve

*To*: mathgroup at smc.vnet.net*Subject*: [mg70766] Re: "Declaring" a vector for NDSolve*From*: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>*Date*: Thu, 26 Oct 2006 02:39:29 -0400 (EDT)*References*: <ehmu5d$sf7$1@smc.vnet.net>

Hi, S = T[t]; ModelEqs = {T'[t] == S, T[0] == {0, 0}} sol = NDSolve[ModelEqs, {T}, {t, 0, 1}] tmp = T /. sol[[1]] tmp[t] /. t -> 0.5 and I'm not able to understand your problem. Eric Poolman wrote: > Hello, > > I am trying to use Mathematica to solve a set of differential > equations in an epidemiological model (of sexually-transmitted disease.) > > I have been using NDSolve on a system that consists of the following > two equations: > > P'[t]=A.P[t], > P[0]={0.9, 0.1, ...} > > Where P is a vector and A a matrix. Initial efforts with a simple A > went fine (Mathematica gives an error, "Part :: partw:: Part 2 of P > [t] does not exist," but it still produces a correct interpolating > function (verified by solving the simple system with each equation > written out separately.)) > > I am now complicating the matrix, A, by including in some of its > cells functions of P[t]. In particular, some of the terms in A will > include P[t][[1]] through P[t][[9]]. While P[t][[2]] and higher > terms are handled "correctly" (I get the error message, but it does > not interrupt the solving process), P[t][[1]] is not. P[t][[1]] is > immediately evaluated as t. > > I have the following simplified formulation which shows the issue: > > S = {T[t][[1]], T[t][[2]]} > ModelEqs = {T'[t] == S, T[0] == {0, 0}} > sol = NDSolve[ModelEqs, {T}, {t, 0, 1}] > T[1] /. sol > > S Evaluates immediately to {t,T[t][[2]]}, which then leads to the > final line evaluating to {{0.5,0}}, rather than {{0,0}} as it should. > > My naive thought is that I need to be able to declare T[t] as a > vector, so that T[t][[1]] is not immediately evaluated. I do not > know if that is a reasonable approach, or if that would work (or how > to do it.) > > I am attempting to write out the program flexibly enough to handle > varying numbers of diseases (and thus varying dimensions for the > matrices), and would much prefer not to write out the equations if I > can do this generally. If worst came to worst, I suspect I could use > > subscripts instead of indices and generate each equation, but the > matrix solution would be much more elegant (excepting this one issue.) > > Thanks in advance; any guidance is appreciated. > > Eric > > -------------------------------- > Eric Poolman, MD, MBA > Post-doctoral Fellow > Epidemiology of Microbial Diseases > Yale School of Medicine > 60 College Street, Room 147 > New Haven, CT 06520-8034 > eric.poolman at yale.edu > 203-589-8925 cell > >