| New Reply |
"The precision of the argument function" error message, graph not plotted |
Share Thread |
| Jun13-12, 08:30 AM | #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. |
| Jun16-12, 07:44 AM | #2 |
|
Mentor
|
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)]}... |
| New Reply |
| Tags |
| mathematica 8 |
Similar discussions for: "The precision of the argument function" error message, graph not plotted
|
||||
| Thread | Forum | Replies | ||
| "Foundations" argument: Silberstein et al engage Hiley-channeling-Bohm | Quantum Physics | 47 | ||
| Matlab "solve" function in "for" loops | Math & Science Software | 4 | ||
| How do I construct a set of "concentric" circles with millimeter precision? | General Engineering | 2 | ||
| "Key Argument for Global Warming Critics Evaporates" | Earth | 53 | ||