Диссертация (1149672), страница 9
Текст из файла (страница 9)
Экзотическая функция. Рассмотрим функцию (t ) t1sin(t b)sin t(tg (t b) c)cos(t b) dt lt a dt a.Чтобы получить систему ОДУ для (t ) , введем переменныеx1 (t ), x2 1/ (t ), x3 t1sin(t b )sin tdt , x4 (tg (t b) c)cos(t b) dt ,atax5 1/(t a) , x6 sin t , x7 cos t , x8 (tg (sin(t b) b) c) cos(sin( t b) b) ,x9 sin(t b), x10 cos(t b) , x11 1/(tg (sin(t b) b) c) ,x12 ln(tg (sin(t b) b) c) , x13 1/ cos(sin(t b) b) ,x14 sin(sin(t b) b) , x15 cos(sin(t b) b) .и продифференцируем их по t :dx15 / dt x14 x10 ,dx14 / dt x15 x10 , dx13 / dt x132 dx15 / dt x132 x14 x10 ,dx12 / dt x11 x132 x10 , dx11 / dt x112 x132 x10 , dx10 / dt x9 , dx9 / dt x10 ,dx8 / dt x8 ( x15dx12 / dt x12 dx15 / dt ) x8 ( x15 x11 x132 x10 x12 x14 x10 ) ,dx7 / dt x6 , dx6 / dt x7 , dx5 / dt x52 , dx4 / dt x8 x10 ,dx1 / dt 12 x2 ( x4 dx3 / dt x3dx4 / dt ) 12 x2 ( x4 x5 x6 x3 x8 x10 ) ,dx2 / dt x22 dx1 / dt 12 x23 ( x4 x5 x6 x3 x8 x10 ) .dx3 / dt x5 x6 ,51Пример 8.
Многоэтажная экспонента. При постоянных a0 ,..., am и m[1: ] рассмотрим функции u1 e(am1 , am , t ),..., um e(a0 ,..., am , t ) аргумента t , заданные рекуррентными соотношениями:e(am1 , am , t ) am1 exp(amt ), e(ami ,..., am , t ) ami exp(e(ami 1,..., am , t )), i 1,..., m . Дифференцируяэти равенства по t , получаем полиномиальную систему:du1 / dt amu1 , du2 / dt amu1u2 , …, dum / dt amu1 u2 ... um .2.4 Алгоритм символьного дифференцирования функцийСимвольное, автоматическое и численное дифференцирование [20, 74, 75, 91, 92,100, 102, 104, 107, 116, 118, 124, 128] широко используются в различных областяхприкладной математики.
Символьное дифференцирование преобразует формульноепредставление функции в формульное представление ее производной. В отличие отэтого, автоматическое дифференцирование состоит в создании программы (компьютерной) вычисления производной по программе вычисления функции. Численноедифференцирование использует приближенные формулы для производной, полученные, например, дифференцированием полиномиального приближения функции,заданной в нескольких точках.
Все три типа дифференцирования взаимно дополняют друг друга и каждый из них имеет свои преимущества и недостатки. Главноепреимущество символьного дифференцирования в том, что полученная с его помощью точная формула для производной позволяет получать, в принципе, ее значенияс любой точностью. Главный же его недостаток в том, что полученные компьютерной программой выражения для производных могут оказаться весьма громоздкимии содержать большое количество одинаковых подвыражений (даже после применения операций упрощения, которыми оснащены известные пакеты компьютерной алгебры). Именно по этой причине символьное дифференцирование хорошо работаетдля простых выражений, но требуемые затраты машинного времени и памятибыстро увеличиваются по мере усложнения выражений для функций.
Еще одна иможет самая серьезная неприятность ожидает пользователя, которому потребуется52дифференцировать суперпозиции функций в случае, если одна или несколько функций, из которых составлена эта суперпозиция, не предусмотрена в пакетах компьютерной алгебры, которыми он может воспользоваться в своей работе. В этом случаеему либо придется отказаться от символьного дифференцирования и искать какието иные средства для своей работы, либо составлять свои собственные алгоритм ипрограмму в этом случае, если это возможно в принципе.В настоящем параграфе описывается предложенный в наших работах [26, 27] алгоритм символьного дифференцирования системы функций многих переменных,свободный от этих недостатков для достаточно широкого класса функций математической физики и, особенно, динамики. Так как этот алгоритм основан на двух рассмотренных ранее главных наших инструментах – МДП и библиотеке, то понятно,что речь идет о функциях классовm, на которые эти инструменты ориентированы(см.
параграфы 2.2, 2.3). В общих чертах, предлагаемый алгоритм символьного дифференцирования системы функций заключается в следующем. Предполагаем, чтоисходная система записана в терминах функций библиотеки, а библиотека содержитимена этих функций и функций их расширений, а также полиномиальные дифференциальные уравнения, которым все эти функции удовлетворяют. Используя этиуравнения из библиотеки для введения некоторого числа дополнительных переменных, алгоритм преобразует исходную систему функции многих переменных к системе полиномов по исходным и дополнительным переменным, и затем находитпроизводные дополнительных переменных в виде полиномов также по исходным идополнительным переменным.
Производные функций исходной системы можнопредставить тогда как рекуррентные или явные формулы (полиномы по тем же переменным), используя полиномиальные представления исходных функций и производных дополнительных переменных. Опишем содержание настоящего параграфаболее подробно. Рассмотрим систему функцийyr f r ( x) ,(2.5)где x ( x1 ,..., xm ) С m , ( y1 ,..., yN ), ( f1,..., f N ) С N , и предположим, что функции f r ( x) m53могут зависеть от параметров 1 ,..., и представлены в терминах используемой библиотеки. Задача - получить формулы для производных i ...i yr / x1i ...xmi . В разделе1m1m2.4.1 рассмотривается пошаговый процесс введения дополнительных переменных,который позволяет свести (2.5) к полиномиальной форме и получить формулы дляпервых производных этих переменных по x1 ,..., xm .
В разделе 2.4.2 описывается алгоритм получения формул для искомых частных производных функций yr , в разделе2.4.3 рассмотривается общая схема предлагаемого алгоритма символьного дифференцирования, а в разделе 2.4.4 детально разбирается пример его применения.2.4.1 Элементарное преобразованиеКаждый из K шагов процесса сведения системы (2.5) к полиномиальной формевключает в себя “элементарное преобразование”, которое рассматривается в настоящем разделе. Ради симметрии, для величин yr , f r , x, m (см. (2.5)) используются здесьтакже обозначения y0,r , f0,r , x0 , m(0) . На каждом шаге вводится одна или несколько дополнительных переменных и система (2.5) приобретает следующую форму:yk ,r f k ,r ( x k ) , r [1: N ] , k [1: K ] ,(2.6)где k - номер текущего шага,x k ( x k 1; X k ) ( x1 ,..., xm ( k 1) ; xm ( k 1)1 ,..., xm ( k 1)n ( k ) ) ( x1 ,..., xm ( k ) ), m(k ) m(k 1) n(k ), k [1: K ],x 0 x ( x1 ,..., xm (0) ), m(0) m, y0,r yr , f 0,r f r ,а натуральное числоn( k ) и функции f1,r , f 2,r ,… также определяются на этом текущемшаге.
При k 0 системы (2.5) и (2.6) совпадают. Если k [1: K 1] , то алгоритм преобразует (2.5) в (2.6) и, наконец, при k K система (2.6) становится полиномиальной(по исходным и дополнительным переменным). Перейдем теперь к подробному описанию алгоритма на k-ом шаге ( k [1: K ] ).54(a) В выражениях f k 1, r ( xk 1 ) , r [1: N ] ищем такое подвыражение, которое можетбыть записано в виде k ( P k ( x k 1 )) (k ), P k ( x k 1 ) ( Pk ,1 ( x k 1 ),..., Pk , ( k ) ( x k 1 )) , где Pk , - поли-номы, k k ( p1 ,..., p ( k ) ) - функция из используемой библиотеки, а ( k ), ( k ) [1: ) .(b) Если расширение функции k состоит из функций 1 k ,...,n ( k ) , то это означает, что функции 1 ,..., n ( k ) удовлетворяют следующей полной системе дифференциальных уравнений (мы предполагаем, что их можно извлечь из библиотеки):l / p Qk ,l ( p k ; k ) , l [1: n(k )] , [1: (k )] ,(2.7)где pk ( p1 ,..., p ( k ) ), k (1 ,..., n( k ) ) и Qk , l ( p k ; k ) - полиномы по p1 ,..., p ( k ) , 1 ,..., n( k ) .
Вводим дополнительные переменные в системе (2.7):xm ( k 1)1 1 ( P ( x )),..., xm ( k ) n ( k ) ( P ( x )) .kk 1kk 1(2.8)(c) Заменяя там в функциях fk 1, r ( xk 1 ) , r [1: N ] выражения1 ( Pk ( xk 1 )),...,n( k ) ( Pk ( xk 1 ))на переменные xm( k 1)1,..., xm( k ) , получаем:yk ,r f k ,r ( x k ) , r [1: N ] .(2.9)(d) Для вычисления производных дополнительных переменных используем следующие рекуррентные формулы ( l [1: n(k )] , s [1: m] ): (k )ddxm( k 1)l ( x k 1 ) Qk , l ( P k ( x k 1 ); X k ) Pk , ( x k 1 ) ,dxsdxs 1(2.10)m ( k 1)dx ( x k 1 )d,Pk , ( x k 1 ) Pk , ( x k 1 ) dxsdxs 1 x(2.11)где под d / dxs понимаются производные суперпозиций функций по xs .















