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

в 11:34, , рубрики: maxima, open source, интеграл, математика, Система линейных уравнений, метки: , , , ,

В данном посте я хочу убить сразу нескольких зайцев во первых.

Еще раз Рассказать людям о свободной системе компьютерной алгебры. 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 Я понимаю что на самом деле, многие читатели Хабра, наверняка хорошо владеют математикой, поэтому вы можете не согласиться со мной, что люди в общем и целом плохо знают математику и даже удивиться как мы смогли найти затруднения в такой простой задачке, но все — относительно. Окружающие меня люди (да и я сам) владеем «царицей наук» весьма слабо, а главное допускаем чисто человеческие ошибки по невнимательности. Поэтому надеюсь, что данная статья поможет людям справиться хотя бы с давно забытыми азами математики.

Автор: BosonBeard

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js