сфера nd

Форум пользователей пакета Maple

Модератор: Admin

uni
Сообщения: 1817
Зарегистрирован: Сб ноя 13, 2004 3:06 pm
Откуда: п.г.т. Излучинск
Контактная информация:

Сообщение uni » Пт сен 30, 2011 10:55 pm

На стр. 437 упомянутой книжки (она очень сильно отходит стандартов описания программ на ЯВУ, больше похожа на поток сознания, чем на структурированную книжку... там вообще полный дилетантизм в плане восприятия).
Всем, кто пишет программки нужно в обязательном порядке читать книжку по оформлению кода: "Совершенный код", Макконнелла.

Selin
Сообщения: 43
Зарегистрирован: Чт апр 14, 2011 11:14 am

Сообщение Selin » Пт сен 30, 2011 11:11 pm

Uni, возможно у вас сознания недостаточно. Я вот прекрасно воспринимаю книги Аладьева, правда, для новичков они действительно трудноваты. Особенно для тех, кто привык к шаблонному мышлению. Советую читать в таком случае Дьяконова. Впрочем, это лишь мое мнение, правда, в этом я далеко не одинок. Впрочем, если что-то недопонимаешь, то не следовало бы винить в этом других. И не стоит тут инициировать пустые и дилетантские диспуты. Форумчане сами разберутся, что им нужно. Лично меня разработанные Аладьевым средства выручали не раз, а в матпакетах я далеко не новичок.

uni
Сообщения: 1817
Зарегистрирован: Сб ноя 13, 2004 3:06 pm
Откуда: п.г.т. Излучинск
Контактная информация:

Сообщение uni » Пт сен 30, 2011 11:53 pm

Selin, :)

Повторяю ещё раз. Полный дилетантизм в плане восприятия, т.е. человек, составивший книгу, занимался копи-пастом кода из среды в книгу и назвал это "искусством". Учитывая ущербность отображения кода в Maple и лень многих товарищей его юзающих мы видим "потоковый код" на 90% листингов. Что есть садомазо... чего-то там для тех, кто его читает.

Я имею право на своё мнение и прошу не забывать.

Если назвал свою книгу "Искусство программирования", то будь добр, посмотри как оформляют книжки те, кто действительно пишут книжки по искусству программирования (я о Д.Кнуте).

Я это к тому, что по функционалу к его библиотеке я вопросов не имею, т.к. пользовался, хоть и редко. А вот что касается таланта технического писателя, тут уж извините, уровень Библиотечки Технической Кибернетики, 1970-х годов, где публиковались библиотеки алгоритмов.

Вот как я оформляю чужой код в Maple:
http://82.193.156.30/tmp/ESolver.pdf

Попался мне как-то большой текст программ на Maple для анализа электрических цепей. Я понял одно, что если хочу понять как там что работает, то первое что нужно сделать - отформатировать исходник в ЧЕЛОВЕЧЕСКИЙ вид. Только потом разуму становится доступным код при беглом взгляде.

алексей_алексей
Сообщения: 1776
Зарегистрирован: Вс май 01, 2005 9:02 pm

Сообщение алексей_алексей » Сб окт 01, 2011 8:04 pm

алексей_алексей писал(а): Нельзя ли привести пример FOR_DO, по которому можно уяснить, как одним этим выражением заменяется конструкция for k1 to m do … for kn to m do ( ) od:…od: для произвольного “n” ?

Благодаря Славе, нашёл текст процедуры. Сам бы нашёл, если бы только полностью просмотрел всю книгу.( А зачем тогда оглавление?) Из текста понял, что число вложений это и есть число аргументов процедуры. А как же тогда быть с динамичностью? И пример тот же самый, что и в хэлпе. Получается, надо каким-то образом динамично заполнять параметры процедуры, иначе ничего не понимаю…

алексей_алексей
Сообщения: 1776
Зарегистрирован: Вс май 01, 2005 9:02 pm

Сообщение алексей_алексей » Вс окт 02, 2011 9:27 am

Selin писал(а):Uni, возможно у вас сознания недостаточно.
? Что касается программирования, это мягко сказано. Точнее, Слава вообще в нём не ориентируется, так, заходит на форумы, потому что компьютер по случаю купил… :)


