1.10:1.10-Бесселівська інтерполяція
За кілька днів до широкого використання високошвидкісних комп'ютерів широко використовувалося друковані таблиці загальних математичних функцій. Наприклад, таблиця функції БесселяJ0(x) вказувала б
J0(1.7)=0.397 984 859
J0(1.8)=0.339 986 411
Якби хтось хотів функцію Бесселяx=1.762, потрібно було б інтерполювати між табличними значеннями.
Сьогодні було б простіше просто обчислити функцію Бесселя для будь-якого конкретного бажаного значення аргументуx, і сьогодні менше потреби в друкованих таблицях або знати, як інтерполювати. Дійсно, більшість обчислювальних систем сьогодні мають внутрішні процедури, які дозволять обчислити простолюдні функції, такі як функції Бесселя, навіть якщо у вас є лише туманне уявлення про те, що таке функція Бесселя.
Однак потреба не зовсім минула. Наприклад, в орбітальних розрахунках нам часто потрібні геоцентричні координати Сонця. Вони не є тривіальними для обчислення неспеціалістів, і може бути простіше шукати їх в Астрономічному альманасі, де він зведений у таблиці на кожен день року, наприклад, 14 липня та 15 липня. Але, якщо потрібноy 14 липня 395, як інтерполювати?
В ідеальному світі таблична функція буде таблична через досить тонкі проміжки часу, так що лінійна інтерполяція між двома табличними значеннями була б достатньою для повернення функції до тієї ж кількості значущих цифр, що і табличні точки. Світ не досконалий, однак, і для досягнення такої досконалості інтервал табуляції повинен був би змінюватися, оскільки функція змінювалася більш-менш швидко. Отже, нам потрібно знати, як робити нелінійну інтерполяцію.
Припустимо, функціяy(x)x=x1 зведена в таблицю в іx=x2, інтервалx2−x1 буттяδx. Якщо хтось бажає знайти значенняy atx+θδx, лінійна інтерполяція дає
y(x1+θΔx)=y1+θ(y2−y1)=θy2+(1−θ)y1,
деy1=y(x1) іy2=y(x2). Тут передбачається, що це дріб між0 і1; якщоθ знаходиться поза цим діапазоном (що є негативним, або більше, ніж1), ми екстраполяція, а не інтерполяція, і це завжди небезпечно робити.
Давайте тепер розглянемо ситуацію, коли лінійна інтерполяція недостатньо хороша. Припустимо,y(x) що функція зведена в таблицю для чотирьох точокx1, x2, x3, x4 аргументуx, відповідні значення функціїy1, y2, y3, y4. Бажаємо оцінитиy для тогоx=x2+θδx,δx де інтервалx2−x1 абоx3−x2 абоx4−x3. Ситуація проілюстрована на малюнкуI.6A.
Можливим підходом було б пристосувати многочлен до чотирьох сусідніх точок:
y=a+bx+cx2+dx3.
Ми запишемо це рівняння для чотирьох сусідніх табличних точок і вирішуємо для коефіцієнтів, і, отже, ми можемо оцінити функцію для будь-якого значенняx, що нам подобається в інтервалі міжx1 іx4. На жаль, це цілком може включати більше обчислювальних зусиль, ніж оцінка самої оригінальної функції.
FIGURE I.6A
Задача була вирішена зручним чином з точки зору скінченно-різницевого числення, логічний розвиток якого передбачав би додаткову істотну главу, що виходить за рамки передбачуваної книги. Тому я просто надаю метод лише, без доказів.
Суть методу полягає в тому, щоб скласти таблицю відмінностей, як показано нижче. Перші дві колонки -x іy. Записи в інших стовпцях - це відмінності між двома записами в стовпці відразу ліворуч. Таким чином, наприклад,δ4.5=y5−y4δ24=δ4.5−δ3.5, і т.д.
Давайте припустимо, що ми хочемо знайтиy для значенняx, що єθ часткою шляху відx4 доx5. Формула інтерполяції Бесселя
y(x)=12(y4+y5)+B1δ4.5+B2(δ24+δ25)+B3δ34.5+B4(δ44+δ45)+...
ТутBn наведені коефіцієнти інтерполяції Бесселя, а послідовні члени в дужках у розширенні - це суми чисел у графах таблиці.
Коефіцієнти Бесселя
Bn(θ)=12(θ+12n−1n)if n is even,
іBn(θ)=θ−12n(θ+12n−32n−1)if n is odd.
Позначення(mn) означає коефіцієнт х м в біноміальному розширенні(1+x)n.
Явно,
B1=θ−12
B2=12θ(θ−1)/2!=θ(θ−1)/4
B3=(θ−12)θ(θ−1)/3!=θ(0.5+θ(−1.5+θ))/6
B4=12(θ+1)θ(θ−1)(θ−2)/4!=θ(2+θ(−1+θ(−2+θ)))/48
B5=(θ−12)(θ+1)θ(θ−1)(θ−2)/5!=θ(−1+θ(2.5+θ2(−2.5+θ)))/120
Читач повинен переконати його або себе, що формула інтерполяції, прийнята настільки, наскількиB1 це просто лінійна інтерполяція. Додавання послідовно вищих термінів ефективно підходить до кривої до все більшої кількості точок навколо бажаного значення і все більш точно відображає фактичну змінуy зx.
Наведена вище таблиця взята з Астрономічного альманаху за 1997 рік, і вона показуєy координату Сонця протягом восьми днів поспіль у липні. Перші три стовпці відмінностей зведені в таблицю, і зрозуміло, що подальші стовпці відмінностей є необґрунтованими.
Якщо ми хочемо знайти значенняy, наприклад, для липня 4.746, ми маємоθ=0.746 і перші три коефіцієнти Бесселя
\ begin {масив} {c c l}
B_1 & = & +0.246\\
B_2 & = & -0.047\ 371\
B_3 & = & -0.007\ 768\ 844\
\ nonumber
\ end {масив}
Читач може перевірити наступніy розрахунки за сумою перших 2, 3 і 4 членів Бесселівської інтерполяційної серії формули. Сума перших двох членів є результатом лінійної інтерполяції.
Сума перших 2-х членів,y=0.909 580 299
Сума перших 3 членів,y=0.909 604 723
Сума перших 4-х членів,y=0.909 604 715
За умови, що таблиця не зведена в таблицю з невідповідними грубими інтервалами, потрібно рідко йти повз третього коефіцієнта Бесселя. У цьому випадку альтернативною та еквівалентною формулою інтерполяції (дляt=t4+θΔt), яка дозволяє уникнути необхідності побудови таблиці різниць, є
\ begin {масив} {c c l}
y (t_4 +\ тета\ дельта t) & = & -\ frac {1} {6}\ тета [(2 -\ тета (3-\ тета)) y_3 + (1 -\ тета) y_6]\\
& & +\ frac {1} {2} [(2 +\ тета (-1 +\ тета (-2 +\ тета (-2)))) y_4 +\ тета (2 +\ тета (1 -\ тета)) y_5].
\ end {масив}
Читачі повинні перевірити, що це дає однакову відповідь, при цьому зазначивши, що вкладені дужки роблять розрахунок дуже швидким і їх легко запрограмувати або на калькуляторі, або на комп'ютері.
Вправа1.10.1: Bessel Coefficients
З наведеної нижче таблиці побудуйте таблицю різниць до четвертих відмінностей. Обчисліть перші чотири коефіцієнти Бесселя дляθ=0.73. Звідси обчислити значенняy forx=0.273.
\ begin {масив} {c c}
x & y\\
0.0 & + 0.381300\\
0.1 & + 0.285603\\
0.2 & + 0.190 092\\
0.3 & + 0,096327\\
0.4 & + 0,008 268\\
0.5 & - 0.067 725\\
\ кінець {масив}
Відповіді
- B1=+0.23
- B2−−0.049275
- B3=−7.5555×10−3
- B4=+9.021841875×10−3
- y=0.121289738
Примітка: таблиця розраховувалася за формулою, а інтерпольована відповідь правильна до дев'яти значущих цифр.
Вправа1.10.2: Linear Interpolation vs. Besselian Interpolation
З наведеної нижче таблиці використовуйте лінійну інтерполяцію та бесселівську інтерполяціюsin51∘ для оцінки трьох значущих цифр.sinx
\ begin {масив} {c c}
x^\ circ &\ sin х\
\\\
0 & 0.0\\
30 & 0.5\\
60 &\ sqrt {3} /2 - 0.86603\\
90 & 1.0\
\ end {масив}
Відповіді
- За допомогою лінійної інтерполяціїsin51∘=0.634.
- За бесселівської інтерполяцією,sin51∘=0.776.
Правильне значення - 0,777. Ви повинні бути вражені - але в розділі 1.11 буде більше інтерполяції.