Ditto. I suspect that the values in @frequency are wrong.

#! perl -slw use strict; use List::Util qw[ sum ]; my @matrix =( [0.54, 0.03, 0.03, 0.03, 0.08, 0.04, 0.05, 0.05, 0.02, 0.02, 0.03, 0.0 +4, 0.03, 0.01, 0.06, 0.11, 0.06, 0.01, 0.01,0.06], [0.02, 0.57, 0.03, 0.01, 0.02, 0.06, 0.03, 0.01, 0.04, 0.01, 0.01, 0.1 +1, 0.02, 0.01, 0.01, 0.02, 0.02, 0.01, 0.01, 0.01], [0.01, 0.02, 0.48, 0.06, 0.01, 0.03, 0.03, 0.03, 0.05, 0.01, 0.01, 0.0 +3, 0.01, 0.00, 0.01, 0.04, 0.03, 0.00, 0.02, 0.01], [0.02, 0.01, 0.09, 0.57, 0.01, 0.04, 0.11, 0.02, 0.03, 0.00, 0.00, 0.0 +3, 0.01, 0.00, 0.02, 0.04, 0.02, 0.00, 0.01, 0.00], [0.01, 0.00, 0.00, 0.00, 0.57, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.0 +0, 0.00, 0.01, 0.00, 0.01, 0.01, 0.01, 0.01, 0.01], [0.02, 0.04, 0.03, 0.02, 0.01, 0.42, 0.05, 0.01, 0.04, 0.01, 0.01, 0.0 +5, 0.02, 0.00, 0.01, 0.02, 0.02, 0.01, 0.01, 0.01], [0.04, 0.04, 0.05, 0.13, 0.01, 0.11, 0.52, 0.02, 0.03, 0.01, 0.01, 0.0 +7, 0.01, 0.00, 0.02, 0.04, 0.04, 0.01, 0.01, 0.01], [0.05, 0.02, 0.05, 0.03, 0.02, 0.02, 0.02, 0.77, 0.02, 0.00, 0.00, 0.0 +2, 0.01, 0.00, 0.01, 0.04, 0.01, 0.01, 0.00, 0.01], [0.01, 0.01, 0.02, 0.01, 0.01, 0.02, 0.01, 0.00, 0.54, 0.00, 0.00, 0.0 +1, 0.01, 0.02, 0.01, 0.01, 0.01, 0.02, 0.04, 0.00], [0.02, 0.01, 0.01, 0.00, 0.03, 0.01, 0.01, 0.00, 0.01, 0.50, 0.10, 0.0 +1, 0.09, 0.04, 0.01, 0.01, 0.03, 0.02, 0.01, 0.18], [0.03, 0.02, 0.01, 0.01, 0.03, 0.03, 0.01, 0.00, 0.02, 0.13, 0.60, 0.0 +2, 0.19, 0.09, 0.02, 0.02, 0.02, 0.02, 0.03, 0.08], [0.03, 0.14, 0.06, 0.03, 0.01, 0.09, 0.06, 0.02, 0.05, 0.01, 0.01, 0.5 +0, 0.02, 0.01, 0.02, 0.04, 0.03, 0.01, 0.01, 0.01], [0.01, 0.01, 0.00, 0.00, 0.01, 0.02, 0.00, 0.00, 0.01, 0.03, 0.05, 0.0 +1, 0.42, 0.02, 0.00, 0.01, 0.01, 0.01, 0.01, 0.02], [0.01, 0.01, 0.00, 0.00, 0.02, 0.01, 0.00, 0.00, 0.03, 0.02, 0.04, 0.0 +0, 0.04, 0.61, 0.00, 0.01, 0.01, 0.07, 0.14, 0.01], [0.03, 0.01, 0.01, 0.01, 0.00, 0.01, 0.01, 0.01, 0.02, 0.00, 0.01, 0.0 +1, 0.01, 0.00, 0.72, 0.03, 0.01, 0.00, 0.00, 0.01], [0.07, 0.03, 0.06, 0.04, 0.05, 0.04, 0.03, 0.03, 0.02, 0.01, 0.01, 0.0 +4, 0.02, 0.01, 0.04, 0.43, 0.09, 0.02, 0.01, 0.01], [0.04, 0.02, 0.04, 0.02, 0.04, 0.03, 0.03, 0.01, 0.02, 0.02, 0.02, 0.0 +3, 0.03, 0.01, 0.02, 0.09, 0.52, 0.01, 0.01, 0.04], [0.00, 0.00, 0.00, 0.00, 0.01, 0.00, 0.00, 0.00, 0.01, 0.00, 0.00, 0.0 +0, 0.00, 0.02, 0.00, 0.00, 0.00, 0.71, 0.02, 0.00], [0.00, 0.01, 0.01, 0.00, 0.01, 0.01, 0.00, 0.00, 0.05, 0.01, 0.01, 0.0 +1, 0.01, 0.10, 0.00, 0.01, 0.01, 0.06, 0.61, 0.01], [0.05, 0.01, 0.01, 0.01, 0.07, 0.02, 0.02, 0.01, 0.01, 0.20, 0.07, 0.0 +1, 0.06, 0.03, 0.01, 0.02, 0.06, 0.02, 0.02, 0.51] ); my @freq = ( 0.08477395, 0.05103334, 0.03837665, 0.05740129, 0.01256165, 0.03471746, 0.06883297, 0.07907659, 0.02077239, 0.06813598, 0.08906677, 0.06501537, 0.02318017, 0.03823936, 0.04036729, 0.05668318, 0.05721648, 0.00871765, 0.02785317, 0.07797831, ); my @lnPAM = map[ map log( $_ || 1e-308 ), @$_ ], @matrix; my $k = 1; my $mutRate = sum map{ $freq[ $_ ] * ( 1 - $matrix[ $_ ][ $_ ] ) } 0.. +19; my $iter = 0; # The following loop goes until the difference reach the computer's # precision. while( abs( $mutRate - 0.01) > 1e-16 ) { ++$iter; $k *= $mutRate * 100; map $_ /= ( $mutRate * 100), @$_ for @lnPAM; @matrix = map[ map exp( $_ ), @$_ ], @lnPAM; $mutRate = sum map{ $freq[ $_ ] * ( 1 - $matrix[ $_ ][ $_ ] ) } 0. +.19; printf "After %d iteration(s), k=%f, RateMutation=%f\n", $iter, $k +, $mutRate; } __END__ C:\test>junk After 1 iteration(s), k=44.513577, RateMutation=0.013418 After 2 iteration(s), k=59.727332, RateMutation=0.010018 After 3 iteration(s), k=59.836899, RateMutation=0.010000 After 4 iteration(s), k=59.837487, RateMutation=0.010000 After 5 iteration(s), k=59.837490, RateMutation=0.010000 After 6 iteration(s), k=59.837490, RateMutation=0.010000 After 7 iteration(s), k=59.837490, RateMutation=0.010000

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

In reply to Re^2: Help with my Code by BrowserUk
in thread Reaped: Help with my Code by NodeReaper

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.