Re: Re: Summation Problem w/ 5.0
- To: mathgroup at smc.vnet.net
- Subject: [mg43846] Re: [mg43815] Re: Summation Problem w/ 5.0
- From: "Peter Pein" <petsie at arcor.de>
- Date: Wed, 8 Oct 2003 04:48:14 -0400 (EDT)
- References: <blr1f1$3ge$1@smc.vnet.net> <200310070640.CAA14821@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
----- Original Message -----
From: "Andrea" <andrea.knorr at engr.uconn.edu>
To: mathgroup at smc.vnet.net
Subject: [mg43846] [mg43815] Re: Summation Problem w/ 5.0
> Bill Rowe <readnewscix at mail.earthlink.net> wrote in message
news:<blr1f1$3ge$1 at smc.vnet.net>...
> > On 10/4/03 at 2:05 AM, andrea.knorr at engr.uconn.edu (Andrea) wrote:
> >
> > > Has anyone else had this problem with the new version? I have created
> > > multiple lists with multiple elements, and I am trying to sum all
> > > elements of all lists. As output I don't get a single value; instead
> > > I get several numbers separated by a plus sign. For example, instead
> > > of Mathematica giving "2" as output, I get "1+1".
> >
> > I am using ver 5.0 under Max OSX version 10.2.8 and do not see this
behavior. I or someone else here might be able to offer constructive
suggestions if you post the code leading to this problem.
> >
> > To reply via email subtract one hundred and nine
>
>
> I posted code Saturday morning, but it has not been added, so I will
> try again. In my program I have created three lists, "virus",
> "uninfected", and "infected" which are concentrations at a particular
> time. "vtime", "xtime", and "ytime" are the time points that
> correspond to the given concentration. The function "titer" solves
> three differential equations that model a viral system. minfcn is a
> part of nonlinear regression. The problem I am having occurs when I
> evaluate minfcn, using the parameters published in a journal article,
> at values above a particular element of "virus", "uninfected", and
> "infected". Here's the code:
>
> titer[lambda_, beta_, d_, k_, a_, u_] :=
>
> Module[{soln, x, y, v, valueslist, xeval, yeval, veval},
you should get rid of unused locals (valueslist, xeval, yeval, veval).
> soln = NDSolve[{
> x'[t] == lambda - d x[t] - beta x[t] v[t],
> y'[t] == beta x[t] v[t] - a y[t],
> v'[t] == k y[t] - u v[t],
> x[0] == 10^9, y[0] == 0, v[0] == 10^9},
> {x, y, v}, {t, 0, 2500}];
>
> xtiter = Evaluate[x[xtime] /. soln];
> ytiter = Evaluate[y[ytime] /. soln];
> vtiter = Evaluate[v[vtime] /. soln];
>
> values = Table[Flatten[{xtiter, ytiter, vtiter}, 1]];
> values
> ];
Each call to titer changes the global variable "values". Is this what you
want?
IMHO it would be better to avoid all these assignments:
obviously, xtime,ytime and vtime are lists.
titer[lambda_, beta_, d_, k_, a_, u_] :=
Module[{soln, x, y, v, t},
{x /@ xtime, y /@ ytime, v /@ vtime}/.NDSolve[....][[1]]
];
returns a list with three elements (the lists corresponding to the
time-lists).
Omit the "[[1]]" at the end of NDSolve[], if you want a list with the list
of lists as only element.
But minfcn would lead to trouble, if you do so.
(The global variables {x|y|v}time should have values assigned before titer
is called)
> calcs = titer[10^7, 5*10^-10, 0.1, 500, 0.5, 5];
>
> minfcn[lambda_, beta_, d_, k_, a_, u_] :=
>
> Module[{i, j},
>
> diffsum =
> Sum[10000*(uninfected[[i, 2]] - calcs[[1, i]])^2 +
> 10000*(infected[[i, 2]] - calcs[[2, i]])^2, {i,
> Length[uninfected]}] +
> Sum[(virus[[j, 2]] - calcs[[3, j]])^2, {j, Length[virus]}];
> diffsum
> ]
>
I do not know the datastructure of "(un)infected" and "virus". So I can't
say anything about these.
But the calcs[[1|2,i]] should return the expected values now.
If the problem stays, it could help to replace the last line of the
definition of minfcn by Expand[diffsum] or N[diffsum].
> minfcn[10^7, 5*10^-10, 0.1, 500, 0.5, 5]
>
> Here is the output:
>
> (2.518473817923033*10^24 +
> 10000*(-1.80000521715242*10^7 + 20000)^2 +
> 10000*(-1.8*10^7 + 20000)^2 +
> 10000*(-1.*10^7 + 980000)^2 +
> 10000*(-9.99926182857273*10^6 + 980000)^2)
>
> I need a single number to continue my calculations.
>
> ~Andrea
>
Peter Pein, Berlin
petsie at arcAND.de
replace && by || to write to me
- References:
- Re: Summation Problem w/ 5.0
- From: andrea.knorr@engr.uconn.edu (Andrea)
- Re: Summation Problem w/ 5.0