- •1Графика
- •1.1Алгоритм Сазерленда-Кохена, отсечение отрезка прямоугольным окном
- •1.2Алгоритм Лианга-Барски, отсечение отрезка прямоугольным окном
- •2Представление разреженных матриц.
- •2.1Форматы представления разреженных матриц
- •2.2Конвертация разреженной матрицы из нормальной формы в формат rr(c)o
- •2.3Конвертация разреженной матрицы, представленной в формате rr(c)u в нормальную форму
- •2.4Транспонирование разреженной матрицы, заданной в формате rr(c)u
- •2.5Сложение двух матриц, заданных в формате rr(c)u.(1-й способ)
- •2.6Сложение двух матриц, заданных в формате rr(c)u.(2-й способ)
- •2.7Умножение двух матриц, заданных в формате rr(c)u.(1-й способ)
- •2.8Умножение двух матриц, заданных в формате rr(c)u.(2-й способ)
- •3Интегральные уравнения.
- •3.1Введение
- •3.2Уравнение Вольтерра первого рода
- •3.3Линейное уравнение Вольтерра второго рода
- •3.4Уравнение Фредгольма второго рода
- •4Методы оптимизации
- •4.1Метод наискорейшего спуска
- •4.2Минимизация функции многих переменных методом конфигураций
- •5Теория графов
- •5.1Способы задания графа
- •5.2Путь с минимальным количеством промежуточных вершин.(волновой алгоритм)
- •5.3Путь минимальной суммарной длины во взвешенном графе с произвольными весами для всех пар вершин.(алгоритм Флойда)
- •5.4Нахождение k путей минимальной суммарной длины во взвешенном графе с неотрицательными весами.(Алгоритм Йена)
- •5.5Построения минимального остовного дерева (Алгоритм Краскала)
- •6Сетевое программирование
3.2Уравнение Вольтерра первого рода
Линейное интегральное уравнение Вольтерра первого рода имеет вид:
Если k(a,a) не равно 0, f(a)=0 и если функции f(x),k(x,s) имеют производные f'(x),k'x(x,s), непрерывные в интервале (a,b), заключенном в интервале интегрирования, внутри которого k(x,s) не обращается в нуль, то уравнение Вольтерра первого рода допускает в интервале (a,b) непрерывное и единственное решение.
Представленная процедура решает уравнение методом квадратурных формул. Вычисление интеграла производится по формуле трапеций с постоянным шагом h:
где xi=a+(i-1)h, i=2,3,..., Aj=1 при j > 1 и Aj=0.5 при j=1.
3.3Линейное уравнение Вольтерра второго рода
Линейное интегральное уравнение Вольтера второго рода имеет вид:
Причем независимые переменные x,s изменяются на промежутке [a,b], ядро k(x,s) непрерывно внутри и на сторонах треугольника, ограниченного прямыми s=a,x=b,x=s. Функция f(x) на [a,b] непрерывна.
Уравнение данного типа решается с помощью метода квадратурных формул, суть которого состоит в замене интегрального уравнения апроксимирующей системой алгебраических уравнений относительно дискретных значений искомой функции и решении этой системы. В основе такой замены лежит приблежение интеграла квадратурными формулами. Применение формулы трапеций с постоянным шагои h приводит к рекурентной формуле:
где i=2,3,...,1+(b-a)/h, xi=a+(i-1)/h, Aj=1 при j > 1 и Aj=0.5 при j=1.
3.4Уравнение Фредгольма второго рода
Линейное интегральное неоднородное уравнение Фредгольма второго рода имеет вид:
где ядро определено в квадрате V=[a,b]*[a,b]. Кроме того, полагается, что ядро непрерывно в V. При =1, используя квадратурную формулу трапеций с постоянным шагом h, получим:
где n=(b-a)/h+1 - целое, Aj=1 при j не равном 1 или n и Aj=0.5 при j=1 или n.
В процедуре используется переменная S. S=0, если полученная система алгебраических уравнений не определена и численное решение уравнения не найдено. S=1, тогда численное решение содержится в массиве y.
4Методы оптимизации
4.1Метод наискорейшего спуска
Методом наискорейшего спуска может быть найден минимум функции n переменных F(x1, . . . ,xn) или найдены решения системы уравнений вида:
Fi(x1,x2, . . .,xn)=0, i=1, . . ,n.
Решение данной системы эквивалентно отысканию равного нулю минимума функции:
Для нахождения минимума F задаем некоторое начальное приближение xi(0) (i=1,...,n) и строим последующие приближения по формуле:
где направления vi(j) и величина шага на j-м шаге соответственно равны:
Все производные вычисляются при xi=xi(j).
Итерационный процесс продолжается до тех пор, пока не будет удовлетворяться условие
|xi(j+1)-xi(j)| < e (i=1,...,n)
или все производные dF/dxk не станут равны нулю.
В процедуре используются функция F(x:array[1..n] of real):real; - минимизируемая функция; набор функций DF (i:integer;x:array[1..n] of real):real;- производные dF/dxi набор функций DF2 (i,j:integer;x:array[1..n] of real):real;- производные d2F/dxidxj
4.2Минимизация функции многих переменных методом конфигураций
Пусть задана функция n переменных F(x1,x2, . . ., xn). Поиск минимального значения начинаем с некоторой начальной точки Pi и начального шага S1 i=d. Вычисляем значение функции в точках F(P1,...,Pi-d,...,Pn), F(P1,...,Pi,...,Pn), F(P1,...,Pi+d,...,Pn). Если из этих трех значений функция минимальна в крайней точке, то принимаем ее за начальную, если в средней точке (P1,...,Pi,...,Pn), то она принимается за начальную, а размер шага по xi уменьшается на коэффициент r и становится равным по i-му аргументу S1 i=S1 i r. Вычисления прекращаются, если размер шага по всем аргументам становится меньше d1 или количество вычислений функции F становится больше m2.