Задати функцію користувача в скм maxima. Тихон Тарнавський. Maxima – максимум свободи символьних обчислень. Вирішення проблеми із запуском з-під TeXmacs

Головна / Захист

Свободна математика

Олександр Бікмєєврозуміється, наскільки вільна комп'ютерна математика і наскільки вільне є математичним.

Будь-яка наука, від фізики до філології, використовує досягнення математики. У зв'язку з цим фахівцям не-математикам необхідні кошти, які дозволяли б ставити завдання в математичній формі та отримувати рішення у вигляді формул або набору значень, тобто потрібні системи комп'ютерної математики, здатні взяти на себе працю вирішення математичних завдань різними методами.

На жаль, в нашій країні подібні програми поширені в досить вузькій галузі наукової діяльності, і не в останню чергу це обумовлено тим, що школярів та студентів не знайомлять із професійними математичними пакетами, вартість лише однієї ліцензії на які найчастіше обчислюється тисячами та десятками тисяч рублів.

Ми пропонуємо вам заглянути у світ вільних математичних пакетів, які можна безкоштовно завантажити з мережі Інтернет, використовувати для будь-якого виду пошуків (іноді з застереженнями), а також завдяки наявності вихідних текстів, вивчати їх внутрішній пристрій і, за бажання, розширювати їх функціональність власними силами.

Символьні обчислення

Системи комп'ютерної математики (СКМ) розробляються давно, та Maxima() була однією з перших. Спочатку це був комерційний продукт, але, не витримавши конкуренції, система перейшла до розряду вільних.

Оболонка wxMaximaта пункт меню, що дозволяє вивести або прибрати з екрана панелі математичних операцій.

Основна перевага Maximaперед іншими вільними системами – це підтримка символьних обчислень. Тобто, ввівши аналітичний вираз чи рівняння, ви можете отримати результат також у аналітичному вигляді.

Maximaдозволяє вирішувати рівняння алгебри, системи рівнянь, виконувати операції інтегрування, диференціювання, розкладання в ряд і так далі. Крім того, вона вміє вирішувати диференціальні рівняння, граничні завдання, завдання Коші, виконувати алгебраїчні обчислення з матрицями, будувати графіки та поверхні, задані різними функціями у декартовій та полярній системах координат. Усі можливості перерахувати важко.

Для СКМ Maximaрозроблено кілька оболонок, найбільш зручною з яких (для користувача-початківця) є wxMaxima(Див. рис. 1). Починаючи з версії 0.8.0, вона стрімко змінюється на краще. Остання версія (0.8.3) містить риси таких відомих комерційних пакетів, як Mapleі MathCAD. Робота в цій оболонці досить проста і дозволяє отримувати прийнятні результати вже за кілька хвилин використання. Багато операцій, назви яких присутні в меню та на панелях інструментів, забезпечені зручними майстрами, що дозволяють вирішувати завдання, навіть не знаючи вбудованої мови та команд Maxima. Ну і ще один важливий факт - всі оболонки для цієї СКМ русифіковані. Крім того, вивчивши вільний пакет MaximaУчні зможуть легше освоїтися в комерційних пакетах, що обумовлено як відносною схожістю інтерфейсу, так і синтаксисом (особливо це стосується Maximaі Maple).

Система чудово документована, але довідковий матеріал представлений лише англійською мовою. Наш журнал публікував навчальні матеріали про роботу у СКМ Maxima(LXF81-86). Будучи консольним додатком, Maximaможе працювати в пакетному режимі, тобто їй можна передавати на обробку текстовий файл зі списком команд і отримувати знову ж таки текстовий файл з результатами, а якщо врахувати, що висновок може бути оформлений засобами системи розмітки TeX, то це дозволяє використовувати її як базу для побудови власних додатків. Одним із прикладів такої розробки є розширення TeXmacs.

На підставі наявного досвіду навчання можна сказати, що студенти молодших курсів освоюють роботу в Maximaдосить швидко і починають використовувати її під час виконання завдань з інших предметів. Але з кожним курсом у них виникає дедалі більше проблем.

Справа в тому, що поряд з великою кількістю позитивних моментів у Maximaє і негативні. По-перше, кінцевий результат, особливо під час вирішення складних завдань, багато в чому залежить від рівня знання математики та досвіду використання даної СКМ, тому що іноді потрібно виконати попередні перетворення самостійно. По-друге, Maximaдуже добре працює з алгебраїчними виразами, але трансцендентні, логарифмічні та подібні до них викликають у неї значні труднощі. Втім, якщо не можна отримати аналітичне рішення, то можна скористатися чисельним розрахунком. По-третє, можливості Maximaщодо побудови складних графіків або візуалізації, наприклад, векторного поля, не йдуть у жодне порівняння з можливостями Maple. І, нарешті, по-четверте, для повноцінної роботи необхідно вивчити численні команди та константи Maxima, а це вимагає часу та терпіння.

СКМ Maximaвходить до багатьох дистрибутивів Linux або, принаймні, обов'язково присутній у репозиторіях. Вона включена до складу таких освітніх продуктів, як AltLinux Шкільний, Edubuntu та EduMandriva.

Вікно SMath Studio, в якому визначено функцію, обчислено її похідну та побудовано графік.

Слід зазначити, що інженери таки звикли працювати з таким потужним додатком-калькулятором, як MathCAD. Це система інженерних розрахунків, доступна для будь-яких платформ (див. Комерційні пакети), але за серйозні гроші. Проте роботодавці вимагають, щоби випускники вміли працювати в цій системі. Як же бути освітнім установам?

