IZONE- http://www.izcity.com/- бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

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