Контакти

Для угруповання виразів у системі maxima використовуються. Тихон Тарнавський. Maxima – максимум свободи символьних обчислень. Робота з осмислення та засвоєння нового матеріалу

Інтерфейс програми:російська

Платформа: XP / 7 / Vista

Виробник:Олексій Бешенов

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

Основні можливості програми Maxima

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

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

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

wxMaxima - це програма, яка є одним із варіантів графічного втілення системи комп'ютерної алгебри Maxima. Ця система вміє працювати з чисельними та символьними виразами і при цьому є абсолютно безкоштовною для використання, у тому числі з комерційною метою. Основна користь даного рішення для рядових користувачів полягає в тому, що воно допомагає у побудові та вирішенні математичних формул та рівнянь. Крім того, wxMaxima виконує низку інших корисних математичних операцій: інтегрування, диференціювання, перетворення Лапласа, побудова чисельних рядів та векторів, роботу з матрицями та багато іншого.

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

Ключові особливості та функції

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

У нас можна безкоштовно скачати нову версію математичної програми Maxima російською мовою для Windows ХР/Vista/7/8/10 з сервера або офіційного сайту.

Опис програми Maxima:

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

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

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

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

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

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

Maxima є нащадком легендарної системи комп'ютерної алгебри Macsyma, розробленої на початку 60-х у MIT. Це єдина заснована на Macsyma система, яка все ще публічно доступна і має активну спільноту користувачів завдяки своїй відкритості. Свого часу Macsyma зробила переворот у комп'ютерній алгебрі і вплинула багато інших систем, серед яких Maple і Mathematica.

Назва Maxima
Версія 5.40.0
Мова Російська є
Система Windows XP / Vista / 7 / 8 / 10
Розробник

У системі 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().

Так як в цьому циклі статей мова піде про математичну програму для символьних обчислень, для початку кілька слів про те, що собою представляють ці самі символьні або, як їх ще називають, аналітичні обчислення, на відміну від чисельних розрахунків. Комп'ютери, як відомо, оперують з числами (цілими та з плаваючою комою). Наприклад, рішення рівняння x 2 = 2 x + 1 можна отримати як −0.41421356 та 2.41421356, а 3 x = 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)

Перша – це повідомлення про те, що ядро ​​Максими щойно запустилося (замість неї, залежно від версії та конкретної збірки, може виводитися коротка інформація про програму); друга – запрошення до введення першої команди. Команда в Максимі - це будь-яка комбінація математичних виразів та вбудованих функцій, завершена, у найпростішому випадку, крапкою з комою. Після введення команди та натискання «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, але ще не отримав жодної їхньої реакції, так що не можу поки сказати, чи буде виправлено цю недоробку в найближчих версіях.

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

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

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

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

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

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

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



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