Re: removing non-numeric elements from the table
- To: mathgroup at smc.vnet.net
- Subject: [mg108055] Re: [mg108016] removing non-numeric elements from the table
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Sun, 7 Mar 2010 04:05:43 -0500 (EST)
- Reply-to: hanlonr at cox.net
Restrict the random number to the appropriate range. Since Erf is on the interval {-1, 1} Reduce[{1/2 (erf + 1) == 2 r - 1, -1 < erf < 1}, Reals] 1/2 < r < 1 && erf == 4*r - 3 rnd := RandomReal[{.5, 1}]; Eq := Solve[ 1/2 (Erf[z/Sqrt[2]] + 1) == 2 rnd - 1, z]; tvR = Quiet[Table[z /. Eq[[1]], {20}]] {-0.932217,-1.90579,1.5922,0.369158,-0.648444,-1.62643,1.48904,0.167125,0.506132,-0.885077,2.16042,-0.0276315,-0.785393,-0.0567042,0.37173,-0.0609761,1.97276,-0.184465,0.961651,-0.263731} If you can't determine the range rnd := RandomReal[]; Eq := Module[{soln}, While[(soln = Solve[ 1/2 (Erf[z/Sqrt[2]] + 1) == 2 rnd - 1, z]) == {}, "Whatever"]; soln]; tvR = Quiet[Table[z /. Eq[[1]], {20}]] {0.895968,0.250104,0.425207,-1.27241,0.235649,-0.669837,1.78254,0.0853635,-0.463827,-3.41202,-0.923443,-1.75907,-1.46323,0.807043,-0.474897,0.0992433,0.81119,0.407542,-1.13029,0.411251} Bob Hanlon ---- michael partensky <partensky at gmail.com> wrote: ============= Hi. I am building a large table filled with the numerical solutions of an equation. Here is an example, where a normal standard variable is being generated. rnd:=Random[]; Eq:=Solve[1/2 (Erf[z/Sqrt[2]]+1)==2 rnd-1,z]; tvR=Quiet[Table[z/.Eq[[1]],{20}]]; In[187]:= tvR Out[187]= {0.761439, z /. {}[[1]], z /. {}[[1]], 1.07111, 0.031784, z /. {}[[1]], z /. {}[[1]], 0.808313, -1.04238, z /. {}[[1]], 0.376982, z /. {}[[1]], 1.06622, z /. {}[[1]], -0.546643, -0.367224, 0.28111, -0.0606866, z /. {}[[1]], z /. {}[[1]]} What is a nicer way of removing the non-numeric elements? Clearly, it is possible to filter them out using say NumericQ, but I am looking for something more elegant (it is apart of a lecture), preferably right while the Table is being generated. Thanks Michael