Інтернет Windows Android

Для угруповання виразів у системі maxima використовуються. Методика роботи з maxima

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

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

Для роботи з цією системою в ОС Linux слід у вікні shell набрати команду maximaабо xmaximaдля запуску її графічної оболонки. Іншим зручним інструментом для роботи з системою Maxima є програма texmacs. На панелі інструментів цієї програми знаходиться кнопка із зображенням монітора, натискання на яку відкриває меню вибору інтерактивної сесії. Вибір пункту maxima дозволить розпочати сеанс роботи з цією програмою.

При відображенні результатів обчислень ця оболонка використовує стандартні математичні позначення, тоді як xmaxima чи maxima - лише символи з таблиці ASCII-кодів.

При старті виводиться деяка інформація про систему та "мітка" (C1). Кожне введення та виведення позначаються системою і потім можуть бути використані знову. Символ C (від command) використовується для позначення команд, введених користувачем, а D (від display) при виведенні результатів обчислень.

Для ініціалізації процесу обчислень слід запровадити команду, потім символ; (крапка з комою) та натиснути клавішу Enter. Якщо не потрібно виведення отриманої інформації на екран, то замість крапки з комою використовується символ $. Звернутись до результату останньої команди можна за допомогою символу %. Для повтору раніше введеної команди, скажімо (C2), достатньо ввести два апострофи і потім мітку необхідної команди, наприклад, C2.

Система Maxima не звертає увагу на регістр введених символів в іменах вбудованих констант та функцій. Запис sin(x) еквівалентний запису SIN(x), але при виведенні результатів у текстовому режимі використовуються великі літери. Регістр букв, однак, важливий при використанні змінних, наприклад, Maxima вважає x та X різнимизмінними.

Для стандартних математичних констант використовуються такі позначення: %e (або %E) для заснування натуральних логарифмів, %i (%I) для уявної одиниці (квадратний корінь з-1) і %pi (%PI) для числа
.

Надання значення будь-якої змінної здійснюється за допомогою знака : (двокрапка), а символ = (Рівно) використовується при заданні рівнянь або підстановок.

(C1) x:2; (D1) 2 (C2) y:3; (D2) 3 (C3) x + y; (D3) 5

Функція killанулює присвоєні раніше значення змінних. Параметр all цієї функції призводить до видалення значення всіх змінних, включаючи мітки Ci і Di.

(C8) kill(x); (D8) DONE (C9) x + y; (D9) x + 3 (C10) kill (all); (D0) DONE (C1) x + y; (D1) y + x

Для завершення роботи із системою застосовується функція quit();, а переривання процесу обчислень здійснюється шляхом натискання комбінації клавіш Ctrl+c (після чого слід запровадити:q повернення у звичайний режим роботи).

Довідка про ту чи іншу функцію виводиться за командою describe(ім'я функції). При роботі в графічній оболонці XMaxima можна скористатися пунктом меню help. Процедура example(ім'я функції) показує приклади використання функції.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3.8. Константи

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

Таблиця 1

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

Назва

Позначення

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

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

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

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

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

minf

Істина

true

Брехня

false

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

infinity

зліва (щодо меж)

minus

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

plus

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

%phi

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

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

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

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

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

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

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

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

Наприклад:

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

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

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

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

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

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

Таблиця 2

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

Функції

Позначення

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

sin (синус),

cos (косинус),

tan (тангенс),

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

Зворотні

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

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

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

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

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

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

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

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

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

log()

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

sqrt()

модуль

abs()

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

mod(,)

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

min(x1, ..., xN)

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

max(x1, ..., xN)

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

Pos (x>0),

Zero (x=0),

sign(x);<0),

= neg (x

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

символів, в один рядок).

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

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

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

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

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

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

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

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

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

Команда для Maxima

(x+2)/(y–7)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функція в Maxima

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

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

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

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

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

Арктангенс

Арксинус

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Система комп'ютерної математики Maxima – справжній ветеран серед програм цього класу. Вона старша за багатьох своїх відомих комерційних побратимів принаймні на два десятки років. Спочатку носила ім'я Macsyma, вона була створена наприкінці 1960-х років у знаменитому Массачусетському технологічному інституті і майже 20 років (з 1982 по 2001) підтримувалася Біллом Шелтером (William Schelter), завдяки якому і набула своїх чудових якостей і відома. Подробиці з історії системи, інсталяційний модуль (розміром всього 10 MB), документацію, вихідний код та іншу супутню інформацію можна знайти на Web-вузлі пакета . Поточна версія (5.9.0) працює під керуванням Windows та Linux.

Незважаючи на скромні розміри, Maxima – високоінтелектуальний продукт, здатний вирішувати складні аналітичні завдання. Як і більшість систем комп'ютерної математики, вона є командним інтерпретатором, що взаємодіє з користувачем за принципом "питання - відповідь". Тому робоча область системи є послідовністю осередків вводу/виводу (рис. 1), маркованих міткою (С - для введення користувача, D - для результату) і номером. Такий спосіб позначення забезпечує зручний механізм посилань, що дозволяє звернення до одного з попередніх результатів ввести тільки ім'я потрібного осередку.

