MathCAD

d7c8102a

Загадка оптимизации


Какой ответ (лобовой – 25 007 600 или хитрый – 24 999 750) правильный, сказать трудно. Автор не стал отыскивать оптимизационный алгоритм или расчетную формулу, а составил BASIC-программу и использовал ее в качестве «третейского судьи» (см. рис. 7.16). Ее запуск выдал на дисплей второе число (24 999 750), что свидетельствует в пользу «второго зайца» – оптимизация не только ускоряет расчеты, но и делает их более точными даже при работе с целыми числами. Математики, к которым автор обратился как к высшим судьям, подтвердили правильность расчетной формулы и дефектность прямого счета. Дело, по-видимому, в том, что на языке C (а на нем писался и Mathcad и Maple V) очень просто запутаться в циклах с пересекающимися параметрами, если при этом нужно оптимизировать еще и саму программу.

Dim n As Integer

Dim i As Integer

Dim j As Integer

Dim k As Integer

Dim S As Long

n = 100

S = 0

For i = 1 To n

   For j = 1 To n - i

      For k = 1 To n

         S = S + k

      Next

   Next

Next

Print “Ответ:”; S

Запуск программы

Ответ: 24 997 500



Содержание раздела