- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF86:Maxima Практикум
Материал из Linuxformat.
Версия 10:38, 23 декабря 2008
- Maxima Практикум
Пишем свой diff()
Maxima |
---|
БОНУС В этом приложении-практикуме Тихон Тарнавский покажет, как использовать Maxima для решения «настоящих» задач.
Сначала я хотел рассмотреть несколько отдельных практических примеров:
и маленьких, и чуть побольше. Но
потом мне подумалось, что один, но
более серьезный пример будет значительно лучше: с одной стороны, его
можно строить понемногу, отрабатывая отдельные приемы точно так же,
как это было бы сделано и с меньшими примерами, а с другой – в результате все эти приемы переплетутся
между собой во что-то объемное, и на этих переплетениях возникнет
более цельное ощущение возможностей программы, чем на несвязанных маленьких кусочках. К тому же по ходу дела мы соорудим
несколько небольших вспомогательных функций, а заодно, для
дополнительной практики, и более расширенную версию одной из
них, которая, вполне возможно, пригодится вам и в дальнейшем.
А писать мы будем настоящую функцию дифференцирования. практически такую же, как встроенная diff(), только без вычисления полного дифференциала – чтобы не слишком сложно было «охватить» пониманием сразу весь пример. Ну а если будет интерес, то дописать вычисление полного дифференциала к этой же функции вы можете попробовать самостоятельно – после освоения возможностей, которые сейчас будут продемонстрированы, это будет уже несложно. Примеров применения по ходу создания функции я давать не буду. Если вы хотите смотреть на практические результаты, по мере добавления кода можно сохранять его в файле, скажем, ~/.maxima/deriv.mac и выполнять в Maxima строку load(deriv)$ deriv(какое-нибудь-выраже-ние);.
Я буду писать код постепенно и по ходу написания давать комментарии к последнему написанному участку. Комментировать буду, просто вставляя куски кода в текст. К слову: Maxima поддерживает комментарии в коде «в стиле Си», то есть комментарий начинается символами /*, а заканчивается */. Причем, в отличие от Си, допускаются вложенные комментарии: /* вот /* такие */ */.
Чтобы не повторять каждый раз весь код от самого начала, я буду сокращать его с помощью многоточия. Если вы будете проверять код по мере чтения, не забывайте о разделяющих запятых после последних строк предыдущих участков.
Начнем с «подготовительных работ»: проверки определенных условий и сохранения нужных значений в локальных переменных.