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.

Reply via email to