Pull to refresh

Зачем Maxima школьнику и студенту? или «Задача о невесомом медведе»

Reading time5 min
Views20K
В данном посте я хочу убить сразу нескольких зайцев.
Во-первых, еще раз рассказать людям о свободной системе компьютерной алгебры Maxima.
Во-вторых, найти вес «мистического зайца» из несложной задачки для школьников

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



Часть первая: Зачем же студенту или школьнику Maxima?



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

Почему то в сознании преподавателей лучшим средством для автоматических вычислений являлся Microsoft Excel. Как в колледже, так и в ВУЗе вычисления нам предлагалось делать либо на калькуляторе, либо в Excel. При том, что и колледж, и университет у меня были весьма приличными в своей среде.

Помню чувство эйфории когда я случайно по воле друга познакомился с Matlab.

Мне просто открылся новый мир доступной математики. Теперь я поделюсь им с вами.

Зачем же нам вообще нужны системы компьютерной алгебры?
По моим личным наблюдениям ну и например из данной статьи
Математика может приносить физические страдания,
таким образом, как ни печально это признавать, но среднестатистический молодой человек вполне
может впасть в ступор при виде чего-то сложнее, чем 2*2.

Начну с краткого обзора Maxima.

Как уже говорилось ранее Maxima — свободная система компьютерной алгебры.
Максима обладает широким математическим инструментарием.
От простой арифметики, до символьных или числовых вычислений из области высшей математики (дифференциальные уравнения, интегралы, преобразования Лапласа, ряды Тейлора и так далее...)
Естественно Maxima так же умеет строить графики.

В отличии от более маститых требовательных и весомых Matlab и MathCad.
Максима не требовательна к ресурсам, а самое главное совершенно бесплатна.

Безусловно оговоренные выше программы выполняют широчайший спектр задач,
я думаю не существует программы которая в одиночку могла бы заменить все функции предлагаемых полным пакетом того же Matlab (c включенным модулем символьных вычислений), но мы сейчас будем говорить о простейших вычислениях, которые могут пригодиться студенту.

К тому же Maxima скорее более уместно будет сравнить с Maple. Интернет утверждает, что Maxima – OpenSource аналог Maple (Может быть и действительно так, но сам я не берусь сказать, потому что Maple в чистом виде не видел)

Скачать Maxima и некоторую документацию к ней можно на maxima.sourceforge.net/ru
Естественно есть версия как для Windows, так и для Linux систем.

Максима – программа консольная, но к ней есть различные графические интерфейсы. Пожалуй самый распространенный из них WxMaxima.

Максима написана на языке Common Lisp. Людям знакомым с данным языком, будет несложно ее освоить (а может быть даже и посмотреть как работают функции программы). В прочем у людей вообще не знающих программирования освоение основ Maxima тоже не вызовет больших трудностей.

Чтобы не быть голословным приведу простой пример

введем в Maxima следующее выражение

diff(x^3,x,1);

и как ответ получим

первую производную 3*x^2.

Всё. Ненавистную таблицу производных (у вас наверняка такая была) — можно больше не учить! То же справедливо и для интегралов: введем integrate(cos(x),x); получим: sin(x).

выглядеть будет вот так:
image

Как это сделать:
Предположим у вас горят руки вы только что поставили максима и хотите увидеть хоть какой то результат:

для того чтобы вычислить допустим производную, откройте WxMaxima
Нажмите на пустое белое пространство левой кнопкой мыши, и скопируйте или вбейте туда эту формулу diff(x^3,x,1); после чего нажмите Control+Enter и вы получите вычисления для данной ячейки. Следует учесть что в Maxima ячейки зависят друг от друга, так например если вы вбили

(%i1) x:2;

(%i2) x+3;

И посчитаете нажав control+Enter только во второй ячейке
то в ответ получите
(%o2) x+3;

потому что значение посчитанное в предыдущей ячейке программе пока не известно.

Также если вы поменяете значение в ячейке (%i1) x:2; например на (%i1) x:4; не забудьте пересчитать ячейку.

