Re: now, while loops construct errors

• To: mathgroup at smc.vnet.net
• Subject: [mg44296] Re: now, while loops construct errors
• From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
• Date: Tue, 4 Nov 2003 03:24:36 -0500 (EST)
• Organization: Universitaet Leipzig
• References: <bo5sfg\$m9\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Hi,

your While[] loop has no body at all and it is
a wonder that Mathematica does not generate an error
message. The syntax of a While[] loop is

While[test,
body
]

and

ddv[] := Module[{v1n, d1n},
While[True,
v1n = 10^Random[Real, {-12, -7}];
d1n = 10^Random[Real, {-6, -4}];
If[10^-8 <= (v1n/d1n) <= 10^-4, Break[]]
];
{v1 -> v1n, d1 -> d1n, v1n/d1n // ScientificForm}
]

work as expected.

Regards
Jens

sean kim wrote:
>
> hello group.
>
> ok. Long post once again. with multiple part question.
>
> part 1.
>
> now I have problems with constructing a while loop
> under contraint.
>
> This post also deals with picking random numbers under
> a constraint. (I need to do this for a solve routine I
> have developed for an ode system)
>
> Peter and Daniel has used "While" effectively with
> previous post, so I thought I would just modify their
> codes to come up with something suits my needs in this
> case. but it's not working out as i hoped.
>
> I'm trying to pick randome numbers for a pair such
> that the ratio of the two random numbers picked are
> between a range given.
>
> So with v1 and d1, the ratio has to be between 10^-8
> and 10^-4. I have implemented this as follows.
>
> In[395]:=
> dv:= Module[{v1n, d1n},
> While[
> (v1n=10^ Random[Real,{-12,-7}]);
> (d1n=10^ Random[Real,{-6,-4}]);
> 10^-8<= (v1n/d1n)<= 10^-4 ];
> {v1 -> v1n, d1 -> d1n, v1n/d1n//ScientificForm}]
>
> Do[Print[dv], {n, 1, 10}]
>
> above will pick random numbers and make the rule and
> then print the ratio. ( "Do" will print it 10 times)
>
> this seems to work at the first glance,  but not
> really since it doesn't really do the random number
> generation under the given constraint.
>
> the constraint was that the ratio has to be between
> 10^-8 to 10^-4 ( for other cases, I have smaller
> ranges for the constraint)
>

> but quite often, i get ratios that are way out of the
> range given.  below is one example...
>
> Out[244]= {v1->2.49351 x 10^-8, d1->1.59411 x 10^-6,
> 1.56421 x 10^-2}
>
> last number(1.56421 x 10^-2) is the ratios between the
> v and d, and it is clearly out of the range of 10^-8
> to 10^-4. Obviously i'm not doing something right.
>
> How do I fix this so that the routine picks under a
> given constraint?
>
> part2.
>
> what exactly is the difference between the following
> three repesentation of a range? (Peter suggested that
> i use the first represntation, and i'm starting to see
> why but i don't understand it)
>
> In[90]:=
> {10^ Random[Real,{-12,-6}],
> Random[Real,10^{-12,-6}],
> Random[Real,{10^-12,10^-6}]}
>
> upon repeat evaluating, it's easy to see that the
> first representation gives number over wider range
> while the other two stays within very short range.( in
> the order of 10^-7)
>
> Out[108]=
> {6.07721 x 10^-11, 3.82330 x 10^-7, 5.49021 x 10^-7}
>
> Out[109]=
> {1.02699 x 10^-8, 6.28981 x 10^-7, 3.37704 x 10^-7}
>
> Out[110]=
> {8.50961 x 10^-9, 9.98681 x 10^-7, 1.71181 x 10^-7}
>
> any and all thoughts are greatly appreciated.( again)
>
>
> sean
>
> __________________________________
> Do you Yahoo!?
> Exclusive Video Premiere - Britney Spears
> http://launch.yahoo.com/promos/britneyspears/

```

• Prev by Date: Re: Antw: pdf-export
• Next by Date: Trying to use Mathematica as "word processor" for my math homework
• Previous by thread: Re: Trying to use Mathematica as "word processor" for my math homework
• Next by thread: Re: now, while loops construct errors