MathGroup Archive 2008

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

Search the Archive

Re: simple iteration question

  • To: mathgroup at
  • Subject: [mg89824] Re: simple iteration question
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at>
  • Date: Sat, 21 Jun 2008 05:32:59 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, UK
  • References: <g3g017$l06$>

Francisco Gutierrez wrote:

> I have a list of the form list={{3,2,1},{5,6,1},{10,5,1}}, of any length
> I have a vector, say vector={1,2,3}
> I want to make the following iteration.  Take the first component of the =
> list, make the dot product of it and the vector, and substract a number (sa=
> y 50). If the result is bigger or equal than zero, stop and return the vect=
> or. If it is less than zero, then change the vector in the followig way: ve=
> ctor+list[[2]], and repeat the test.
> Iterate until the result is equal or bigger than zero, or until the list en=
> ds.
> I haven't found a neat way of doing this. Any help is welcome

Assuming I have correctly understood what you are looking for and since 
you did not show what you have already tried, I have chosen an approach 
that blends procedural and functional programming paradigms. Definitely 
not the best peace of code I ever written, but it has the merit to 
exemplify the versatility of Mathematica. (Note that the code below has 
not been extensively tested and that your specifications are sometimes 

In[1]:= f[vec_, lst_, n_] :=
  Module[{v = vec, test},
   test[v1_, v2_] = v1.v2 - n >= 0;
   If[Select[lst, test[v, #] &, 1] =!= {}, Return[v]];
   For[i = 2, i <= Length[list], i++,
    v += lst[[i]];
    If[Select[lst, test[v, #] &, 1] =!= {}, Return[v]];
   "No vectors were found."
list = {{3, 2, 1}, {5, 6, 1}, {10, 5, 1}};
vector = {1, 2, 3};
f[vector, list, 50]
f[vector, list, 1000]

Out[4]= {6, 8, 4}

Out[5]= "No vectors were found."

-- Jean-Marc

  • Prev by Date: Insight into Solve...
  • Next by Date: Re: solving for 2 angles
  • Previous by thread: Re: Insight into Solve...
  • Next by thread: Re: simple iteration question