У нашій країні народився рятівний проект: SMath Studio(http://ua.smath.info/forum/). Це безкоштовний, але, на жаль, поки що не вільний продукт, розробник якого, Андрій Івашов, намагається створити альтернативу монстру MathCAD, І в нього це виходить (див. рис. 2). Програма розроблена для середовища .NET, а потім адаптовано для Mono.

SMath Studioдозволяє виконувати аналітичні обчислення, операції з матрицями, будувати графіки та обчислювати похідні, і навіть підтримує функції програмування. На жаль, аналітичне інтегрування поки не підтримується, але продукт успішно розвивається, і восени 2009 р. автор закінчує розробку інфраструктури, яка дозволить використовувати сторонні модулі, що підключаються. Можливо, тоді розвиток програми вийде на новий рівень, і ми отримаємо повноцінну альтернативу MathCAD.

Слід зазначити, що навесні 2009 року, за згодою з автором, продукт було включено до складу освітнього дистрибутива EduMandriva. Незважаючи на обмежену функціональність, цей додаток дозволяє виконувати повсякденні обчислення на рівні школярів та студентів молодших курсів, а також прості інженерні розрахунки. А якщо врахувати, що SMath Studioчудово почувається на кишенькових комп'ютерах і смартфонах, керованих Windows Mobile, то знайомство з ним для школярів та студентів просто обов'язкове.

На офіційному сайті завжди присутня документація у форматах DOC та ODT, а на офіційному форумі можна поставити запитання розробнику чи спільноті та обговорити використані при розробці програми алгоритми.

Вікно wxMaximaз результатами символьних обчислень та графіком функції

На завершення цього розділу хочеться загострити увагу, що пакети символьної математики як результат видають вираз, а чи не число. Розглянемо приклад, показаний на рис. 3, в якому визначено користувальницьку функцію і для неї знайдено другу похідну; потім функцію проінтегровано. Заодно побудовано графік. Таким чином, школярі та студенти можуть наочно виконати повний аналіз функції. І це далеко не все: Maximaвміє спрощувати вирази шляхом розкриття дужок, приведення подібних доданків, виконання підстановок та завдання деяких умов та припущень, що накладаються на вираз. Додайте сюди можливість символьного вирішення рівнянь та систем рівнянь, а також диференціальних рівнянь, і зрозумієте, що сучасному студенту без цих інструментів не обійтися, а викладачі природничих дисциплін можуть пожвавити уроки та практичні заняття за рахунок введення інтерактивних завдань чи демонстраційного матеріалу.

Чисельні розрахунки

Як відомо, не кожне завдання можна вирішити аналітично, тобто отримати рішення у вигляді певної формули. Тоді на допомогу приходять різні чисельні методи для отримання рішення з деякою точністю. Найбільш відомим представником додатків для чисельних розрахунків є система комп'ютерної алгебри (СКА) Matlab.

Matlabшироко поширений по всьому світу (див. Порівняння в LXF109), але вартість навіть освітніх ліцензій не по кишені не тільки школам, а й багатьом російським вишам. За кордоном також вважають за краще рахувати гроші – і вкладають людські ресурси у розробку вільних аналогів Matlab. Розглянемо деякі з них.

Насамперед, на мій погляд, варто зупинитися на проекті GNU Oсtave(http://www.gnu.org/software/octave/). Розробники позиціонують цю систему як «високрівневу мову програмування для чисельних розрахунків». Як і багато вільних *nix-проектів з давньою традицією, вона надає інтерфейс командного рядка. Введіть у терміналі octave- І (якщо, звичайно GNU Octaveвстановлена ​​на комп'ютері) перед вами з'явиться запрошення даної системи. Почніть вводити команди, і в терміналі будуть відображатися результати обчислень.

Інтерфейс командного рядка має свої переваги, тому що він практично не забирає обчислювальних ресурсів комп'ютера, залишаючи всю потужність процесора на самі обчислення, а не на гарне відображення тексту команд та результату розрахунків. І все ж таки сучасний користувач рідко готовий миритися з цим.

. Оболонка qtOctaveіз виконаними обчисленнями.

Довгий час GNU Octaveне мала графічного інтерфейсу, поки, нарешті, не з'явився qtOctave(Див. рис. 4). Ця оболонка дуже нагадує інтерфейс Matlabдозволяє автоматизувати виконання деяких рутинних операцій (наприклад, побудови графіків) за допомогою майстрів.

Мова системи зроблена максимально схожою з мовою Matlab; отже, людина, яка освоїла GNU Octave, зможе практично без перенавчання працювати і в Matlab, А саме це і потрібно роботодавцям. Крім того, ентузіастами руху вільного програмного забезпечення для системи створено достатню кількість пакетів розширень. Завдяки цьому функціонал самої СКА постійно зростає. Ну, а наявність вичерпної документації (нехай і англійською мовою) як для системи, так і для пакетів розширень робить цей продукт не тільки вигідним, а й доступним для вивчення.

До мінусів відноситься не зовсім зручний інтерфейс оболонки qtOctave, тим більше що версія не оновлювалася з осені 2008 року (складається враження, що проект покинутий). Пакети розширень не багаті на функції і не блищать графічними можливостями; крім того, вони не рівнозначні, оскільки ситуація така, що один проект розроблено студентом-першокурсником, а другий, наприклад, командою викладачів вишу. Натомість це повністю вільний проект, з яким можна не турбуватися про ліцензійну чистоту одержуваних рішень.

Наступний пакет, який хотілося б розглянути, називається Scilab(http://www.scilab.org), саме ім'я якого вказує на схожість із Matlab. Спочатку це був також комерційний продукт, і називався він Blaise, а потім Basile. Його творців надихнули перші версії Matlabі деякий час вони конкурували. Однак на початку 90-х фірма Simulog припинила його продаж, і тоді шість розробників французького національного дослідницького інституту (INRIA) започаткували проект Scilab.

Scilabвигідно відрізняється від своїх побратимів по цеху опрацьованим інтерфейсом, наявністю досить великої кількості спеціалізованих пакетів розширень, а також тим, що він підтримується Консорціумом Scilab, До складу якого входять великі освітні та наукові установи з усього світу.

Інтерфейс Scilab 5

Scilab- єдина вільна система, аналогічна Matlab, що має свій власний інструмент для блочного моделювання під назвою Scicos. У дистрибутиві продукту є вбудований редактор скриптів та функцій з можливістю налагодження. Scilabмає розвинені графічні можливості для створення високотехнологічних додатків. З функціональністю системи можна ознайомитись, розглянувши демонстраційні приклади – деякі з них дуже вражають (виберіть пункти меню ? > Демонстрація можливостей).

Scilabмає у своєму складі функції не тільки для виконання різноманітних операцій над матрицями, але і для побудови графіків та тривимірних поверхонь у різних системах координат, функції для роботи з генетичними алгоритмами, розв'язання задач на графах, статистичні функції, засоби імітаційного моделювання та багато іншого. Щорічно відбувається кілька конференцій, присвячених використанню СКА Scilabу науці, освіті та на виробництві.

У всьому світі вийшло кілька книг, присвячених опису роботи в Scilab, і навіть вирішенню низки спеціалізованих завдань. На жаль, жодна з них не була перекладена російською мовою. У Росії вийшло лише дві книги, одна – у рамках національного проекту, а в другій Scilabописується поряд із невільними пакетами. Наш журнал також неодноразово друкував підручники про роботу в Scilab(LXF106–109 і ), проте документації поки не вистачає, а довідкові матеріали не завжди дозволяють зрозуміти, як працює та чи інша функція.

Freemat- Вражаючий результат того, на що здатна команда з трьох однодумців.

Вихід п'ятої версії Scilabознаменував собою початок нового етапу у розвитку системи. Змінився інтерфейс програми (розробники відмовилися від GTK-інтерфейсу), почав змінюватися інструмент блочного моделювання Scicos, який у жовтні 2009 року має змінити своє ім'я на Xcos.

Ще однією варіацією на тему Matlabє Freemat(); цей пакет має іншу важливу спільну рису з Matlab, А саме підтримку об'єктно-орієнтованого програмування. Інтерфейс програми досить приємний. В основному вікні реалізовано автодоповнення команд. На офіційному сайті є повний посібник з роботи з системою (англійською мовою). Дистрибутив програми має невеликий, за нинішніми мірками, об'єм – 18 МБ.

Система дозволяє виконувати чисельне розв'язання рівнянь та систем рівнянь, як лінійних, так і нелінійних, та числову обробку сигналів (див. рис. 6); здатна працювати з багатовимірними матрицями. Основними позитивними моментами Freemat, в порівнянні з Scilabі Octave, є велика сумісність внутрішньої мови системи з мовою Matlabта використання OpenGLдля побудови графіків і поверхонь, у результаті вони виглядають якісніше.

Мінусами ж Freematє низька швидкодія (деякі завдання вирішуються у рази повільніше, ніж у інших пакетах) і відсутність пакетів розширень. Ця система розвивається лише зусиллями команди із трьох осіб. Великої спільноти у проекту немає.

Дистанційна математика

Згадані вище системи є локальні проекти, тобто робота з ними ведеться на одній машині. Але це буває незручно – наприклад, під час дистанційного навчання; крім того, не всі студенти погодяться (а іноді й зможуть) поставити ці програми на своїх домашніх комп'ютерах. У цьому випадку потрібні засоби для віддаленої роботи з математичними пакетами.

SMath Studio Live: вважайте, не виходячи з браузера (нехай і не дуже швидко)

Серед розглянутого нами таку можливість надає SMath Studio. В розділі Liveофіційного сайту (http://smath.info/live) розміщується віртуальний робочий лист, на якому будь-хто може виконати свої обчислення. Система дуже зручна, хоч і не блищить швидкодією.

І все ж професійніша в цьому плані система SAGE(http://www.sagemath.org/). Ця система складається з web-сервера, що забезпечує графічний інтерфейс для взаємодії з кодом Pythonна якому написано її ядро. Будь-який користувач за допомогою свого улюбленого веб-браузера може підключитися до сервера, зареєструватися та отримати у свій володіння особистий простір. Воно може бути і відкритим, і закритим, тобто доступним лише адміністратору сервера та самому власнику. У особистому просторі можуть створюватися робочі листи, ними і виконуються все обчислення.

В рамках робочого аркуша можна використовувати будь-яку доступну мову, а таких чимало. За замовчуванням система SAGEпоєднує такі продукти: GAP, Maxima, Python, R, LaTeX. Крім цього, можуть бути підключені Octave, Axiom, Magma, Mathematica, Matlab, Maple, Mupadта інші. В результаті ми отримуємо єдиний сервер віддаленої роботи, що дозволяє навчати будь-яким математичним пакетам і виконувати обчислення за допомогою вільних і комерційних систем комп'ютерної математики.

. З незрозумілих причин, Sageвідмовляється працювати в FirefoxАле в іншому це вдале рішення для віддаленої роботи.

Система прав доступу до особистих просторів та можливість спільної роботи з робочим листом одразу кількох користувачів дозволяє організувати дистанційне навчання з листом пояснення навчального матеріалу, що містить приклади розв'язання завдань, та листами особистих завдань для кожного студента.

В даний час у мережі існує кілька публічних SAGE-серверів – до них можна підключитися, подивитися аркуші, викладені у спільний доступ, завести свій особистий простір і, у разі труднощів, попросити допомоги у спільноти. Для цього просто зробіть робочий лист публічним. Запевняю вас: бажаючих допомогти багато, єдина проблема в тому, що робоча мова – англійська.

На офіційному сайті є посилання на тестовий публічний сервер (http://www.sagenb.org), а також на навчальні матеріали та книги, створені за допомогою даної системи. Зареєструйтесь та спробуйте SAGE- може, це те, що ви шукаєте? Варто також зазначити, що нам не вдалося увійти на сервер в FirefoxАле в інших браузерах проблем не виникло.

Отже, ми розглянули найпопулярніші вільні системи комп'ютерної математики. Чи можна їх використовувати у навчанні та для роботи – вирішувати вам. Ми свій вибір вже зробили і не шкодуємо про це.

Комерційні системи

Серед комерційних систем найбільш популярні три: Matlab(чисельні обчислення), Maple(основний упор зроблено на символьні обчислення) та Mathematica(вдало поєднує устремління перших двох). Окремо стоїть потужний інженерний пакет MathCADоскільки це швидше великий інженерний калькулятор, і він не призначений для вирішення складних завдань математичної фізики або теорії шифрування, обробки сигналів і так далі.

Всі ці пакети мають версії під найпоширеніші платформи: Windows, Linux та Mac OS X. Наведемо вартість однієї ліцензії даних пакетів для академічних установ, згідно з прайс-листом Softline:

  • Matlab- 30 765 руб;
  • Mathematica- 9002 руб;
  • Maple- 36286 руб;
  • MathCAD- 5290 руб.

Висновки ви можете зробити самі.

У системі Maxima є багато вбудованих функцій. Для кожної вбудованої функції можна отримати опис документації, що міститься в довідковій системі. Викликати довідку можна за допомогою функціональної клавіші F1. Також у Maxima є спеціальна функція, яка видає інформацію з документації за конкретними словами. Скорочена версія виклику цієї функції: ?? name (Рис.12). Тут? - це ім'я оператора, і аргумент потрібно відокремлювати від нього пропуском. Оператор? видає список тих розділів допомоги та імен функцій, які містять заданий текст, після чого пропонують ввести номер того розділу або опис тієї функції, які потрібно подивитися:

Рис.12. Виклик довідки по команді системи Maxima.

Зауважимо, що у системі Maxima немає чіткого розмежування між операторами та функціями. Більш того, кожен оператор – це насправді функція.

Усі функції та оператори Maxima працюють не тільки з дійсними, але й комплексними числами. Самі комплексні числа записуються в формі алгебри, з уявною одиницею, позначеної через %i; тобто у вигляді a+b*%i, де аі b- відповідно дійсна та уявна частини числа.

Розглянемо синтаксис базових функційсистеми Maxima.

1. Арифметичні оператори: +, -, *, /, ->. Приклад:

3. Логічні оператори: and, or, not. Приклад:

4. Функція знаходження факторіалу числа: !

Факторіал заданий у найбільш загальному вигляді і є, по суті, гамма-функцію (точніше, x! = gamma(x+1)), тобто визначений на багатьох комплексних чисел, крім негативних цілих. Факторіал від натурального числа (і нуля) автоматично спрощується до натурального числа.

5. Функція знаходження напівфакторіалу чила: !! (твір всіх парних (для парного операнда) чи непарних чисел, менших чи рівних цьому).

6. Функція заперечення синтаксичної рівності: #Запис a#b еквівалентний not a=b.

7. Функція знаходження модуля числа x: abs(x) Модуль визначено всім комплексних чисел. Приклад:

8. Функція, що повертає знак числа x: signum(x)

9. Функції, що повертають найбільше та найменше значення із заданих дійсних чисел: max(x1,...,xn) та min(x1,...,xn).

10. Деякі вбудовані математичні функції:

sqrt (x) Квадратний корінь з x
acos (x) Арккосинус аргументу х
acosh (x) Гіперболічний арккосинус аргументу х
acot (x) Арккотангенс аргументу х
acoth (x) Гіперболічний арккотангенс аргументу х
acsc (x) Арккосеканс аргументу х
acsch (x) Гіперболічний арккосеканс аргументу х
asec (x) Арксеканс аргументу х
asech (x) Гіперболічний арксеканс аргументу х
asin(x) Арксинус аргументу х
asinh (x) Гіперболічний арксинус аргументу х
atan (x) Арктангенс аргументу х
atanh (x) Гіперболічний арктангенс аргументу х
cosh (x) Гіперболічний косинус аргументу х
coth (x) Гіперболічний котангенс аргументу х
csc (x) Косеканс аргументу х
csch (x) Гіперболічний косеканс аргументу х
sec(x) Секанс аргументу х
sech (x) Гіперболічний секанс аргументу х
sin(x) Синус аргументу х
sinh(x) Гіперболічний синус аргументу х
tan(x) Тангенс аргументу х
tanh (x) Гіперболічний тангенс аргументу х
log(x) Натуральний логарифм х
exp(x) Експонента х

11. Функції до роботи з матрицями:

determinant – знаходження визначника матриці:

eigenvalues ​​– знаходження власних значень матриці:

invert- Отримання зворотної матриці:

minor- Визначає мінор матриці. Перший аргумент – матриця, другий та

третій – індекси рядка та стовпця відповідно:

rank– ранг матриці:

submatrix- Повертає матрицю, отриману з вихідним видаленням

відповідних рядків та (або) стовпців. Як параметри слідують

номери рядків, вихідна матриця, номери стовпців, що видаляються.

transpose- транспонування матриці:

У мові системи Maxima закладені основні оператори, які є в будь-якій мові програмування. Розглянемо їх.

Оператори надання значень (іменування виразів).

1. Оператор ":" (оператор завдання значення змінної).

2. Оператор «:=» (оператор завдання функції користувача).

3.Розширені варіанти операторів присвоєння та завдання функції, що позначаються відповідно через: і::=.

Використання оператора завдання функції користувача значно полегшує роботу з нею, оскільки до неї можна звертатися по імені та легко та зручно обчислювати значення функції у заданих точках.

Приклад: знайдемо значення функції f (x,y)=cosx + sin yу точці

Оператор циклу.Оператор циклу може задаватися кількома способами. Спосіб завдання залежить від того, чи відомо наперед скільки разів необхідно виконати тіло циклу.

Приклад: завдання циклу для виведення значень змінної ав діапазоні від -3 до 10 з кроком 5:

Наступною важливою можливістю системи Maxima є робота зі списками та масивами.

Для формування списків використовується команда makelist. Наприклад, за допомогою команди

ми сформували список з ім'ям x, що складається із десяти елементів, значення яких знаходяться за формулою .

Для формування масивів використовується команда array. Наприклад, за допомогою команди,

ми сформували двовимірний масив A, що складається з 10 рядків та 5 стовпців. Для заповнення масиву елементами скористаємося циклом із параметром. Наприклад,

Для виведення елементів масиву на екран можна скористатися командою:

Масив можна формувати без попереднього оголошення. У наступному прикладі ми сформували одновимірний масив x, що складається з 5 елементів, значення яких обчислюються формулою x( i)=sin i

Незручність роботи з масивами полягає в тому, що виведення значень елементів масиву здійснюється у стовпець. Набагато зручніше, якщо значення масиву (двовимірного) виводяться у вигляді матриці. Для цього можна скористатися командою genmatrix. Наприклад, для формування двовимірного масиву (матриці) слід задати команду в наступному вигляді:

Виведемо отриманий масив:

6. Найпростіші перетворення виразів.

За умовчанням у системі Maxima є активною функція автоспрощення, тобто. система намагається спростити вираз, що вводиться сама без будь-якої команди.

приклад. Нехай потрібно знайти значення наступного числового виразу:

Задамо вираз за правилами мови системи Maxima.

Як бачимо, система у відповідь вивела значення виразу, хоча ми не задали жодної команди.

Як же змусити систему вивести не результат, а вираз? Для цього функцію спрощення треба відключити за допомогою simp: false$. Тоді отримаємо:

Щоб активувати функцію спрощення, треба задати команду simp:true$. Функція автоспрощення може працювати як із числовими, так і з деякими не числовими виразами. Наприклад,

При введенні ми можемо звертатися до будь-якого з попередніх осередків на її ім'я, підставляючи його в будь-які вирази. Крім того, останній осередок виведення позначається через %, а останній осередок введення - через _. Це дозволяє звертатися до останнього результату, не відволікаючись, який його номер. Але такими зверненнями до осередків зловживати зайве, оскільки за переоцінювання всього документа чи його окремих осередків введення може статися суперечність між номерами осередків.

приклад. Знайти значення виразу та збільшити отриманий результат у 5 разів.

Бажано замість імен осередків використовувати змінні та присвоювати їх імена будь-яким виразам. І тут у вигляді значення змінної може бути будь-яке математичне вираз.

Значення імен змінних зберігаються протягом всієї роботи з документом. Нагадаємо, що якщо необхідно зняти визначення зі змінною, то це можна зробити за допомогою функції kill(name), де name - ім'я виразу, що знищується; причому це може бути як ім'я, призначене вами, так і будь-яка комірка введення або виведення. Так само можна очистити всю пам'ять і звільнити всі імена, ввівши команду kill(all) (або вибрати меню Махта->Очистить пам'ять(Clear Memory)). У цьому випадку очистяться навіть всі осередки введення-виведення, і їх нумерація знову почнеться з одиниці.

Функція автоспрощення далеко не завжди здатна спростити вираз. На додаток до неї є цілий ряд команд, які призначені для роботи з виразами: раціональними та ірраціональними. Розглянемо деякі з них.

rat (вираз) - перетворює раціональний вираз до канонічної форми: розкриває всі дужки, потім приводить все до спільного знаменника, підсумовує та скорочує; наводить всі числа в кінцевому десятковому записі до раціональних. Канонічна форма автоматично «скасовується» у разі будь-яких перетворень, які не є раціональними.

ratsimp (вираз) - спрощує вираз за рахунок раціональних перетворень. Працює навіть «вглиб», тобто ірраціональні частини висловлювання не розглядаються як атомарні, а спрощуються, зокрема, і всі раціональні елементи всередині них

fullratsimp(вираз) - функція спрощення раціонального вираження методом послідовного застосування до переданого виразу функції ratsimp(). За рахунок цього функція працює дещо повільніше, ніж ratsimp(), проте дає більш надійний результат.

expand (вираз) - розкриває дужки у виразі всіх рівнях вкладеності. На відміну від функції ratexpand(), не приводить дроби-складові до спільного знаменника.

radcan (вираз) - функція спрощення логарифмічних, експоненційних функцій та статечних з нецілими раціональними показниками, тобто коренів (радикалів).

Часто при спробі спрощення вираження у Maxima може відбуватися насправді лише його ускладнення. Збільшення результату може відбуватися через те, що невідомо, які значення можуть набувати змінні, що входять до виразу. Щоб цього уникнути, слід накладати обмеження на значення, які може набувати змінна. Робиться це за допомогою функції assume (умова). Тому в деяких випадках найкращого результату можна досягти, комбінуючи radcan() з ratsimp() або fullratsimp().

Усі команди вводяться у полі ВВЕДЕННЯ, роздільником команд є символ; (крапка з комою). Після введення команди необхідно натиснути клавішу Enter 2 У wxMaximaпотрібно натиснути Shift+Enter.для її обробки та виведення результату. У ранніх версіях Maximaта деяких її оболонках (наприклад, xMaxima) наявність крапки з комою після кожної команди суворо обов'язково. Завершення введення символом $ (замість точки з комою) дозволяє обчислити результат введеної команди, але не виводити його на екран. У разі, коли вираз треба відобразити, а не обчислити, перед ним необхідно поставити знак "(одинарна лапка). Але цей метод не працює, коли вираз має явне значення, наприклад, вираз замінюється на значення, що дорівнює нулю.

Дві одинарні лапки послідовно, застосовані до виразу у вхідному рядку, призводять до заміщення вхідного рядка результатом обчислення виразу, що вводиться.

Приклад:

(%i3) sqrt(aa)+bb;

(% i4) "(sqrt(aa)+bb);

2.5.1 Позначення команд та результатів обчислень

Після введення кожній команді надається порядковий номер. У розглянутому прикладі введені команди мають номери 1–5 і позначаються відповідно (%i1), (%i2) тощо.

Результат обчислення також має порядковий номер, наприклад і т.д., де i- Скорочення від англ. input (введення), а о- англ. output (висновок). Цей механізм дозволяє уникнути в наступних обчисленнях повторення повного запису вже виконаних команд, наприклад (%i1)+(%i2) означатиме додавання до виразу першої команди - виразу другої та наступного обчислення результату. Також можна використовувати номери результатів обчислень, наприклад . Для останньої виконаної команди Maxima є спеціальне позначення - .

Приклад:

Обчислити значення похідної функції :

(% i1) diff (x ^ 2 * exp (-x), x);

(%i2) f(x):=""%;

Подвійна лапка перед символом попередньої операції дозволяє замістити цей символ значенням, тобто. текстовим рядком, отриманим у результаті диференціювання.

Інший приклад (з очевидним змістом):

2.6 Числа, оператори та константи

2.6.1 Введення цифрової інформації

Правила введення чисел у Maximaтакі ж, як і для багатьох інших подібних програм. Ціла і дрібна частина десяткових дробів поділяються символом крапка. Перед від'ємними числами ставиться знак мінус. Чисельник і знаменник звичайних дробів розділяється символом / (прямий слеш). Зверніть увагу, що якщо в результаті виконання операції виходить деякий символьний вираз, а необхідно отримати конкретне числове значення у вигляді десяткового дробу, то вирішити це завдання дозволить застосування прапора . Зокрема, він дозволяє перейти від звичайних дробів до десяткових. Перетворення до форми з плаваючою точкою здійснює також функція.

(%i2) 3/7+5/3, float;

(%i3) 3/7+5/3, numer;

(%i4) float(5/7);

2.6.2 Арифметичні операції

Позначення арифметичних операцій на Maximaнічим не відрізняється від класичного уявлення: +, -, *, /. Зведення у ступінь можна позначати кількома способами: ^, ^^, **. Вилучення кореня ступеня n записуємо, як ступінь . Операція знаходження факторіалу позначається знаком оклику, наприклад 5!. Для збільшення пріоритету операції, як і математики, використовуються круглі дужки: (). Список основних арифметичних та логічних операторів наведено у табл. 2.1 та табл. 2.2 нижче.

Таблиця 2.2. Логічні оператори
< оператор порівняння менше
> оператор порівняння більше
<= оператор порівняння менше чи одно
>= оператор порівняння більше чи одно
# оператор порівняння не дорівнює
= оператор порівняння одно
and логічний оператор та
or логічний оператор або
not логічний оператор не

При введенні кожній команді та результату, як зазначалося вище, надається порядковий номер.

Стиль позначень, що використовується, дозволяє при подальшому запису команд послатися на раніше отримані результати, наприклад, таким чином (% o 1)*(% o 2) – результати потрібно перемножити.

Для останньої відповіді у Maxima є спеціальне позначення%. А для останньої команди _ (символ підкреслення).

приклад: Обчислити значення функціїу точках x= a, та обчислити .

Команда (%i1) була виконана (з'явився результат %о1) і було визначено функцію. Тому наступні дві команди (%i2) і (%i3) викликали (хоча й по-різному) цю функцію, щоб розрахувати значення заданих точках. З (%i4) видно, що посилання на рядок результату (%о2) можна писати і без дужок ().

Основні математичні операції в Maxima позначаються звичайним чином: +,-, *, /. Зведення у ступінь зручності передбачено записувати трьома різними способами ^, ^^, **. Знак присвоєння – це двокрапка« : », команду для Maxima «а:2;» слід читати так: «змінною априсвоїти число 2». Наприкінці команди окрім крапки з комою « ; допустимо ставити знак долара $. За наявності точки з комою результат виводиться на екран, за наявності долара результат не виводиться на екран, виняток становлять команди для виведення графіків, що закінчуються доларом, але виводять на екран графік.

3.1. Змінні Максима

Змінні вMaximaможуть зберігати символи, аналітичні вирази, визначення функцій, логічні значення "true", "false", списки, рівняння, рядки тексту, укладеного в подвійні лапки, у складі якого є кириличні символи, і, звичайно ж, числа: цілі, раціональні дроби , речові фіксованої точності та речові з плаваючою точкою необмеженої точності типу %pi.

З наступного прикладу видно, щоMaxima цілком закінчений математик, для неї змінна хі щось - нікому незрозумілий об'єкт "Петя" - нічим не відрізняються. Maxima

У цьому прикладі Maxima розділила ("Петя" 2-4) / ("Петя" -2) і отримала "Петя" +2. Потім з "Петя" +2 Maxima забрала "Петя" і в результаті отримала ціле число 2.

3.2. Можливі помилки обчислень

З наступного прикладу випливає, що в операціях з числамиMaxima "ручається" тільки за 16 значущих цифр і "ніщо комп'ютерне їй не чуже", у неї теж є суто обчислювальні проблеми (див. %о3) з округленням при обчисленнях.

Справа в тому, що у наведених прикладах Maxima здійснює обчислення не цілими числами, а з наближеними. Розрахунки проводяться над десятковій системі і шляхом формальної заміни розподілу введенням множника 10 –5 . Поділ виробляється реально у двійковій системі. Наближені числа мають стандартну довжину, що плаває кому. Результати округляються так, щоб залишалися 16 цифр.

У цьому прикладі з'явилася несподівана″ добавка ″ незначна і становить лише 0,3*10 –21 .

У наступному прикладі вона значно більша. Але, як і в попередньому випадку, також є наслідком технічних можливостей комп'ютера при здійсненні арифметичних операцій з плаваючою комою

За рахунок реального виконання арифметичних обчислень результати виявляються неточними: відповіді %о3 і %о4 відрізняються від нуля.

3.3. Записів рівнянь

Якщо записана команда містить знак рівності,Maxima розглядає її як рівняння, від лівої та правої частини якого можна відібрати одну й ту саму величину, і можна обидві частини рівняння помножити на ту саму величину, при множенні двох рівнянь окремо перемножуються їх ліві та праві частини.

3.4. Невизначена форма виразів

Вирази у Maxima можуть мати дві форми: діючуі невизначену. Тоді, коли вираз треба лише відобразити, а чи не обчислити ( невизначена форма ) , перед ним слідує поставити знак (Одинарна лапка). Наприклад, ми побажали відобразити те завдання, яке ми побачили першим у вікні XMaxima тому скопіюємо текст завдання, додамо лапку, і викличемо інтерпретатор. Отримаємо

звідки бачимо, що перший приклад у вікні XMaxima присвячений обчисленню представленого тут інтегралу.

Однак, зазначений метод не спрацює, якщо вираз має явне значення, наприклад вираз sin(π ) Maxima розглядає як нуль та за наявності апострофа. Відповідно co s (2 π ) для Maxima точно дорівнює одиниці.

З іншого боку, щоб примусово змусити вираз обчислити, тобто перевести його в форму, що діє, слід поставити одиночну лапку два рази (застосувати оператор діючої форми – ′′ ).

3.5. Виклик довідки

Важко передбачити різноманітність можливих варіантів запису команд з метою використання Maxima для розрахунку чи перетворення виразів. У складних випадках можна отримати довідку англійською мовою.

Для виклику довідки слід написати?topicі викликати інтерпретатор натисканнямShift+Enter, де topic– це ключове слово (тема) довідки.

Команда? topic викликає пошук на всі теми довідки, що містять ключове словоtopic.

У наступному прикладі ми хотіли запитати про знак факторіалу, але не поставили прогалину після знаку питання (помилувались). Maxima відповіла, що не існує точно такої, як у запиті, ( exact match) теми.

І порадила спробувати (Try) вдруге (??) Запитати з метою отримання не цілком точної відповіді. Про те, що відповідь була незадовільною, Maxima повідомила у вигляді falseу рядку відповіді (%о1).

У наступному питанні ми також помилилися (знову не поставили прогалину), але хотіли запитати про функцію cos ( x), Вийшло незрозуміло для програми і тому взагалі жодної відповіді не отримали.

У випадку з факторіалом (!) при вторинному запиті Maxima дала вичерпну відповідь (яку ми трохи скоротили)

У відповіді Maxima спочатку створила нумерований список відповідей (в даному випадку має два номери 0 і 1), потім запропонувала ввести розділені пробілом ( space - separated ) номери розділів або вказати всі ( all ) або ніякі (none ) з них. Після уточнення ( а), яке вона зрозуміла як ( all ), Maxima надрукувала довідку з запитуваної теми "факторіал".

3.6. Введення цифрової інформації

Правила введення чисел у Maxima точно такі, як і для багатьох інших подібних програм. Ціла та дробова частина десяткових дробів поділяються символом крапка. Перед негативними числами ставиться знак мінус. Чисельник і знаменник звичайних дробів поділяються символом / ( прямий слеш).

Зверніть увагу, що якщо в результаті виконання операції виходить деякий символьний вираз, а необхідно отримати конкретне числове значення у вигляді десяткового дробу, то вирішити це завдання дозволить застосування опції numer. Зокрема, опція numerдозволяє перейти від звичайних дробів до десяткових:

Тут Maxima насамперед діяла за умовчанням. Вона склала дроби 3/7 та 5/3 за правилами арифметики точно: знайшла і привела дроби до спільного знаменника та склала чисельники. У результаті вона здобула 44/21. Лише після того, як ми попросили її отримати чисельну відповідь, вона вивела наближену, з точністю 16 знаків, чисельну відповідь 2,095238095238095.

3.7. Зведення у ступінь та старшинство операцій

Як зазначалося вище, позначення арифметичних операцій на Maxima не відрізняються від класичного уявлення, використовуються самі математичні знаки: + – * /. Але зведення ступінь передбачено позначати трьома способами: ^ , ^^ , **.

Вилучення квадратного кореня виробляє функція sqrt (), витяг коріння ступеня nзаписують як ступінь ^^(1/ n).

У Maxima визначено стандартні операції – знаходження факторіалу числа (наприклад, 6! = 1· 2 · 3 · 4 · 5 · 6 = 120) та знаходження подвійного факторіалу (наприклад, 6!! =2· 4 · 6 = 48; 7! = 1 · 3 · 5 ·7= 105).

Для збільшення пріоритету операції під час запису команд для Maxima використовують круглі () дужки.

Як очевидно з наведених результатів обчислень (%о13)–(%iо5), Maxima правильно розуміє старшинство операцій: спочатку виконала зведення ступінь і лише потім операцію поділу. Виконуючи команду (%i13), вона звела в ступінь 1 і розділила результат на 3, але при виконанні команди (%i14) обчислила корінь третього ступеня, результат (%15) дорівнює добутку (%13) і (%14).

3.8. Константи

У Maxima для зручності обчислень є низка вбудованих констант, найпоширеніші їх показано у наступній таблиці (табл. 1):

Таблиця 1

Назви констант та їх позначення в Maxima

Назва

Позначення

π (число Піфагора)

e(Ейлерове число)

Уявна одиниця ()

+∞ (плюс нескінченність)

– ∞ (мінус нескінченність)

minf

Істина

true

Брехня

false

Комплексна нескінченність

infinity

ліворуч (щодо меж)

minus

праворуч (щодо меж)

plus

Золотий перетин ()

%phi

3.9. Змінні та вирази

Для зберігання результатів проміжних розрахунків використовують змінні. Зауважимо, що з введення назв змінних, функцій і констант важливий регістр літер. Так, змінні xіX - Це дві різні змінні.

Привласнення значення змінної здійснюється за допомогою символу : (двокрапка), наприклад x: 5.

Якщо необхідно видалити значення змінної (очистити її), то застосовується метод kill : kill (x ) – видаляє значення змінної x, а команда kill(all) – видаляє значення всіх використовуваних змінних. І, крім того, метод kill починає нову нумерацію для команд, що виконуються (зверніть увагу, що відповіддю на команду (%i3), наведену нижче, виявилася відповідь з номером нуль (%o0) done, І далі нумерація команд знову почалася з одиниці).

Нагадаємо також, що в одному рядку (див. % i 1), можна записати кілька команд, розділяючи останні символом ; (точка з комою) або знаком $ (долар), якщо нам не потрібне виведення результату на монітор.

Математичні операції в Maxima використовуються для запису виразів. Все в Maxima є виразами, у тому числі математичні вирази як такі, а також об'єкти та програмні блоки. Найпростіше вираз є атом, або оператор з аргументами.

атом - символ (ім'я), рядок у подвійних лапках, або число (ціле або з плаваючою точкою).Всі вирази не-атоми подаються у вигляді oper(a1 ,.., aN), де oper -ім'я оператора, a1,..., aN -його аргументи. Вирази можуть відображатися по-різному, але внутрішнє уявлення завжди однаково. Аргументи висловлювання може бути атомами, чи висловлюваннями не-атомами.

Команда opповертає оператор, argsповертає аргументи, atomвизначає, чи є вираз атомом.

Наприклад:

Функція symbolpповертає "true", якщо її аргумент є символом.

Функція двох аргументів freeof(,) повертає «true», якщо другий аргумент вільний (не містить) першого аргументу.

Функція zeroequiv(,) перевіряє, чи є її аргумент -функція одного аргументу - нулем. Zeroequiv повертає "true", якщо її аргумент дорівнює нулю і "false" в іншому випадку.

Функція zeroequiv може бути корисною в тих випадках, коли в результаті ряду перетворень немає впевненості в тому, що отримана функція є тотожною вихідною.

3.10. Математичні функції

Maxima має великий набір вбудованих математичних функцій. Найчастіше використовувані наведені у табл. 2.

Таблиця 2

Вбудовані математичні функції Maxima

Функції

Позначення

Тригонометричні

sin (синус),

cos (косинус),

tan (тангенс),

cot (котангенс)

Зворотні

тригонометричні

asin (арксинус),

acos (арккосинус),

atan (арктангенс),

acot (арккотангенс)

Секонс, косеконс

sec (x) = 1/cos (x), (секонс),

csc (x) = 1/sin (x), (косеконс)

Натуральний логарифм

log()

квадратний корінь

sqrt()

модуль

abs()

залишок від ділення

mod(,)

Мінімальний зі списку

min(x1, ..., xN)

Максимальний зі списку

max(x1, ... ,xN)

Знак аргументу

Pos (x>0),

Zero (x=0),

sign(x); = neg (x<0),

Pnz – (не визначено)

Випадкове число

random (N ) – ціле, із проміжку

якщо N-ціле

random (float (P )) – число з плаваючою точкою

Слід мати на увазі, що деякі назви функцій відрізняються від назв, які використовуються у вітчизняній літературі. Maxima використовується замість tg – tan, замість ctg – cot, замість arcsin – asin, замість arccos – acos, замість arctg – atan, замість arcctg – acot, замість ln – log, замість cosec – csc.

Приклади використання функцій:

3.11. Правило запису функцій

Для запису функції необхідно вказати її назву, а потім у круглих дужках записати через кому значення аргументів. Якщо значенням аргументу є список, він полягає у квадратні дужки, а елементи списку також поділяються комами.

3.12. Функції користувача

Користувач може встановити власні функції. Для цього спочатку вказується назва функції, у дужках перераховуються назви аргументів, після знаків := (двокрапка і дорівнює) слідує опис функції, який може бути нематематичним. Після завдання функція користувача викликається точно так, як і вбудовані функції Maxima.

Потрібно пам'ятати, що не слід використовувати для назв, зарезервованих для вбудованих функцій.Maxima(Записані вище у табл. 2).

3.13. Переклад складних виразів у лінійну форму запису

Одним із найскладніших занять для початківців користувачів системи Maxima є запис складних виразів, що містять ступеня, дроби та інші конструкції, лінійній формі(у текстовій формі запису, за допомогою ASCII символів, в один рядок).

Для полегшення цього процесу не зайве дати кілька рекомендацій:

1. Не забувайте ставити знак множення! У графічному вікні Maxima за правилами математики подвоєне значення змінної хзаписує у вигляді 2 x, але при записі команда для Maxima має виглядати як 2*x.

2. Але між ім'ям функції та дужкою з аргументом знак множення не пишеться; sin * (x ) – тут знак множення зайвий.

3. У разі сумніву завжди краще перестаратися та поставити «зайві», додаткові. дужки(). Чисельник і знаменник виразу завжди необхідно укладати у дужки. При записі зведення в ступінь основу та ступінь краще завжди брати в дужки.

4. Функція немає окремо від своїх аргументів (якщо такі є). Тому, наприклад, при зведенні в ступінь функції деякого аргументу слід взяти всю функцію з аргументами у дужки, а потім уже зводити отриману конструкцію в потрібний ступінь: ( sin (x ))**2. Дуже часто користувачі-початківці намагаються звести в ступінь тільки назву функції, забуваючи про аргументи: sin **2(x ) - це не правильно!

5. Також необхідно пам'ятати, що кілька аргументів функції записуються в дужках, через кому, наприклад min (x 1, x 2, x 3, x N ).

6. Неприпустимий запис функції sin (2* x ) у вигляді sin *2* x або sin 2 x . Запам'ятайте, як дієMaximaпри записі дужок: як тільки ви намагаєтеся написати дужку, вона відразу пише другу - парну їй - дужку, що закриває. Тому при записі функцій напишіть назву функції, потім поставте після неї порожні дужки і тільки потім у цих дужках напишіть усі її аргументи, розділяючи їх комами. Ніяких конструкцій між назвою функції і дужкою, що відкривається, бути не повинно!

7. У разі запису складного виразу розбийте його на кілька простих складових, введіть їх окремо, а потім об'єднайте, використовуючи розглянуті раніше позначення.

Приклади простих команд для Maxima :

Математичний запис

Команда для Maxima

(x+2)/(y–7)

(x+3)**(2*y)

sin((x–2)/(a+3))

((x–2)/(a+3)+2)/(4–(y–7)/(b+4))+12*x

Вправа:Н необхідно ввести наступне вираз:

Вказівки до виконання: Розділимо цей вираз на три складові: будемо окремою частиною вважати чисельник, вираз, що стоїть у знаменнику в дужках, і ступінь. Введемо кожну названу складову частину, і об'єднаємо їх у вираз.

При введенні команд рядок з помилковим записом команди для Maxima можна виділити та видалити з графічного екрана (з клавіатури), а замість неї написати та виконати (з клавіатури натисканнямShift+ Enter) правильну команду, слід очікувати, що номер відповіді у своїй зміниться.

Якщо клацнути мишкою в незафарбований трикутник, то трикутник зафарбується, а рядок з результатом буде прихований, з'явиться запис (1 lines hidden). Щоб видалити з екрана і відповідь, і команду (блок, позначений ліворуч квадратною дужкою), слід клацанням миші виділити квадратну дужку у пари введення-відповідь, викликати клацанням правої кнопки миші контекстне меню і вибрати опцію Delete Selection. Так, у попередніх прикладах рядка з командою (%i4) і з відповіддю (%o4) немає – вони видалені.

Зауважимо також, що під час запису команди для Maxima (%o1)/(%o2)**(%o3) у рядку (%i5) цілком допустимо перестрахуватися і написати інакше, використовуючи додаткові дужки для знаменника: (%o1)/((%o2)**(%o3) ). Але Maxima правильно нас зрозуміла і без цих «зайвих дужок» і обчислила математично, що вводиться вираз, правильно, оскільки розуміє прийняте в математиці старшинство операцій: передусім обчислюються аргументи (оскільки перебувають у дужках) і функції, потім виконується зведення ступінь, потім операції розподіл і множення і тільки потім – додавання і віднімання.

by 0):
а) y: 2/ x; x: 0; б) u: 0; v :2/u; в) z: 0; t: 2/ Z; і чому?

3. Що є оператором у виразах а) x^y; б) - t; в) x + y;

