2016-11-18 2 views
2

В Системной Динамике есть преобразования (например, карта кота Арнольда), в которых, помимо итерации по индексу n, применяется (mod 1). Примером может служить:Работа модуля с десятичными знаками?

Xn + 1 = 2 Xn (mod 1) 

То, что для начального значения 0.65 мы получим последовательность

(2x0.65) (mod 1) = 1.3 (mod 1) = 0.3 
(2x0.3) (mod 1) = 0.6 (mod 1) = 0.6 
(2x0.6) (mod 1) = 1.2 (mod 1) = 0.2 
(2x0.2) (mod 1) = 0.4 (mod 1) = 0.4 

That is: 0.65, 0.3, 0.6, 0.2, 0.4, ..... 

Я не понимаю, какое правило применяется, так как я считаю, что мода 1 = 0 для всех А. Может ли кто-нибудь сказать что-нибудь о предмете данного конкретного случая?

+4

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что этот вопрос может быть лучше подходит для [math.se]. Они отвечают на общие вопросы о математике; мы фокусируемся только на вопросах, связанных с программированием. Вместо этого вы можете попросить об этом. –

+0

Отсутствие опыта. Это мой первый вопрос Огромное вам спасибо –

+0

Не беспокойтесь, и вы всегда рады. Надеюсь, ты найдешь свой ответ. –

ответ

1

Здесь x mod 1 означает, что вы удаляете целочисленные кратные 1, чтобы получить наименьший возможный результат. То есть, дробная часть x.

В C у вас есть, например, функция fmod, реализующая эту операцию.

+0

OK. Это новое определение операции A mod B = R. Знаете ли вы, какие математические власти определили его и почему? Классическое определение было «является остатком целочисленного деления A \ B», поскольку целочисленное деление подразумевает округление факторов, результатом является целое число или ноль. Примеры: 69,7 mod 3 = 1; 69,4 mod 3 = 0; 69,9 mod 70 = 0; 69,4 mod 70 = 69; 69,4 mod 1 = 0; и т.д. Спасибо. –

+0

Люди посчитали это полезным, например, уменьшить аргумент 'sin' кратным' 2 * pi', таким образом, они внедрили его. По существу 'fmod (a, b) {q = floor (a/b); return a-q * b; } '. Таким образом, 'fmod (69,7,3) = 0,7',' fmod (69,9,70) = 69,9' и т. Д. – LutzL

Смежные вопросы