Selin писал(а): Я вот прекрасно воспринимаю книги Аладьева, правда, для новичков они действительно трудноваты. Особенно для тех, кто привык к шаблонному мышлению. Советую читать в таком случае Дьяконова. Впрочем, это лишь мое мнение, правда, в этом я далеко не одинок. Впрочем, если что-то недопонимаешь, то не следовало бы винить в этом других. И не стоит тут инициировать пустые и дилетантские диспуты. Форумчане сами разберутся, что им нужно. Лично меня разработанные Аладьевым средства выручали не раз, а в матпакетах я далеко не новичок.

Время идёт, моё понимание динамичности процедуры Аладьева осталось на прежнем нулевом уровне. Вернее, уровень изменился и стал со знаком минус. И пусть я никогда уже не овладею “искусством программирования” и не получу ответа на свой прямой вопрос (в двух сообщениях), но хочется быть уверенным, что кто-нибудь всё-таки понимает, что у самого профессора Аладьева подразумевается под динамическим вложением циклов?

Selin
Сообщения: 43
Зарегистрирован: Чт апр 14, 2011 11:14 am

Сообщение Selin » Вс окт 02, 2011 3:11 pm

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

Для алексей_алексей:
Во-первых, инсталляция биб-ки Аладьева может проводиться двумя способами – копированием файлов и программно. В первом случае алгоритм чрезвычайно прост и сводится к примитивному копированию уже готовых файлов б-ки из главного каталога userlib6789 (на примере Maple 11):

1. …userlib11\userlib -> ...Program Files\maple 11\lib
2. …userlib11\users\maple.ini -> ...Program Files\maple 11\users
3. …common\maple.hdb -> ...Program Files\maple 11\lib\userlib


Биб-ка готова к использованию. При программной установке могут возникать проблемы, связанные с операционной платформой, т.к. инсталляционная программа написана в Мэйпл и использует DOS-команды. У меня под Windows XP Professional 5.1.2600 SP3 (лицензионная) программная инсталляция происходит без проблем. При стандартном использовании разницы особой нет, исключая лишь регистрацию биб-ки в системе и более оптимальную ее компоновку.

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

> FOR_DO := proc() local k, T, E, N, n, p, R;
`if`(nargs < 2, ERROR("quantity of actual arguments should be
more than 1"), `if`({true} <>
{seq(type(args[k], 'list'), k = 1 .. nargs - 1)} or
not type(args[-1], 'string'),
ERROR("actual arguments are invalid"), seq(`if`(
type(args[k], 'list') and type(args[k][1], 'symbol')
and member(nops(args[k]), {2, 3, 4}), NULL,
ERROR("cycle parameters %1 are invalid", args[k])),
k = 1 .. nargs - 1)));
assign(N = "", n = 0, R = [], E = cat(seq("end do; ", k = 1 .. nargs - 1)));
T := table([2 = [`for`, `to`], 3 = [`for`, `by`, `to`],
4 = [`for`, `from`, `by`, `to`]]);
for k to nargs - 1 do
assign('R' = [op(R), cat("", args[k][1])]);
if member(`in`, args[k]) then N := cat(N, " for ",
args[k][1], " in ", convert(args[k][3], 'string'), " ")
else for p in T[nops(args[k])] do
n := n + 1; N := cat(N, p, " ", args[k][n], " ")
end do
end if;
assign('n' = 0, 'N' = cat(N, "do "))
end do;
parse(cat(N, " ", args[nargs], " ", E), 'statement');
unassign(op(map(convert, R, 'symbol')))
end proc:


Пример применения:

> M:=Array(1..3, 1..4, 1..5):
> FOR_DO([k,3], [j,2,4], [h,2,1,5], "M[k,j,h]:=k*j*h;");
> interface(rtablesize=infinity):> R := ArrayElems(Array(%id = 154170520));
R := {(1, 1, 3) = 3, (1, 1, 4) = 4, (1, 1, 5) = 5, (1, 3, 5) = 15, (2, 1, 2) = 4, (2, 1, 3) = 6, (3, 1, 5) = 15, (3, 3, 2) = 18, (3, 3, 3) = 27, (2, 1, 4) = 8, (2, 1, 5) = 10, (2, 3, 2) = 12, (3, 3, 4) = 36, (3, 3, 5) = 45, (2, 3, 3) = 18, (2, 3, 4) = 24, (2, 3, 5) = 30, (1, 3, 2) = 6, (1, 3, 3) = 9, (1, 3, 4) = 12, (3, 1, 2) = 6, (3, 1, 3) = 9, (3, 1, 4) = 12, (1, 1, 2) = 2}

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

