Контакти

Maximo властивості системи історія значень. Тихон Тарнавський. Maxima - максимум свободи символьних обчислень. Завдання на будинок

Так як в цьому циклі статей йтиметься про математичної програмі для символьних обчислень, для початку пару слів про те, що з себе представляють ці самі символьні або, як їх ще називають, аналітичні обчислення, на відміну від чисельних розрахунків. Комп'ютери, як відомо, оперують з числами (цілими і з плаваючою комою). Наприклад, рішення рівняння x 2 \u003d 2 x + 1 можна отримати як -0.41421356 і 2.41421356, а 3 x \u003d 1 - як 0.33333333. Але ж хотілося б побачити не наближену цифровий запис, а точну величину, т. Е. 1 ± √2 в першому випадку і 1/3 у другому. З цього найпростішого прикладу і починається різниця між чисельними і символьними обчисленнями. Але крім цього, є ще завдання, які взагалі неможливо вирішити чисельно. Наприклад, параметричні рівняння, де у вигляді рішення потрібно висловити невідоме через параметр; або знаходження похідної від функції; да практично будь-яку досить загальну задачу можна вирішити тільки в символьному вигляді. Тому не дивно, що і для такого класу задач з'явилися комп'ютерні програми, Які оперують уже не тільки числами, а майже будь-якими математичними об'єктами, від векторів до тензорів, від функцій до інтегро-диференціальних рівнянь і т. Д.

Максима в науці та освіті

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

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

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

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

Трохи історії

