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

УДК 681.086

А.С. КРАЛИНА, Е.П. СТЁПУШКИНА

РЕШЕНИЕ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ С ПРИМЕНЕНИЕМ СИСТЕМЫ АНАЛИТИК - 2000

Abstract: In the paper the questions of using system of computer algebra ANALITIK - 2000 for the decision of the differential equations are considered. On such examples, as the exact decision of the ordinary differential equations and approximate decision of the differential equations by Chapligin's method, some opportunities and features of the language ANALITIK -2000 and also efficiency of the decision of tasks by numerical - analytical methods are shows.

Key words: саmputer algebra, differential equation, numerical - analytical methods, ANALITIC -2000.

Анотація: У статті розглядаються питання використання системи комп’ютерної алгебри АНАЛІТИК-2000 для розв’язку диференційних рівнянь. На таких прикладах, як точний розв'язок звичайних диференційних рівнянь та наближений розв’язок диференційних рівнянь методом Чаплигіна, показані деякі можливості та особливості мови АНАЛІТИК-2000, а також ефективність розв'язання задач чисельно-аналітичними методами.

Ключові слова: комп’ютерна алгебра, диференційне рівняння, чисельно-аналітичні методи, АНАЛІТИК-2000.

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

Ключевые слова: компьютерная алгебра, дифференциальное уравнение, численно-аналитические методы, АНАЛИТИК-2000.

1. Вступление

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

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

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

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

Такие распознаватели могут оказаться очень громоздкими и практически невыполнимыми. Они занимают львиную долю программы и времени ее написания. Поэтому искусственный интеллект языка, ориентированного на численно-аналитические преобразования, определяется специальной системой элементарных распознавателей, которые позволяют создавать «проблемные» распознаватели достаточно быстро и лаконично. Хотя работа таких распознавателей формально может снизить быстродействие при выполнении программы, это многократно компенсируется исключением из процесса решения человека-оператора в интерактивном режиме.

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

Одним из способов визуализации такого подхода оказались языки серии АНАЛИТИК, с помощью которых в автоматическом и интерактивном режиме решен (численноаналитическими методами) ряд разнообразных по тематике научных и прикладных задач [2,3]. Первой отличительной особенностью языка АНАЛИТИК-2000 является то, что целостная структура стала основным объектом языка, т.к. на ней определены все функции и операции. Каждый операнд рассматривается как именующее выражение, а соответствующие функции позволяют обращаться непосредственно к любым частям образующейся таким образом иерархической структуры.

Другой особенностью языка АНАЛИТИК-2000 является высокий уровень его искусственного интеллекта. Это выражается в том, что, наряду с развитым аппаратом

интерактивного решения задач компьютерной алгебры, он радикально ориентирован на решение задач в автоматическом режиме. Программы рассматриваются как системы блоков преобразователей и распознавателей. Распознаватели программы строятся из специальных процедур (базовых распознавателей), которые образуют систему распознавания языка АНАЛИТИКа-2000 [1]. В статье рассматриваются вопросы использования системы

компьютерной алгебры АНАЛИТИК-2000 для решения дифференциальных уравнений.

2. Точное решение обыкновенных дифференциальных уравнений вида У

2.1. Назначение программы

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

У

с начальными условиями

У

В общем случае решением уравнений вида (1) является:

1 X X

Уo,n-1(x-Xo)n-1 + J.. Jf(x)dx . dX

n-раз

Для реализации решения данной задачи на языке АНАЛИТИК-2000 используем следующие операторы:

1. sum(n, В1, В2, {В3}, В{, КФ,}) - оператор вычисления суммы.

2. prod(n, Ві, В2, {В3}, В{, КФі}) - оператор вычисления произведения, где 3H (В), 3H (В,), 3H (В3) - числа, П^|П j }^{3H(B1)+ j * 3H(B3)}, где

j = o,l,... <(3H (B2)-3H (B1)) / 3H (B3), порождает последовательность соответствующих значений выражения B(n j).Функция sum возвращает эту последовательность в виде суммы ее членов (в виде ряда), функция prod - в виде произведения ее членов. Шаг B3 также

может зависеть от П. Если B3 отсутствует, то по умолчанию B3 = 1.

3. ЦИКЛ (П, В1, В2, {В3}, О) - оператор цикла. Здесь последовательность

П = (a, a + h, a + 2h,..., a + N • h), где a = ent(3H (В1)) - начальное значение;

f

h = ent(3H (В3)) - шаг; N =

V

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

ent(3H(B2)) - a

- условие выхода. Оператор O выполняется

h

уЫ = Л +1 Ут^ - xo)+ 2 Ус^ - xo)2 +...+

4. _ЖД(М{,В}: [3,1,Эг}...}) - оператор вывода текстовой и графической

информации, где £ - это идентификатор ресурса, в который осуществляется вывод; B -управляющее выражение, которое указывает способ вывода; Э,,Э2,... - выводимые результаты.

Основным элементом нахождения решения дифференциального уравнения является интегрирование выражения В по переменной П, которое производится функцией /'«(п, [В,, В2 }в[кФ, Пф}) по следующим правилам:

Ь

| / (х)4х = ^ (Ь) - ^ (а) о т(х, В,, В2, /) ЗН (^ (Ь) - ^ (а));

а

| / (х)ёх = ^ (х) о ш(х, /)  ЗН (^ (х)), где ЗН (В, ) = а; ЗН (В2 ) = Ь и ^ - первообразная функции / (х). Значение выражения, именующего интеграл от функции / (х), вычисляется в режиме, соответствующем седьмой канонической форме КФ(7);

V о (В,,В2,...,Вп) - вектор, определяющий массив, элементы которого -

произвольные выражения языка;

$ - признак конца программы;

:= - оператор присваивания.

Ниже приводится программа, которая позволяет получать точное решение уравнений вида (1), удовлетворяющее начальным условиям (2) при условии, что все интегралы в (3) выражаются через элементарные функции с помощью встроенной программы, обеспечивающей работу оператора /'«(х, В,, В2, /) языка АНАЛИТИК.

2.2. Исходные данные

Для ввода исходных данных используются следующие идентификаторы, именующие величины, описанные в пункте «Назначение программы»: х0 - начальная точка;

у0- значение функции в точке х0;

V - одномерный массив, компонентами которого являются значения неизвестной функции и ее (п -, производных в точке х0, причем порядок их записи в массиве совпадает с

порядком следования в (2);

у - имя равенства, которым представлено решаемое дифференциальное уравнение вида (1).

Текст программы для задачи общего вида:

У:(Б1,Б2,...,Бп);

xo:=xo;

yo:=yo;

y:=f;

КФ(7);

КФ(5);

s:=sum(i,1 ,n,1 ,((V[i]*(x-xo)**i)/prod(i,1,n,1 ,i))); t[0]=in(x,xo,x,y);

ЦИКЛ(i,1,n,1,(t[i]=in(x,xo,x,t[i-1])));

F:=yo+s+t[n];

ВЫВ(^)$

2.3. Контрольный пример

Пусть необходимо получить решение дифференциального уравнения у111 = x sin x с начальными условиями х0 = 0 ; y(x0 ) = C ; у1 (x0 ) = D ; у11 (x0 ) = E .

Программа имеет следующий вид:

V:(D,E);

y:=x*sin(x);

xo:=0;

yo:=C;

КФ(7);

КФ(5);

s:=sum(i,1,2,1 ,((V[i]*(x-xo)**i)/prod(i,1,2,1 ,i))); t[0]=in(x,xo,x,y);

ЦИКЛ(i,1,3,1,(t[i]=in(x,xo,x,t[i-1])));

F:=yo+s+t[3];

ВЫВ(^)$

Результаты:

y=x*cos(x)+(-3)*sin(x)+C+(2+D)*x+0.5*E*x**2 Время счета: 1 сек.

3. Решение обыкновенных дифференциальных уравнений первого порядка методом Чаплыгина

Программа предназначена для приближенного решения дифференциальных уравнений вида

У'= f

с начальным условием y(x0 ) = у0 по методу Чаплыгина. Метод Чаплыгина состоит в том, что искомое решение y(x) аппроксимируется двумя последовательностями функций un(x) и

vn(x), удовлетворяющими неравенству un(x)<y(x)<vn(x), где n = 1,2,..., и начальному условию un (x0 )= vn (x0 )= y(x0 ) , причем таким, что un (x)-vn (x) —— 0 при n .

Используя рекуррентные формулы

x

un

x 0

x

vn (x ) = Vn -1(x ) + J e - k (x -1)[f (t, vn -1 (t)) - vn -1 (t)] dt ,

x0

можно построить последовательность уточняющих приближений un (x) и vn (x), равномерно стремящихся к y(x) при n — ¥ . Если для некоторого n имеем un - vn <e , где e - заданная предельная погрешность, то приближенно можно предположить

В качестве приближенного решения можно принять также

y = un

так как y = l—m un и y = l—m vn. Программа, которая приводится ниже, позволяет v0 получить

приближенное решение уравнений вида (4) при условии, что исходная пара приближений un (x0) и vn (x0) уже построена, а все интегралы в (5) выражаются через элементарные

функции с помощью встроенной программы, обеспечивающей работу оператора

in(x, B1, B2, f) языка АНАЛИТИК.

Для ввода исходных данных используются следующие идентификаторы, именующие величины, описанные в пункте «Назначение программы»: x0 - начальная точка x0 ;

a - нижняя граница заданного интервала;

b - верхняя граница заданного интервала;

f - имя равенства, которым представлено решаемое дифференциальное уравнение вида (4);

u 0 - начальное нижнее приближение u 0;

v0 - начальное верхнее приближение v0;

к - постоянная Липшица, которая вычисляется заранее по формуле k = max

R

i- признак, определяющий вид получаемого решения. Если i получает значение НЕРАВЕНСТВА (i = неравенства), то на печать выводится результат в виде двух неравенств y < vn (x) и y > un (x). Если i получает значение ПОЛУСУММА (i = полусумма), то

f ;

dy ’

приближенное значение находится по формуле (6). Если г получает значение ОДНОСТОРОННЕЕ (г одностороннее), то приближенное решение находится по формуле (7).

Текст программы для задачи общего вида: хо:=хо;

а:=ао; // границы интервала Ь:= Ьо; // границы интервала и:=ио; v:=vo;

*=у;

к^тах^^у^б);

