Метод Эйлера для решения уравнения первого порядка

Понятие, закономерности формирования и решения дифференциальных уравнений. Теорема о существовании и единственности решения задачи Коши. Существующие подходы и методы решения данной задачи, оценка погрешности полученных значений. Листинг программы.

Рубрика Математика
Вид курсовая работа
Язык русский
Дата добавления 27.01.2014
Размер файла 120,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Введение

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

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

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

Цель курсового проекта заключаеется в реализации метода Эйлера, решение дифференциальных уравнений первого порядка в среде Visual Studio средствами языка Visual Basic.

Для достижения поставленной цели выделим следующие задачи:

- изучить специализированную литературу

- разработать программный код

- оформить документацию

1. Теоретические основы курсового проекта

1.1 Дифференциальные уравнения

программа коши дифференциальный уравнение

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

Так как во многих физических приложениях независимым переменным, от которого зависят неизвестные искомые функции, является время, то в дальнейшем, как правило, независимое переменное будет обозначаться через t. Неизвестные функции будут обозначаться через x, y, z и т.д.

Рассмотрим в первую очередь одно дифференциальное уравнение первого порядка. Общий вид такого уравнения следующий:

(1.1)

Здесь t - независимое переменное, x - неизвестная функция, зависящая от t. - ee производная. F - заданная функция трех вещественных переменных. Функция F, вообще говоря, может быть задана не для всех значений своих аргументов, поэтому следует говорить об области ? задания функции F, имея в виду область координатного пространства трех (вещественных) переменных t, x, .

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

Решением уравнения (1.1) называется такая функция x =?(t) независимого переменного t, определения на некотором интервале r1 < t < r2 (случаи r1 = ?? и r2 = + ? не исключаются), которая дифференцируема в каждой точке этого интервала и при подстановке ее вместо x в соотношение (1.1), мы получаем тождество (по t) на всем интервале r1 < t < r2.

Интервал r1 < t < r2 называется интервалом определения решения ?(t).

Очевидно, что подстановка функции x =?(t) в соотношение (1.1) возможна только в том случае, когда точка с координатами (t,?(t), ) принадлежит области ? определения функции F при произвольном t из интервала r1 < t < r2.

Соотношение (1.1) связывает три переменные: t, x, . В некоторых случаях из (1.1) переменная может быть выражена в виде однозначной функции переменных t, x. В этом случае дифференциальное уравнение (1.1) равносильно дифференциальному уравнению вида

(1.2)

Дифференциальное уравнение (1.2) называется разрешенным относительно производной или уравнением нормального вида; Именно уравнения нормального вида мы и будем теперь рассматривать. Мы не будем уже считать, что соотношение (1.2) получено в результате разрешения относительно уравнения вида (1.1), а будем исходить из функции f (t, x) как из заданной функции двух независимых переменных t, x.

Для того чтобы пользоваться геометрическими представлениями и терминологией, введем в рассмотрение координатную плоскость R2 переменных t и x. Функция f, определяющая дифференциальное уравнение (1.2), может быть задана не для всех значений своих аргументов t и x, т.е. не на всей плоскости R2(t, x), а лишь в точках некоторого множества D этой плоскости. Относительно множества D в дальнейшем всегда будем предполагать, что оно является открытым, а функция f является непрерывной относительно пары переменных t, x на всем множестве D.

График Gj={(t,j(t)), r1 < t < r2} решения x =j(t) уравнения (1.2) называется интегральной кривой этого дифференциального уравнения.

Интегральная кривая представляет собой кривую в плоскости R2 с уравнением x =j(t), имеющую в каждой точке касательную и полностью проходящую в открытом множестве D.

Итак, интегральная кривая - геометрическая интерпретация решения дифференциального уравнения. Возможна геометрическая интерпретация и самого уравнения (1.2). Именно, через каждую точку (t, x) множества D проведем прямую lt,x с угловым коэффициентом f (t, x). Мы получаем поле направлений, соответствующее уравнению (1.2), что и является геометрической интерпретацией этого уравнения.

Связь между геометрической интерпретацией уравнения и геометрической интерпретацией его решения заключается в том, что любая интегральная кривая x =j(t) в каждой своей точке (t,j(t)) касается прямой lt,?(t).