Історія проекту, відомого нині під ім'ям Maxima, почалася ще в кінці 60-х років в легендарному MIT (Massachusetts Institute of Technology - Массачусетський технологічний інститут), коли в рамках існуючого в ті роки великого проекту MAC почалася робота над програмою символьних обчислень, яка отримала ім'я Macsyma (від MAC Symbolic MAnipulation). Архітектура системи була розроблена до липня 1968 р безпосередньо програмування почалося в липні 1969. в якості мови для розробки системи був обраний Lisp, і історія показала, наскільки це був правильний вибір: з існуючих в той час мов програмування він єдиний продовжує розвиватися і зараз - майже через півстоліття після старту проекту. Принципи, покладені в основу проекту, пізніше були запозичені найбільш активно розвиваються нині комерційними програмами - Mathematica і Maple; таким чином, Macsyma фактично стала родоначальником всього напряму програм символьної математики. Природно, Macsyma була закритим комерційним проектом; його фінансували державні і приватні організації, серед яких були увійшло в історію ARPA (Advanced Research Projects Agency; пам'ятайте ARPAnet - предок інтернету?), Енергетичний та Оборонний Департаменти США (Departments of Energy & Defence, DOE and DOD). Проект активно розвивався, а організації, які контролюють його, змінювалися не раз, як це завжди буває з довгоживучими закритими проектами. в 1982 році професор вільям Шелтер (William Schelter) почав розробляти свою версію на основі цього ж коду, під назвою Maxima. в 1998 році Шелтер вдалося отримати від DOE права на публікацію коду за ліцензією GPL. Початковий проект Macsyma припинив своє існування в 1999 році. Вільям Шелтер продовжував займатися розробкою Maxima аж до своєї смерті в 2001 році. Але, що характерно для відкритого ПЗ, проект не помер разом зі своїм автором і куратором. Зараз проект продовжує активно розвиватися, і участь в ньому є найкращою візитною карткою для математиків і програмістів всього світу.

Пару слів про програму

На даний момент Maxima випускається під дві платформи: Unix-сумісні системи, т. Е. Linux і * BSD, і MS Windows. Я, звичайно ж, буду вести мову про Linux-версії.

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

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

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

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

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

На даний момент остання версія програми - 5.9.3, саме про неї я і буду говорити; якщо у вашому дистрибутиві поки присутній старіша версія, ви в принципі можете використовувати її: і актуальна ще кілька місяців тому 5.9.2, і вийшла в кінці минулого року 5.9.1 не мають з нинішньої принципових відмінностей.

Графічні інтерфейси до Максима

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

Перший - це окрема самостійна графічна програма по імені . Вона, як і сама Maxima, крім Linux / * BSD існує ще і в версії для MS Windows. У wxMaxima ви вводите формули в текстовому вигляді, а висновок Максими відображається графічно, звичними математичними символами. Крім того, великий упор тут зроблений на зручність введення: командний рядок відокремлена від вікна введення-виведення, а додаткові кнопки і система меню дозволяють вводити команди не тільки в текстовому, а й в діалоговому режимі. Так зване «автодоповнення» в командному рядку насправді з таким має лише схожість, що викликається клавішею «Tab». Веде ж воно себе, на жаль, всього лише як розумна історія команд, т. Е. Викликає ту команду з уже введених в цій сесії, яка починається з заданих в командному рядку символів, але не доповнює до імен команд і їх параметрів. Таким чином, цей інтерфейс найбільш зручний в тому випадку, коли вам потрібно багато обчислювати і бачити результати на екрані; і ще, можливо, в тому випадку, якщо ви не дуже любите вводити все команди з клавіатури. Крім того, wxMaxima надає зручний інтерфейс до документації по системі; хоча, так як документація поставляється в форматі html, замість цього можна використовувати звичайний браузер.


Другий досить цікавий інтерфейс до Maxima - це додатковий режим в редакторі . Хоча цей редактор має спільне історичне минуле з широко відомим Emacs, що випливає з назви, але практичного подібності між ними мало. TeXmacs розробляється для візуального редагування текстів наукової тематики, при якому ви бачите на екрані редагований текст практично в тому ж вигляді, в якому він буде роздрукований. Зокрема, він має так званий математичний режим введення, дуже зручний для роботи з найрізноманітнішими формулами, і вміє імпортувати / експортувати текст у LaTeX і XML / HTML. Саме можливостями по роботі з формулами користується Maxima, викликана з TeXmacs'а. Фактично, формули відображаються в звичній математичній нотації, але при цьому їх можна редагувати і копіювати в інші документи на зразок звичайного тексту. Maxima-сесія викликається з меню: « вставитисесіяMaxima», При цьому з'являється додаткове меню з командами Максими. Після запуску сесії можна вже всередині неї перейти в математичний режим введення (меню режимів введення викликається першою кнопкою на панелі введення) і при введенні також використовувати елементи математичної нотації. Цей інтерфейс буде найбільш зручний тим, хто хоче використовувати результати обчислень в своїх текстах і любить редагувати їх в візуальному режимі.



Приступаємо до роботи

Після запуску Maxima-сесії ми бачимо перед собою такі рядки:

Maxima restarted. (% I1)

Перша - це повідомлення про те, що ядро \u200b\u200bМаксими тільки що запустилось (замість неї, в залежності від версії і конкретної збірки, може виводитися коротка інформація Про програму); друга - запрошення до введення першої команди. Команда в Максимі - це будь-яка комбінація математичних виразів і вбудованих функцій, завершена, в найпростішому випадку, крапкою з комою. Після введення команди і натискання «Enter» Maxima виведе результат і буде чекати наступної команди:


Для арифметичних дій використовуються традиційні позначення: -, +, *, /; ** або ^ для зведення в ступінь, sqrt () для квадратного кореня.

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

Як бачите, кожна клітинка має свою мітку; ця мітка - укладену в дужки ім'я комірки. Осередки введення іменуються як% i з номером (i від input - введення), осередки виведення - як% o з відповідним номером (o від output - висновок). З знака% починаються всі вбудовані службові імена: щоб, з одного боку зробити їх досить короткими і зручними у використанні, а з іншого - уникнути можливих накладок з одними іменами, які теж часто зручно робити короткими. Завдяки такому однаковості вам не доведеться запам'ятовувати, як часто буває в інших системах, які з таких коротких і зручних імен зарезервовані програмою, а які ви можете використовувати для своїх потреб. Наприклад, внутрішніми іменами% e і% pi позначені загальновідомі математичні постійні; а через% c з номером позначаються константи, що використовуються при інтегруванні, для яких використання літери «c» традиційно в математиці.

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

Тут% + 47/59 - те ж саме, що% o1 + 47/59.

Висновок результату обчислення не завжди потрібен на екрані; його можна заглушити, завершивши команду символом $ замість; . Заглушений результат при цьому все одно обчислюється; як бачите, в цьому прикладі осередку% o1 і% o2 доступні, хоча і не показані (до осередку% o2 звернення йде через символ%, сенс якого розшифрований вище):

Кожну наступну команду не обов'язково писати з нового рядка; якщо ввести кілька команд в одну строчку, кожної з них все одно буде відповідати своє ім'я комірки. Наприклад, тут в рядку після мітки% i1 введені осередку від% i1 до% i4; в осередку% i3 використовуються% i1 і% i2 (позначена як _ - попередній введення):


У wxMaxima і TeXmacs останню або єдину команду в рядку можна не додавати до завершальним символом - це спрацює так само, як якщо б вона була завершена; , Т. Е. Висновок заглушений не буде. У подальших прикладах я часто буду опускати; . Якщо ви виберете інший інтерфейс, не забувайте її додавати.

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

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

Будь-яке ім'я можна очистити від присвоєного йому вирази функцією kill (), і звільнити займану цим виразом пам'ять. Для цього потрібно просто набрати kill (name), де name - ім'я знищуваного вираження; причому це може бути як ім'я, призначене вами, так і будь-яка осередок введення або виведення. Точно так само можна очистити разом всю пам'ять і звільнити все імена, ввівши kill (all). В цьому випадку очистяться в тому числі і всі осередки введення-виведення, і їх нумерація знову почнеться з одиниці. Надалі, якщо з контексту буде матися на увазі логічне продовження попередніх рядків введення-виведення, я буду продовжувати нумерацію (цим прийомом я вже скористався вище). Коли ж новий «сеанс» буде ніяк не пов'язаний з попереднім, буду починати нумерацію заново; це буде непрямим свідченням зробити «kill (all)», якщо ви будете набирати приклади в Maxima, так як імена змінних і осередків в таких «сеансах» можуть повторюватися.

Доступ до документації Максими

У прикладах вище ми скористалися двома вбудованими функціями. Як неважко здогадатися з контексту, solve - це функція рішення рівняння, а diff - функція диференціювання. Практично весь функціонал Maxima реалізований через такі вбудовані функції. Функція в Maxima може мати змінне число аргументів. Наприклад, функція solve, яку ми використовували з одним аргументом, частіше викликається з двома аргументами. Перший задає рівняння або функцію, чиє коріння треба знайти; другий - змінну, щодо якої потрібно вирішувати рівняння:


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

Друга функція з наших нових знайомих - diff - також може приймати один аргумент; в цьому випадку вона знаходить диференціал заданого виразу:

Через del (x) і del (y) тут позначені диференціали відповідних символів.

Для кожної вбудованої функції є опис в документації по Maxima. Воно містить відомості про те, які аргументи і в яких випадках приймає функція, а також опис її дії в різних випадках і конкретні приклади застосування. Але, звичайно, шукати опис кожної потрібної функції в html-документації або info-сторінках не завжди зручно, тим більше, що потрібна ця інформація, як правило, прямо в процесі роботи. Тому в Maxima є спеціальна функція - describe (), яка видає інформацію з документації по конкретних слів. Більш того, спеціально для зручності отримання довідкової інформації існує скорочена версія виклику цієї функції:? name замість describe (name). Тут? - це ім'я оператора, і аргумент потрібно відокремлювати від нього пропуском (вираз? Name використовується для виклику функції Lisp з ім'ям name). Функція describe і оператор? видають список тих розділів допомоги та імен функцій, які містять заданий текст, після чого пропонують ввести номер того розділу або опису тієї функції, які ви хочете подивитися:

