nlothik (nlothik) wrote,
nlothik
nlothik

Categories:

Маленькое математическое

Люблю периодически развлекать себя простенькими математическими задачками, легко алгоритмизируемыми.

Вот, например, число π (кстати, по-английски произносится как "пай", а не "пи"). Как его подсчитать?

Берём формулу площади круга:

A = πr2. Соответственно, π = A / r2. Если радиус круга r = 1, то число π равно его площади, π = A.

Осталось подсчитать площадь круга. Как это сделать?

Я взял известную всем формулу для полуокружности: y2 = r2 - x2. Для полуокружности радиуса 1 получаем y = √(1 - x2).

Эту полуокружность можно разбить на отдельные заострённые с одной стороны "столбики".



Их площадь посчитать уже проще простого -- прямоугольник с прямоугольным треугольником, простая геометрическая задача. Затем сложить площадь всех "столбиков" вместе. Чем больше у нас будет "столбиков", и чем более узкими они будут -- тем более высокая точность будет при расчёте площади этого полукруга.

Потом эту площадь нужно будет домножить на два, чтобы получить площадь круга. Voila -- вот вам и число π.

Можно сократить число расчётов вдвое -- рассчитывать только четверть круга, где -1 ≤ x ≤ 0

Тогда, естественно, надо будет домножать на четыре, а не на два.

Теперь к делу. Вот небольшая программка на Джаве, которая менее, чем за секунду, рассчитывает значение π с точностью до девятого знака после запятой:

public class Calc
{
public static void main (String [] agruments)
{
double deltaX = 0.0000001, Y1, Y2;
double area = 0.0;

for (double X = -1.0; X + deltaX < 0.0; X += deltaX)
{
Y1 = Math.sqrt(1 - X*X);
Y2 = Math.sqrt(1 - (X + deltaX) * (X + deltaX));
area = area + ( Y1 * deltaX + (Y2 - Y1) * deltaX / 2);
}
area = area * 4;
System.out.print(area);
}
}

В теории, число π, выдаваемое программой, должно быть несколько меньше реального. Однако на практике при дальнейшем уменьшении ∆x у меня это число получилось несколько больше (даже уменьшилась точность!), а считать программа стала уже существенно медленее.

Грешу на накапливающуся ошибку (см. http://nlothik.livejournal.com/96410.html ). Если кто-то из математиков заметил ляп -- прошу высказываться.

Конечно, можно написать свою библиотеку для работы с сильно многобитными числами с плавающей запятой, но это как-нибудь в другой раз.
Tags: компьютерное, учёба, хобби
Subscribe

  • Баклажаны

    Оказывается, бывают белые баклажаны. Более того, англичане впервые столкнулись именно с ними, поэтому баклажаны в английском языке называются…

  • Про метрическую систему

    Кодекс США от 1975 года, глава 15, параграф 205b: Декларация о политике Соединённых Штатов: (1) определить метрическую систему измерения как…

  • Про гелий

    Оказывается, гелий добывают очисткой природного газа. А как гелий попадает в него? Он выделяется при распаде урана глубоко в недрах нашей планеты.…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 14 comments

  • Баклажаны

    Оказывается, бывают белые баклажаны. Более того, англичане впервые столкнулись именно с ними, поэтому баклажаны в английском языке называются…

  • Про метрическую систему

    Кодекс США от 1975 года, глава 15, параграф 205b: Декларация о политике Соединённых Штатов: (1) определить метрическую систему измерения как…

  • Про гелий

    Оказывается, гелий добывают очисткой природного газа. А как гелий попадает в него? Он выделяется при распаде урана глубоко в недрах нашей планеты.…