Damian Rossler on Mon, 12 Jun 2023 22:14:41 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Problème avec intnum


Dear Bill, thank you for this. What do you mean by « an asymptotic singularity at I »? 
The integral is along the real line, so it never meets any singularity of the function (in particular, log(x+I) is always well-defined). 
Best wishes, Damian

> On 12 Jun 2023, at 7:43 pm, Bill Allombert <Bill.Allombert@math.u-bordeaux.fr> wrote:
> 
> On Mon, Jun 12, 2023 at 06:39:37PM +0100, Damian Rössler wrote:
>> Bonjour,
>> 
>> ce message pour vous signaler une problème que j’ai découvert dans Pari/GP lorsque j’ai essayé de faire un calcul avec intnum.
>> Voici : lorsque j’évalue
> 
> [[Hello Damian, Sorry to reply in English for the benefit of the list]]
> 
>> intnum(x=-1000,1000,log(x+I)/(x^2+1)) 
>> 
>> sur mon ordinateur, j’obtiens
>> 
>> 0.22992031686600422539427385649876229873 + 99.246582527150702120676228264996637697*I
> 
> This is a known issue, there is a asymptotic singularity at x=I, so it is better to 
> cut the integral at 0
> 
> intnum(x=-1000,0,log(x+I)/(x^2+1)) + intnum(x=0,1000,log(x+I)/(x^2+1))
> %1 = 2.1617705842398946206845289156864102853+4.9316606089380497070728417671647276968*I
> 
> Also, to get the result at the full precision you need to do
> ? intnum(x=-1000,0,log(x+I)/(x^2+1),2) + intnum(x=0,1000,log(x+I)/(x^2+1),2)
> %3 = 2.1617705842396943881732021681813425165+4.9316606089382864390572986833518100961*I
> 
> (basically, try ,0) ,1) ,2) until it stabilizes)
> 
>> En revanche, la commande 
>> 
>> NIntegrate[Log[x+I]/(x^2+1),{x,-1000,1000}]
>> 
>> sur Mathematica donne
>> 
>> 2.16177 + 4.93166 I
>> 
>> qui est effectivement proche de 
>> 
>> \pi\log(2)+i\pi^2/2 =(approx.)  2.1775860903036021305006888982376139473 + 4.9348022005446793094172454999380755677*i
>> 
>> (que l’on obtiendrait en intégrant de -\infty à \infty).
> 
> Indeed! By splitting the integral again:
> 
> ? intnum(x=-oo,0,log(x+I)/(x^2+1)) + intnum(x=0,oo,log(x+I)/(x^2+1))
> %8 = 2.1775860903036021305006888982376139473+4.9348022005446793094172454999380755677*I
> ? Pi*log(2)+I*Pi^2/2
> %9 = 2.1775860903036021305006888982376139473+4.9348022005446793094172454999380755677*I
> 
>> Une autre bizarrerie est que Pari/GP en ligne ( https://pari.math.u-bordeaux.fr/gp.html <https://pari.math.u-bordeaux.fr/gp.html> ) donne en revanche
>> 
>> 0.1951079189482813284692074920 + 120.3479637305210234105619723*I
>> 
>> lorsqu’on effectue la même commande que plus haut, ce qui ne coïncide pas avec ce que la version de Pari/GP installée sur mon ordinateur calcule.
> 
> Yes, the online version is 32bit due to limitation of javascript, which currently implies
> that the default precision is 28 digits instead of 38 digits.
> 
>> J’ai aussi essayé de calculer l’intégrale avec des bornes plus élevées et on obtient des résultats encore plus éloignés de la vraie valeur. 
>> Par ex., sur mon ordinateur, la commande 
>> 
>> intnum(x=-100000,100000,log(x+I)/(x^2+1)) 
>> 
>> donne
>> 
>> 0.0046079812092805937682847726807162324991 + 9916.7863769592496702503585536475594909*I
>> 
>> Je sais bien que les intégrales oscillantes sont difficiles à approcher numériquement mais l’intégrant n’est pas oscillant ici 
>> (mais il converge assez lentement vers 0).
> 
> PARI uses the double exponential method that does a change of variable. Unfortunately this causes the singularity
> at I to get closer and closer to the integration path when N goes to infinity.
> 
> Thanks for using PARI/GP!
> Bill