Коли ви виберете розділ, буде видано його вміст:


Якщо для слова, яке ви ввели після? або describe, знайдено єдиний збіг, його опис буде показано відразу.

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


Рішення проблеми з запуском з-під TeXmacs

Якщо у вас виникли проблеми з запуском Maxima-сесії з TeXmacs, зверніть увагу на те, хто у вас в системі виступає під ім'ям / bin / sh. Справа в тому, що ініціалізація всіх різноманітних сесій реалізована в TeXmacs'е через shell-скрипти, що викликаються саме за допомогою / bin / sh. І в скрипті, що відповідає за сесію Maxima, використовується можливість, що не стандартизована як обов'язкова для / bin / sh, але присутній в його емуляції bash. Іншими словами, якщо у вас / bin / sh є не посиланням на / bin / bash, а чимось іншим, то саме це може послужити причиною неможливості відкрити Maxima-сесію (наприклад, в Debian і заснованих на ньому дистрибутивах крім bash посилання / bin / sh на себе може захотіти поставити ще і більш легкий dash; в цьому випадку відновити статус-кво можна за допомогою dpkg-reconfigure dash). Якщо зробити / bin / sh посиланням на / bin / bash не представляється можливим, можете спробувати поміняти #! / Bin / sh на #! / Bin / bash в файлі / usr / lib / texmacs / TeXmacs / bin / maxima_detect. Я написав про цю проблему розробникам TeXmacs, але ще не отримав ніякої їх реакції, так що не можу поки сказати, чи буде виправлена \u200b\u200bця недоробка в найближчих версіях.

