Решаем задачу по механике с помощью дифференциального уравнения в среде R
Задача №69 (из сборника А.П. Рымкевич "Сборник задач по физике", Москва "Просвещение" 1987г.) страница 16. При аварийном торможении, автомобиль движущийся со скоростью 72 км/ч, остановился через 5 секунд.Найти тормозной путь.
Решим эту задачу дифференциальным уравнением в среде R.
Переведем 72 км/ч в м/с (72 *1000 /3600 = 20). Таким образом начальная скорость движения автомобиля v0 = 20 метров в секунду. Скорость при равноускоренном движении меняется по закону v = v0 + at и мы можем вычислить чему равно ускорение (заметим что исходя из условия задачи на t = 5 секунде торможения автомобиль остановился, значит в этот момент его скорость v = 0. Подставим известные величины в уравнение (v = v0 + at): 0 = 20 - a*5, отсюда a = 20/5 = 4 метра на секунду в квадрате. И мы можем записать уравнение изменения скорости при торможении как: v = 20 - t*4. Так как скорость есть производная пути по времени, то для нахождения обратной задачи нам нужно решить дифференциальное уравнение, представив скорость v в виде дифференциалов v = ds/dt
Разделим переменные умножив обе части на dt получим: ds = (
# y′ = 20 - 4t
library(deSolve)
f1 = function(t, y, parms ){
dy.dt = 20 - t*4
return ( list ( dy.dt ))}
y0 = 0; t0 = seq(0, 5, 0.5)
sol = ode(y = s0, t = t0, func = f1, parms = NULL)
sol
plot(sol[ ,1], sol[ ,2], type = "l", xlab =" t ", ylab =" y( t )",
col =" red ", lwd =4)
grid(col = 'black')
> y0 = 0; t0 = seq(0, 5, 0.5) > sol = ode(y = s0, t = t0, func = f1, parms = NULL) > sol time 1 1 0.0 0.0 2 0.5 9.5 3 1.0 18.0 4 1.5 25.5 5 2.0 32.0 6 2.5 37.5 7 3.0 42.0 8 3.5 45.5 9 4.0 48.0 10 4.5 49.5 11 5.0 50.0 |
Итак, мы нашли что на 5 секунде тормозной путь автомобиля составит 50 метров, задача решена. Так же по построенному графику можно определить какой путь автомобиль пройдет на 5 секунде торможения (ответ будут точно такой же)
А теперь в качестве тренировки решите самостоятельно задачу о тормозном пути, если уравнение скорости v = 20 -2t . Попробуйте самостоятельно написать скрипт и решить задачу. Я же решу эту задачу сначала на доске, а потом ... применим ретро вычислительную технику в лице программируемого советского калькулятора МК-52 с Блоком Расширения Памяти БРП-3, видео ниже - приятного просмотра. Ну а скрипт найдете в самом конце страницы.
скрипт здесь (выдели и увидишь):
# y′ = 20 - 2t
library(deSolve)
f1 = function(t, y, parms ){
dy.dt = 20 - t*2
return ( list ( dy.dt ))}
y0 = 0; t0 = seq(0, 10, 0.5)
sol = ode(y = s0, t = t0, func = f1, parms = NULL)
sol
plot(sol[ ,1], sol[ ,2], type = "l", xlab =" t ", ylab =" y( t )",
col =" red ", lwd =4)
grid(col = 'black')
