Решение обыкновенных дифференциальных уравнений средствами Mathcad

РЕШЕНИЕ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ СРЕДСТВАМИ МатнСАБ

Г. А. ДАНИЛИН, профессор кафедры высшей математики МГУЛа, к. т. н.,

П. А. КУРЗИН, студент факультета ЭВ и С МГУЛа,

В.М. КУРЗИНА, доцент кафедры высшей математики МГУЛа, к. т. н.

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

Система Махксай является одной из современных разработок в области решения дифференциальных уравнений и их систем. По-видимому, ее новизной объясняется отсутствие руководств по применению отдельных ее составляющих, одним из которых являются функции МаШсаЛ для решения обыкновенных дифференциальных уравнений.

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

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

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

В системе МаОьсай можно решать обыкновенные дифференциальные уравнения с заданными как начальными, так и краевыми условиями. Наряду с решением отдельных обыкновенных дифференциальных уравнений средствами МаИхсас1 можно находить решения различных систем обыкновенных дифференциальных уравнений. При этом следует отметить, что в МаМсас! осуществлены также методы решения жестких систем обыкновенных дифференциальных уравнений.

Решение обыкновенных дифференциальных уравнений

В МаИгсай рассматриваются обыкновенные дифференциальные уравнения п-го порядка

где х - независимая переменная;

у - искомая функция переменной х: у=у(х)\

0 0

У 'У ""'У - производные искомой функции от первого до п-го порядка соответственно.

Решением уравнения называется функция у = /(х), определенная на некотором интервале (а,Ь), которая обращает это дифференциальное уравнение в тождество.

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

Общим решением дифференциального уравнения в его области определения напивается функция у =/(х,С„С,,..., Сп), если она является решением этого уравнения при любых постоянных величинах С,,С,,..., С.. При заданных начальных условиях эти постоянные величины могут бьггь определены единственным образом.

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

: Учт=Г(^С1С1...Х:).

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

1) начальные или граничные условия;

2) набор точек, в которых нужно найти решение;

3) само дифференциальное уравнение, записанное в некотором специальном виде.

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

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

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

Функция odesolve(x, b, [step]) возвращает функцию с аргументом х, которая является решением обыкновенного дифференциального уравнения, зависящую от начальных или граничных условий, заключающихся в блоке решения. Представление обыкновенного дифференциального уравнения должно быть линейным относительно высшей производной, и число начальных условий должно соответствовать порядку обыкновенного дифференциального уранения. Аргументы функции odesolve: х - переменная интегрирования; b - конечная точка интервала интегрирования;

step (не обязателен) - количество шагов при решении уравнения.

Пример решения обыкновенного дифференциального уранения второго порядка с использованием функции odesolve:

Символ «'», обозначающий производную, ставится с использованием комбинации клавиш Ctrl + F 7.

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

Системы из ОДУ для их решения в среде Mathcad с помощью функции rkfixed должны быть представлены в форме Коши:

V (Г ^ ss v * УIv о * ^ол»

уЛхо) = уаУ’

УЛх0) = У,

у' = Мх,у ,,>% у.);

У'г-fiiX, У „у У „У,

Given

53 х"

х(0) = 0 х( 1 ) = 2

х := Odesolve

t

Рис. 1.

Обыкновенные дифференциальные уравнения п-го порядка =/(*, у,/,/,..> у‘"‘‘О с заданными начальными условиями у(х0) = у0, у’(хо) = Уо.п у'(х0) = у02, у'"~"(ха) = у0^, при-

водятся к системе ОДУ в форме Коши с помощью замены:

:у,

УЛх)^у<"-"(х)' у„,„ = у(х0)' л. = /Ю

Уо,-1 = У'"-'\х0)[

В итоге получаем начальные условия

М*«) = Уо.о'-

Уг(ха) = уол;

уЛх0) = у„,-,>

и систему ОДУ

’У'х-Уг*

у'„-> = у„’

У'„=/(х,упу2.....у,).

Функция rkfixed (у, х\, х2, прот1$, О) возвращает матрицу, первый столбец которой содержит точки, в которых вычислялось

решение; второй столбец содержит соответствующие решения и их первые п - 1 производные.

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

х\, х2 - начальная и конечная (граничные) точки интервала, на котором ищется решение (начальные значения в векторе у даны для точки *1);

проЫ$ - число точек, не считая начальной точки, в которых решение должно аппроксимироваться; от значения проШз зависит количество строк матрицы, возвращаемой функцией;

В - и-элементная векторная функция, содержащая первые производные неизвестных функций.

Пример решения дифференциального уравнения с использованием функции г’фхеи:

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

I lycri, л'(/) -x'(t) + x(t) = sin h(t).

Тогда пусть xO(t) = x(t) x\(t) = JtO'(f). Теперь можно записать систему: xO'(t) = x\{i) vl'{/) = AÍ(í)-xO(í) + sin hit);

*0<0)'I J

*1

ic := f1 7 \ /

/ X

5 := гк/1хе(1 (/с, 0,10,1500, О).

Г := 5<0) значения независимой переменной; х := 5(|) значения искомой функции (рис. 2).

т

Рис. 2.

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

Решение систем ОДУ