Основні принципи

Те, що Максима написана на Lisp, людині, знайомому з цією мовою, стає зрозуміло вже на початку роботи з програмою. Дійсно, в Максима чітко простежується «лісповскіе» принцип роботи з даними, що виявляється дуже до речі в контексті символьної математики та аналітичних обчислень. Справа в тому, що в Lisp, за великим рахунком, немає поділу на об'єкти і дані: імена змінних і вирази можуть використовуватися практично в одному і тому ж контексті. В Maxima ж це властивість розвинене ще сильніше: фактично, ми можемо використовувати будь-який символ незалежно від того, присвоєно йому якесь вираження. За замовчуванням символ, пов'язаний з будь-яким виразом, буде представляти цей вислів; символ, не пов'язаний ні з чим, буде представляти самого себе, трактуемого знову-таки як вираз. Пояснимо на прикладі:

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

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

Результат виразу% i12 був би аналогічний і в тому випадку, якщо б b і y не мали на той момент ніяких значень; таким чином, ми можемо сміливо блокувати обчислення символу, навіть не запам'ятовуючи (або не знаючи), присвоєні їм взагалі якісь вирази.

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

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

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

Використовуваний стиль позначень дозволяє при подальшій записи команд послатися на раніше отримані результати, наприклад, таким чином (%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! \u003d 1· 2 · 3 · 4 · 5 · 6 \u003d 120) і знаходження подвійного факторіала (наприклад, 6 !! \u003d 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) \u003d 1 / cos (x), (секонс),

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

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

log ()

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

sqrt ()

модуль

abs ()

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

mod (,)

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

min (x1, ..., xN)

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

max (x1, ..., xN)

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

Pos (x\u003e 0),

Zero (x \u003d 0),

sign (x); \u003d 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 \u200b\u200b+ 3))

((X-2) / (a \u200b\u200b+ 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): \u003d p - q?

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

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

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

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

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

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

Вільний математика

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

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

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

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

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

Системи комп'ютерної математики (СКМ) розробляються давно, і 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://ru.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 встановлена \u200b\u200bна комп'ютері) перед вами з'явиться запрошення даної системи. Почніть вводити команди, і в терміналі будуть виводиться результати обчислень.

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

. оболонка 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 володіє розвиненими графічними можливостями для створення високотехнологічних додатків. З функціональністю системи можна ознайомитися, розглянувши демонстраційні приклади - деякі з них дуже вражають (виберіть пункти меню ? \u003e Демонстрація можливостей).

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, На якому написано її ядро. Будь-який користувач за допомогою свого улюбленого web-браузера може підключитися до сервера, зареєструватися і отримати в своє володіння особистий простір. Воно може бути і відкритим, і закритим, тобто доступним тільки адміністратору сервера і самому власнику. В особистому просторі можуть створюватися робочі листи, на них і виконуються всі обчислення.

В рамках робочого листа можна використовувати будь-який доступний мову, а таких чимало. За замовчуванням система 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 - 36 286 руб;
  • MathCAD - 5290 руб.

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

оператор циклу

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

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

Приклад: цикл для знаходження суми всіх натуральних чисел до числа 50 включно:

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

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

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

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

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

Т.Н. Губіна, Е.В. Андропова

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

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

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

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

1.7. Управління процесом обчислень в Maxima

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

Глава 1 Основи роботи в системі комп'ютерної математики Maxima

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

Якщо ж виникає необхідність представити отриманий в ході розрахунків результат у вигляді дійсного числа, то в цьому випадку потрібно дати спеціальну команду системі. Наприклад, можна вчинити так: якщо потрібно отримати наближене значення 2, то вибираємо пункт меню Чисельні розрахунки → To float(В число з одинарної точністю) (іліTo BigFloat

(В число з подвійною точністю)). Результат буде виглядати так:

Знак «%» в Maxima використовується для звернення до результату, отриманого в останній сесії роботи. Це буває зручно, якщо немає необхідності вводити змінні користувача і в подальшому використовувати отримані значення.

Для управління процесом обчислень передбачена можливість так званої «Блокування обчислень». Виконується блокування за допомогою одинарного знака апострофа. Її суть:

якщо перед ім'ям функції або змінної поставити знак апострофа, то блокується обчислення самої функції (але не її аргументів) або змінної;

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

Наприклад, задамо функцію f x і порівняємо результати, отримані при спробі обчислення значення функції в точкеx \u003d 0.

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