Для uni:
======
Согласен, что любой имеет право на своё мнение. Правда, чье-то мнение, пусть и верное, может и отличаться от мнения большинства, и наборот. Не так ли?! Итак, по теме.

Лично для меня книги проф. Аладьева вполне приемлемы и даже более, да и не только для меня, см. например, лишь некоторые из мнений:

http://forum.ascon.ru/index.php?topic=3892.0
http://bagolovok.blogspot.com/2007/11/blog-post.html

Не приумножая сущностей, ограничусь двумя. Определенное слово в их пользу говорят и три издания книги (2006, 2009, 2010)

http://www.books.ru/books/sistemy-kompy ... ya-400378/

http://www.booka.ru/books/244737#about

http://copy.yandex.net/?fmode=envelope& ... 43&keyno=0

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

Мне импонирует его построение книги: введение в язык с приведением ряда его тонкостей, иллюстрируемое большим набором разнотипных средств (краткое описание + исходник). Именно исходники содержат массу находок и эффективных приемов, столь полезных для достаточно опытного юзера, прежде всего. Именно это и составляет искусство программирования, как я его понимаю. Конечно, можно было бы детально документировать исходники, но это большой объем, для подготовленного же юзера работа сними не должна составить сверхзадачи. Отмечу, что для неподготовленного и книги Аладьева, и его биб-ка особого интереса не представляют, разве что прекрасное изложение языка и сопутствующих вопросов.

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

Что до «Полного дилетантизма в плане восприятия», полностью согласен. Чтобы читать такие листинги нужно кое-что знать и уметь. Вот вы, например, для понимания листингов нуждаетесь в их максимальном упрощении («удобоваримости»). Я из ваших слов понял, что вам для чтения листингов требуется «отформатировать их в ЧЕЛОВЕЧЕСКИЙ вид». Правда, я не понимаю смысла такого вида, дай любой исходник начинающему, он не разберется в нем. Лично я читаю Аладьевские исходники с превеликим удовольствием, наслаждаясь игрой ума и тонкостями Мэйпл.

Не понял и выражения «по функционалу к его библиотеке», но как понимаю, она не стоит вам поперек горла. Биб-ка - это нечто, наряду с относительно простыми средствами в ней имеется масса просто уникальных, перекрывающих стандартные средства Мэйпл. Так, недавно нам в большом проекте понадобилось для освобождения памяти отменять загруженные по with средства, однако, в частности, для algcurves стандартное средство unwith для пакетов данного типа не работает, а вот Аладьевское все делает верно. См. простой пример:

