Функция крыс Matlab на языке C

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

Обновить

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

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

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

2 ответа

Решение

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

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

Другие вопросы по тегам