«Нормальные формы, которые вавилоняне могли легко решать и к которым они старались сводить все алгебраические уравнения, были таковы:
А.Уравнения с одним неизвестным:
ax=b,
x2=a,
x2=ax=b,
x2-ax=b,
x3=b.
x2(x+1)=a/
В.Системы уравнений с двумя неизвестными:
x+y=a, xy=b,
x-y=a, xy=b,
x+y=a, x2+y2=b,
x-y=a, x2+y2=b,
Кроме того, были известны формулы:
(a+b)2=a2+2ab+b2
(a+b)(a-b)=a2-b2
1+2+4+…+2h=2h+(2h-1)
12+22+32+…+n2=(1/3+2n/3)(1+2+3=…n)
и суммирование арифметических прогрессий.
Пифагоровы числа x2+y2=z2 находились при помощи формул:
x= p2-q2
y=2pq
z=p2+q2
Такое совпадение знаний вавилонян в области алгебры с конкретными графическими схемами, исходящими от древнейших пирамид, указывает на наличие единого источника просвещения для различных времен и народов.
В Плимтоновской библиотеке Колумбийского университета в Нью-Йорке имеется замечательный древневавилонский клинописный текст «Plimpton 322» , которому порядка 4000 лет. В нем имеются столбцы цифр, которые указывают на умение мудрецов определять целочисленные тройки – стороны прямоугольных треугольников. В современном исчислении они выглядят следующим образом ( таблица 1). Сейчас мы можем определить для этих троек коренные пары чисел (катеты) в составе половины углов. После чего намечается определенная градация этих примеров даже на таком небольшом фрагменте некогда существовавших математических знаний.
№строки | Тройки чисел согласно Б.Л.Ван дер Вардену | Родственные тройки чисел – исходные для результатирующего угла. | Примечание | |
Катеты разной четности и гипотенуза | Катеты нечетные и гипотенуза | |||
1 | 120,119,169 | 15, 12,13 | 7,17, | |
2 | 346,3367,4825 | 27, 64, | 37,91, | |
3 | 4800,4601, 6649 | 32, 75, | 43,107, | |
4 | 13500, 12709, 18541 | 54, 125, | 71,179, | |
5 | 72,65,97 | 4,9, | 5,13, | |
6 | 360,319, 481 | 9,20, | 11,29, | |
7 | 2700,2291, 3541 | 25,54, | 29,79, | |
8 | 960, 799,1249 | 15,32, | 17,47, | |
9 | 600, 481,769 | 12,25, | 13,37, | |
10 | 6480, 4961, 8161 | 40,81, | 41,121, | |
11 | 60,45,75 | 1,2, | 1,3, | Исходная тройка чисел не является примитивной |
12 | 2400, 1679, 2929 | 25,48, | 23,73, | |
13 | 240, 161,289 | 8,15,17 | 7,23, | |
14 | 2700,1771,3229 | 27,50, | 23,77, | |
15 | 90, 56, 106 | 90,56,106 | 5, 9, | В некоторых случаях можно поменять местами коренные тройки, исходная тройка чисел не является примитивной |
При первом просмотре результатов таблицы 4 можно сделать предварительные замечания:
- результат отношения катетов из столбца для пар чисел разной четности возрастает от 0, 41666… в первой строке, до 0,54 в четырнадцатой. Соответственно убывает отношение катетов в столбце для нечетных катетов.
- в первых четырех столбцах наблюдается резкий рост линейных размеров треугольников ( по всем сторонам), но несколько выделяется вторая строка.
- в столбце разной четности катеты содержат исключительно множители 2,3,5, но и здесь не без оговорки выделяются одиннадцатая и пятнадцатая строки.
Строка 15 претендует на начальную строку нового блока троек чисел.
Множители столбца катетов разной четности соответствуют ключевым числам пирамид на плато Гизе и «единичных пирамид» тел Платон, т.е. имеется тот же ряд основополагающих цифр. – 1,2,3,4,5.
Конечно, желательно заново проанализировать все математические таблички Древнего Вавилона, поскольку фрагмент в виде глиняной таблички «Plimpton 322» представляется только частью некой математической системы знаний. Возможно, и перевод в современное исчисление требует некоторой корректировки, тогда и выводы могут быть более строгими.
6. Практическая часть «Записки программиста»
repeat
a:=a/2;
until a+1=1;
Для написания программы была использована среда программирования Borland Delphi 7 как наиболее простая и одновременно достаточно гибкая для поставленных задач. А именно:
· Придумать алгоритм, который строит пирамиду в пространстве (как особый вид, так и подобия реально существующих пирамид);
· Связать алгоритм с языком программирования и получить результат;
· Добавить пользовательский интерфейс (этой теме можно посвящать отдельный реферат, ибо тема проблемная).
· Собрать все вместе и разнообразить построение пирамидки анимацией.
Будет справедливо кратко сказать о каждой из задач по отдельности, привести расчеты и некоторые нюансы исполнения.
6.1 Алгоритм
Над этим алгоритмом думали долго, рисовали, пробовали и в конце концов пришли к довольно простому и в то же время эффективному решению. Чтобы построить пирамиду в пространстве нужно построить основание, высоту и соединить точки. Так как в пространстве сохраняется только параллельность, из квадрата в основании должен получиться параллелограмм, а самый простой способ это сделать – сжать квадрат в 2 раза по вертикали вот таким образом:
Далее добавляется вершина – конец нормали, проведенной из центра квадрата в основании и добавляются некоторые дополнительные линии. И это было бы не сложно, если бы пирамидка не должна была крутиться вокруг вертикали. Что же делать теперь? Как осуществить перенос в пространстве? Мы попытались решить эту задачу - весь алгоритм построения пирамидки можно разделить на 3 этапа: просчет основания, пересчет основания в пространстве и доп. вычисления, рисование.
Просчет основания.
Это самая сложная часть, так как здесь нужно сделать поворот квадрата на некоторый угол в координатах. Для начала пусть квадрат повернут таким образом:
Тогда справедливы следующие равенства:
И при повороте каждая координата каждого угла меняется на
или . Теперь можно посчитать координаты углов квадрата при любом угле поворота.Пересчет основания в пространстве.
Довольно простая операция, когда из каждой у-координаты вершины вычитается у-координата центра, делится на 2, а потом обратно прибавляется к у центра. Таким образом квадрат сжимается к оси, проходящей через центр квадрата и параллельной ох.
Также тут просчитываются координаты вершины пирамиды и середины квадрата
Рисование.
Когда все точки просчитаны, можно безбоязненно водить виртуальным карандашом по окошку программы. Здесь задается цвет карандаша и толщина линии.
6.2 Язык программирования
Теперь, когда алгоритм готов, можно приступить к собственно написанию кода. Код полностью я приведу позже с комментариями, а пока что общая структура. Программа состоит из нескольких функций, привязанных к событиям (например нажатие кнопки – событие, а построение – функция). Для просчета и хранения координат я использовал двумерный массив pix[] примерно такого содержания: