Численные методы и алгоритмы курсовая (Морозова В. М.) (Курсовая по численным методам)

Посмотреть архив целиком

31



МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ИНСТИТУТ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ).













Курсовая работа по

численным методам и алгоритмам.
























Научный руководитель: Морозова В.М.

Студент: Полунин В. Ю.

Группа: 05-211







Москва. 2002г.

План курсовой работы.


Раздел №1. Решение нелинейных уравнений. ------------------------------------------------- стр. 3.

Задание. ------------------------------------------------------------------------------------------------ стр. 3.

Решение. ------------------------------------------------------------------------------------------------ стр.3.

Графический метод отделения корней. --------------------------------------------------------- стр. 3.

Аналитический метод отделения корней. ------------------------------------------------------ стр. 4.

Уточнение корней. ----------------------------------------------------------------------------------- стр. 4.

Решение 1.1. Метод дихотомии или половинного деления. -------------------------------- стр. 4.

Решение 1.2. Метод простой итерации. --------------------------------------------------------- стр. 6.

Решение 1.3. Метод Ньютона (метод касательных). ----------------------------------------- стр. 8.

Решение 1.4. Метод секущих (хорд). ------------------------------------------------------------ стр. 9.

Общие выводы. -------------------------------------------------------------------------------------- стр. 9.


Раздел №2. Решение нелинейных систем уравнений. -------------------------------------- стр. 10.

Задание. ----------------------------------------------------------------------------------------------- стр. 10.

Решение 2.1. Метод итераций. ------------------------------------------------------------------- стр. 10.

Решение 2.2. Метод Ньютона. ------------------------------------------------------------------- стр. 12.


Раздел №3. II основная задача линейной вычислительной алгебры. -------------------- стр. 15.

Задание. ----------------------------------------------------------------------------------------------- стр. 15.

II основная задача вычислительной линейной алгебры. ----------------------------------- стр. 15.

Алгоритм метод вращения Якоби. -------------------------------------------------------------- стр. 18.

Решение 3. ------------------------------------------------------------------------------------------- стр. 19.


Раздел №4. Интерполяция. ----------------------------------------------------------------------- стр. 22.

Сплайн-интерполяция. ---------------------------------------------------------------------------- стр. 23.

Построение кубического интерполяционного сплайна. ----------------------------------- стр. 24.

Основное свойство кубического интерполяционного сплайна. -------------------------- стр. 25.

Алгоритм метода сплайн-интерполяции. ------------------------------------------------------ стр. 26.

Задание. ----------------------------------------------------------------------------------------------- стр. 26.

Решение 4. ------------------------------------------------------------------------------------------- стр. 26.



















Раздел №1. Решение нелинейных уравнений.


Задние:

Дано: sinx = 2х –0,5.

Определить положительный корень уравнения и вычислить его:

  1. Методом половинного деления с =0,01.

  2. Методом простой итерации с =0,001.

  3. Методом Ньютона с =0,001.

  4. Методом секущих с =0,01.


Решение.

Задана функция sinx = 2х –0,5 или f(x) = sinx –2x + 0,5 что равносильно. Необходимо найти некоторый положительный корень. То есть найти такой х* который обращает функцию f (x)=0 в тождество. Тогда х* и будет корнем уравнения.

Решение любого не линейного уравнения разделяется на два этапа:

  1. Отделение корней.

  2. Уточнение корня до некоторой заданной степени точности .

Отделить корень значит выделить такой отрезок [a;b] на котором будет один корень. Для отделения корней используют два метода:

    • графический

    • аналитический


  1. Графический метод отделения корней уравнения.

В Декартовой системе координат сроят график функции f(x) и точка пересечения с осью Ох даст Х* или отрезок на концах которого функция f(x) будет принимать разные знаки.

Теорема: Если непрерывная функция f(x) принимает значения разных знаков на концах отрезке [a;b] то есть f(a)*f(b)<0 то внутри этого отрезка по меньшей мере один корень уравнения f(x)=0.

Корень будет единственный, если f’(x) существует и сохраняет постоянный знак внутри интервала [a;b].

Представим функцию f (x) в виде двух функций:

f 1(x) = sinx и f 2(x) = 2х – 0,5.

