Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

The precision of the argument function error message, graph not plotted

  1. Jun 13, 2012 #1
    "The precision of the argument function" error message, graph not plotted

    I've got a function, integratedadvthirdaltb, that I'm trying to use in plotting some graphs:

    thirdaltb[KP_, Ps_, C_, M_] :=
    NSolve[Sqrt[2*M]*b +
    InverseCDF[NormalDistribution[0, 1], Ps]*
    Sqrt[4*(InverseCDF[NormalDistribution[0, 1], Ps]^2) +
    4*Sqrt[2*M]*b + (2.785398163397448309616)*M] ==
    KP*C - 2*(InverseCDF[NormalDistribution[0, 1], Ps]^2), b,
    WorkingPrecision -> 20]

    directadv[b_] := -Log2[1 - CDF[NormalDistribution[0, 1], b]]

    integratedadvthirdaltb[KP_, Ps_, C_, M_] :=
    directadv[b /. thirdaltb[KP, Ps, C, M]]

    So far so good. However, the first graph I've tried to plot is giving me a lot of "The precision of the argument function ({6.6073 +4\ Sqrt[2]\ \
    b+1.83842\ Sqrt[58.0856 +16\Sqrt[2]\b]}\\n) is less than \
    WorkingPrecision" errors (in fact, that's not the only argument function that apparently has less than WorkingPrecision.) Having WorkingPrecision->20 in the definition of the thirdaltb function, I'm at a loss as to why I'm getting these errors.

    That said, the first graph does get plotted. Here's the instruction to do so

    LogLinearPlot[{integratedadvthirdaltb[x, 0.967, 2^(-5.35614381),
    2^(4)]}, {x, 2^(9), 2^(13)}, AxesLabel -> {KPs, advantage},
    PlotLabel ->
    Style["HEYSFIRST6622NONLINEAR - theoretical advantage with Ps = \
    0.97"], PlotRange -> {0, 12}, PlotStyle -> {Blue},
    Ticks -> {{{2^(9), Superscript[2, Log2[2^(9)]]}, {2^(10),
    Superscript[2, Log2[2^(10)]]}, {2^(11),
    Superscript[2, Log2[2^(11)]]}, {2^(12),
    Superscript[2, Log2[2^(12)]]}, {2^(13),
    Superscript[2, Log2[2^(13)]]}}, Automatic},
    WorkingPrecision -> 20]

    The next graph I've tried to plot, however, is completely blank. Only the axes and heading/labels appear on screen. And I'm getting a lot more "The precision of the argument function ... is less than Working Precision" messages than I was for its predecessor:

    LogLinearPlot[{integratedadvthirdaltb[x, 0.967, 2^(-8), 1]}, {x,
    2^(9), 2^(13)}, AxesLabel -> {KPs, advantage},
    PlotLabel ->
    Style["CRYPRACTHREEFOURROUNDSTWELVEBITS - theoretical advantage \
    with Ps = 0.97"], PlotRange -> {0, 12}, PlotStyle -> {Red},
    Ticks -> {{{2^(9), Superscript[2, Log2[2^(9)]]}, {2^(10),
    Superscript[2, Log2[2^(10)]]}, {2^(11),
    Superscript[2, Log2[2^(11)]]}, {2^(12),
    Superscript[2, Log2[2^(12)]]}, {2^(13),
    Superscript[2, Log2[2^(13)]]}}, Automatic},
    WorkingPrecision -> 20]

    Does any one have any idea as to where I'm going wrong and what I should do to fix it?

    Thanks!

    James McLaughlin.
     
  2. jcsd
  3. Jun 16, 2012 #2

    Dale

    Staff: Mentor

    Re: "The precision of the argument function" error message, graph not plotted

    I looked through the code and it seems that there are several sources of reduced precision. First, you have several imprecise constants defined, such as 0.967. I would go through and define each constant to have 30 digits of precision, like 0.967`30.

    The other source of imprecision is the variable x. Even though you have defined the endpoints with exact expressions, x gets demoted down to $MachinePrecision while plotting points on the interior of the range. The way to overcome that is to explicitly increase its precision

    LogLinearPlot[{integratedadvthirdaltb[SetPrecision[x, 30], 0.967`30,
    2^(-5.35614381`30), 2^(4)]}...
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: The precision of the argument function error message, graph not plotted
Loading...