4. Що відповість Maxima, якщо виконати команду: u – v; op(%);?

5. Чому рівні вираження: а) 4 * - 2; б) 4*+2; в) 4** - 2;?

6. Що є аргументами у виразі fas (p, q): = p - q?

7. Чи є атомом вираз abc?

8. Чому в наступних прикладахMaxima зуміла чисельно розрахувати tg(π /2) і але відмовилася робити чисельні обчислення для ctg(0)?

9. Яка відповідь дасть Maxima, якщо команда для неї буде такою:

10. Що більше eπ або π e?

11. На скільки відсотків більше із порівнюваних чисел перевищує менше?

12. Що відповість Maxima, якщо команда для неї буде такою:

У Максима реалізовано можливість завдання математичних функцій. Але я почну з того, що розповім про вбудовані функції. Як правило, ці функції записуються аналогічно до математики.

Тільки математика ця американська, а не вітчизняна. Тому звичні нам зі школи tg слід замінювати на tan. Ось список тих функцій, які я зміг знайти самостійно:

Функція в Maxima

Функція математики

Гіперболічний синус.

Гіперболічний косинус.

Гіперболічний тангенс.

Натуральний логарифм.

Арктангенс

Арксинус

acos(x) Арккосинус

А ви знали, що якщо взяти арксинус/арккосинус від числа більше 1, то у вас вийде комплексне значення?