Точка пересечения этих двух функций будет Х*. А также позволит отделить корень уравнения f(x). Так как нас интересует только положительный корень, то рассматриваем только 1 и 4 четверти.

f(0,25)= 0,24740396;

f(0,5)= -0,02057446;

Так как функция f(x) имеет разные знаки на концах отрезка [0.25;0.5], то функция имеет корень на данном отрезке.

f’(x) = cosx – 2. Производная существует и сохраняет знак на отрезке [0.25;0.5] (больше нуля) – значит на данном отрезке есть один корень.


  1. Аналитический метод отделения корней.

Метод проб. Составляем таблицу и смотрим значение функции по точкам.

Х

0

0,25

0,5

0,75

1

1,25

F(x)

0,5

0,24740396

-0,02057446

-0,31836124

-0,65852902

-1,0510154


Корень отделен Х[0.25;0.5].


Уточнение корней.

Корни отделены, то есть имеется отрезок [0,25;0,5] ([a;b]) которому принадлежит Х* и на этом отрезке нет других корней. Тогда числа 0,25 (a) и 0,5 (b) являются приближенными значениями корня Х* с недостатком и с избытком соответственно.

Будем теперь искать значения корня с требуемой точностью при следующих допущениях:

    • Функция F(x) на отрезке [0,25;0,5] ([a;b]) дифференцируема n раз.

    • Функция F(x) на отрезке [0,25;0,5] ([a;b]) монотонна f(a)*f(b)= f(0,25)*f(0,5)=-0,0050902<0

    • f’(x) и f’’(x) сохраняют знаки на этом отрезке.

f’(x) = cosx – 2 меньше нуля.

f’’(x) = -sinx меньше нуля.


Решение 1.1. Метод дихотомии или половинного деления.

Для того, чтобы этот метод сходился необходимо чтобы производная функции f’(x) не была равна нулю, то есть функция f(x) должна быть непрерывной. Метод требует вычисление только одного значения f(x(k+1)), это занимает 90% машинного времени. Скорость сходимость данного метода следует из названия: “Метод половинного деления”, то есть скорость равна ½.

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


Алгоритм метода:

  1. Для нахождения корня уравнения f(x) принадлежащего отрезку, делим отрезок [0,25;0,5] ([a;b]) пополам. Если f((a+b)/2)=0, то Х*=(a+b)/2 является корнем уравнения.

  2. Если f((a+b)/2)0, то выбираем ту половину [a; (a+b)/2] и [(a+b)/2;b] на которой функция имеет разные знаки.

Повторяем процесс до тех пор пока f(Х*)=0 либо получим неограниченную последовательность вложенных отрезков.


Шаг 1.

Отрезок Х[0.25;0.5].

F(0,25)=sin(0,25)–2*0,25+0,5=0,24740396;

F(0,5)=sin(0,5)–2*0,5+0,5=-0,02057446;

Координаты середины отрезка:

X(0)=(a+b)/2=(0,25+0,5)/2=0,375;

F(0,375)=sin(0,375)–2*0,375+0,5=0,11627253;

Новый отрезок: Х[0,375;0,5].


Шаг 2.

Отрезок Х[0,375;0,5].

F(0,375)=sin(0,375)–2*0,375+0,5=0,11627253;

F(0,5)=sin(0,5)–2*0,5+0,5=-0,02057446;

Координаты середины отрезка:

X(1)=(a+b)/2=(0,375+0,5)/2=0,4375;

F(0,4375)=sin(0,4375)–2* 0,4375+0,5=0,04867626;

Проверка условия точности.

|X(1)-X(0)| = 0,0625 > Условие точности не выполняется.

Новый отрезок: Х[0,4375;0,5].


Шаг 3.

Отрезок Х[0,4375;0,5].

F(0,4375)=sin(0,4375)–2*0,4375+0,5=0,04867626;

F(0,5)=sin(0,5)–2*0,5+0,5 =-0,02057446;

Координаты середины отрезка:

X(2)=(a+b)/2=(0,4375+0,5)/2=0,46875;

F(0,46875) = sin (0,46875)–2*0,46875+0,5=0,01427147;

Проверка условия точности.