> S := with(algcurves): unwith(algcurves);
Error, (in unwith) the procedure `unwith' is currently disabled due to the presence of table-based packages
> S;
[AbelMap, Siegel, Weierstrassform, algfun_series_sol, ...]
> eval(monodromy);
proc(curve, x::name, y::name) description ... end proc
> Unwith(algcurves); map(eval,[AbelMap, Siegel, Weierstrassform]);
[AbelMap, Siegel, Weierstrassform]

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

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

uni
Сообщения: 1817
Зарегистрирован: Сб ноя 13, 2004 3:06 pm
Откуда: п.г.т. Излучинск
Контактная информация:

Сообщение uni » Вс окт 02, 2011 6:19 pm

Да уж.
Уважаемый Selin, при всём моём глубоком уважении к труду Аладьева, ибо он налицо, просто невозможно не замечать неэффективность подачи материала. И это просто мягко сказано.

Его книжки морально устарели, что "АРМ математика", что "Maple: искусство программирования". Эта эпоха уже давно умерла, ещё 10 лет назад, а жива она только тем, что узкий круг пользователей Maple в России очень консервативен в своём большинстве.

"Функционал" - это когда мне без разницы как оно устроено внутри, но снаружи это всё работает, т.е. предоставляет рабочие интерфейсы для взаимодействия.

Потоковый код вот это:

Код: Выделить всё

FOR_DO := proc() local k, T, E, N, n, p, R;
 `if`(nargs < 2, ERROR("quantity of actual arguments should be
 more than 1"), `if`({true} <>
 {seq(type(args[k], 'list'), k = 1 .. nargs - 1)} or
 not type(args[-1], 'string'),
 ERROR("actual arguments are invalid"), seq(`if`(
 type(args[k], 'list') and type(args[k][1], 'symbol')
 and member(nops(args[k]), {2, 3, 4}), NULL,
 ERROR("cycle parameters %1 are invalid", args[k])),
 k = 1 .. nargs - 1)));
 assign(N = "", n = 0, R = [], E = cat(seq("end do; ", k = 1 .. nargs - 1)));
 T := table([2 = [`for`, `to`], 3 = [`for`, `by`, `to`],
 4 = [`for`, `from`, `by`, `to`]]);
 for k to nargs - 1 do
 assign('R' = [op(R), cat("", args[k][1])]);
 if member(`in`, args[k]) then N := cat(N, " for ",
 args[k][1], " in ", convert(args[k][3], 'string'), " ")
 else for p in T[nops(args[k])] do
 n := n + 1; N := cat(N, p, " ", args[k][n], " ")
 end do
 end if;
 assign('n' = 0, 'N' = cat(N, "do "))
 end do;
 parse(cat(N, " ", args[nargs], " ", E), 'statement');
 unassign(op(map(convert, R, 'symbol')))
end proc:


По мнению большинства программистов ЭТО называется кашей. Достаточно много кода в КНИГЕ Аладьева - это каша, перенесённая методом copy-paste из Maple.

По вашим ссылкам я не нашёл указанного вами "большинства". По первой так вообще про Mathcad ветка. Остальные какие-то устаревшие. Ничего внятного по этим ссылкам, кроме упоминания я не нашёл. Людей, пользовавшихся этой библиотекой я лично видел человека 3-4 на этом форуме много лет назад.

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

Программист, читающий код, НЕ ДОЛЖЕН подстраиваться под автора исходника. Должно быть НАОБОРОТ. Профессионал будет писать свой код так, чтобы даже неопытный программист с легкостью его воспринимал. Гуру же в программировании оформит свой код согласно общепринятых стандартов и будет следовать этим стандартам постоянно (по крайней мере в пределах книги).

Аладьев в книжке "Maple: Искусство программирования" ничего не знает про стандарты оформления кода. Его это просто не интересовало. Может уже в возрасте был дяденька и было не до оформления, т.к. на это нужно время и желание. Поэтому на "искусство" это, уж извините, это не тянет. Приведу другой пример, который я уже указывал, да, это Д. Кнут. Он создал систему TeX, которая жива до сих пор и является стандартом для научных изданий. Так вот, в своё время Д. Кнут печатал статьи в математических изданиях и его не удовлетворяло то качество, в котором они получались. Он сел, покумекал, и решил для своих статей разработать издательскую систему. Так появился TeX. Чуете разность в подходах? Аладьев же даже отформатировать код не пожелал потратить времени, от чего некоторые тут ставят это ему в заслугу и измеряют этим "достаточность сознания". Это глупо.

Я просмотрел ваши ссылки, в коих, как оказалось, не нашлось ничего достойного внимания, кроме нескольких благодарностей. Кто, как и в какой мере использовал его библиотеку - это бы интересовало меня куда больше.
Посмотрите и мою ссылку, о которой я указывал ранее: "Совершенный код", Макконнелл. Она есть на bookfi.org.

В мире программирования вообще уже давно существуют стандарты оформления для читаемости кода. Мало того, во многих проектах в сети эти стандарты являются требованиями к программисту. Во многих интернет-журналах специально эти требования оговариваются:
"Соглашения по оформлению кода команды RSDN"
http://www.rsdn.ru/article/mag/200401/codestyle.XML

Уверен, что и для Maple есть нечто похожее, но на заграничных сайтах, ибо у нас Аладьев с его "искусством" видно стал авторитетом ;) до фанатизма. Я не зря упомянул Библиотечку Технической Кибернетики. Там как раз был полный "разброд и шатание" по поводу оформления кода. Но это простительно для 70-х и НЕ ПРОСТИТЕЛЬНО для 2000-х.

Очень прошу, ознакомьтесь с книжкой Макконнела пока не поздно. С возрастом, как оказалось, даже профессорам трудно переобучаться.

После прочтения, такого уже не напишите и станет стыдно :) за свои слова:
Что до «Полного дилетантизма в плане восприятия», полностью согласен. Чтобы читать такие листинги нужно кое-что знать и уметь. Вот вы, например, для понимания листингов нуждаетесь в их максимальном упрощении («удобоваримости»). Я из ваших слов понял, что вам для чтения листингов требуется «отформатировать их в ЧЕЛОВЕЧЕСКИЙ вид». Правда, я не понимаю смысла такого вида, дай любой исходник начинающему, он не разберется в нем.


"Человеческий вид" там описан очень подробно. Он нужен не для того, чтобы сидеть и разбираться, а для быстрого поиска информации в коде. Код, который отформатирован по общим стандартам, легко читается любым человеком, а самое главное, если код очень большой, то не придётся разбираться с каждым его блоком по-отдельности, а можно окинуть одним взглядом.

Смысл всего этого в том, чтобы разгрузить мозг. "Каша", равномерно распределённая по ширине листа - это признак отсутствия понимания по оформлению кода. У Аладьева в достаточной мере она налицо, пусть даже откомментированная "каша".

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

Нужно ценить и уважать труд читателя, кем бы он ни был. Нужно максимально сэкономить его время, пусть даже потратив своё, т.к. книжка будет издаваться тысячными тиражами и ТЫСЯЧА ни в чём не повинных начинающих maple-программеров будут сидеть и "разбираться", вместо того, чтобы бегло прочитать. Это не благо, это урон в человеко-часах.

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

Selin
Сообщения: 43
Зарегистрирован: Чт апр 14, 2011 11:14 am

Сообщение Selin » Вс окт 02, 2011 6:59 pm

uni, я все сказал и добавить к вашему потоку слов ничего добавить не хочу. Если же у вас есть, что сказать, то это лучше всего сделать в более серьезном месте, чем форум. К тому же и с вежливостью представления своего мнения у вас не все в порядке. ПРедлагаю прекратить диспут, переходящий в перебранку, ибо есть, в частности, у меня более важные и интересные темы. Если же у вас некоторые проблемы с самомнением, оставим последнее слово за вами. Я все сказал.

алексей_алексей
Сообщения: 1776
Зарегистрирован: Вс май 01, 2005 9:02 pm

Сообщение алексей_алексей » Вс окт 02, 2011 7:36 pm

Selin писал(а):Сразу же хочу предупредить, что посещаю сей форум нечасто...

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

Selin
Сообщения: 43
Зарегистрирован: Чт апр 14, 2011 11:14 am

Сообщение Selin » Вс окт 02, 2011 8:01 pm

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

Aivar
Сообщения: 48
Зарегистрирован: Вт июл 13, 2004 4:00 pm

Сообщение Aivar » Вс окт 02, 2011 8:49 pm

Ув. Selin, наблюдал за вашим высоконаучным диспутом и решил внести в него и свою лепту. С книгами проф. Аладьева хорошо знаком и также считаю их приличными во всех отношениях, за исключением, возможно, ряда огрех. Сам совершенствовал свое программирование по ним. Что до FOR-DO, то пару лет тому назад сам использовал сию процедуру для динамической генерации циклов вложенности 4..7, правда, немного ее подправил под свою задачу. А так хочу вам напомнить известную в научных кругах поговорку - кто не знает, учит, кто знает, творит. Кажется этим все сказано и в тему.

алексей_алексей
Сообщения: 1776
Зарегистрирован: Вс май 01, 2005 9:02 pm

Сообщение алексей_алексей » Вс окт 02, 2011 9:11 pm

Selin писал(а):Уважаемый, предложенные вам процедуры Аладьева действительно обеспечивают динамическую генерацию циклических конструкций требуемого уровня вложенности, а вот сам уровень вложенности предварительно должен быть вычислен. Более того, на основе заложенного в процедурах алгоритмах можно строить динамически генерируемые конструкции весьма широкого назначения. Но это уже ваша забота. Более ничем помочь не могу. Может другие вам лучше прояснят вопрос динамической генерации вообще и вашей в частности.

А кто спорит? Может, другие и объяснят, как не раз уже бывало. Хорошо, что Вы понимаете, что с задачей ответа на прямой вопрос не справились, ведь говорить и делать – не одно и то же. Примера динамичности, как и автор, Вы привести не сумели, но много слов и времени потратили, за что Вас уже не раз искренне поблагодарили. Но коль, по всей видимости, у Вас возникло желание получить ещё одну благодарность, то ещё раз Вас благодарю, апологирущий Вы мой… И как пожелание: не отвлекайтесь от докторской, не тратьте своё драгоценное время и силы, ведь её ещё кто-то кроме Вас явно заждался...

uni
Сообщения: 1817
Зарегистрирован: Сб ноя 13, 2004 3:06 pm
Откуда: п.г.т. Излучинск
Контактная информация:

Сообщение uni » Вс окт 02, 2011 9:42 pm

Алексей Борисович, я немножко не пойму что тут нужно динамично формировать? Циклы по k и kk? Их нужно автоматически формировать для больших размерностей и выводить результат в виде таблицы (mm*n) * n?

Вот код, чуть мной отформатированный:

Код: Выделить всё

restart:

# Подключаемые библиотеки
with( plots ):

# Параметры
n := 3:      # - размерность сферы
R := 1.0:   # - радиус сферы
m := 0:      # - индекс массива координат
mm := 40:     # - количество точек вдоль одной размерности

# Вспомогательная процедура (движение по поверхности, преобразование координат)
# Примечание. Для сферы при n = 3 формулы будут такими:

# u[1] := R * sin( a[1] ) * sin( a[2] )
# u[2] := R * cos( a[1] ) * sin( a[2] )
# u[3] := R * cos( a[2] )

Gsphere := proc( n, R, u )
   
    local j:
   
    u[1] := R * ( product( sin( a[i] ), i = 1 .. n-1 ) ):
 
    for j to n-1 do

        u[j+1] := R * cos( a[j] ) * ( product( sin( a[i] ), i = j+1 .. n-1 ) )
   
    end do

end proc:

for k to mm do
   
    for kk to mm do

        a := 2.0 * Pi * kk / mm, 2.0 * Pi * k / mm:

        Gsphere( n, R, u ):

        m := m + 1:

        x[m] := u[1]:
        y[m] := u[2]:
        z[m] := u[3]

    end do

end do:
 
L := seq( [ x[i], y[i], z[i] ], i = 1 .. m ):
 
pointplot3d( [L], axes = normal, color = red );


Я пишу код в специальном редакторе jEdit, для которого есть шаблон раскраски синтаксиса Maple и вообще он очень удобен. Вот как выглядит моё рабочее пространство:
Изображение

Меня пару лет тому назад Maple просто достал убогостью своего форматирования, поэтому я чуть поднапрягся и нашёл для себя приемлемый вариант работы с кодом. Просто прелесть.

алексей_алексей
Сообщения: 1776
Зарегистрирован: Вс май 01, 2005 9:02 pm

Сообщение алексей_алексей » Вс окт 02, 2011 10:12 pm

uni писал(а):...


Слава, промежуточная задача состоит в получении точек сферы всегда чётного пространства. Главное, конечно, не в чётности, а в “n” , тогда число параметров будет “n-1”. Соответственно, и число вложений будет “n-1”. Из текста процедуры Аладьева мне лично непонятно, каким образом будет формироваться текст циклических вложений числом “n-1”., скажу больше, мне понятно, что он и не должен формироваться, исходя из текста. Поскольку я, как всегда, могу ошибаться, то просил привести пример, типа пальцем показать направление…

алексей_алексей
Сообщения: 1776
Зарегистрирован: Вс май 01, 2005 9:02 pm

Сообщение алексей_алексей » Вс окт 02, 2011 10:40 pm

Слава, и ещё один момент. Полный алгоритм нормальным человеком пишется за часы, потому что всё, ну, почти всё практически известно. Посмотрите на программку графического решения любого полинома одной переменной из темы http://forum.exponenta.ru/viewtopic.php?t=11341
Идея знакома? Только надо не графически и уже для системы... Примерно там же анимация механизмов... Скорее всего, для получения общего решения и исследования на совместность потребуется интерактивность, но это уже следующий рутинный этап…