Ключом к оценке колебательных интегралов является усечение интеграла в нужной точке. Для этого примера вам нужно выбрать верхний предел формы
Прежде чем объяснять, почему это должно работать, сначала позвольте мне показать, что он действительно дает хорошие результаты.πN + π2
асимптотике
Нетрудно догадаться, что асимптотический ряд имеет вид
Чтобы численно проверить, что достаточно построить разницу между интегральным и ведущим асимптотическим выражением.я( λ ) ∼ 2 πλ---√[ потому что( λ - π4) + с1грех( λ - π4)λ+ с2соз( λ - π4)λ2+ с3грех( λ - π4)λ3+ … ]
с1= 18
int := NIntegrate[Cos[l*Cos[x]]*Sinc[x], {x, 0, 20.5*Pi}];
Plot[{l*(Sqrt[2*l/Pi]*int - Cos[l-Pi/4]), Sin[l-Pi/4]/8}, {l, Pi/4, 20}]
В результате вы получите довольно хороший синус, который совпадает с тем, который вы получили выше.
Если вы хотите найти следующие коэффициенты, немного более сложный кусок кода, если это необходимо. Идея кода ниже состоит в том, чтобы взять несколько верхних предельных значений и «усреднить» их результаты.
J[l_?NumericQ] := Block[{n=500},
f[k_] := NIntegrate[Cos[l*Cos[x]]*Sinc[x], {x,0,(n+k)*Pi+Pi/2},
Method->{"DoubleExponential"}, AccuracyGoal->14, MaxRecursion->100];
1/2*((f[0]+f[1])/2+(f[1]+f[2])/2)
]
t = Table[{l, l^2*(Sqrt[2*l/Pi]*J[l] - Cos[l-Pi/4] - 1/8*Sin[l-Pi/4]/l)},
{l, 4*Pi+Pi/4, 12*Pi+Pi/4, Pi/36}];
Fit[t, Table[Cos[l-Pi/4+Pi/2*n]/l^n, {n, 0, 10}], l]
Это дает следующий ответ.
с2= - 9128,с3= - 751024,с4= 367532768,...
объяснение
Простой пример
Для иллюстрации я собираюсь использовать более простой пример синуса - интеграл
Позвольте мне представить, что меня интересует значение , но я этого не знаю.S( х ) = ∫Икс0грех( у)YdY,
S( ∞ ) = π2
Вы видите, что колеблется вокруг своего предельного значения аналогично тому, как частичные суммы чередующихся в знаковых рядах колеблются с верхним отсечением.
Если вы хотите оценить такую сумму, в соответствии с методом ускорения ряда Эйлера вы должны взять
Или с точки зрения синусоидальной функции, вы должны интегрировать ее до точки между максимумом и минимумом колебаний. Как ясно видно из графика, такая точка приблизительно определяется как
для больших значений аргумента. В более общем смысле такой точкой является точка, гдепроисходит.S(x)SN=∑n=1N(−1)nn.
S≈SN+12(−1)N+1N+1.
S(x)≈∫πN+π20sinxxdx
max|S′(x)|
Твоя проблема
Возвращаясь к интегралу из курса Константина и Ярослава, вы можете видеть, что он ведет себя точно так же, как синус - интеграл как функция верхнего предела. Это означает, что вам нужно только вычислить значения
с . Ниже приведен график нескольких таких значений с .Ix0(λ)=2∫x00cos(λcos(x))sinc(x)dx
x0=πN+π2λ=12π
tab = Table[{x0, 2*NIntegrate[Cos[12*Pi*Cos[x]]*Sinc[x], {x, 0, x0},
Method->{"DoubleExponential"}, AccuracyGoal->12, MaxRecursion->100]},
{x0, 10*Pi+Pi/2, 30*Pi+Pi/2, Pi}];
tab1 = Table[(tab[[i]] + tab[[i+1]])/2, {i,1,Length[tab]-1}];
ListPlot[{tab, tab1}]
Здесь вы можете увидеть результат другого метода ускорения. Я переставляю частичные суммы следующим образом
и новую последовательность которая сходится намного быстрее. Этот прием также может оказаться полезным, если вы хотите оценить интеграл с высокой точностью.S′N=12(SN+SN+1)
S′N