|X(2)-X(1)|=0,03125 > Условие точности не выполняется.

Новый отрезок: Х[0,46875;0,5].


Шаг 4.

Отрезок Х[0,46875;0,5].

F(0,46875)=sin(0,46875)–2*0,46875+0,5= =0,01427147;

F(0,5)=sin(0,5)–2*0,5+0,5 =-0,02057446;

Координаты середины отрезка:

X(3)=(a+b)/2=(0,46875+0,5)/2=0,484375;

F(0,484375)=sin(0,484375)–2*0,484375+0,5=-0,00309465;

Проверка условия точности.

|X(3)-X(2)|=0,015625 > Условие точности не выполняется.

Новый отрезок: Х[0,46875;0,484375].


Шаг 5.

Отрезок Х[0,46875;0,484375].

F(0,46875)=sin(0,46875)–2*0,46875+0,5=0,01427147;

F(0,484375)=sin(0,484375)–2*0,484375+ +0,5 = -0,00309465;

Координаты середины отрезка:

X(4)=(a+b)/2=(0,46875+0,484375)/2=0,4765625;

F(0,4765625)=sin(0,4765625)–2*0,4765625+0,5=0,00560241;

Проверка условия точности.

|X(4)-X(3)|=0,0078125 < Условие точности выполняется.

Новый отрезок: Х[0,4765625;0,484375].


Ответ: Х* 0,48 корень с недостатком.


Решение 1.2. Метод простой итерации.


Условие сходимости метода является существование f’(x), а это значит, что функция F(x) должна быть не только непрерывной, но и дифференцируемой. Трудоемкость данного метода такая же, как и в методе дихотомии, так как для каждого нового приближения нужно вычислить одно и то же значение (x(к)). Скорость сходимости можно варьировать. Метод становиться выгодным, если q < ½. Если удается быстро подобрать равносильное уравнение X = (x) к уравнению F(x)=0 с выполнением условия | ’(x) | < 1, то тогда этот метод предпочтительнее. Если требуется более высокая точность вычисления корня, и если относительно легко удается получить равносильное уравнение со скоростью сходимости q < ½, то следует пользоваться именно методом итераций.

Метод простой итерации заключается в том, что для уравнения f(x)=0 строиться равносильное уравнение X = (x) Таким образом, чтобы обязательно выполнялось условие сходимости: q = max[a;b] | ’(x) | < 1.


Алгоритм метода:

  1. Заменить уравнение Y = f(x) = 0 равносильным уравнением X = (x). Таких уравнений может быть много. Из них надо выбрать такие, при которых процесс будет сходящимся, то есть будет выполняться условие q = max[a;b] | ’(x) | < 1.

  2. Выбрать каким либо методом приближенное значение корня Х0 и подставить его в уравнение X1 = (x0).

  3. Поставить в правую часть уравнения значение X1. X2 = (x1).

  4. Повторив этот процесс получим формулу для реализации метода: Xк+1 = (xк), где к=0,n, Хк – катое приближение.


Подбираем функцию (x):

sinx = 2x – 0.5;

x = 0.5sinx + ¼;

(x) = 0.5sinx + ¼;

’(x) = 0.5cosx;

q = max[a;b] | ’(x) | = max[0.25;0.5] | 0.5cosx | < 1 – процесс сходится.


Шаг 1.

К = 0; Х0 = 0,25;

Х(1)= (x(0)) =0,5*sinX0 + ¼ = 0,5*sin(0,25) + 1/4 = 0,49740396;

|X(1)-X(0)| = |0.49740396 – 0.25| = 0,24740396 > Условие не выполняется.


Шаг 2.

К = 1; Х1 = 0,49740396;

Х(2)= (x(1)) =0,5*sinX1 + ¼ = 0,5*sin(0,49740396) + 1/4 = 0,72714569;

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

Подбираем функцию (x):

sinx = 2x – 0.5;

x = arcsin(2x – 0.5);

(x) = arcsin(2x – 0.5);

q = max[a;b] | ’(x) | >1 – процесс расходится.

Тогда Запишем эквивалентную функцию следующим способом:

f (x) = sinx –2x + 0,5

f’(x) = cosx – 2;

На отрезке [0.25;0.5] функция убывает.

