Version 19 of Testing Normality of Pi, Console Example

Updated 2011-05-29 16:09:04 by gold

Testing Normality of Pi, Console Example

This page is under development. Comments are welcome, but please load any comments in the comments section at the middle of the page. Thanks,gold


gold Here is an eTCL script on testing the normality of pi for the etcl console. It has not been mathematically proven that pi is a normal number, but numerical analysis with tcl can check for some aspects of normality in pi. The normality of a number means that the numbers (0,1,2..9) in the mantissa are equally common at infinity. In base 10, the relative frequencies of the N numbers in the manitssa approach 1/10 as N approaches infinity. For example, Kanada used a set of 6.4E9 decimal digits and found the frequency s 600009044/6442450000 or 0.0931336749218077. One can paste statements into the etcl console.

% puts [ expr {1.*600009044/6442450000 }]
0.0931336749218077

In planning any software, there is a need to develop testcases.

 Testcase 1.
  Output of timing statements.
quantitynumberunits
photo size of bird.jpg 1.6 m
loading 1595970 microseconds per iteration

Screenshots Section

  frequency of "7" in pi mantissa approaches limit of 0.1 as N>>1
  frequency versus set of numbers of total N. 

http://img546.imageshack.us/img546/9785/aaarx.jpg


Comments Section

Please place any comments here, Thanks.


References:


Appendix TCL programs and scripts

* Pretty Print Version

               # Pretty print version from autoindent
               # and ased editor
               # written on Windowws XP on eTCL
               # working under TCL version 8.5.6 and eTCL 1.0.1
               # gold on TCL WIKI , 25may2011
               #rank of indiv. "throws" over all "throws".
               #pi mantissa used here
        package require Tk 
          console show
            proc calculation {  facen }  {
                # prob. subroutines for mimic sequence of bronze
                # prob. is throw combos of eg. "7" over all possible throws
                
                set lister [split {14159265358979323846} ""]
                
                set ee [llength  $lister ]
                set kk [ llength [ lsearch -all $lister $facen ] ]
                set prob [ expr { ($kk*1.) / $ee  } ]
                return $prob
            }
            set limit 12
            for { set i 0 } { $i <= $limit }  { incr i } {
                lappend listxxx $i
                lappend listxxx [ calculation  $i ]
                puts " $i [ calculation  $i ] "
            }
            #end
 results for first 20 numbers of pi mantissa
         
 0 0.0 
 1 0.1 
 2 0.1 
 3 0.15 
 4 0.1 
 5 0.15 
 6 0.1 
 7 0.05 
 8 0.1 
 9 0.15 
 10 0.0 
 11 0.0 
 12 0.0 
{14159265358979323846264338327950288419716939937}
 1 0.0851063829787234 
 2 0.10638297872340426 
 3 0.1702127659574468 
 4 0.0851063829787234 
 5 0.0851063829787234 
 6 0.0851063829787234 
 7 0.0851063829787234 
 8 0.10638297872340426 
 9 0.1702127659574468 
 10 0.0 
 11 0.0 
 12 0.0 

results for first 20 numbers of pi mantissa
 1 0.1 
 2 0.1 
 3 0.15 
 4 0.1 
 5 0.15 
 6 0.1 
 7 0.05 
 8 0.1 
 9 0.15 
results for small numbers of pi mantissa
 1 0.0851063829787234 
 2 0.10638297872340426 
 3 0.1702127659574468 
 4 0.0851063829787234 
 5 0.0851063829787234 
 6 0.0851063829787234 
 7 0.0851063829787234 
 8 0.10638297872340426 
 9 0.1702127659574468 
results for 100k numbers of pi mantissa
 1 0.1000947923455181 
 2 0.09782372573414697 
 3 0.0989790074451488 
 4 0.09843592629895136 
 5 0.09899875585046508 
 6 0.09899875585046508 
 7 0.09898888164780693 
 8 0.09852479412287458 
 9 0.09777435472085629 


Code scraps, timing statements

        puts " loading [time {pixane load $p -file $fin} ]"        
        puts "Scaling ($sourcewidth x $sourceheight) => ($virtualwidth x $virtualheight)"
        puts " resizex [time {pixane resize $targetpix $virtualwidth $virtualheight } ]"
        puts " blanking [time {pixane blank $targetpix } ]"
        puts " rescale [time {pixane scale $targetpix $p } ]"
        puts " saving [time {pixane save $targetpix -file $fout -format jpg } ]"
        puts " proc time [time { jackpix } ]"