Функция крыс Matlab на языке C - PullRequest
2 голосов
/ 23 февраля 2012

Знаете ли вы, как сделать рациональное приближение десятичного числа в C (аналогично крыса функция Matlab)?

Обновление

Если мы хотим P / Q-аппроксимацию двойного числа число , быстрое решение может быть следующим:

int factor=1000000;
P=floor(number*factor);
Q=factor;

Ошибка меньше (число / коэффициент), что незначительно.

Ответы [ 2 ]

3 голосов
/ 23 февраля 2012

Продолженные дроби можно использовать для вычисления рациональных приближений к действительным числам, которые в некотором смысле являются оптимальными.Таким образом, с вводом 0.33333333 у вас есть шанс получить 1/3 вместо 3333/10000.

1 голос
/ 23 февраля 2012

Вы можете сделать то же самое, что и в своем обновлении, но затем проверить наивысший общий коэффициент между верхом и низом и упростить.Например, 0.5 будет идти к 500000/1000000, делая это вашим методом.Они имеют общий коэффициент 500000, поэтому вы можете разделить верх и низ на это, чтобы получить 1/2.У Google есть много примеров функций hcf, таких как this (Редактировать: И this впечатляющий список).

...