Головна » Статті » Lord Adwond

Пошук числа Пі інтегруванням: чи можна пришвидшити процес?
Ми всі зі школи знаємо про таке число Пі, що приблизно дорівнює 3.14. Його можна "прив'язати" до ряду формул: для прикладу, ще із середніх класів мають бути відомі формули знаходження довжини кола та площі круга при відомому радіусі: l=2πr та S=πrвідповідно. Цими формулами користуватися легко, якщо не брати число Пі наближено, а просто писати його ( тобто його позначення π) як множник. Але інколи, все-таки, доводиться використовувати наближене значення константи. Звідси виникає питання його пошуку.
Є різні методи розрахунку наближеного значення числа Пі, але я вирішив дослідити той, що випливає із вище написаної формули, що "прив'язує" дану сталу з площею, яку, в свою чергу, можна "прив'язати" з визначеним інтегралом. Тобто відшукання відомої нам константи можна звести до відшукання визначеного інтеграла.
Розглянемо одиничне коло x2+y2=1. Якщо розглянути випадок y>=0, то отримаємо півколо. Якщо розіб'ємо його ще віссю Оу і розглянеми частину, в якій x>=0, то получимо чверть кола. Так як r=1, то площа всього кола рівна π, а отриманої частити π/4. При x є [0; 1] y=sqrt(1-x2), тобто отримуємо, що число π/4 рівне визначеному інтегралу в межах від 0 до 1 з sqrt(1-x2) та π=4*(π/4).
Відшукання даного інтеграла неважко запрограмувати за означенням, взявши відрізок xkxk+1 сталим і рівним якомусь сталому числу h, яке назвемо кроком.
Я помітив, що при зменшенні кроку значно збільшується кількість обчислень, а разом із ними і час виконання програми. Це викликало питання, що задане у заголовку: чи можна даний алгоритм пришвидшити? Провівши деякі математичні обчислення, моя відповідь - так, і значно.
Виявляється, необов'язково інтегрувати на проміжку [0; 1]. Його можна зменшити. Як? За допомогою розбиття кута в 90 градусів на n рівних частин. Нехай α=π/2n. Виконавши таке розбиття розбиття по куту, інтегрування функції sqrt(1-x2) на відрізку [0; 1] можна звести до інтегрування цієї ж функції на проміжку [cos(α); 1].
В чому суть моєї модифікації? Якщо виконати вище згадане розбиття, то даний алгоритм можна звести до відшукання такого S, що π/4=n*S.
Позначимо початок координат як точку О і S як суму S1+S2



S2 є новим шуканим визначеним інтегралом, а S1=AB*BO/2. AB та BO дорівнюють синусу і косинусу кута α відповідно, тому S1=sin(α)*cos(α)/2. Звідси, підставивши отримані формули у ті, з яких ми починали, получаємо π/4=n*(sin(α)cos(α)/2+S2), де S2 - визначений інтеграл з cos(α) по 1 функції   sqrt(1-x2).
Запрограмовуємо останню формулу, отримавши її значення, домножуємо його на 4 і все. Як показують мої експерименти, час обчислень дійсно зменшується.
Можливо, у когось виникло питання: а наскільки ж цей алгоритм "прискорюється" залежно від n? Теоретично те, в скільки раз можна зменшити час, можна вирахувати за формулою:
k=1/(1-cos(α))
Знайдемо, в скільки має скоротитися час розрахунку числа Пі при розбитті чверті кола на n=2, n=3 та n=5 частин. В першому випадку k~10643.9, в другому - k~23948.654, в третьому - k~66523.86.

Надіюсь, даний алгоритм може Вам згодитись.
Категорія: Lord Adwond | Додав: Lord_Adwond (09-06-2018) | Автор: Lord_Adwond
Переглядів: 278 | Теги: математична оптимізація, оптимізація, алгоритм, число пі | Рейтинг: 5.0/1
Всього коментарів: 0
avatar