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>
- Reply-to: kuska at informatik.uni-leipzig.de
- 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) > > thanks in advance. > > sean > > __________________________________ > Do you Yahoo!? > Exclusive Video Premiere - Britney Spears > http://launch.yahoo.com/promos/britneyspears/