Чисельні операції

Мал. 1
З хоч би якими висловлюваннями працювала Maxima, вона завжди прагне подання результатів у точній аналітичній формі. Це повною мірою стосується і чисельних розрахунків. Наприклад, якщо ввести у командному рядку вираз 1/2+1/3 , то результатом буде 5/6 . Для того щоб отримати значення у вигляді числа з точкою, що плаває, необхідно вказати це явно. Найпростіший спосіб полягає у завданні спеціального дескриптора numerчерез кому після введеного виразу.

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

Зазначимо, що Maxima виважено підходить до регістру виразів, що вводяться. Якщо їхній вигляд близький до імені вбудованої функції, програма використовує цю функцію. Згідно з цим правилом Sin, sinі SINпозначають те саме. Водночас користувацькі змінні та функції чутливі до регістру - Xі xможуть означати різні об'єкти.

Система також підтримує комплексну арифметику та ряд відомих математичних констант.


Аналітичні операції

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

Якщо для введеного виразу не можна отримати однозначного результату, програма практично природною (англійською) мовою поставить навідні питання. Наприклад, при спробі знайти інтеграл від функції x n Maxima уточнить, чи не однаково n+1нулю (як відомо, від цього суттєво залежить результат). Втім, таких питань можна уникнути, якщо заздалегідь за допомогою спеціальних операторів вказати область зміни параметрів і змінних, що використовуються.

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


Операції лінійної алгебри

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


Графічні можливості

Сучасна система комп'ютерної математики універсального типу повинна мати розвинені можливості візуалізації даних. Є вони і у Maxima. Графіки у системі будуються з допомогою двох функцій - PLOT2D (двовимірні, рис. 2) і PLOT3D (тривимірні, рис. 3). Незважаючи на цей відносно небагатий вибір, названі інструменти дозволяють виводити графіки різних типів на площині та у просторі з досить тонкими налаштуваннями - за допомогою спеціальних операторів або аргументів функцій задаються кількість вузлів сітки, на якій будується необхідний графік, діапазони даних, колірні та інші характеристики. Крім того, можна скористатися інтерактивними налаштуваннями для швидкої зміни товщини ліній, повороту тривимірної поверхні тощо. Вибір форматів експорту Maxima дуже вузький: малюнки в програмі зберігаються, по суті, тільки в PostScript. Загалом візуальні інструменти системи відносно скромні, хоч і дають можливість отримати якісні графіки деяких типів.


Засоби програмування

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

У найпростішому випадку функція користувача визначається прямо в командному рядку

MyFunc(x,y):=x^2+y^2;

Потім MyFuncможна застосовувати поряд із вбудованими. Звичайно ж, система підтримує і складніші конструкції. У тілі функції допускаються оператори розгалуження, циклів, вводу/вывода тощо. буд. Мова програмування в Maxima має деякі особливості, найважливішої у тому, що кількість аргументів функції має бути фіксованим. Інша полягає у надзвичайно гнучких засобах для роботи з масивами, які рідко зустрінеш не лише у традиційних мовах, а й у спеціалізованих системах, у тому числі СКМ. Ось кілька прикладів, запозичених з одного керівництва (двокрапка в Maxima означає присвоєння):
a:4*u;
a:%PI;
a[x]: mystery;

Усі оператори коректні і задають у сукупності масив, індексами якого є числа 4 , 22/7 та рядок "x", а значеннями елементів - вираз 4*u, число π (в Maxima воно записується як %PI) та рядок символів "Mystery". Таким чином, як елемент масиву, так і його індексом може виступати практично будь-який вираз. Оригінальні властивості Maxima зовсім не обмежуються цими особливостями (наприклад, підтримуються навіть масиви функцій), але ми не будемо зупинятися на деталях.

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

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

Турбота про користувача

Крім документації, доступної на Web-вузлі продукту, в комплект поставки входять введення в Maxima та підручник по системі (обидва у форматі HTML) - детальний опис, достатній для поглибленого ознайомлення з усіма її можливостями. Однак під час сеансу роботи із системою нерідко необхідно отримати оперативну довідку. Для цього Maxima надає функцію DESCRIBE(), яка виводить докладні відомості про оператора, що цікавить користувача (який передається їй як аргумент). Не біда, якщо ви не пам'ятаєте його повний синтаксис, введіть кілька перших букв назви - і Maxima видасть усі доступні імена, що починаються з комбінації символів. Якщо цих відомостей виявиться недостатньо, можна скористатися функцією EXAMPLE()яка запропонує характерні приклади. До функцій цього ряду належить DEMO(), що виконує програми з демонстраційних файлів, що постачаються із системою. Хотілося б відзначити таку особливість системи як можливість представлення результатів обчислень у форматі TeX за допомогою функції, яка так і називається -- TEX().


Висновки

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

0