1.2 Теорема существования и единственности

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

Пусть t0, x0 - произвольная точка множества D, в котором определена правая часть f (t, x) уравнения (1.2).

Задача отыскания решения x =j(t) этого уравнения, удовлетворяющего дополнительному условию

(1.3)

называется задачей Коши (или задачей с начальным условием) для уравнения (1.2), а соотношение (1.3) - начальным условием для этого уравнения. Говорят также, что решение x = j(t) удовлетворяет начальному условию (1.3) или, что оно имеет начальные значения t0, x0. Утверждение, что решение x =j(t) удовлетворяет начальному условию (1.3) предполагает, что интервал r1< t < r2 определения решения x =j(t) содержит точку t0.

Геометрическая интерпретация задачи Коши состоит в том, чтобы через заданную точку (t0, x0) множества D провести интегральную кривую дифференциального уравнения (1.2).

Далее, пусть функция f (t, x) определена на множестве DМR2(t, x). Говорят, что эта функция удовлетворяет условию Липшица относительно x (равномерно по t), если существует постоянная M > 0 (не зависящая от t) такая, что:

(1.4)

Постоянная M называется постоянной Липшица.

1.3 Теорема о существовании и единственности решения задачи Коши

Пусть (1.5)

- дифференциальное уравнение. Будем предполагать, что функция f (t, x) задана на некотором открытом множестве D плоскости R2(t, x) переменных t, x. Относительно функции f (t, x) будем предполагать, что она непрерывна на D и удовлетворяет на этом множестве условию Липшица (1.4) относительно x (равномерно по t). Теорема утверждает, что:

1) для всякой точки (t0, x0) О D найдется решение x = j(t) уравнения (1.5), удовлетворяющее начальному условию

(1.6)

2) если два решения x = y(t) и x = ?(t) уравнения (1.5) совпадают хотя бы для одного значения t1, т.е. если то эти решения тождественно равны для всех значений переменного t, для которых они оба определены.

y(t1)--=--c(t1), Таким образом, теорема 1.1.1 утверждает, что координаты любой точки (t0, x0) множества D являются начальными значениями для некоторого решения уравнения (1.5) и что два решения с общими начальными значениями совпадают на пересечении их интервалов определения.

Геометрическое содержание теоремы 1.1.1 заключается в том, что через каждую точку (t0, x0) О D проходит одна и только одна интегральная кривая уравнения (1.5).

Говоря, что через каждую точку (t0, x0) О D проходит «только одна» интегральная кривая, мы допустили некоторую неточность. Действительно, решением уравнения (1.5) называется функция x =y(t), заданная на вполне определенном интервале r1 < t < r2. Наряду с этой функцией может существовать функция x = c(t), также удовлетворяющая уравнению (1.5) и начальному условию (1.6), заданная на другом интервале s1 < t < s2. Вторая часть теоремы 1.1.1 утверждает лишь, что функции y(t) и c(t) совпадают лишь там, где они обе определены, но вовсе не утверждает, что их интервалы определения r1 < t < r2 и s1 < t < s2 одинаковы.

Говорят, что решение x = y(t), заданное на интервале s1 < t < s2 является продолжением решения x =j(t), заданного на интервале r1 < t < r2, если (r1, r2) М--(s1,--s2)--и--y(t)--є--j(t)--"t--О--(r1, r2). Решение называется не продолжаемым, если не существует никого отличного от него продолжения. Далее будет доказано, что каждое решение может быть продолжено до не продолжаемого, причем единственным образом. Если теперь подразумевать под интегральной кривой график не продолжаемого решения, то утверждение теоремы 1.1.1 о том, что через каждую точку (t0, x0) О D проходит единственная интегральная кривая, становиться точным.

Замечание к теореме 1.1.1. Если правая часть f (t, x) уравнения (1.5) не удовлетворяет условию Липшица (1.4), то вторая часть теоремы (о единственности), вообще говоря, не справедлива. Действительно, рассмотрим уравнение

(1.7)

