Каждый шофер знает: в пути часто возникают ситуации, когда приходится делать выбор. То "кирпич" помешает проехать (куда повернуть - налево или направо?), то с машиной что-нибудь случится (чинить самому или вызвать техпомощь?), то черная кошка перебежит дорогу (ехать дальше или нет?). А бывает и так...
Задача. На узкой улице внезапно заклинило тормоза у "Волги". В результате немедленно образовалась пробка. Шофер стоявшего сзади грузовика, у которого лопнуло терпение, предложил помочь убрать "Волгу" с проезжей части дороги, оттащив ее на обочину с помощью троса. Удастся ли оттащить "Волгу"?
Образование пробки
Составим математическую модель и алгоритм решения этой задачи. Сначала выделим те предположения, на которых будет основываться наша модель. Для простоты будем считать, что поверхность дороги горизонтальна. Главное - сдвинуть "Волгу" с места, поскольку из физики известно, что трение покоя всегда больше трения скольжения. Мы будем предполагать, что сила трения равна произведению коэффициента трения на ускорение свободного падения (которое будем считать равным 9,8 м/с2) и на массу "Волги". Но сила трения - не единственное препятствие. Помешать могут и недостаточная мощность грузовика, и слишком малая прочность троса. Нетрудно понять, что перечисленные препятствия - самые главные. Если "не заметить" какое-либо из них, то получится гораздо менее достоверная модель задачи.
С другой стороны, в модели можно учесть и менее существенные сведения о происшествии (время суток, силу и направление ветра, личные качества водителя "Волги" и т. д.). Тогда получится гораздо более сложная модель, причем усложнение модели скорее всего "не окупится" повышением ее точности (желающие могут в этом убедиться самостоятельно.)
Вот перечень наших предположений:
1) поверхность дороги горизонтальна;
2) трение покоя не меньше трения скольжения;
3) сила трения покоя равна произведению массы "Волги" на коэффициент трения покоя и на ускорение свободного падения;
4) ускорение свободного падения равно 9,8 м/с2;
5) из всех сил, действующих на "Волгу", будем рассматривать только две: силу тяги и силу трения;
6) сила тяги грузовика ограничена;
7) усилие, которое может выдержать трос, ограничено.
Теперь определим, что следует считать исходными данными и что требуется найти. Понятно, что в силу сделанных только что предположений исходными данными являются масса "Волги" М, коэффициент трения K, максимальная сила F, с которой грузовик может тянуть "Волгу", максимальная нагрузка K, которую может выдержать трос. Требуется определить, сдвинется ли "Волга" с места. Итак, результатом является одно из сообщений: "Сдвинется" или "Не сдвинется".
Запишем теперь математические соотношения, связывающие результат с исходными данными. Легко понять, что вполне достаточно тянуть "Волгу" с силой чуть-чуть большей, чем сила трения, действующая на "Волгу". Обозначим силу трения через Q. Если эта сила больше, чем наибольшая сила тяги грузовика F, то сдвинуть "Волгу" с места не удастся. Значит, сила Q должна быть меньше F. Если Q окажется больше, чем усилие, которое может выдержать трос (сила R), то трос лопнет, а "Волга" опять останется на месте. Значит, сила Q должна быть меньше R. (Подумайте, почему сила Q не может быть в точности равна F или R.) Итак, чтобы "Волга" сдвинулась с места, нужно, чтобы Q была меньше и R, и F. Мы можем, таким образом, записать связи между исходными данными и результатами:
сила трения Q = 9,8 ⋅ K ⋅ M;
если Q<R и Q<F, то "Волга" сдвинется с места,
в противном случае "Волга" с места не сдвинется.
Попробуем теперь составить алгоритм:
Запросить массу "Волги" M, коэффициент трения K, максимальную силу тяги F, максимальную нагрузку R на трос.
Присвоить силе трения Q значение 9,8 ⋅ K ⋅ М.
Если Q<R и Q<F, то: Сообщить "Сдвинется с места". Иначе:
Сообщить "Не сдвинется с места". Конец ветвления.
Однако, внимательно посмотрев на этот алгоритм, легко убедиться, что ВЫЧИСЛИТЕЛЬ выполнить его не в состоянии. В самом деле, при формулировке математической модели (поэтому и в записи ветвления) мы записали условие "Q<R и Q<F", a проверка такого условия не является допустимой для ВЫЧИСЛИТЕЛЯ. За один раз он может проверить лишь одно соотношение. Значит, мы должны изменить модель, чтобы избежать проверки сразу двух соотношений.
Поясним на примере, как это можно сделать. Допустим, в ваш класс пришел новый ученик, и вы хотите узнать, меньше ли он всех ростом. Для этого вы не станете последовательно сравнивать его со всеми учениками класса, а сравните его с самым маленьким по росту учеником - с тем, кто стоит на левом фланге при построении на уроках физкультуры.
Мы поступим точно так же: сначала найдем наименьшее из чисел R и F, обозначив это число буквой Z, а затем сравним это число с Q. Соотношения в нашей модели примут вид:
сила трения Q = 9,8 · K · М;
Z - минимальное из чисел R и F;
если Q<Z, то "Волга" сдвинется с места,
в противном случае "Волга" с места не сдвинется.
Исправим алгоритм решения задачи. Мы уже записывали алгоритм нахождения минимального из двух чисел. Включим его как составную часть в наш алгоритм:
Запросить массу "Волги" М, коэффициент трения K, максимальную силу тяги F, максимальную нагрузку R на трос.
Если R<F, то:
Присвоить Z значение R.
Иначе:
Присвоить Z значение F.
Конец ветвления.
Присвоить силе трения Q значение 9,8 · K · М
Если Q<Z, то:
Сообщить "Сдвинется с места".
Иначе:
Сообщить "Не сдвинется с места".
Конец ветвления.
Задания для самостоятельного выполнения
1. Дан алгоритм:
Запросить а и b.
Присвоить с значение а2 + b2.
Присвоить d значение ab : (a - b).
Присвоить с значение с - 2d.
Сообщить с.
Что сообщит ВЫЧИСЛИТЕЛЬ, выполнив этот алгоритм при а = 4 и b = 2? Сможет ли ВЫЧИСЛИТЕЛЬ выполнить алгоритм при а = 3 и b = 3? Какими действиями надо дополнить этот алгоритм, чтобы ВЫЧИСЛИТЕЛЬ мог выполнить его при любых значениях а и b?
2. Составьте для ВЫЧИСЛИТЕЛЯ алгоритм, с помощью которого он определит, можно ли поместить:
а) круг данного радиуса в квадрат с данной стороной;
б) квадрат с данной стороной в круг данного радиуса.
3. На плоскости нарисованы три точки. Известны расстояния между каждыми двумя точками. Составьте для ВЫЧИСЛИТЕЛЯ алгоритм, с помощью которого он сможет определить, лежат ли эти точки на одной прямой.
4. Составьте для ВЫЧИСЛИТЕЛЯ алгоритм решения линейного уравнения ах + b = 0 при заданных значениях а и b (учтите, что и а, и b могут равняться 0).
5. Составьте математическую модель и алгоритм решения физической задачи, разобранной в данном параграфе, считая участок дороги не горизонтальным.
6. Составьте математические модели и алгоритмы решения следующих физических задач.
а) Электрическая цепь составлена из двух сопротивлений, соединенных последовательно или параллельно. Определить тип соединения, если известны величины каждого из сопротивлений и сопротивление всей цепи.
б) Два шара движутся прямолинейно навстречу друг другу. Для каждого шара определить, остановится ли он после удара, продолжит движение в том же направлении или начнет двигаться обратно.
7. Составьте математические модели и алгоритмы решения следующих задач по химии.
а) В смеси водорода и кислорода произошла реакция образования воды. Какие вещества и в каком количестве получились в результате реакции?
б) В колбу с едким натром добавили некоторое количество 15%-ного раствора соляной кислоты. Какие вещества и в каком количестве получились в результате реакции?
8°. а) В киоск "Мороженое" завезли неограниченное количество мороженого по 10 к. (молочное). Составьте математическую модель и алгоритм (для ВЫЧИСЛИТЕЛЯ) работы продавщицы мороженого по обслуживанию одного покупателя.
б) На уроке математики учитель захотел проверить, хорошо ли ученики знают таблицу умножения. Составьте математическую модель и алгоритм (для ВЫЧИСЛИТЕЛЯ) опроса одного ученика.
Многие профессиональные программисты считают, что каждая программа - это имитация одного исполнителя с помощью другого исполнителя. Согласны ли вы с этим тезисом?