Функцию г\ф,хе(1 можно использовать для любых систем ОДУ.

Для того чтобы решить систему ОДУ, необходимо:

1) определить вектор, содержащий начальные условия для каждой неизвестной функции;

2) определить функцию, возвращающую значение в виде вектора из п элементов, которые содержат первые производные каждой из неизвестных функций;

3) выбрать точки, в которых нужно найти приближённое решение;

4) передать всю эту информацию в функцию г)фхе<1.

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

Например:

V

3 9

\ J

/

V sin

cos(/)-*0

Z ~ rkfixed (ic, 1,20,1000, D); п := 0...999 (рис. 3).

2 п ,2

Рис. 3.

В Ммксаё существуют специальные функции для решения отдельно мягких и жёстких систем ОДУ.

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

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

систем дифференциальных уравнений:

Функция ВиЫоег (у, *1, х2, проШ5, П) основана на методе Булириша-Стоера, который более точен, чем метод Рунге-Кутта, и используется для решения нежестких систем ОДУ. Изложение методов, используемых при решении систем ОДУ не приводится, поскольку их работа осуществляется автоматически и не зависит от воли пользователя. Пользователю необходимо правильно выбрать функцию для решаемой им системы ОДУ и задать входные параметры согласно ее описанию. Все результаты будут выведены согласно описанию используемой функции.

Для решения жёстких систем ОДУ применяются функции Бп$Ь (у, х1, х2,

проШз, И, У) и (у, х1,х2, проШз, Д I), у которых 7 - функция, возвращающая матрицу пх(п+1), первый столбец которой содержит производные, а оставшаяся часть - якобиан матрицы системы дифференциальных уравнений. основан на методе Були-

риша-Стоера, а - на методе Розенброка.

Матрица 3 для системы ОДУ с двумя неизвестными получается следующим образом:

(г.р -р ^

Пусть 0(Г,Р):= ' .

Преобразуем, убрав индексы: 'г-РО-г’-Рр 8Ш(?-Р0)-Р1

Д(Г,Р0,Р1):=

Теперь определим следующую матрицу:

Jacobstiff(А, х, у, z) :=

-j-(A(x,y,z)0)—-(A(x, у, z)0)-~(A(x, y,z)0); ах ay dz

-j-(A(x, y, z),)~(A(x, y, z),)-y-(A(x, y, z),). dx dy dz

Вычислим символьную матрицу Якобина для нашей системы: (РО-3-t2  Pl t -t*

Jacobstiff (A, t, РО, Р\) —>

I cos

Теперь, опустив опять индексы, получим функцию J:

Pq - 3't Р\ t -t

Pq-cos(í- P0)-Pi t cos(t P0) Pi sin H>) I .

Существует ещё одна функция для решения систем ОДУ, а именно для решения медленно меняющихся систем ОДУ. Это функция Икаёар^у, х\, х2, проШэ, О). Используется она аналогично г!фхес1, но, в отличие от г]фхес1, которая интегрирует равными шагами, Rkadapt анализирует скорость изменения решения и соответственно адаптирует размер шага.

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

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

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

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

Функция Rkiula.pt имеет те же самые аргументы, что и функция гіфхесі. Матрица с приближенным решением, возвращаемая функцией Кк<и(ар(, идентична по виду матрице, возвращаемой функцией гіфхесі.

Аналитическое решения ДУ

У МмИса<1 очень небольшие возможности символьного решения дифференциальных уравнений. В частности, для решения ОДУ первого порядка можно записать готовую формулу для задачи Коши и символьно её проинтегрировать.

Приводящиеся в ряде пособий примеры решения дифференциальных уравне-

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

Литература

1. Хайрер Э., Нерсетт С., Виннер Г. Решение обыкновенных уравнений. Нежесткие задачи. - М.: Мир, 1998.-512 с.

2. Холл Дж., Уатт Дж. Современные численные методы решения обыкновенных дифференциальных уравнений. - М.: Мир, 1989. - 312 с.

3. Дьяконов В. Mathcad 2001: Учебный курс. -СПб.: Питер, 2001.-624 с.

4. Mathcad 6.0 PLUS. Финансовые, инженерные и научные расчеты в среде Windows 95 - М.: Информационно-издательский дом «ФилинЪ», 1997. -712 с.

ОБЩИЕ ПРИНЦИПЫ РАЗВИТИЯ И ФУНКЦИОНИРОВАНИЯ ИНТЕЛЛЕКТА

К.П. ШЕРЕМЕТЬЕВ, доцент кафедры автоматизации и управления МГУЛа, к. т. н.

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

Цель работы

В настоящее время, в связи с развитием глобальной мировой сети Интернет, актуальной задачей становится обработка больших количеств неструктурированных и неупорядоченных объемов информации. В самой большой поисковой системе Google проиндексировано более 3 миллиардов вебстраниц [1]. Существующие методы обработки информации, используемые при построении баз данных и экспертных систем, предназначены в основном для работы с данными, имеющими формализованное описание.

В результате применение стандартных методов для обработки неструктурированных данных является неэффективным и требующим больших затрат времени. Дру-

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

Системы, в которых делается попытка реализовать подобные возможности, получили название интеллектуальных систем [2].

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

Целью настоящей работы является установление причин появления интеллекта