Правая часть этого уравнения определена и непрерывна при всех x, однако условию Липшица в областях, содержащих точки (t, 0), не удовлетворяет, ибо для точек (t, 0), (t, x) не существует постоянной M > 0 такой, что

С другой стороны, ясно, что в любой области P плоскости R2(t, x), не пересекающейся с прямой x = 0, к уравнению (1.7) теорема 1.1.1 применима, и таким образом, в каждой из полуплоскостей x> 0 и x < 0 через каждую точку проходит единственная интегральная кривая, уравнение которой можно найти явно. Действительно, нетрудно убедиться, что при любой постоянной c функция уравнению (1.7) удовлетворяет. (1.7)

Часть графика функции (1.8) (при t < c) проходит в полуплоскости x < 0, часть же (при t > c) - в полуплоскости x > 0. Функция x є 0, очевидно, также является решением уравнения (1.7).

Таким образом, через каждую точку (t, x) = (c, 0) проходят два решения уравнения (1.7): решение (1.8) и решение x є 0.

В качестве иллюстрации теоремы 1.1.1 рассмотрим задачу об отыскании всех решений простейшего дифференциального уравнения

(1.9)

где a - действительная постоянная. В данном случае правая часть f (t, x) = ax определена на всей плоскости (t, x) и удовлетворяет на ней условию Липшица с постоянной M = |a|. Таким образом, теорема 1.1 к уравнению (1.9) применима. Непосредственной подстановкой убеждаемся, что каждая функция

(1.10)

где C - произвольное действительное число, является решением уравнения (1.9). Интервалом определения решения (1.10) является вся прямая t О--(-Ґ,+Ґ) и поэтому оно является непродолжаемым. Покажем, что формула (1.10) исчерпывает все решения уравнения (1.9). Действительно, пусть x =j(t) - произвольное решение этого уравнения, заданное на интервале r1 < t < r2. Пусть t0 О (r1, r2) - произвольная точка и x0 = j(t0). Если в качестве постоянной C принять величину

то тогда два решения x = j(t) и уравнения (1.9) имеют одинаковые начальные значения t0, x0 и поэтому в силу второй части теоремы 1.1.1 совпадают. Таким образом, придавая постоянной C в (1.10) всевозможные значения, мы получим все решения уравнения (1.9).

2. Обзор методов решения задачи

2.1 Метод Эйлера для решения уравнения первого порядка

Метод Эйлера - наиболее простой численный метод решения (систем) обыкновенных дифференциальных уравнений. Впервые описан Леонардом Эйлером в 1768 году в работе «Интегральное исчисление». Метод Эйлера является явным, одношаговым методом первого порядка точности, основанном на аппроксимации интегральной кривой кусочно-линейной функцией, т. н. ломаной Эйлера.

Решить дифференциальное уравнение у/=f (x, y) численным методом - это значит для заданной последовательности аргументов х0, х1…, хn и числа у0, не определяя функцию у=F(x), найти такие значения у1, у2,…, уn, что уi=F(xi) (i=1,2,…, n) и F(x0)=y0

Таким образом, численные методы позволяют вместо нахождения функции

У=F(x) получить таблицу значений этой функции для заданной последовательности аргументов. Величина h=xk-xk-1 называется шагом интегрирования.

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

Рассмотрим дифференциальное уравнение первого порядка с начальным условием x=x0, y(x0)=y0

Требуется найти решение уравнения (2.5.1) на отрезке [а, b].

Разобьем отрезок [a, b] на n равных частей и получим последовательность х0, х1, х2,…, хn, где xi=x0+ih (i=0,1,…, n), а h=(b-a)/n-шаг интегрирования.

В методе Эйлера приближенные значения у(хi)» yi вычисляются последовательно по формулам уi+hf(xi, yi) (i=0,1,2…).

При этом искомая интегральная кривая у=у(х), проходящая через точку М00, у0), заменяется ломаной М0М1М2… с вершинами Мi(xi, yi) (i=0,1,2,…); каждое звено МiMi+1этой ломаной, называемой ломаной Эйлера, имеет направление, совпадающее с направлением той интегральной кривой уравнения, которая проходит через точку Мi. Если правая часть уравнения в некотором прямоугольнике R {|x-x0|Јa, |y-y0|Јb} удовлетворяет условиям:

