40. В определении пользовательской функции на основе функционального (->)-оператора можно наряду с процедурными переменными args и nargs использовать и RETURN-функцию для организации возврата результата вызова функции. Сказанное иллюстрирует следующий простой фрагмент:
> F:=() -> [assign('h'=sum(args[k]^2,k=1..nargs)/nargs),RETURN(evalf(sqrt(h)))]; Þ
> Digits:= 16: F(3,10,32,37,52,57,95,99); Þ 58.39627556616945
Это обстоятельство в ряде случаев может существенно упрощать программирование.
41. В Help-системе языка по recipoly-функции некорректно указывается возвра-щаемое через ее третий фактический аргумент значение в случае нечетной степени те-стируемого полинома. В основном тексте нами представлено верное значение, которое тестируется следующей простой Test-процедурой с двумя формальными аргументами:
> Test(57*x^7+10*x^6+52*x^5+32*x^4+32*x^3+52*x^2+10*x+57,x); Þ
> Test(57*x^8+10*x^7+52*x^6+32*x^5+3*x^4+32*x^3+52*x^2+10*x+57,x); Þ
Polynom has even degree
В качестве фактических аргументов Test-процедуре передается соответственно симметричный полином нечетной степени и ведущая переменная, а на выходе проце-дура возвращает исходный полином, формируя его на основе значения, передаваемо-го через третий аргумент recipoly-функции, и представленного нами в пункте 14.2.1 оп-ределяющего соотношения (10). Рекомендуется обратить внимание на организацию в процедуре разового вызова библиотечной recipoly-функции.
42. Следует иметь в виду, что тестирование heap-структуры данных посредст-вом type-функции не является вполне достоверным, как это иллюстрирует следующий весьма простой фрагмент:
> T:=table([0=4,1=`IAN`,2=`REA`,3=`RAC`,4=`RANS`]): type(T,heap), eval(T); Þ
> map(readlib,[stack,queue,heap]): H:=heap[new](lexorder,`V`,`G`,`S`,`A`,`K`): \
St:=stack[new](`V`,`G`,`S`,`A`,`K`): Q:=queue[new](`V`,`G`,`S`,`A`,`K`): \
map(type,[St,Q,H],stack), map(type,[St,Q,H],queue), map(type,[St,Q,H],heap); Þ
[true, true, true], [true, true, true], [true, true, true]
Как следует из данного фрагмента, созданная Т-таблица, не соответствующая по организации heap-структуре данных (отсутствует "<"-вход для булевой процедуры упорядочивания элементов очереди), type-функцией тестируется как heap-структура. В последнем примере фрагмента покано, что данная ситуация является общей для стру-ктур данных {stack,queue,heap}-типа, т.е. type-функция не обеспечивает должного тес-тирования указанных структур данных. Причиной этого является общая для всех струк-тур табличная организация. Следующая простая процедура T_SQH позволяет класси-фицировать Maple-объекты на таблицы, heap-структуры и {stack,queue}-структуры:
> map(T_SQH,[T.(k$k=1..4)]); Þ [table, [stack, queue], [stack, queue], heap]
В заключение следует отметить, что по основному тексту книги также приводился целый ряд обнаруженных в процессе локальной апробации и эксплуатации средств па-кета особых и аварийных ситуаций. Читателю в процессе эксплуатации пакета наряду с описанными могут встретиться и другие особые и аварийные ситуации, с которыми ве-сьма желательно ознакомить службу сопровождения пакета, находящуюся по адресу:
Waterloo Maple Inc., 450 Phillip Street, Waterloo, Ontario, Canada ON N2L 5J2
Приложение 4. Основные управляющие и дополнительные клавиши
Maple-пакета пятого релиза
Приведен перечень клавиш, предназначенных для управления работой пакета и текущим документом в его среде; некоторые из них обнаружены в процессе апробации и эксплуатации пакета в Балтийском отделении Международной Академии Ноосферы.
Таблица 39
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.