I can only say that the precision settings are ignored somewhere, so you get e.g. with digits=20, not 30, the following: sage: sage: def foo(x): ....: ....: return RR(N(-1/2*pi*(tan(1/2*pi*tanh(x))^2 + 1)*(tanh(x)^2 - 1)/tan(1/2*pi*tanh(x)), digits ....: =20)) ....: sage: [foo(t) for t in [1..30]] [1.93774723784661, 1.96821438642349, 1.99513501225342, 1.99933077915401, 1.99990923138260, 1.99998771214757, 1.99999833695304, 1.99999977492984, 1.99999996954002, 1.99999999587773, 1.99999999944087, 1.99999999992499, 1.99999999996552, 2.00000000042880, 1.99999999864906, 1.99999996835578, 1.99999995885087, 2.00000113072913, 2.00001042817460, 2.00003433318607, 1.99883239681839, 1.99062668609516, 1.94465796436172, 2.14811194088516, -0.000000000000000, -0.000000000000000, -0.000000000000000, -0.000000000000000, -0.000000000000000, -0.000000000000000]
or wihout digits set: sage: [foo(t) for t in [1..30]] [1.93774723784661, 1.96821438642349, 1.99513501225340, 1.99933077915395, 1.99990923138165, 1.99998771213936, 1.99999833692570, 1.99999977472377, 1.99999996716508, 1.99999996314183, 1.99999991577607, 1.99999955972581, 1.99998381431810, 1.99992717313233, 1.99985733718347, 1.99771319132044, 2.00589700214384, 1.91808127189615, 1.23125745353424, -0.000000000000000, -0.000000000000000, -0.000000000000000, -0.000000000000000, -0.000000000000000, -0.000000000000000, -0.000000000000000, -0.000000000000000, -0.000000000000000, -0.000000000000000, -0.000000000000000] if it were able to use the 30 digits, we would not have seen that drop down of the function graph to 0 somewhere just before 20. On Tue, Dec 6, 2022 at 1:28 PM Emmanuel Charpentier < emanuel.charpent...@gmail.com> wrote: > The same thing happens after : > > sage: def foo(x): > ....: return RR(N(-1/2*pi*(tan(1/2*pi*tanh(x))^2 + 1)*(tanh(x)^2 - > 1)/tan(1/2*pi*tanh(x)), digits=30)) > ....: > sage: foo > <function foo at 0x7fe472aab250> > sage: plot(foo, (1, 30)) > Launched png viewer for Graphics object consisting of 1 graphics primitive > > > > > Le mardi 6 décembre 2022 à 14:23:48 UTC+1, Emmanuel Charpentier a écrit : > >> Le mardi 6 décembre 2022 à 14:16:56 UTC+1, dim…@gmail.com a écrit : >> >> It's plotting via matplotlib, perhaps that's why the precision setting is >>> ignored (or pehaps something like RDF is hardcoded in Sage plotting code) >>> >> That wouldn’t explain why the specification included in the lambda >> expression in the third example isn’t accepted : matplotlib should see >> the RR values returned by it (which *do* accept the precision >> specification). >> >> >>> >>> On Tue, Dec 6, 2022 at 12:53 PM Emmanuel Charpentier < >>> emanuel.c...@gmail.com> wrote: >>> >>>> Question already asked on |`ask.sagemath.org`]( >>>> https://ask.sagemath.org/question/64934/plotting-ill-conditionned-function/), >>>> where it didn't attract a lot of attention... >>>> >>>> Let >>>> >>>> ``` >>>> sage: f(x)=log(tan(pi/2*tanh(x))).diff(x) ; f >>>> x |--> -1/2*pi*(tan(1/2*pi*tanh(x))^2 + 1)*(tanh(x)^2 - >>>> 1)/tan(1/2*pi*tanh(x)) >>>> ``` >>>> >>>> It can be shown (see Juanjo's answer [here]( >>>> https://ask.sagemath.org/question/64794/inconsistentincorrect-value-of-limit-involving-tan-and-tanh/)) >>>> that this finction's limit at `x=oo` is 2. >>>> >>>> A couple CASes are wrong about it : >>>> >>>> ``` >>>> sage: f(x).limit(x=oo) >>>> 0 >>>> sage: f(x).limit(x=oo, algorithm="maxima") >>>> 0 >>>> ``` >>>> >>>> A couple get it right : >>>> >>>> ``` >>>> sage: f(x).limit(x=oo, algorithm="giac") >>>> 2 >>>> sage: f(x).limit(x=oo, algorithm="mathematica_free") >>>> 2 >>>> ``` >>>> >>>> And Sympy currently never returns. >>>> >>>> A "naïve" way to explore this is to assess the situation is to look for >>>> numerical values : >>>> >>>> ``` >>>> plot(f, (1, 30)) >>>> ``` >>>> [image: tmp_bnpx6r7n.png] >>>> >>>> This plot hints at ill-conditionong of the epression of the function. >>>> And it turns out that this ill-conditioning can be overcome by specifying >>>> an "absurd" precision : >>>> >>>> ``` >>>> sage: f(30).n() >>>> -0.000000000000000 >>>> sage: f(30).n(digits=30) >>>> 1.99999483984586167962667231030 >>>> ``` >>>> >>>> But `plot` seems to *ignore* this specification : >>>> >>>> ``` >>>> sage: plot(lambda u:f(u).n(digits=30), (1, 30)) >>>> ``` >>>> >>>> [image: tmp_jeq3c8ko.png] >>>> >>>> We can try to "isolate" the precision specification in a Python >>>> function, which seems to work : >>>> >>>> ``` >>>> sage: def foo(x): return RR(f(x).n(digits=30)) >>>> sage: foo(30) >>>> 1.99999483984586 >>>> ``` >>>> >>>> but is still defeated byr the inner gears of `plot` : >>>> >>>> ``` >>>> sage: plot(foo, (1, 30)) >>>> ``` >>>> >>>> [image: tmp_dg2gelpc.png] >>>> >>>> Why, Ô why ??? >>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "sage-support" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to sage-support...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/sage-support/db271244-0ad7-4484-8a46-bdc4b1edd0f0n%40googlegroups.com >>>> <https://groups.google.com/d/msgid/sage-support/db271244-0ad7-4484-8a46-bdc4b1edd0f0n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> >> > -- > You received this message because you are subscribed to the Google Groups > "sage-support" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sage-support+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sage-support/de783db9-35b4-47a4-88ba-064a1f67f532n%40googlegroups.com > <https://groups.google.com/d/msgid/sage-support/de783db9-35b4-47a4-88ba-064a1f67f532n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-support/CAAWYfq0YhOCi%3Dvtbir8i2%3DN-O5dx_phOEPcHAWTwWZ8FBEwksQ%40mail.gmail.com.