RE: Min[], Max[]

*To*: mathgroup at smc.vnet.net*Subject*: [mg48326] RE: [mg48320] Min[], Max[]*From*: David.Annetts at csiro.au*Date*: Tue, 25 May 2004 07:16:41 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

Hi Frank, > Dear newsgroup members, > > can anyone explain me what´s the sense in the definition of > > Min[{}]= Infinity and Max[{}]= -Infinity Such definitions are often made before entering a loop (in say F90). They are designed to ensure that min & max are always one of your data points. This is important if you want to normalise eg. data = data / max. since if max is not an element of your data, you will divide by 0. This is not usually what we want to do. Consider the following. lst = Table[Random[Real, {-5, 5}], {10}] mina = maxa = 0; (* this is one effect of not initialising ...*) minb = Infinity; maxb = -minb; Do[ If[lst[[ji]] < mina, mina = lst[[ji]]]; If[lst[[ji]] < minb, minb = lst[[ji]]]; Print["mina = ", mina, "; minb = ", minb, "; lst[[ji]] = ", lst[[ji]]], {ji, 1, Length@lst} ]; Output will vary from run to run (because of Random[]), but for one run, I get lst = {2.16401, 1.6797, 3.51037, -3.17384, -1.77294, 1.86815, 2.6709, 4.97422, \ -4.76049, -1.43248}. This has outputs Ji minA MinB 1 0 lst[[1]] 2 0 lst[[2]] 3 0 lst[[2]] 4 lst[[4]] lst[[4]] 5 ..... Without the "minb" definition, you need to make an additional test that min != 0 (try it!), and this is not nearly as clear. The Why do you want to initialise these (or any variable) in the first place? So you know what you are dealing with. Not initialising gives the compiler carte blanch to use what it likes, and this may not be what you need. Regards, Dave. ========================================== Dr. David Annetts EM Modelling Analyst CSIRO DEM Tel: +612 9490 5416 North Ryde Fax: +612 9490 5467 Australia David.Annetts at csiro.au ===========================================