Напевно, вбудованих функцій куди більше. Якщо вам ще щось потрібно, спробуйте звернутися до посібника з wxMaxima/Maxima. Там багато цікавого для любителя-початківця чисельних обчислень.

Рисунок 8: Вбудовані функції Maxima.

Якщо ви введете функцію, яка програмі не відома, то вона покаже вам такий самий рядок, як ви ввели. Але будьте уважні! Якщо у вас встановлено прапор numeric в дефолтне положення, то вона поведеться так само і з заданою функцією. Так що якщо ви маєте намір все ж таки отримати свою відповідь, то перемкніть прапор, або передавайте функції речовий параметр.

Тепер про те, як ставити власні функції. Як і математики, функція може бути визначена виразом. Щоб встановити функцію, ви повинні скористатися наступним оператором:

Після визначення ви можете використовувати її так само, як і вбудовані функції: f(3)

Функція також може мати кілька параметрів, які задаються і передаються через кому. Приклад можна побачити на наступному скріншоті.

Малюнок 9: Власні функції wxMaxima

Як бачите, нічого складного. Використовуйте функції для спрощення розрахунків. Якщо ви послідовно порахуєте свої дані, використовуючи функцію, то у вас вже вийде красива табличка.

Циклічне оброблення даних.

Це, мабуть, найскладніша частина керівництва, тому що вона використовує малозрозумілі непрограмісти цикли. Але якщо ви будете акуратно вводити команди і не помилятися, все буде пучком.

