Сегодня для проведения вычислительного эксперимента мы, как и обещали, выберем задачу о плавающем шаре, алгоритм решения которой разобран в § 22. Вы, конечно, перевели алгоритм на язык Бейсик. Запустите вашу программу. Когда ЭВМ потребует у вас значения R и М, введите, например, 1 и 3,2 (эти числа соответствуют деревянному шару радиуса 1 см - авторы специально изготовили такой деревянный шар и взвесили его). Какой ответ выдала вам ЭВМ? Высота подводной части шара должна получиться равной примерно 1,370 см. Если у вас получилось что-нибудь другое - отладьте программу.
А что будет, если отправить в плавание шар большей массы, скажем, сделанный из железа? Каждому ясно - он утонет. А что скажет ЭВМ? Запустите программу, взяв радиус тот же (1 см), а массу 31 г. Получится число, близкое к 2. Как можно объяснить полученный результат?
Видно, что программа и в этом случае работает правильно, хотя, составляя алгоритм, мы не учитывали, что шар может утонуть. Так бывает нередко - программа делает больше, чем предусматривали ее создатели.
Давайте узнаем, сколько раз, выполняя вашу программу, ЭВМ делит отрезок пополам. Для этого организуйте в вашей программе специальный счетчик - переменную, которая будет увеличиваться на 1 при каждом делении пополам. В конце программы поставьте команду, по которой ЭВМ сообщит показание счетчика. Запустите измененную программу, взяв R= 1, М = 3,2. Мы можем заранее предсказать, что показание счетчика не превысит 11.
Корень уравнения (1) можно было искать и по-другому, более привычным для вас способом: перебирать значения h, начиная от 0, с шагом 0,001. Но тогда корень 1,370 мы получили бы только на 1370-м шаге. Как видите, метод деления пополам гораздо эффективнее такого перебора.
А теперь измените программу, приспособив ее для решения задач 4-7 из § 22, и решите эти задачи.