Top.Mail.Ru
Ответы

Может ли остаточное время загрузки файла оставаться постоянным?

Недавно загружая файл с торрента, мне пришла в голову интересная мысль: что если скорость будет уменьшаться так, что файл никогда не загрузится? Если он всё время будет показывать "осталось 30 минут"? Понятное дело пока скорость не достигнет 1 бит в секунду, ведь это минимум.
Если просто подумать на интуитивном уровне, то может, просто скорость загрузки должна изменяться по определённому закону и сохранять баланс.
Если A - это объём всего файла, то тогда A - S = объём того, что осталось скачать(S это объём скачанной информации за промежуток времени dt). Когда комп скачивает файл, то чтобы рассчитать время до окончания загрузки, он берёт остаточный объём и скорость загрузки в настоящий момент. Таким образом получает приблизительное время загрузки и оно будет равно (A - S) / V где V скорость загрузки в настоящий момент. Нам хочется, чтобы оно было постоянным, тогда =>
(A - S) / V = C. Теперь самое главное. Мы ведь знаем, что первая производная пути это скорость, поэтому можем сделать замену S = y, V = y' =>
(A - y) / y' = C. Получается дифференциальное уравнение.
A - y = Cy'
A - y = Cdy/dt
Cdy / A-y = dt, интегрируем
∫Cdy / A-y = ∫dt
-C*ln(y-A) = t +C1, где С1 = const
y-A = e^(-t/C - C1/C)
y = e^(-t/C - C1/C) + A
y' = -1/C * e^(-t/C - C1/C)
вроде всё, мы нашли как должна изменяться скорость, однако она всё время отрицательная, а так как скорость загрузки не может быть отрицательна, значит и решение нашей задачи: остаточное время загрузки файла не может оставаться постоянным? Или я что то упустил? Интуитивно кажется что решение у задачи есть

По дате
По Рейтингу
Аватар пользователя
Новичок

Забавность)
Давайте попробуем:
dS / dt = V
(S0 - S) / V = T
S - объем скаченного
S0 - объем всего файла
V - скорость загрузки
T - оценочное время до окончания загрузки
Диффурчик:
dS / dt = (S0 - S) / T
Разделяем переменные:
dS / (S - S0) = - dt / T
Интегрируем:
ln|S - S0| = C1 - t / T
Потенциируем (берем экспоненту от обеих частей):
S - S0 = C2 exp(- t / T)
Модуль сожрался произвольностью знака C2. Выражаем S:
S = S0 + C2 exp(- t / T)
Теперь учтем, что при t = 0 должно быть S = 0:
0 = S0 + C2
Находим значение для константы интегрирования:
C2 = - S0
И получаем решение:
S = S0 [1 - exp(- t / T)]
V = (S0 / T) exp(- t / T)
Вроде нигде не возникло проблем с отрицательным S.

Аватар пользователя
Мыслитель

А, Ты не думал, что твои вычисления, просто ради вычеслений, а не решения задачи? Первая производная это не скорость.