f’(0,25) = cos (0.25) – 2 = -1,03108758;

f’(0,5) = cos (0.5) – 2 = -1,12241744; Тогда:

Так как производная F’(x) меньше нуля, то знак между слагаемыми противоположный, то есть плюс. Тогда эквивалентная формула имеет вид:

Шаг 1.

К = 0;

Х0 = 0,25;

Х(1)=(x(0))=Х(0)+(sinX(0) - 2Х(0) +0,5)/( -1,03108758)=

=0,25+(sin(0,25)–2*0,25+0,5)/(-1,03108758)=0,47042063;

|X(1)-X(0)| = |0.47042063 – 0.25| = 0,22042063 > Условие не выполняется.


Шаг 2.

К = 1;

Х1 = 0,47042063;

Х(2)=(x(1))=Х(1)+(sinX(1) - 2Х(1) +0,5)/( -1,03108758)=

=0,47042063+(sin(0,47042063)–2*0,25+0,5)/(-1,03108758)=0,48148604;

|X(2)-X(1)| = |0.48148604 – 0.47042063| = 0,01106541 > Условие не выполняется.


Шаг 3.

К = 2;

Х2 = 0,48148604;

Х(3)=(x(2))=Х(2)+(sinX(2) - 2Х2 +0,5)/( -1,03108758)=

=0,481486+(sin(0,481486)–2*0,25+0,5)/(-1,03108758)=0,48159714;

|X(3)-X(2)| = |0,48159714 – 0.48148604| = 0,0001111 < Условие выполняется.


Ответ: Х* 0,482.





Решение 1.3. Метод Ньютона (метод касательных).


Данный метод обладает высокой скоростью приближения. Метод Ньютона дает ответ с избытком. Условием сходимости метода является выполнение условия: на отрезке [a;b] вторая производная функции f’’(x) не равна нулю, то есть функция f’’(x) знакопостоянна на интервале [a;b]. Для каждого приближения нужно вычислять два значения: f(x(к)) и f’(x(к)). При приближении Х(к) к Х* скорость сходимости резко возрастает. Если требуется высокая точность корня, то лучше применять метод Ньютона вместе с методом секущих. В этом случае увеличение скорости сходимости оправдывает затраты на вычисление двух функций.

Пусть дано уравнение Y = f (x) = 0, пусть Х(к) – катое приближение к корню Х*.

Напишем уравнение касательной к кривой:

Y(x) = f (x(k)) + f’(X(k))*(X – X(k)).

Пусть эта касательная пересекает ось Ох в точке Х(к+1), тогда Y(x(к+1)) = 0 и следовательно

0 = f (x(k)) + f’(X(k))*(XX(k)), откуда

Х(к+1) = Х(к)f (X(K))/ f’(X(K)), k = 0,n.

Метод Ньютона дает значение корня с избытком.


f’(x) = cosx – 2.

f’’(x) = -sinxx, Вторая производная существует и на отрезке [0.25;0.5] не равна нулю и постоянна по знаку.


Шаг 1.

К = 0; Х(0) = 0,25;

Х(1)(0)f (X(0))/ f’(X(0))=Х(0) - (sinX(0) - 2Х(0) +0,5)/( cos Х(0) – 2)=

=0.25+(sin(0,25)–2*0,25+0,5)/ (cos(0.25) – 2)= 0.48994466;

|X(1)-X(0)| = |0.48994466 – 0.25| = 0,23994466 > Условие не выполняется.


Шаг 2.

К = 1; Х(1) = 0.48994466;

Х(2)(1)f (X(1))/ f’(X(1))=Х(1) - (sinX(1) - 2Х(1) +0,5)/( cos Х(1) – 2)=

=0.48994466+(sin(0.48994466)–2*0.48994466+0,5)/ (cos(0.48994466) – 2)= 0.48161259;

|X(2)-X(1)| = |0.48161259 – 0.48994466| = 0,00833207 > Условие не выполняется.


Шаг 3.

К = 2; Х(2) = 0.48161259;

Х(3)(2)f (X(2))/ f’(X(2))=Х(2) - (sinX(2) - 2Х(2) +0,5)/( cos Х(2) – 2)=

