Дерево Штерна-Броко и дробные приближения (ир)рациональных чисел

Эту программу я когда-то написал как пример для RSDN. Она примитивна по сути своей и делает одну-единственную вещь: приближает некое рациональное число при помощи дроби. Часто на этом можно неплохо выиграть в точности - например, многие иррациональные числа (пи, корень из двух, ...) можно в практических расчетах (с допустимой погрешностью) заменить отношением целых. И тем самым сильно облегчить себе жизнь.

Не говоря уже о том что "оценочные расчеты", обычно производимые в уме так делаются гораздо проще.

Ссылка на ветку форума RSDN

Исходник

Написал онлайн-демонстратор метода, можно посмотреть здесь.


Добавить комментарий

FaTony |  24.10.2010, 20:22:18 | 
http://files.mail.ru/JQ9QRQ 

FaTony |  24.10.2010, 20:14:24 | 
Причесал исходник:#include #include #include #ifndef M_PI#define M_PI 3.14159265358979323846#endifint main(int argc, char *argv[]){ double pi_x = M_PI, approximatevalue, error, unsigned long lowernumerator = floor(pi_x), lowerdenominator = 1, highernumerator = lowernumerator + 1, higherdenominator = 1, numerator, denominator, do { numerator = lowernumerator + highernumerator, denominator = lowerdenominator + higherdenominator, approximatevalue = (double)numerator / denominator, error= (double)approximatevalue - pi_x, printf("%d/%d = %.12f error %.5ern", numerator, denominator, approximatevalue, error), if (error > 0) { highernumerator = numerator, higherdenominator = denominator, } else { lowernumerator = numerator, lowerdenominator = denominator, } } while ((abs(error) > 1e-10) || (denominator < 1000)), system("PAUSE"), return 0,}