[Date Index]
[Thread Index]
[Author Index]
Re: Create a cumulative list
*To*: mathgroup at smc.vnet.net
*Subject*: [mg93386] Re: Create a cumulative list
*From*: Bill Rowe <readnews at sbcglobal.net>
*Date*: Wed, 5 Nov 2008 04:57:03 -0500 (EST)
On 11/4/08 at 6:19 AM, cadieux_jp at hotmail.com (philipp) wrote:
>So here is my problem. I have a list of values let's say ValueList =
>{1,2,3,4,5,6,7,8,9} What I want is Compilation =
>{1,3,6,10,15,21,28,36,45} created in adding Compilation[[1]] with
>ValueList[[2]] to create Compilation[[2]]. In the same way,
>Compilation[[7]] = Compilation[[6]] + ValueList[[7]].
In version 6 of Mathematica this is easily accomplished using
Accumulate. That is
In[22]:= Accumulate@{1, 2, 3, 4, 5, 6, 7, 8, 9}
Out[22]= {1,3,6,10,15,21,28,36,45}
In earlier versions of Mathematica, the same result can be
obtained using FoldList, i.e,
In[23]:= Rest@FoldList[Plus, 0, {1, 2, 3, 4, 5, 6, 7, 8, 9}]
Out[23]= {1,3,6,10,15,21,28,36,45}
>If that wasn't enough, I need to add a difficulty to that. If, at
>any time, a value of Compilation[[i]] is bigger that XYZ, then that
>Compilation[[i]] should be equal to 0.
This can be done using Clip. For example to set all of the
values greater than 6 to zero in the last result do:
In[24]:= Clip[%, {0, 6}, {0, 0}]
Out[24]= {1,3,6,0,0,0,0,0,0}
Or I could zero all the values less than 6 and greater than 20
by doing:
In[25]:= Clip[%%, {6, 20}, {0, 0}]
Out[25]= {0,0,6,10,15,0,0,0,0}
>To help you understand (sorry but English is not my first language
>and explaining it in my first language is already tough), here is
>the results I am looking for.
>My ValueList = {0.0032833, -0.000654511, -0.0065494, 0.00103598,
>-0.00112899, 0.00386173, 0.00365922, 0.00551557, -0.0138527,
>0.00471387, 0.00497326, -0.00140056, -0.00187003, -0.0195785,
>-0.00210204, -0.00900038, 0.000289855, 0.000289771, -0.00135187,
>0.00386772}
>My Compilation = {0, -0.000654511, 0, 0.00103598,
>-0.0000930101, 0, 0, 0, 0, 0, 0, -0.00140056, 0, 0, 0, 0,
>0.000289855, 0.000579626, -0.000772247, 0} and the additionnal
>criteria is >0.002 and <-0.002 (or >0.002 in absolute value)
Hmm... I don't understand what you are doing here. If I first
use Accumulate to get the cumulative sums then apply Clip to
zero the values outside the range {-0.002, 0.002} I get
In[32]:= Clip[Accumulate[ValueList], {-0.002, 0.002}, {0, 0}]
Out[32]= {0,0,0,0,0,-0.000151891,0,0,0,-0.000115931,0,0,0.00158674,0,0,0,=
0,0,0,0}
which is clearly different from what you indicate should result.
Prev by Date:
**Re: Design by Contracts in Mathematica**
Next by Date:
**Re: Design by Contracts in Mathematica**
Previous by thread:
**Re: Create a cumulative list**
Next by thread:
**Trouble solving system of first order, two variable PDEs in**
| |