Допустимо, у вас є список A, який ви запровадили за правилами, наведеними в розділі про введення. Допустимо, в ньому знаходяться амплітудні значення струму. Тоді, щоб отримати дійсні значення, вам необхідно кожне з них поділити на 2 .

for I in A do ldisp(I/sqrt(2))

По порядку. Тут for – це ключове слово, що означає цикл. I це тимчасова змінна, що відповідає одному з елементів списку. А це масив, який вже був введений раніше. Ключове слово do говорить максимі що треба робити, проходячи масив. Прохід масиву здійснюється по черзі, тобто дія після do виконується стільки разів, скільки знаходиться елементів у масиві, а змінна I приймає на кожній ітерації (ітерація – одне виконання циклу) значення a, a, …, a [n]. Далі йде хитра функція ldisp, яка дає нам змогу побачити, що вона там такого нарахувала. А параметром цієї функції є вираз. Якщо ви нічого не зрозуміли, то не вдавайтеся до цих описів. А просто спробуйте самі дати цю команду і змінити її параметри.

Примітка: Імена змінних та інших об'єктів у максиму реєстрозалежні. Це означає, що I та i це дві різні змінні.

Рисунок 10: Команда циклічної обробки.

Цей спосіб підходить вам, якщо ви хочете подивитися розрахункові значення і потім записати їх кудись до себе в лабник. А якщо вам потрібно зробити над ними якісь розрахунки, то, очевидно, їх треба подати у зручному для цього вигляді. Наприклад, можна занести дані до списку, аналогічного вихідному. Для початку потрібно створити порожній список, щоб потім в нього можна було додавати дані циклічно. Це досягається командою:

Тепер можна заповнювати:

for i in a do b:append(b, )

Цей цикл схожий на попередній, але в нього потрібно було внести деякі

зміни, адекватні задачі. Тепер кожну ітерацію циклу в ньому відбувається переприсвоєння списку b. Його надається список, складений функцією append з минулого складу списку b і ще одного списку, в якому знаходиться лише одне значення нового розрахованого елемента. Результатом є заповнений список b, яким ви можете оперувати, начебто самі запровадили його. Щоб подивитися, що там є, просто введіть команду

Ви побачите ваш список.

Малюнок 11: Розрахунок із збереженням результатів.

Усього сказаного вже достатньо, щоби порахувати звичайну лабораторну роботу. Особливо якщо ви все це прочитали. Послідовність дій ваша має бути приблизно такою:

1. Введіть список вихідних експериментальних значень.

2. Задати функції до розрахунку значень.

3. Дати команди циклічний облік списків.

4. Занести дані у ваш лабник.

5. Закрити лабник, і йти пити пиво на парапет, абокудись ще.

А тепер я розповім про деякі додаткові фішки, які можуть допомогти вам під час підготовки до здачі роботи.

© 2024 androidas.ru - Все про Android