@gelosoft
Frontend-developer

Как проинтерполировать коэфициент уменьшения значения?

Есть значения A и B. И есть начальный коэффициент уменьшения k, к примеру я беру его равным (A - B) / 100.
Есть кол-во шагов N, к примеру = 10;
Надо за N раз уменьшить/увеличить A = A - k до значения B, уменьшая k на каждом шаге.
Другими словами мне надо за N операций изменения значения(вычитание/сложения) добиться нужного значения, уменьшая размер вычитаемого/слагаемого (k).
Это мне нужно для задания линейного торможения вращения объекта.
Допустим надо изменить к примеру значение от 50 до 20 c начальным коэф-м уменьшения 10 за 5 итераций. Мне известны A=50 ,B=20, N=5, k0=10.
i k значение
1 10 50 - 10 = 40
2 8 40 - 8 = 32
3 6 32 - 6 = 26
4 4 22
5 2 20
Мне нужно формулу расчета k(i), i=1..N
  • Вопрос задан
  • 324 просмотра
Пригласить эксперта
Ответы на вопрос 3
zagayevskiy
@zagayevskiy
Android developer at Yandex
Ну ведь можно использовать формулу суммы арифметической прогрессии. S = (a_1 + a_n)*n/2;
a_1 = A;
n = N;
S = B;
Выражайте a_n, затем считайте шаг прогрессии d = ((a_n - a_1) / n). Из шага прогрессии i-ый член вычисляется легко, из него вычитайте a_1, получите k на i-ом шаге.
Ответ написан
Комментировать
@uniquenicknqame
у вас, таки, ошибки/вопросы в математике:
1. (A - B) / 100 100, в данном случае и есть N (100, а не 10)
2. Нужно указать что значит N=0 тоесть A == B?

вобщем случае формула (с условностями-допущениями) выглядит примерно так:
k = (Math.abs(A - B) < Number.EPSILON) ? 0 : (A-B) / N;
Ответ написан
x67
@x67
K=K+- (b-a)*di, где di = 1/10 в данном случае, а вообще это шаг интегрирования. Только если будет больше итераций, чем запланировано, то К линейно падать и дальше будет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы