			 ТРЕБОВАНИЯ
	       К ПРОГРАММАМ "ПРАКТИКУМА НА ЭВМ"


1. Программа должна запрашивать отрезок (область приближения)
   и количество точек приближения у пользователя (запрос на
   ввод с клавиатуры).

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

3. Ввод функции из файла. В файле с заданным именем (например,
   "a.dat") находится таблица значений некоторой функции f(x)
   вида

     n
     x_1  f(x_1)
     x_2  f(x_2)
     ...  ...
     x_n  f(x_n)

   где n - количество заданных точек, x_1,...,x_n -- точки,
   f_1=f(x_1),...,f_n=f(x_n) - значения функции в точках.
   Если программе требуются значения функции f в других точках
   (например, при вычислении погрешности приближения),
   то они вычисляются с помощью линейной интерполяции.

4. Ввод функции по формуле. Известна аналитически заданная
   формула для f(x) (f(x,y) в задаче приближения функции 2-х
   переменных). Функция f выдается преподавателем и должна быть 
   оформлена в виде отдельной подпрограммы.

5. В программе должны быть реализованы два метода (1), (2),
   выданные преподавателем (или один метод в случае приближения
   функции 2-х переменных методом конечных элементов).

6. Построение приближающей функции (многочлена или
   кусочно-многочленной функции) должно быть оформлено в виде
   подпрограммы, находящейся в отдельном файле и получающей в
   качестве аргументов
   а) количество точек приближения n (в которых известно значение
      функции) (число точек n и m по сторонам прямоугольника
      в случае приближения функции 2-х переменных на прямоугольнике);
   б) массив x длины n с точками приближения x_1,...,x_n
      (массивы x и y длины n и m с соответственно абсциссами
      x_1,...,x_n и ординатами y_1,...,y_m точек приближения
      в случае приближения функции 2-х переменных на прямоугольнике);
   в) массив f длины n со значениями f_1,...,f_n функции f
      в точках приближения (массив f длины n x m со значениями f_{ij}
      функции f в точках приближения (x_i, y_j), i=1,...,n, j=1,...,m
      в случае приближения функции 2-х переменных на прямоугольнике);
   г) массив a требуемой длины для сохранения результатов работы этой
      функции - коэффициентов приближающей функции;
   д) дополнительные вектора, если алгоритму требуется дополнительная
      память.
  Получать в этой подпрограмме дополнительную информацию извне
  через глобальные переменные, общие блоки, включаемые файлы
  и т.п. запрещается.

7. Вычисление значения приближающей функции (многочлена или
   кусочно-многочленной функции) в точке должно быть оформлено в виде
   подпрограммы, находящейся в том же файле, что и предыдущая функция,
   и получающей в качестве аргументов
   а) точку x ((x,y)), в которой требуется вычислить значение
      приближающей функции;
   б) отрезок [a,b] (прямоугольник [a,b] x [c,d]), на котором
      построено значение приближающей функции;
   в) количество точек приближения n (число точек n и m по сторонам
      прямоугольника в случае приближения функции 2-х переменных
      на прямоугольнике);
   г) массив a с коэффициентами приближающей функции.
  Получать в этой подпрограмме дополнительную информацию извне
  через глобальные переменные, общие блоки, включаемые файлы
  и т.п. запрещается.

8. Программа должна содержать подпрограмму вывода на экран X-Windows
   заданной функции. Эта подпрограмма должна находиться в отдельном
   файле и получать в качестве аргументов
   а) отрезок [a,b] (прямоугольник [a,b] x [c,d]), на котором
      требуется построить график функции;
   б) указатель на функцию, вычисляющую значение рисуемой функции в точке.
   Функция должна:
   а) вычислять максимальное значение функции на области рисования
      и осуществлять масштабирование (независимое по X и Y или (X,Y) и Z
      для функции 2-х переменных) для того, чтобы график не выходил за
      границы окна и не оказался слишком мелким);
   б) выводить на экран максимальное по модулю значение функции;
   в) осуществлять стирание невидимых линий для функции 2-х переменных.

9. Интерфейсная часть программы должна:

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

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

   в) по нажатию определенных клавиш (например, 4 и 5)
      увеличивать / уменьшать в 2 раза число точек приближения
      (если функция задана формулой);

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

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