=0.48994466+(sin(0.48161259)–2*0.48161259+0,5)/ (cos(0.48161259) – 2)= 0.481598003;

|X(3)-X(2)| = |0.481598003 – 0.48161259| = 0,00001459 < Условие выполняется.


Ответ: Х* 0.482 корень с избытком.








Решение 1.4. Метод секущих (хорд).


Данный метод дает решение с недостатком. Обычно применяется комбинированный метод касательных и хорд.

Берем случай, когда f (a)*f (b)<0. Выведем формулу для этого метода.

Рассмотрим Аах1 х1bB

X1=a + h;

X1(f(b) - f(a)) = b*f(a)+a*f(b);

Прибавим и отнимем a*f(a):

Получим x1(f(b)-f(a)) = b*f(a) +a*f(b) – a*f(a) + a*f(a);

X1 = a – f(a)*(b - a)/(f(b) - f(a)), аналогично

X2 = X1 – f(X1)*(b - X1)/(f(b) - f(X1)),


Шаг 1.

К = 0; a = 0.25; b = 0.5;

f(a)= f(0.25) = sin(0.25) – 2*0.25 + 0,5 = 0.24740396;

f(b)= f(0.5) = sin(0.5) – 2*0.5 + 0,5 = -0.02057446;


Х(0) = a – f(a)*(b - a)/(f(b) - f(a)) = 0.25 – 0.24740396*(0.5-0.25)/(-0.02057446-

-0.24740396)=0.48080586;

f(Х(0))= f(0.48080586) = sin(0.48080586) – 2*0.48080586 + 0,5 =0.0008821;


Х(1) = X(0)f(X(0))*(b-X(0))/(f(b)-f(X(0))) = 0.48080586–0.0008821*(0.5-0.48080586)/

/(-0.02057446–0.0008821)=0.48159495;

|X(1)-X(0)| = |0.48080586-0.48159495| = 0,000789089 < Условие выполняется.


Ответ: Х* 0,482 корень с недостатком.


Общие выводы:

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

Если требуется более высокая точность корня и если относительно легко удается получить равносильное уравнение с q<1/2, то следует пользоваться методом итераций.











Раздел 2. Решение системы нелинейных уравнений.


Задние:

1. Дано:

Решить систему нелинейных уравнений методом итераций и методом Ньютона с точностью =0,0001.


Решение 2.1. Метод итераций.

1. Отделяем корни системы уравнений графическим методом.

И
з графика видно, что система уравнений имеет решение на Х[0.5;0.75] и У[1,75;2].


2. Представляем систему уравнений в виде:

где F(x,y) и G(x,y) – непрерывно - дифференцируемые функции.

3. Проверяем условие сходимости системы, выраженной в виде функций.


F(x,y)/x = 0; F(x,y)/y = -cos(y-1);

G(x,y)/x = cos(x+1); G(x,y)/y = 0;


|cos(y + 1)| < 1;

| cos(y - 1)| < 1;

Условие выполняется, то есть функция сходится.


4. Так как условие п.3 выполняется, то данные функции F(x,y) =1,3 – sin(y-1) и

G(x,y) = 0.8 + sin(x+1) используют для вычисления по схеме:


5. Если условия сходимости не выполняются, то следует выбрать другую пару функций F1(x,y) и G1 (x,y), которая удовлетворяла бы условиям сходимости.


6. Выбрать начальную точку А000). Начальная точка: А0(0,5;1,75).


7. Вычислить значения

|Xi(k+1) - Xi(k)| и |Уi(k+1) - Уi(k)| и сравнить его с .

Если |Xi(k+1) - Xi(k)| и |Уi(k+1) - Уi(k)| то процесс завершен. Получены координаты точек пересечения графиков, то есть решение системы уравнений с заданной точностью .

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


Шаг 1.

Х(0) = 0,5; У(0) = 1,75;

Х(1) = 1,3 – sin(Y(0) - 1) = 1.3 – sin(0.75 – 1) = 0.61836124;

Y(1) = 0.8 + sin(X(0) + 1) = 0.8 + sin(0.5 – 1) = 1.79749499;

|X(1) - X(0)| = 0,11836124 > Условие не выполняется;

|Y(1) - Y(0)| = 0,047494987 > Условие не выполняется.


