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

Система комп'ютерної математики 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можуть позначати різні об'єкти.

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


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


Мал. 2

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

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

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


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

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


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


Мал. 3

Сучасна система комп'ютерної математики
універсального типу повинна мати розвиненими можливостями візуалізації даних.
Є вони і в 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 цілком можна використовувати і в навчальних
цілях, і в якості платформи для цілком серйозних наукових розробок.

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

Для роботи з даною системою в ОС Linux слід у вікні shell набрати команду maximaабо xmaximaдля запуску її графічної оболонки. Іншим зручним інструментом для роботи з системою Maxima є програма texmacs. На панелі інструментів цієї програми розташовується кнопка із зображенням монітора, нажатіe на яку відкриває меню вибору інтерактивної сесії. Вибір пункту 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(Ім'я функції) демонструє приклади використання функції.

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

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

Приклад: завдання циклу для виведення значень змінної а в діапазоні від -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».

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

Наприклад, потрібно в вираз 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. Наприклад, знайдемо рішення системи рівнянь

Сподобалася стаття? Поділіться з друзями!