Інший приклад:

Т.Н. Губіна, Е.В. Андропова

На противагу блокування обчислень за допомогою двох знаків апострофа навпаки можна змусити систему виконувати обчислення - «Примусове обчислення». наприклад,

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

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

У термінології Maxima невичісленная форма вираження називається «noun form», обчислена - «verb form».

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

Наприклад, потрібно в вираз cos x 4sin x - x замість переменнойх підставити конкретне значення, наприклад,.

Глава 1 Основи роботи в системі комп'ютерної математики Maxima

Таким чином, команда subst дозволяє виконувати підстановку в вираз значень будь-яких змінних. Насправді, команд підстановки значень у вираз або функцію в Maxima кілька.

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

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

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

1 1− 4

вання: 2 1 4 4 5 7.

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

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

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

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

Т.Н. Губіна, Е.В. Андропова

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

ченний результат в 5 разів.

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

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

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

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

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

Глава 1 Основи роботи в системі комп'ютерної математики Maxima

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

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

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

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

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

- a 2 b 2

aba1 / 4

Приклад. спростити вираз

b a b a 2 1/4

a 2 b 2.

Якщо застосувати до нашого вираженню команду спростити раціонально, то отримаємо:

Застосуємо функцію assume (умова) і накладемо з її допомогою на деякі змінні, що входять у вираз, обмеження на їх значення:

Т.Н. Губіна, Е.В. Андропова

Як бачимо, отримали компактний результат.

1.9. Рішення алгебраїчних рівнянь і їх систем

В система Maxima для вирішення лінійних і нелінійних рівнянь використовується вбудована функція solve, що має наступний синтаксис:

solve (expr, x) - вирішує рівняння алгебри expr щодо переменнойx

solve (expr) - вирішує рівняння алгебри expr щодо невідомої змінної, що входить в рівняння.

Наприклад, вирішимо лінійне рівняння 5 x + 8 \u003d 0. Для цього скористаємося кнопкойРешіть на панелі інструментів, при натисканні на яку з'являється діалогове окноРешіть (Рис.13). Вводимо вихідне рівняння і нажімаемOK.

Мал. 13. Діалогове вікно для вирішення рівнянь

В результаті в робочому документі сформується команда для вирішення рівняння і виведеться знайдене рішення:

Глава 1 Основи роботи в системі комп'ютерної математики Maxima

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

Наприклад, вирішимо рівняння алгебри x 3 + 1 \u003d 0 і виконаємо перевірку знайдених рішень.

В результаті отримали три кореня. Під ім'ям resh у нас зберігається список значень - коренів рівняння. Елементи списку укладені в квадратні дужки і відокремлені один від іншого коми. До кожного такого елементу списку можна звернутися по його номеру. Скористаємося цим при перевірці рішень: підставимо черзі кожен з коренів у вихідне рівняння.

За допомогою команди allroots (expr) можна знайти все наближені рішення алгебраїчного рівняння. дану команду можна використовувати в тому випадку, якщо команда solve не змогла знайти рішення рівняння або рішення виходить занадто громіздким, як, наприклад, для наступного рівняння: (1 + 2 x) 3 \u003d 13.5 (1 + x 5).

Т.Н. Губіна, Е.В. Андропова

За допомогою команди solve можна знаходити рішення систем лінійних алгебраїчних рівнянь. Наприклад, система лінійних рівнянь

ì x +2 y +3 z +4 k +5 m \u003d 13

2 x + y + 2 z + 3 k + 4 m \u003d 10

2 x + 2 y + z + 2 k + 3 m \u003d 11 може бути вирішена наступним чином:

2 x + 2 y + 2 z + k + 2 m \u003d 6

ï 2 x +2 y +2 z +2 k + m \u003d 3

1. Збережемо кожне з рівнянь системи під іменами eq1, eq2, eq3, eq4, eq5.

2. Знаходимо рішення системи.

3. Виконаємо перевірку знайденого рішення:

Таким чином, при підстановці отриманого рішення в кожне з рівнянь системи отримані вірні рівності.

Функція solve системи Maxima може вирішувати і системи лінійних рівнянь в разі, якщо рішення не єдино. Тоді вона вдається до позначень виду% r_number щоб показати, що невідома змінна є вільною і може приймати будь-які значення.

Для вирішення систем нелінійних рівнянь можна скористатися командою algsys. Наприклад, знайдемо рішення системи рівнянь



Сподобалася стаття? поділіться їй