ZX-Ревю 1993 №7-8 1992 г.

Спектрум в школе - сегодня мы попробуем с вами сыграть в компьютерную игру, которая позволяет находить корни алгебраических уравнений.


СПЕКТРУМ В ШКОЛЕ

Дорогие друзья!

В прошлом месяце мы "играючи" научились отыскивать решение сложных алгебраических уравнений численным методом простой итерации.

Это, как Вы понимаете, не единственный возможный численный метод и сегодня мы попробуем с Вами сыграть в другую компьютерную игру, которая тоже позволяет находить корни алгебраических уравнений. Назовем эту игру "Вилка". Имеется в виду "артиллерийская вилка", хотя можно было бы назвать игру и "Перелет - Недолет".

Если Вы не знаете, что такое артиллерийская вилка, то лучше бы Вам этого и не знать, потому что ситуация, когда Вы в нее попадаете, очень неприятна. Представьте себе теплое летнее утро в полевом блиндаже. Хорошо позавтракав, противник начинает лениво высевать дневную норму снарядов и мин по вашим позициям. Бах!!! Снаряд разорвался где-то далеко впереди. "Недолет", - ухмыляетесь Вы и продолжаете спокойно уплетать консервы. Бах!!! Одинокий снаряд разрывается где-то в сотне метров сзади. "Так, теперь перелет".

Вот теперь Вы должны понимать, что попали в "вилку" и, если у противника есть хоть какие-то мозги в голове, то следующим выстрелом он накроет Ваш блиндаж, будьте покойны. Двумя выстрелами он "пристрелял" орудие и теперь у него есть математические таблицы, прицельные приспособления и большой опыт, чтобы в третий раз не промахнуться. Более того, пристреляв одно орудие и использовав эти данные и для других орудий, он может ударить теперь и всей батареей. Бросайте свою тушенку и двигайте в окоп, - хорошо, если Вы не пожалели сил и заранее откопали запасную линию, где и отсидитесь во время артналета.

Вот так же можно попасть "выстрелом" и в корень алгебраического уравнения, если предварительно сделать несколько "выстрелов".

Причем Вам совершенно все равно, если первые "выстрелы" будут очень неточными. Единственное, что должно быть сделано - в одном выстреле должен быть "перелет", а в другом "недолет", иначе "вилка" не получится. Рассмотрим простое уравнение: 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

Этот метод определения корней в сложных алгебраических уравнениях тоже известен

не одну сотню лет и называется методом Ньютона. Нам с Вами просто очень повезло, что ко времени появления первых ЭВМ уже были известны десятки и сотни подобных численных методов, легко адаптируемых для компьютеров. Впрочем, может быть ЭВМ именно потому и появились, что потребовалось упростить работу сотен расчетчиков, сидевших месяцами с арифмометром над баллистическими таблицами для расчета траекторий полета первых ракет.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Смайлик - смешной толковый словарь.
Игры - CODE MASTERS, POKES, ELVEN WARRIOR
От редакции - Спец. выпуск газеты...
Cheating - различные cheat'ы.
Demo - Немного о демах. Из бeсeды в каналe #mhm.

В этот день...   21 ноября