Курсова робота з інформатики "Дослідження можливостей бібліотеки пакетів системи Maxima для вирішення спеціальних математичних завдань". Система команд, обчислення Maxima Maximo властивості системи історія значень

18.11.2023

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

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

Приклад:

(%i3) sqrt(aa)+bb;

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

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

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

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

Приклад:

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

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

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

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

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

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

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

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

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

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

(%i4) float(5/7);

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

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

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

логічний оператор не

Незважаючи на скромні розміри, 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Наприклад, потрібно вираз 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->Очистити пам'ять (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 = 0 . Для цього скористаємося кнопкоюРішити на панелі інструментів, при натисканні на яку з'являється діалогове вікноРішити (Рис.13). Вводимо вихідне рівняння та натискаємо OK.

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

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

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

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

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

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

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

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

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

x +2 y +3 z +4 k +5 m =13

2 x+ y+ 2 z+ 3 k+ 4 m= 10

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

2 x+ 2 y+ 2 z+ k+ 2 m= 6

ï 2 x +2 y +2 z +2 k +m =3

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

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

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

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

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

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