| ||
DERIVE: заметки на поляхАлексей Тетерко Прочитал статью Great «Логарифмируем, интегрируем, корень извлекаем!» (МК № 16 (187)), посвященную вычислительному пакету DERIVE 5 (http://www.derive.com). Мне в свою очередь хотелось бы сказать несколько замечаний по этому поводу. Прошу вставить сокращения «ИМХО» по своему вкусу: все дальнейшее это только мое мнение. А мнится мне следующее. 1. Уже DERIVE 3.11 для ДОСа мог решить все школьные задачи и большинство задач по математике для первого курса университетов дифуры и т. п. Он действительно загружается с дискеты и работает на 486 компьютере. 2. Встроенный язык, к сожалению, не muLisp, на котором все и было написано. Но язык, несомненно, из семейства функциональных. Чтобы дорасти до лиспа, в версии 3.11 не хватало одной конструкции. Не будем уточнять какой. Наверное, все-таки quote. При переходе на Виндовс система приобрела вес и потеряла мобильность. Были устранены одни недостатки и внесены новые, выявлением которых занимается в частности DUG (Derive Users Group). Язык, наконец-то, получил недостающие конструкции и много других в придачу, что сделало его полноправным диалектом лиспа. Но таким, у которого eval выполняет аналитические преобразования (см. ниже). По поводу языка и лиспа: лучше сравнивать DERIVE с трехуровневой системой языка REDUCE, и конечный пользователь имеет доступ ко всем уровням, вплоть до RLISPа, на котором REDUCE написана. Насколько известно, DERIVE по такому пути не пошел. 3. Совсем не согласен с сопоставлением DERIVE и других пакетов. Сразу выкидываем MathCAD в нем стоит аналитический движок Maple, то есть это одно и то же. MathLab всегда развивалась как система именно «численных» расчетов, в отличие от DERIVE. DERIVE, начиная с muMath, всегда был системой аналитических преобразований (то есть компьютерной алгебры), он ею и остался. Причем, если Maple делает упор на раздельности различных преобразований, полагая (и вполне резонно), что пока еще пользователь-математик лучше его может решить, какие преобразования и как проводить, то DERIVE большинство преобразований делает сам. Последнее удобно, когда важно быстро получить результат. Или если пользователь недостаточно знаком с нужными математическими преобразованиями. Как это выглядит на практике. Вы берете задачу, подходите к Maple, и тут выясняется, что нужно загружать некие пакеты для решения вашей конкретной задачи, даже если это всего лишь, к примеру, работа с матрицами. Эти пакеты могут иметь свои «синтаксические» особенности и т. д. Если задача действительно сложна, то делать ничего не остается Maple обычно мощнее DERIVE. В DERIVE вы просто записываете уравнения и... Если задача ему по зубам, то получаете ответ. Если нет, то запихиваете уже набранное условие в Maple, отличия минимальны и... Если задача действительно сложна, то вы опять ничего не получаете. Придется программировать, а если учесть, что языки REDUCE, MAPLE, DERIVE схожи, то у вас несколько вариантов. Не самый худший из них переформулировка задачи в численном виде и программирование на вашем любимом языке, например, на прологе. В качестве нерешаемой задачи рассмотрите такую. У вас есть система от K целочисленных неизвестных, каждая из которых принимает значения из множества {i| i in N, i<=K}, причем значения разных переменных различны. Параметры выбираете сами. Чтобы решить вашу систему в рассматриваемых пакетах, добавьте к ней уравнения на суммы степеней неизвестных в нужном количестве. Придется рассмотреть простой пример: x+y=4, всего переменных три: x, y, z. Они принимают значения из множества {1,2,3}, и значения всех переменных разные. Добавляем уравнения: {x+y=4 {x+y+z=6 {x^2+y^2+z^2=14 и решаем полученную систему. И не надо теперь делать никаких предположений о x, y, z! Результаты: DERIVE 3.11 решений не нашел; DERIVE 5.02 нашел оба решения; MAPLE 6.02 нашел оба решения. Не встречал еще системы компьютерной алгебры, которая решала бы подобные уравнения с 5-ью и более переменными. Но в последнее время наметился прогресс. DERIVE содержит средства, позволяющие проводить решения уравнений вручную. Эти средства редко описываются, но они есть и давно. Их наличие означает, что DERIVE может служить и для «обучения» математике: (2*x+17=3)-3 Это, понятно, означает вычитание 3 из обеих частей равенства. Аналогично можно было сделать -17, а затем все поделить на 2. Большинство пакетов, написанных на DERIVE и свободно доступных в Интернете, имеют учебную направленность. Хотя есть и исключения. Что в результате? Сильное утверждение «все» школьные расчеты и расчеты на первом курсе вуза DERIVE может выполнить сам, и он дешевле обойдется пользователю, чем другие из упоминавшихся пакетов (в смысле потерь нервов). Упомяну еще о калькуляторах (TI-9x), включающих DERIVE. Они полностью совместимы с упомянутым пакетом, даже могут загружать программы с компьютера. Приходите на контрольную с калькулятором, и он «все решает сам»! А если вам до зарезу нужно что-то посчитать с очень большим количеством знаков, и у вас нет UBASICа, берите DERIVE. Простота и интуитивная понятность его не дадут вам отклониться от изучения своей задачи и перейти к изучению DERIVE. 4. Литературы по DERIVE на русском языке очень много, разной по качеству как содержания, так и печати. На украинском знаю только одну книгу, достаточно старую, но ее более чем достаточно для школы, которой она и предназначена. Источник: http://www.mycomp.com.ua/
| ||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |