Смекни!
smekni.com

Программирование и разработка приложений в Maple (стр. 91 из 135)

if <ЛУ_1> then <В1> else if <ЛУ_2> then <В2> else ... if <ЛУ_n> then <Вn> else <Вf>

По умолчанию значение Вf полагается нулевым; в качестве логических условий (ЛУ) могут выступать отношения или булевы выражения из неравенств. Тогда как в случае Z-выражения, отличного от условного, оно помещается в возвращаемом результате в качестве условия типа “иначе” (otherwise), как это иллюстрирует пример задания простой кусочно-определенной функции:

> R:=piecewise(x <= 0, x*a^x, (x>0) and (x<=59 ), x*log(x), (x > 59) and (x <= 64), x*exp(x),

:=

R  ex cos( )xx x ax + lne( )xxxArt + Kr −−xx < < -590otherwise and and x ≤ x0x − − 5964 ≤ ≤ 00

exp(x)* cos(x) + sqrt(Art + Kr)); ⇒ 

> convert(R, Heaviside); x ax - x ax Heaviside(x) + x ln(x) Heaviside(x) - x ln(x) Heaviside(-59 + x) + x ex Heaviside(-59

+ x) - x ex Heaviside(x - 64) + Heaviside(x - 64) ex cos(x) + Heaviside(x - 64) (Art + Kr)^(1/2)

По convert-функции предоставляется возможность преобразования кусочно-определенных функций в функции Хэвисайда и наоборот; тогда как функции abs, sign и signum можно преобразовывать в функции Хэвисайда и кусочно-определенные функции.

* Heaviside – преобразование кусочно-определенной функции, а также функций sign, abs и процедуры signum в функцию Хэвисайда;

* piecewise – преобразование функций sign, abs, процедуры signum и функции Хэви- сайда в кусочно-определенные функции (см. прилож. 1 [12]); однако, уже csgn-проце- дура определения знака для действительных и комплексных чисел не преобразуется в функцию Хэвисайда или в кусочно-определенную, хотя именно таковой и является;

* hypergeom – преобразование любого суммирования по процедурам sum и Sum в гипер- геометрические функции, однако Maple не гарантирует их сходимости.

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

> convert(3*Pi*x^3*AiryAi(x) + y*BesselY(x^2, 1), 'BesselK');

3 π x3 AiryAi( )x + y BesselY(x2, 1)

> convert(2*BesselK(2*x^2, 1) + BesselJ(x^2, 1), 'Hankel');

(x2 π I) 2, I I) + HankelH1(x2, 1) + HankelH2(x2, 1)

