Math Functions in Perl

Discussion in 'Perl Misc' started by coolchick, Nov 5, 2007.

  1. coolchick

    coolchick Guest

    Hi All,

    I am trying to compute few equations using perl.

    This is the equation that I am trying to solve:

    MI=171-5.2*ln(aveV)-0.23*aveV(g)-16.2*ln(aveLOC)
    +50sin(sqrt(2.46*perCM))

    I have all the variables: aveV, aveV(g), aveLOC and perCM.
    So the equation is:

    $MI=171 - (5.2*(2.303*log($aveV)))-(0.23*$ecc)-
    (16.2*(2.303*log($aveLOC)))+(50*(sin(sqrt(2.46*$perCM))));

    where:
    $aveV= 239.530014548124
    $ecc=9
    $aveLOC=47
    $perCM=0.297872340425532

    I am not getting the correct answer. I get MI=-2.56217048794884, which
    is not correct.
    I tried to break it down and the problem is that I don't think I have
    the right libraries for math.
    It is not computing sqrt, log, and sin correctly.

    I am using:
    use Math::Complex;
    use Math::Trig;

    Any help would be great!
    Thanks,
    naureen
     
    coolchick, Nov 5, 2007
    #1
    1. Advertising

  2. coolchick wrote:
    > MI=171-5.2*ln(aveV)-0.23*aveV(g)-16.2*ln(aveLOC)
    > +50sin(sqrt(2.46*perCM))
    >
    > I have all the variables: aveV, aveV(g), aveLOC and perCM.
    > So the equation is:
    >
    > $MI=171 - (5.2*(2.303*log($aveV)))-(0.23*$ecc)-
    > (16.2*(2.303*log($aveLOC)))+(50*(sin(sqrt(2.46*$perCM))));
    >
    > where:
    > $aveV= 239.530014548124
    > $ecc=9
    > $aveLOC=47
    > $perCM=0.297872340425532
    >
    > I am not getting the correct answer. I get MI=-2.56217048794884, which
    > is not correct.


    This is a long shot, but is any of the iterim values exceedingly large or
    small? If so then you fell victim to a variation of 'perldoc -q 999'.
    The easiest remedy would be to rewrite the equation to avoid very
    large/small iterim values. This is not trivial, but there is a reason why
    Computer Numerics is a class of its own at university.

    jue
     
    Jürgen Exner, Nov 5, 2007
    #2
    1. Advertising

  3. coolchick

    smallpond Guest

    On Nov 5, 8:00 am, coolchick <> wrote:
    > Hi All,
    >
    > I am trying to compute few equations using perl.
    >
    > This is the equation that I am trying to solve:
    >
    > MI=171-5.2*ln(aveV)-0.23*aveV(g)-16.2*ln(aveLOC)
    > +50sin(sqrt(2.46*perCM))
    >
    > I have all the variables: aveV, aveV(g), aveLOC and perCM.
    > So the equation is:
    >
    > $MI=171 - (5.2*(2.303*log($aveV)))-(0.23*$ecc)-
    > (16.2*(2.303*log($aveLOC)))+(50*(sin(sqrt(2.46*$perCM))));
    >
    > where:
    > $aveV= 239.530014548124
    > $ecc=9
    > $aveLOC=47
    > $perCM=0.297872340425532
    >
    > I am not getting the correct answer. I get MI=-2.56217048794884, which
    > is not correct.
    > I tried to break it down and the problem is that I don't think I have
    > the right libraries for math.
    > It is not computing sqrt, log, and sin correctly.
    >
    > I am using:
    > use Math::Complex;
    > use Math::Trig;
    >
    > Any help would be great!
    > Thanks,
    > naureen


    Rearranging your equation to show intermediate terms:

    $aveV = 239.530014548124;
    $ecc = 9.0;
    $aveLOC = 47.0;
    $perCM = 0.297872340425532;

    $i1= (5.2 * (2.303*log($aveV)));
    $i2= (0.23 * $ecc);
    $i3= (16.2 * (2.303*log($aveLOC)));
    $i4= (50 * (sin(sqrt(2.46*$perCM))));

    $MI = 171.0 - $i1 - $i2 - $i3 + $i4;

    print "171.0 - ",$i1," - ",$i2," - ",$i3," + ",$i4," = ",$MI,"\n";

    171.0 - 65.610465007406 - 2.07 - 143.64361681316 + 37.761911332617 =
    -2.56217048794883

    I don't think you have math errors. All of the terms are the
    same order of magnitude. If the result is wrong, then it is
    something in your formula. You do want log base e and angle
    in radians, right?
    --S
     
    smallpond, Nov 5, 2007
    #3
  4. coolchick

    coolchick Guest

    coolchick, Nov 5, 2007
    #4
  5. coolchick

    coolchick Guest

    How did you get 'mi=115.830374853214 ' as your your answer?

    How can I do this inside my perl code ?
     
    coolchick, Nov 5, 2007
    #5
  6. coolchick

    J. Gleixner Guest

    coolchick wrote:
    > How did you get 'mi=115.830374853214 ' as your your answer?
    >
    > How can I do this inside my perl code ?


    At this point, most people would simply copy and paste the
    relevant parts of the code into a file and experiment with
    it on their own.
     
    J. Gleixner, Nov 5, 2007
    #6
  7. On Mon, 05 Nov 2007 05:00:35 -0800, coolchick
    <> wrote:

    >Hi All,
    >
    >I am trying to compute few equations using perl.


    Perl is not oriented at solving equations. You can solve them
    symbolically and throw in values to compute the value of some function
    given the arguments to it.


    Michele
    --
    {$_=pack'B8'x25,unpack'A8'x32,$a^=sub{pop^pop}->(map substr
    (($a||=join'',map--$|x$_,(unpack'w',unpack'u','G^<R<Y]*YB='
    ..'KYU;*EVH[.FHF2W+#"\Z*5TI/ER<Z`S(G.DZZ9OX0Z')=~/./g)x2,$_,
    256),7,249);s/[^\w,]/ /g;$ \=/^J/?$/:"\r";print,redo}#JAPH,
     
    Michele Dondi, Nov 5, 2007
    #7
  8. On Mon, 05 Nov 2007 10:03:18 -0800, Jim Gibson <>
    wrote:

    >> For the angle, shouldn't that be in degrees.

    >
    >perldoc -f log:
    >
    > log EXPR
    > log Returns the natural logarithm (base e) of EXPR.


    For some reason, pocket calcultators have this habit of calling log_10
    log and log_e ln. In my mathematical writings I just stick with log to
    mean "their" ln. logarithms in any other base (unless explicitly
    shown) are of little mathematical relevance, IMHO.


    Michele
    --
    {$_=pack'B8'x25,unpack'A8'x32,$a^=sub{pop^pop}->(map substr
    (($a||=join'',map--$|x$_,(unpack'w',unpack'u','G^<R<Y]*YB='
    ..'KYU;*EVH[.FHF2W+#"\Z*5TI/ER<Z`S(G.DZZ9OX0Z')=~/./g)x2,$_,
    256),7,249);s/[^\w,]/ /g;$ \=/^J/?$/:"\r";print,redo}#JAPH,
     
    Michele Dondi, Nov 5, 2007
    #8
  9. On Mon, 05 Nov 2007 21:49:38 +0100, Michele Dondi wrote:

    > For some reason, pocket calcultators have this habit of calling log_10
    > log and log_e ln. In my mathematical writings I just stick with log to
    > mean "their" ln. logarithms in any other base (unless explicitly shown)
    > are of little mathematical relevance, IMHO.


    I use log2 on a nearly daily basis. But then, I'm in computers while I
    could have learned a trade.

    M4
     
    Martijn Lievaart, Nov 5, 2007
    #9
  10. On Mon, 5 Nov 2007 23:42:03 +0100, Martijn Lievaart
    <> wrote:

    >> For some reason, pocket calcultators have this habit of calling log_10
    >> log and log_e ln. In my mathematical writings I just stick with log to
    >> mean "their" ln. logarithms in any other base (unless explicitly shown)
    >> are of little mathematical relevance, IMHO.

    >
    >I use log2 on a nearly daily basis. But then, I'm in computers while I
    >could have learned a trade.


    Hehe, in fact I was about to say that, probably along the lines of "a
    second, but distant competitor being log_2". In fact information
    theory is a respectable mathematical one also in its own respect i.e.
    abstractly and regardless of any physical computer...


    Michele
    --
    {$_=pack'B8'x25,unpack'A8'x32,$a^=sub{pop^pop}->(map substr
    (($a||=join'',map--$|x$_,(unpack'w',unpack'u','G^<R<Y]*YB='
    ..'KYU;*EVH[.FHF2W+#"\Z*5TI/ER<Z`S(G.DZZ9OX0Z')=~/./g)x2,$_,
    256),7,249);s/[^\w,]/ /g;$ \=/^J/?$/:"\r";print,redo}#JAPH,
     
    Michele Dondi, Nov 5, 2007
    #10
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. chirs
    Replies:
    18
    Views:
    793
    Chris Uppal
    Mar 2, 2004
  2. AciD_X
    Replies:
    4
    Views:
    8,151
    Jonathan Turkanis
    Apr 1, 2004
  3. Mark Healey
    Replies:
    7
    Views:
    1,539
    Tim Prince
    May 22, 2006
  4. Philipp
    Replies:
    9
    Views:
    1,164
    Mark Space
    Jul 23, 2008
  5. VK
    Replies:
    15
    Views:
    1,278
    Dr J R Stockton
    May 2, 2010
Loading...

Share This Page