Чисельне відновлення уявної частини аналітичного продовження від реальної частини


11

Моя ситуація.

У мене функція складної змінної визначена через складний інтеграл. Що мене цікавить - це значення цієї функції на уявній осі. У мене є числовий доступ до цієї функції на наступній стрічці: . Формально інтегральне вираження розходяться поза цією областю, і тому мені потрібно аналітичне продовження. Щоб підвести підсумки моєї ситуації,z = ( x , y ) ( - , ) × [ - 1 , 1 ]f(z)z=(x,y)(,)×[1,1]

введіть тут опис зображення

Ось що я знаю про на цій стрічці з чисел:f(z)

  1. Він одночасно симетричний щодо уявної та реальної осей.

  2. Він спаде до нуля при .Re(z)

  3. Він вибухає поблизу . Це може бути полюс або точка відгалуження, я не знаю. Я підозрюю, що характер цієї сингулярності (і, можливо, всіх інших ізольованих особливостей аналітичного продовження) залежить від конкретної параметризації цієї функції (детальну інформацію див. Нижче в цілі)ξz=±iξ

Насправді він дуже схожий на або на при побудові графіку. Ось сюжет реальної частини:1 / ( 1 + z 2 ) 2 nsech2(z)1/(1+z2)2n

введіть тут опис зображення

Моє запитання, враховуючи чистий об'єм інформації, яку я маю про функцію (загальний числовий доступ до неї на цій стрічці), чи є в мене спосіб чисельно обчислити наближення до цієї функції вздовж уявної осі? Я, до речі, використовую Mathematica.

Причина, що мене цікавлять значення вздовж уявної осі, полягає в тому, що мені потрібно оцінити наступне перетворення Фур'є цієї функції:

(1)f¯(t)=dxeitx1x2+x02f(x)

для великих значень , що в моєму випадку насправді знаходиться на порядку . Хоча я добре знаю інтегранду та цю трансформацію Фур'є є надзвичайно коливальною, тому єдиний інший спосіб, яким я знаю, як це обчислити, - це інтеграція Контура.10t10


Що я пробував.

  1. Я насправді намагався обчислити кінцевий високо-коливальний інтеграл, екв. (1). Оцінювання рівняння (1) для одиничного значення 't' потрібно обчислити кілька годин. Я вже здійснив декілька таких інтегралів, і результати насправді мають сенс, але я хотів би альтернативного підходу.

  2. Я намагався аналітично продовжувати з наближеннями Паде, але це також обчислювально дорого, але не настільки, як пряме оцінювання. Що ще важливіше, я не міг встановити конвергенцію зі збільшенням порядку наближень (а також середнього їх часткового суми!), Що на відміну від того, як мої тести з простими функціями, такими як (I можна було легко отримати дуже швидку конвергенцію на широких діапазонах складної площини з простими тестовими функціями).zsech2(z)z

  3. Я спробував символічну інтеграцію безрезультатно. Я спробував масажувати інтегрант у більш засвоювану форму для Mathematica, але мої спроби не вдалися.


Невід'ємний інтеграл.

Нехай , , і - додатні дійсні числа, тоді як - це комплексне число, яке нас цікавить (відіграє роль в попередньому обговоренні). Визначте:k ξ α E zk4kξαEz

p12=(k4+12E)2+k2+α2p22=(k412E)2+k2+(1α)2

Цікавим, що мене цікавить, є наступне:

f(E;α,ξ)=dk40d(k2)[α(1+p12)3ξ/2(1+p22)ξ/2(1+p12(1+p12)2ξ)(1+p22(1+p22)2ξ)++(p1p2)]

де я придушив позначення функціональної залежності в інтеграді для стислості. Мене особливо цікавлять значення , діапазон і (як зазначено вище) перетворення Фур'є (1) для .0 < α < 1 t 10ξ=1,2,30<α<1t 10


Чи безумовно корисне чисельне аналітичне продовження тут? Чи можете ви замість цього оцінити його вздовж , де інтеграл буде експоненціально розпадатися, але доступний безпосередньо? Дещо дивно, що коливальний інтеграл неможливо було оцінити, тому що зазвичай спеціалізовані методи для коливальних інтегралів могли б справлятися з функцією швидкого поліноміально-руйнування, як . Я говорю це, тому що після гри з інтегралом у Mathematica я переживаю, що числове аналітичне продовження може статися сліпою алеєю. ˉ f f fR+0.99if¯ff
Кирило

1
Я спробував реалізувати інтеграл безпосередньо в Mathematica, і я змусив його оцінювати у 20-х роках на своєму ноутбуці: не чудово, але й не години. Чи допоможе вам, якби я написав відповідь, як оцінити її безпосередньо? f¯
Кирило