π e HankelH1 2( x

> convert(GAMMA(k + 3/2)/(k!*sqrt(Pi)*GAMMA(k + 10)), 'binomial');

1

binomialk + 12, k

2 Γ(k + 10)

> simplify(convert(sqrt(x^2 + erfc(x))/dawson(x)*sqrt(Pi), 'erf'));

2 I x2 + − 1 erf( )x e(x2)

erf(x I)

> convert(sqrt(x^2 + erf(x) - 1)/erf(x), 'erfc');

x2 − erfc( )x

1 − erfc( )x

> convert((x! + y! + z!)/(m! + (m - n)!/m!), GAMMA, {x, y, m, n}); Γ(x + 1) + Γ(y + 1) + z!

Γ(

Γ(m + 1) + m − + n 1)

Γ(m + 1)

> simplify(convert(abs(x) + sign(y)*z + signum(z)*y, 'Heaviside'));

-x + 2 x Heaviside(x) + z - y + 2 y Heaviside(z)

> R:= piecewise(g <= 42,64, (g <= 47) and (g > 42),59, (g <= 67) and (g > 47), 39, 2006);

:=

R  2006396459 gg − − 6747 ≤ ≤ otherwiseg00 and and 42−−gg < < -47-42

> convert(R, 'Heaviside'); 64 - 5 Heaviside(-42+g) - 20 Heaviside(g-47) + 1967 Heaviside(g-67) > convert(%, 'piecewise');

 undefinedundefinedundefined2006645939 gggggg67 < < < = = = < 426747426747g

> convert(Heaviside(t), 'piecewise');

 undefined10 t0t < = < 00t

> convert(hypergeom([3, 5], [3/2], h), 'StandardFunctions');

−16 h3 + 216 h2 + 2346 h + 919 1 (−1680 h2 − 1680 h − 105) 1 − h arcsin( h )

6 + 1024 (−1 + h)7 h

1024 (−1 + h)

> simplify(convert(Sum(17*k/(k + 10), k = 0 .. n), 'hypergeom'));

− 17 (−5 hypergeom([2, 2], [3] 1, ) n3 + 25 hypergeom([2, 2], [3] 1, ) n2

− 40 hypergeom([2, 2], [3] 1, ) n + 20 hypergeom([2, 2], [3] 1, )

− 2 hypergeom([1, n − 1], [n], 1) n2 + 9 hypergeom([1, n − 1], [n], 1) n

+ hypergeom [( 2, n − 1], [n], 1) n2 + 10 hypergeom([2, n − 1], [n], 1) n

− 18 hypergeom([1, n − 1], [n], 1) − 11 hypergeom([2, n − 1], [n], 1)

+ hypergeom [( 1, n − 1], [n], 1) n3)

((n2 − 3 n + 2 () n − 2))

> convert(MeijerG([[1], [2]], [[0], [0]], 10*ln(t) - 2*ln(17)), 'StandardFunctions');

1 + ln(2) + ln(5 ln(t) - ln(17)) - 10 ln(t) + 2 ln(17)

> map2(convert, csgn(x), ['Heaviside', 'piecewise']); ⇒ [csgn(x), csgn(x)] > simplify(convert(Pi*x*AiryAi(1, x^2) + y*AiryBi(3, x), 'BesselK')); π x AiryAi 1,( x2) + y AiryBi( )x + y x AiryBi 1,( x)

В результате преобразования одного типа функции в другой возвращаемый результат может иметь далекий от оптимального вид, поэтому на первых порах для его упрощения можно использовать simplify-процедуру, которая подобно convert-функции многоаспектна и детальнее рассмотрена выше в контексте средств пакета по преобразованию выражений в целом. На первых же порах вполне достаточно для этих целей воспользоваться конструкцией вида simplify(convert(F, Тип)), по которой производится стандартное упрощение преобразованной в заданный тип математической F-функции. Однако следует иметь в виду, что данный прием может привести и к прямо противоположному результату, требуя и более сложных преобразований. С рядом особенностей выполнения convert-функции можно ознакомиться в прилож. 1 [12].

Представленные в настоящем разделе средства Maple-языка в совокупности с рядом ранее рассмотренных позволяют довольно эффективно производить обработку абстрактных символьных конструкций на формальном алгебраическом уровне, что играет, в частности, весьма важную роль в различного рода задачах, связанных с формальными функциональными преобразованиями различного характера. Из нашего опыта работы с пакетами Maple и Mathematica можно сделать вполне однозначный вывод о предпочтительности первого для задач символьной обработки. В заключение же настоящего раздела проиллюстрируем использование рассмотренных выше функциональных средств Maple-языка по обеспечению символьных вычислений для решения одной частной, но базовой задачи динамической теории однородных структур (ТОС), представляющих собой одну из основных вычислительных моделей параллельной обработки информации и вычислений [1,4,12,25-27,35,36,40,43].

Современная точка зрения на ТОС, как на отдельную ветвь теории абстрактных бесконечных автоматов, сформировалась в 70-х годах под влиянием основополагающих работ Х. Ямада, С. Аморозо, А. Смита, А. Беркса, Х. Нишио, Р. Фольмара, Т. Тоффоли, Д. Кодда, Н. Хонда, С. Вольфрама, Э. Бэнкса, Т. Китагава, В.З. Аладьева, Я.М. Барздиня и др. В работах [92-102] приведены соображения в подтверждение роли и места ТОС-проблематики в структуре современной математической кибернетики и связанных с нею естественно-научных направлений. Особый интерес к ОС-моделям возобновился в начале 80-х годов в связи с активными работами по созданию новых перспективных архитектур высокопроизводительной вычислительной техники, проблеме искусственного интеллекта, робототехникой, информатикой и другими мотивациями. Наконец, предполагается, что ОС могут сыграть чрезвычайно важную роль в качестве концептуальных и прикладных моделей пространственно-распределенных динамических систем, из которых физические и биологические клеточные системы предтавляют интерес в первую очередь. В этом направлении уже налицо значительная активность целого ряда исследователей, получивших весьма обнадеживающие результаты [43,104].

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

ОС функционирует в дискретные моменты времени t (t = 0,1,2,...) так, что каждый автомат решетки может синхронно изменять свое состояние в дискретные моменты времени t > 0 как функция состояний всех своих соседей в предыдущий момент времени (t - 1). Эта локальная функция перехода может со временем меняться, но остается всегда постоянной для каждого автомата решетки в любой конкретный момент времени t > 0. Одновременное применение локальной функции перехода ко всем автоматам решетки определяет глобальную функцию перехода в структуре, которая действует на всей решетке, изменяя текущую конфигурацию состояний автоматов решетки на новую конфигурацию. Изменение конфигураций структуры под действием глобальной функции определяет динамику функционирования ОС-модели с течением времени, которая играет основную роль в исследованиях ее поведенческих свойств.