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