Хотя безусловно вы можете нажав ctrl+R пересчитать сразу все ячейки.

И последний совет: Иногда бывает полезно обнулить процесс вашей бурной деятельности в Maxima, выбрав команду Maxima-> restart maxima


И так я немного рассказал вам о Maxima и готов перейти ко второй части Статьи.

Часть вторая: Решение системы линейных уравнений в Maxima (задача о невесомом медведе)



Предыстория:

Как-то пасмурным осенним днем, мой коллега Drzugrik гулял по просторам сети интернет и набрел на данную ссылку: nnm.ru/blogs/samovar1/pedagogi-rezvyatsya

Вытерев, слезы радости и умиления мы всем офисом дружно взялись решать одну из предложенных в данной статье задач.

Итак вот условие задачи.
Вообще задача была представлена графическим способом, но я на всякий случай опишу ее и текстом тоже:

лиса весит столько же сколько заяц и гиря в пять килограмм взятые вместе
волк весит столько же сколько лиса и гиря в четыре килограмма взятые вместе
заяц и лиса весят столько же сколько волк и гиря в один килограмм взятые вместе
медведь весит столько же сколько заяц лиса и волк вместе взятые.

Картинка с задачей:
Автор неизвестен взято с nnm


Итак получив задачу мы сразу же ринулись ее решать.

Начали с создания систем уравнений, а вот дальше наши пути и главное результаты «немного» разошлись.

Что у нас только не получалось:
и медведи с отрицательной массой

Фрагмент мультфильма Винни Пух

и зайцы Мутанты, весящие в три раза больше чем волк

Rayman Raving Rabbids -- Ubisoft


Коллега даже отправил данную задачу своей подруге — педагогу младших классов, но и она потерпела фиаско.

В итоге нашелся среди нас человек способный решить эту задачу.
Но из-за того что смог сделать это он один, осадок остался и дабы развеять свои сомнения, я решил призвать на помощь --ЭВМ.

Я предлагаю вам для начала попробовать найти ответ задачки в ручную, а уже потом заглянуть под спойлер

Для решения задачи в Maxima был введен следующий код:
(%i1) eq1:lisa=zay+5; eq2:lisa+4=volk; eq3:lisa+zay=volk+1; eq4:medved=volk+lisa+zay;
(%o1) lisa=zay+5
(%o2) lisa+4=volk
(%o3) zay+lisa=volk+1
(%o4) medved=zay+volk+lisa

это ввод нашей системы уравнений затем вторая строка

(%i2) solve([eq1,eq2,eq3,eq4],[zay,lisa,volk,medved]);
(%o5) [ [zay=5,lisa=10,volk=14,medved=29] ]

это непосредственно решение уравнений

и третья строка

(%i3) ev([eq1,eq2,eq3,eq4],[%]);

это проверка решения методом подстановки

(%o6) [10=10,14=14,15=15,29=29]

Все достаточно просто.


Итак если вы не заглядывали под спойлер, посчитали решение и хотите его проверить, то вам даже не придется устанавливать себе на компьютер Maxima. Вы можете воспользоваться
WEB-интерфейсом по адресу maxima-online.org.

Для запуска на установленной версии WxMaxima, файл задачи можно скачать с народа:
narod.ru/disk/63475686001.9c996f295ea0a37cef0241e55a328799/%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B0.wxm.html

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

P.s Я понимаю что на самом деле, многие читатели Хабра, наверняка хорошо владеют математикой, поэтому вы можете не согласиться со мной, что люди в общем и целом плохо знают математику и даже удивиться как мы смогли найти затруднения в такой простой задачке, но все — относительно. Окружающие меня люди (да и я сам) владеем «царицей наук» весьма слабо, а главное допускаем чисто человеческие ошибки по невнимательности. Поэтому надеюсь, что данная статья поможет людям справиться хотя бы с давно забытыми азами математики.

upd: подправил грамматические ошибки спасибо vasilisc kiselev_dv
Tags:
Hubs:
+19
Comments71

Articles