СПЕКТРУМ В ШКОЛЕ
Дорогие друзья!
В прошлом месяце мы "играючи" научились отыскивать решение сложных алгебраических уравнений численным методом простой итерации.
Это, как Вы понимаете, не единственный возможный численный метод и сегодня мы попробуем с Вами сыграть в другую компьютерную игру, которая тоже позволяет находить корни алгебраических уравнений. Назовем эту игру "Вилка". Имеется в виду "артиллерийская вилка", хотя можно было бы назвать игру и "Перелет - Недолет".
Если Вы не знаете, что такое артиллерийская вилка, то лучше бы Вам этого и не знать, потому что ситуация, когда Вы в нее попадаете, очень неприятна. Представьте себе теплое летнее утро в полевом блиндаже. Хорошо позавтракав, противник начинает лениво высевать дневную норму снарядов и мин по вашим позициям. Бах!!! Снаряд разорвался где-то далеко впереди. "Недолет", - ухмыляетесь Вы и продолжаете спокойно уплетать консервы. Бах!!! Одинокий снаряд разрывается где-то в сотне метров сзади. "Так, теперь перелет".
Вот теперь Вы должны понимать, что попали в "вилку" и, если у противника есть хоть какие-то мозги в голове, то следующим выстрелом он накроет Ваш блиндаж, будьте покойны. Двумя выстрелами он "пристрелял" орудие и теперь у него есть математические таблицы, прицельные приспособления и большой опыт, чтобы в третий раз не промахнуться. Более того, пристреляв одно орудие и использовав эти данные и для других орудий, он может ударить теперь и всей батареей. Бросайте свою тушенку и двигайте в окоп, - хорошо, если Вы не пожалели сил и заранее откопали запасную линию, где и отсидитесь во время артналета.
Вот так же можно попасть "выстрелом" и в корень алгебраического уравнения, если предварительно сделать несколько "выстрелов".
Причем Вам совершенно все равно, если первые "выстрелы" будут очень неточными. Единственное, что должно быть сделано - в одном выстреле должен быть "перелет", а в другом "недолет", иначе "вилка" не получится. Рассмотрим простое уравнение: 3хЛ2 + 5x - 22 = 0
Сделаем первый выстрел - пусть х=0. Подставим х в уравнение, оно естественно не сойдется и возникнет"невязка"d = -22.
Раз невязка имеет знак "минус", будем считать, что это "недолет". Сделаем второй выстрел х=5. Теперь d=78 - это большой перелет. То, что мы хотели, произошло. Образовалась артиллерийская вилка: х=0 - мало х=5 - много.
Если бы она не образовалась, нам пришлось бы еще "пострелять". А теперь все просто - ударим посередине х=2.5. Подсчитаем невязку d = 9.25 - это опять перелет, но уже ближе к цели, мы получили новую вилку х=0 - мало х=2.5 - много.
Вновь ударим посредине х=1.25. Невязка d равна примерно -12 -это недолет. х=1.25 - мало х=2.5 - много.
Следующий удар нанесем по пункту 1.875. И так далее. Точное решение х=2 и с каждым "выстрелом" мы все ближе к нему подбираемся.
Вы, конечно поняли, что на каждом шаге мы берем "недолет" и "перелет" и стреляем посередине, потом опеределяем, что это было - "недолет" или "перелет" и от предыдущего шага берем противоположное значение, чтобы всегда оставалась "вилка". Теперь нам осталось только поручить все эти дела компьютеру.
1 REM здесь Вы введете свое уравнение.
10 DEF FN А(Х) - ...............
20 LET b=.01 : REM допустимое значение "невязки"
29 REM теперь вводим пару значений x так, чтобы получить "вилку"
30 INPUT "Xmin?":x0 40 INPUT "Xmax?";x1
49 REM рассчитаем невязку
50 LET d0 = FN A(x0) 60 LET d1 = FN A(x1)
70 LET print = 500 80 GO SUB print
90 IF SIGN (d0) = SIGN (d1) THEN GO TO 30: REM "вилка" не получилась"
100 LET x= (x0 + x1)/2: REM "вилка получилась"
110 LET d = FN A(x)
120 IF ABS(d)<b THEN GO TO 200
130 IF SGN (d) = SGN (d0) THEN GO TO 170
140 LET x1 = x: LET d1 = d
150 GO SUB print
160 GO TO 100
170 LET x0 = x: LET d0 = d 180 GO SUB print 190 GO TO 100
200 PRINT "III x= ";x,"d= ";d 210 STOP
500 PRINT "x0= ";x0,"d0= ";d0 510 PRINT "x1= ";x1,"d1= ";d1 520 RETURN
Этот метод определения корней в сложных алгебраических уравнениях тоже известен
не одну сотню лет и называется методом Ньютона. Нам с Вами просто очень повезло, что ко времени появления первых ЭВМ уже были известны десятки и сотни подобных численных методов, легко адаптируемых для компьютеров. Впрочем, может быть ЭВМ именно потому и появились, что потребовалось упростить работу сотен расчетчиков, сидевших месяцами с арифмометром над баллистическими таблицами для расчета траекторий полета первых ракет.