|f (x, y1) - f (x, y2)| Ј N|y1-y2| (N=const),

|df/dx|=|df/dx+f (df/dy)| Ј M (M=const),

то имеет место следующая оценка погрешности:

|y(xn) - yn| Ј hM/2N[(1+hN)n-1],

где у(хn) - значение точного решения уравнения при х=хn, а уn - приближенное значение, полученное на n-ом шаге.

Формула (13) имеет в основном теоретическое применение. На практике иногда оказывается более удобным двойной просчет: сначала расчет ведется с шагом h, затем шаг дробят и повторный расчет ведется с шагом h/2. Погрешность более точного значения уn* оценивается формулой

|yn-y(xn)|»|yn*-yn|.

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

2.2 Оценка погрешности

Метод Эйлера является методом первого порядка. Если функция непрерывна в и непрерывно дифференцируема по переменной в , то имеет место следующая оценка погрешности

где - средний шаг, то есть существует такая, что .

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

Значение метода Эйлера

Метод Эйлера являлся исторически первым методом численного решения задачи Коши. О. Коши использовал этот метод для доказательства существования решения задачи Коши. Ввиду невысокой точности и вычислительной неустойчивости для практического нахождения решений задачи Коши метод Эйлера применяется редко. Однако в виду своей простоты метод Эйлера находит свое применение в теоретических исследованиях дифференциальных уравнений, задач вариационного исчисления ряда других математических проблем.

Модифицированный метод Эйлера с пересчетом

Вычисления по методу Эйлера с пересчетом делаются в два этапа.

Прогноз:

.

Коррекция:

.

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

Заключение

программа коши дифференциальный уравнение

Изобретение языков программирования высшего уровня, а также их постоянное совершенствование и развитие, позволило человеку не только общаться с машиной и понимать ее, но использовать ЭВМ для сложнейших расчетов в области самолетостроения, ракетостроения, медицины и даже экономики.

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

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

Результатом выполнения курсового проекта является готовый программный продукт, позволяющий решать дифференциальные уравнения по методу Эйлера, демонстрирующий возможности численного решения поставленной задачи с заданной степенью точности.

Данная программа решает заданную пользователем дифференциальное уравнение за минимальный промежуток времени. При этом пользователю предоставляется возможность визуально оценить решение, рассматривая график полученного решения. К достоинствам программы можно отнести также удобный пользовательский интерфейс, возможность ввода пользовательских дифференциальных уравнений, а также давольно высокая стабильность работы. Однако имеются и некоторые недостатки. К недостаткам программы можно отнести: критичность к вводимым пользователем урававней, отсутствие обработки исключительных событий. Это, естественно, ограничивает возможности программы. В процессе выполнения курсовой работы я приобрел навыки программирования в Visual Basic. Решение обыкновенных дифференциальных уравнений в программе Visual Basic намного проще для пользователя. По результатам проведённой мной работы я выяснила, что метод Эйлера-модифицированный - один из самых простых методов численного решения обыкновенных дифференциальных уравнений. Его недостатком является небольшая погрешность вычислений. С каждым шагом погрешность вычислений увеличивается

Список литературы

1. Численные методы (анализ, алгебра, обыкновенные дифференциальные уравнения), Н.С. Бахвалов. Главная редакция физико-математической литературы изд-ва «Наука», М., 1975 г.

2. Методы, теории обыкновенных дифференциальных уравнений. Н.И. Гаврилов 3. Семакин И.Г., Шестаков А.П. Основы программирования: Учебник. - М.: Мастерство, НМЦ СПО; Высшая школа, 2004. - 432 с.

4. Могилёв А.В., Пак Н.И., Хеннер Е.К. Информатика: Учеб. пособие для студ. пед. ву-зов / Под ред. Е.К. Хеннера. - М., Academia, 2004.

5. Голицына, О.Л. Основы алгоритмизации и программирования: учеб. пособие. - 3-е изд., испр. и доп. - М: ФОРУМ, 2008. - 432 с. - (Профессиональное образование)

6. Керниган, Б., Пайк, Р. Практика программирования, Вильямс, 2004. - 288 с.