Шаг 2.

Х(1) = 0,618361; У(1) = 1,797495;

Х(2) = 1,3 – sin(Y(1) - 1) = 1.3 – sin(1,79749499 - 1) = 0,584391418;

Y(2) = 0.8 + sin(X(1) + 1) = 0.8 + sin(0,61836124 - 1) =1,798869003;

|X(2) - X(1)| = 0,033969822 > Условие не выполняется;

|Y(2) - Y(1)| = 0,001374016 > Условие не выполняется.


Шаг 3.

Х(2) = 0,584391418; У(2) = 1,798869003;

Х(3) = 1,3 – sin(Y(2) - 1) = 1.3 – sin(1,798869003 - 1) = 0,583432341;

Y(3) = 0.8 + sin(X(2) + 1) = 0.8 + sin(0,584391418- 1) =1,799907588;

|X(3) - X(2)| = 0,000959077 > Условие не выполняется;

|Y(3) - Y(2)| = 0,001038585 > Условие не выполняется.


Шаг 4.

Х(3) = 0,583432341; У(3) = 1,799907588;

Х(4) = 1,3 – sin(Y(3) - 1) = 1.3 – sin(1,799907588 - 1) = 0,582708296;

Y(4) = 0.8 + sin(X(3) + 1) = 0.8 + sin(0,583432341- 1) =1,799920167;

|X(4) - X(3)| = 0,000724045 > Условие не выполняется;

|Y(4) - Y(3)| = 0,00001258 < Условие выполняется.



Шаг 5.

Х(4) = 0,582708296; У(4) = 1,799929053;

Х(5) = 1,3 – sin(Y(4) - 1) = 1.3 – sin(1,799929053 - 1) = 0,582699532;

Y(5) = 0.8 + sin(X(4) + 1) = 0.8 + sin(0,582708-296 1) =1,799929053;

|X(5) - X(4)| = 0,0000087643 < Условие выполняется;

|Y(5) - Y(4)| = 0,000008887 < Условие выполняется.


Ответ: X 0.5827; Y 1.7999.


Решение 2.2. Метод Ньютона.


1. Записать систему уравнений в виде неявно заданных функций:

где F(x,y) и G(x,y) – непрерывно - дифференцируемые функции.


2. Определить приближенное значение корня графическим или аналитическим методом.

Система уравнений имеет решение на Х[0.5;0.75] и У[1,75;2].


3. Выбрать начальную точку А000). Начальная точка: А0(0,5;1,75).


4. Найти частные производные функций F(x,y) и G(x,y).


F(x,y)/x = 1; F(x,y)/y = cos(y-1);


G(x,y)/x = -cos(x+1); G(x,y)/y = 1;



5. Для данной точки вычислить значения:

F(x,y); G(x,y); Fx’(x,y); G x’(x,y); F y’(x,y); G y’(x,y);

и полученные результаты записать в виде таблицы.


6. Вычислить Х(к), и Y(к) Якобиан: F y’(x,y); G y’(x,y);

















7. Приближенные значения вычисляются по формулам:


8. Точность определяется как:





Процесс продолжается до тех пор, пока не будет достигнута заданная точность.


Шаг 1.

Х(1) = 0,5; У(1) = 1,75;

F(x,y)=X+sin(y-1)-1.3=0.5+sin(1.75-1)-1.3=-0.11836124;

G(x,y)=Y-sin(x+1)-0.8=1.75-sin(0.5+1)-0.8=-0.0479499;

F’x(x,y)=1;

G’x(x,y)=-cos(x+1)=-cos(0.5+1)=-0.07073720;

F’y(x,y)=cos(y-1)=cos(1.75-1)=0.73168887;

G’y(x,y)=1;

X(1)=F(X(1),Y(1))*Gy'(X(1),Y(1))-G(X(1),Y(1))*Fy'(X(1),Y(1))=-0.08360969;

Y(1)=Fx'(X(1),Y(1))*G(X(1),Y(1))-Gx'(X(1),Y(1))*F(X(1),Y(1))=-0.05586753;


Случайные файлы

Файл
61057.rtf
35372.rtf
ref-15114.doc
179617.rtf
175596.rtf