п:=М;/* задается количество приближений*/

КФ(7);

ЦИКЛ(n,1,M,1,(u[n]=u[n-1]+in(t,a,Ь,exp(-k*(xo-t)*(f(t,u[n-1])-dif(t,u[n-1]|6)))));

ЦИКЛ(п,1,М,1,( v[n]=v[n-1]+in(t,a,Ь,exp(-k*(xo-t)*(f(t,v[n-1])-dif(t,v[n-1]|6))))); i:='признак';

ЕСЛИ^='неравенства', ВЫВ^у^^^п], y(x)>=u[n]), ЕСЛИ(i='полусумма',

ВЫВСу^^+^п])^), ЕСЛИ^='одностороннее', ВЫВ(:у^[п]), ВЫВ(:'Не задан признак, определяющий вид получаемого решения'))))$

3.1. Контрольный пример

2

Пусть необходимо получить первое приближение дифференциального уравнения у = х + 2 у

с начальным условием у(0) = 0 в области 0 < х < 1,0 < у < 1. Постоянная Липшица для

функции у = х + 2у2 в этой области будет равна 2. Можно положить и0 (х) = 0;у0 (х) = 0 . xo:=0;

а:=0; /* границы интервала*/

Ь:= 0.5; /* границы интервала*/

ш=0;

v:=0;

f:=x+2*y**2;

к:=2;

п:=1;/* задается количество приближений*/

КФ(7);

ЦИКЛ(п,1 ,1,1 ,(u[1]=u+in(t,0,0.5,exp(-2*(-t)*t|6)))));

ЦИКЛ(п,1,1,1,( v[1]=v+in(t,0,0.5,exp(-2*(-t)*t|6))))); i:='полусумма';

ЕСЛИ(і='неравенства', ВЫВ(:у(х)<^[п], у(х)>=и[п]), ЕСЛИ(і='полусумма', ВЫВ(:у(х)=Мп]+и[п])/2), ЕСЛИ(і='одностороннее', ВЫВ(:y(x)=v[n]), ВЫВ(:'Не задан признак, определяющий вид получаемого решения'))))$

Результаты:

у(х)=0,25

Время счета 1,5 сек.

4. Выводы

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

Язык системы компьютерной алгебры АНАЛИТИК-2000 предназначен для решения в автоматическом и интерактивном режиме численно-аналитическими методами ряда больших и сложных задач.

На таких примерах, как точное решение обыкновенных дифференциальных уравнений вида у(п)(х) = /(х) и приближенное решение дифференциальных уравнений методом Чаплыгина, показаны некоторые особенности и возможности языка АНАЛИТИК-2000, а также эффективность решения задач численно-аналитическими методами.

СПИСОК ЛИТЕРАТУРЫ

1. АНАЛИТИК - 2000 / Морозов А.А., Клименко В.П., Фишман Ю.С., Ляхов А.Л., Кондрашов С.В., Швалюк Т.Н. // Математичні машини і системи. - 2001. - № 1,2. - С. 66 - 99.

2. АНАЛИТИК (Алгоритмический язык для описания вычислительных процессов с использованием аналитических преобразований) / Глушков В.М., Боднарчук В.Г., Гринченко Т.А., Дородницына А.А., Клименко В.П., Летичевский А.А., Погребинский С.Б., Стогний А.А., Фишман Ю.С. // Кибернетика. - 1971. - № 3. - С.102 - 134.

3. АНАЛИТИК - 93 / Морозов А.А., Клименко В.П., Фишман Ю.С., Бублик Б.А. и др. // Кибернетика и

системный анализ. - 1995. - № 5. - С. 127-156.