7. Воеводин, В.В. Вычислительная математика и структура алгоритмов. - М.: Изд-во МГУ, 2006. - 112 с. - ISBN 5-211-05310-9.

8. Иванова, Г.С. Основы программирования: Учебник для вузов. - 2-е изд., перераб. и доп. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2002. - 416 с.: ил. - (Сер. Информатика в техническом университете) - ISBN 5-7038-1957-1

Приложение

Уравнение y'=y-x при начальном условии y(0)=1.5; 0 =< x =< 1.5 и h=0,25

Public Class Form1

Private Sub Form1_Load (ByVal sender As System. Object, ByVal e As System. EventArgs) Handles MyBase. Load

End Sub

Private Sub Button1_Click (ByVal sender As System. Object, ByVal e As System. EventArgs) Handles Button1. Click

Dim xn, xk, yn, h, x, y As Double

Dim i As Integer

MsgBox (» Решение дифференциального уравнения»)

MsgBox («y`=y-x методом Эйлера»)

xn = TextBox1. Text

yn = TextBox2. Text

xk = TextBox3. Text

h = TextBox4. Text

x = xn

y = yn

i = 1

Label1. Text = i & x & y

Do While y = y + h * f (x, y)

Label2. Text = i & x & y

i = i + 1

x = x + h

Loop 'x>xk

End Sub

Function f (ByVal x As Double, ByVal y As Double) As Double

' {Здесь приводим выражение для вычисления функции f (x, y)}

f = y - x

End Function

End Class

Размещено на Allbest.ru


Подобные документы

  • Понятие о голоморфном решении задачи Коши. Теорема Коши о существовании и единственности голоморфного решения задачи Коши. Решение задачи Коши для линейного уравнения второго порядка при помощи степенных рядов. Интегрирование дифференциальных уравнений.

    курсовая работа [810,5 K], добавлен 24.11.2013

  • Дифференциальное уравнение первого порядка, разрешенное относительно производной. Применение рекуррентного соотношения. Техника применения метода Эйлера для численного решения уравнения первого порядка. Численные методы, пригодные для решения задачи Коши.

    реферат [183,1 K], добавлен 24.08.2015

  • Порядок и процедура поиска решения дифференциального уравнения. Теорема существования и единственности решения задачи Коши. Задачи, приводящие к дифференциальным уравнениям. Дифференциальные уравнения первого порядка, с разделяющими переменными.

    лекция [744,1 K], добавлен 24.11.2010

  • Задачи, приводящие к дифференциальным уравнениям. Теорема существования, единственности решения задачи Коши. Общее решение дифференциального уравнения, изображаемое семейством интегральных кривых на плоскости. Способ нахождения огибающей семейства кривых.

    реферат [165,4 K], добавлен 24.08.2015

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

    презентация [185,0 K], добавлен 17.09.2013

  • Задачи Коши и методы их решения. Общие понятия, сходимость явных способов типа Рунге-Кутты, практическая оценка погрешности приближенного решения. Автоматический выбор шага интегрирования, анализ брюсселятора и метод Зонневельда для его расчета.

    курсовая работа [1,7 M], добавлен 03.11.2011

  • Теоретическое обоснование расчетных формул. Задача Коши для дифференциального уравнения первого порядка. Метод Рунге-Кутта. Ломаная Эйлера. Построение схем различного порядка точности. Выбор шага. Апостериорная оценка погрешности. Правило Рунге.

    курсовая работа [111,1 K], добавлен 13.11.2011

  • Анализ методов решения систем дифференциальных уравнений, которыми можно описать поведение материальных точек в силовом поле, законы химической кинетики, уравнения электрических цепей. Этапы решения задачи Коши для системы дифференциальных уравнений.

    курсовая работа [791,0 K], добавлен 12.06.2010

  • Метод Эйлера: сущность и основное содержание, принципы и направления практического применения, определение погрешности. Примеры решения задачи в Excel. Метод разложения решения в степенной ряд. Понятие и погрешность, решение с помощью метода Пикара.

    контрольная работа [129,0 K], добавлен 13.03.2012

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

    презентация [77,7 K], добавлен 17.09.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.