Задания для 11 класса, 2007-2008 учебный год

06.03.2008, задача 37: оценка погрешности #2

Добавить в задачу «оценка погрешности» выбор алгоритма интегрирования из следующего списка:

  1. метод Эйлера (который там уже присутствует);
  2. явная схема Адамса-Башфорта;
  3. алгоритм «предиктор-корректор» Адамса-Башфорта-Мултона.

Добавить график погрешности полной энергии системы и исследовать сохранение энергии в используемых приближенных схемах интегрирования обыкновенных дифференциальных уравнений.

21.02.2008, задача 36: оценка погрешности

Требуется оценить погрешность решения дифференциального уравнения методом Эйлера на примере точно решаемой задачи.

Задача простая: из пушки вылетает ядро известной массы под некоторым углом к горизонтальной поверхности. Оно движется по своей траектории и где-то приземляется. Траектория может характеризоваться как минимум четырьмя параметрами: максимальной высотой сняряда, горизонтальной дальностью полета снаряда и двумя компонентами скорости снаряда при его приземлении. Все эти величины может вычислить даже семиклассник, поэтому задача имеет точное и достаточно простое решение (в том случае, если силой трения о воздух мы пренебрегаем, считаем g константой и верим в уравнения нерелятивистской механики).

Но эту задачу можно решить и методом Эйлера при различных значениях шага по времени Δτ. Таким образом, вы можете получить отклонения численных значений четырех упомянутых выше параметров от их точных значений как функцию шага по времени. Например, отклонение вычисленной максимальной высоты снаряда от истинной будет даваться соотношением Δh(Δτ) = h(Δτ) - hист. Здесь hист — аналитическое значение параметра, h(Δτ) — вычисленное методом Эйлера с шагом по времени Δτ.

Требуется нарисовать графики зависимостей всех четырех величин от шага по времени. Максимальное и минимальное отклонения должны соответствовать максимуму и минимуму изображаемых на графике вертикальных координат. Говоря чуть проще ;-/, каждая зависимость должна точно вписываться в границы координатной сетки.

Еще хотелось бы, чтобы вы поразмыслили о функциональном виде зависимости Δh(Δτ).

07.02.2008, задача 35: сортировалка ;))

Сделать визуализацию процесса сортировки методами пузырька и вставки.

Сначала в программе есть два массива, заполненные одной случайной последовательностью чисел. Содержимое этих двух массивов отображается в окне программы, скажем, в верхней и нижней его частях. Сортировка осуществляется пошагово (шагом в данных алгоритмах считается последовательность «сравнение пары чисел» — «(возможная) перестановка элементов пары»). Каждый шаг осуществляется по щелчку мышью внутри окна программы или по нажатию на клавиши со стрелками.

Если одна из сортировок уже отсортировала свой массив, а другая — еще нет, то вторая из сортировок продолжается, а уже отсортированный массив остается неизменным. Как только оба массива будут отсортированы, программа должна вывести количество шагов, затраченных на сортировку обоими методами.

При выполнении одного шага программа должна выделять (цветом, оформлением, как-то еще) пару, которая в данный момент подвергается сортировке. При окончании каждого прохода алгоритма сортировки соответствующий массив также выделяется, чтобы пользователь мог понять, что начинается следующий проход аглоритма.

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

31.01.2008, задача 34: вращалка

Добавить к программе, рисующей платоновы тела, возможность поворота тела на заданные углы относительно указанной точки трехмерного пространства.

Углы и центр поворота задаются в процессе работы программы. В простейшем варианте программы, поворот — статический: повернули тело один раз и изобразили результат. Если кто-то хочет, то можно сделать и непрерывно вращающееся тело; тогда будут задаваться не углы поворота, а угловые скорости вращения.

17.01.2008, задача 33: рисовалка

Написать программу, которая создает изображения путем их попиксельного рисования. Размер изображения фиксирован: 128 пикселов на 128 пикселов. Окно программы разделено на три части:

Доступные увеличения — 2x, 3x и 4x, увеличение может меняться в процессе работы программы (выбирается в меню или диалоговом окне). Если увеличенная картинка не влезает в окно — не беда, полосок прокрутки приделывать не нужно.

Программа также должна уметь сохранять картинку в файл и восстанавливать ее из файла. Формат файла — произвольный, можно разработать собственный.

29.11.2007, задача 32: множество Ньютона

Нарисовать множество притяжения корней полинома z3 - 1 для метода Ньютона. Задаваемые параметры:

29.11.2007, задача 31: множества Мандельброта и Жюлиа

Нарисовать множества Манддельброта и Жюлиа. Задаваемые параметры:

Для множества Жюлиа также задается значение комплексной константы C.

22.11.2007, задача 30: геометрические фракталы

Нарисовать снежинку Коха и ковер или салфетку Серпинского некоторого заданного порядка. Должна присутствовать возможность изменять орядок объекта во время выполнения программы.

15.11.2007, задача 29: платоновы тела

Нарисовать в перспективной проекции пять платоновых тел: тетраэдр, куб, октаэдр, икосаэдр и додекаэдр. Параметры и положение камеры должны настраиваться посредством изменения параметров в диалоговом окне.

18.10.2007, задача 28: графики

Нужно написать программу, которая рисует графики функций. Функций три: sin(x)/x, exp(1/x) и x1/3. В каждый момент на экране должна быть видна только одна функция. Параметры осей координат — это минимальные и максимальные значения X- и Y-координат. Эти значения «привязаны» к краям окна программы: при изменении размеров окна картинка масштабируется, но минимальная X-координата по-прежнему должна лежать на левом краю окна. То же самое должно происходить и с остальными координатами.

04.10.2007, задача 27: звездочка

Нужно написать программу, которая рисует в окне пятиконечную звезду. Цвет/стиль всех линий должен быть различным. Звездочка должна масштабироваться вместе с изменением размеров окна. При этом относительные координаты вершин должны оставаться неизменными. Поверх звездочки должна быть надпись произвольного содержания.