@Kirill Після багатьох невдалих спроб чисельного аналітичного продовження я схильний від усієї думки погодитися з вашим першим коментарем. Будь ласка, якщо ви змогли оцінити у 20-х роках, я був би дуже вдячний за написання. До речі, це може допомогти додати, що насправді це було не одне єдине оцінювання яке займало години, а приблизно 30 оцінок (оцінювання з розміром інтервалу ). Однак одна оцінка зайняла у мене близько 14 хвилин. ˉ f α[-1,2]0,1f¯f¯α[1,2]0.1
Артуро дон Хуан

Я написав це, але виявив проблему зі своїм кодом, тому я більше не впевнений, що те, що я обчислив, взагалі дійсне. Чи є у вас відомі дійсні еталонні значення?
Кирило

Відповіді:


5

Примітка: Я дещо переживаю, що інтегральні значення, які дає мені Mathematica, є хибними. Я подумав, що це працює, тому що він дає розумний вигляд за короткий час, але може бути так, що метод, який він намагається використовувати, є баггі або що я щось зробив не так. Тож може бути, що наведений нижче код зовсім не працює, я не знаю, вибачте.

Примітка 2: Мене це непокоїло, тому я написав іншу версію ( код тут , вибачте за якість коду), використовуючи Julia та GSL, і вона оцінює gза 2 секунди ту саму відповідь, яку дає Mathematica нижче. Тому я думаю, що код, мабуть, добре.

ff¯

Мій минулий досвід чисельної інтеграції приводить мене до думки, що химерні математичні методи іноді можуть бути надзвичайно корисними, але також те, що оцінка чисельних перетворень Фур'є та інтегрування раціональних та алгебраїчних функцій є основою чисельних алгоритмів інтеграції, тому часто можна зробити легкий прогрес, обережно підбираючи алгоритми та граючи з їх параметрами. Зазвичай це простіший варіант, якщо важко зрозуміти, як правильно змусити математичну техніку.

ClearAll[ξ, α, p1, p2, fi, f, g];
ξ = 1;
α = 1/2;
fi[e_, k4_, kp_] := Module[{
   p1 = (k4^2 + e/2)^2 + kp^2 + α^2,
   p2 = (k4^2 - e/2)^2 + kp^2 + (1 - α)^2},
  2 * (* because integrate k4 over (0,∞) *)
   2 kp * (* because d(kp^2) *)
   (α (1 + p1)^(3 ξ/2) (1 + p2)^(ξ/2)) /
     ((1 + p1 (1 + p1)^(2 ξ)) (1 + p2 (1 + p2)^(2 ξ)))
  ]
f[e_?NumericQ] := NIntegrate[
   fi[e, k4, kp], {k4, 0, ∞}, {kp, 0, ∞},
   Method -> {Automatic, "SymbolicProcessing" -> 0}];

(* !!! This gives a bogus result: *)
gBogus[t_?NumericQ, e0_?NumericQ] := 
 NIntegrate[
  Exp[I t e]/(e^2 + e0^2) f[e], {e, -∞, ∞}, 
  Method -> {"DoubleExponentialOscillatory", 
    "SymbolicProcessing" -> 0}]

(* This gives *a* result, different from above despite being equivalent *)
g[t_?NumericQ, e0_?NumericQ] := 
 NIntegrate[Exp[I t e]/(e^2 + e0^2) f[e], {e, -\[Infinity], 0}, 
   Method -> {"DoubleExponentialOscillatory", 
     "SymbolicProcessing" -> 0},
   EvaluationMonitor :> Print["e=", e]] +
  NIntegrate[Exp[I t e]/(e^2 + e0^2) f[e], {e, 0, \[Infinity]}, 
   Method -> {"DoubleExponentialOscillatory", 
     "SymbolicProcessing" -> 0},
   EvaluationMonitor :> Print["e=", e]]

Результат:

In[18]:= Timing@g[10,1]
Out[18]= {78.0828, 0.0000704303 + 9.78009*10^-6 I}

In[338]:= Timing@g[1,1]
Out[338]= {14.3125,0.389542 +0.024758 I}

Я змусив Mathematica витрачати нульовий час на символічну попередню обробку інтегралів, тому що в цьому випадку він би не міг зрозуміти нічого корисного з цього приводу. Я також сказав йому, щоб спеціально використовувати метод коливальної квадратури для другого інтеграла.

Моя здогадка, чому випадково мнучи стратегію інтеграції (див NIntegrateIntegrationStrategies ) працює на все є те , що іноді Mathematica може випадково вибрати погану стратегію автоматично, вбиваючи продуктивність, в той час як всі , що я питаю це зробити, по крайней мере , трохи змістовні , навіть якщо неоптимальний. Ви також можете розглянути можливість отримання допомоги на https://mathematica.stackexchange.com , вони можуть знати більше про внутрішні ресурси Mathematica.


k40g[t,e0]

fEp1p2EEk42×(0,)

p1p2Ep1,2k4

@ArturodonJuan Я думаю, це не має жодної реальної різниці в тому, як працює відповідь, змінилися б лише цифри.
Кирило
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.