WxMaxima — графічний інтерфейс користувача до системи комп’ютерної алгебри (СКА) Maxima. За допомогою WxMaxima можна користуватися усіма функціями Maxima. Крім того, у програмі передбачено зручні допоміжні програми для доступу до найпоширеніших можливостей СКА. У цьому підручнику наведено опис деяких можливостей, які роблять WxMaxima одним із найпопулярніших графічних інтерфейсів Maxima.
Перш ніж ми перейдемо до суті, декілька зауважень щодо навігації підручником. Нижче наведено коротку таблицю змісту. Натискання будь-якого з елементів у списку переведе курсор до початку відповідного розділу підручника. Натискання пункту Зміст переведе курсор до розширеної таблиці змісту. Цією розширеною таблицею можна скористатися для точнішого переходу до окремих частин підручника. У текст буде розташовано посилання на таблицю змісту з навігаційною метою.
Основи WxMaxima
Команди, які wxMaxima додає до Maxima
What to do if wxMaxima does not work as expected?
Поширені питання та відповіді на них
The command-line arguments wxMaxima supports.
How can you contribute to the development of wxMaxima?
У системі програмного забезпечення з відкритим кодом великі системи, зазвичай, діляться на менші проєкти, з якими простіше працювати невеликим групам розробників. Наприклад, програма для запису компакт-дисків складається з засобу командного рядка, який, власне, виконує запис компакт-диска, і графічного інтерфейсу користувача, за допомогою користувачі можуть виконати потрібні їм дії, не запам’ятовуючи параметрів командного рядка і, загалом, взагалі не маючи справи із командним рядком. Однією із переваг цього підходу є те, що робота з розробки засобу командного рядка може бути використана багатьма програмами: той самий засіб командного рядка для запису компакт-дисків можна використати у додатку надсилання даних на компакт-диск у програмі для керування файлами, для функції «записати на компакт-диск» у музичному програвачі та для запису компакт-диска у програмі для резервного копіювання на DVD. Ще однією перевагою є поділ одного великого завдання на менші частини, що надає змогу розробникам надавати декілька інтерфейсів користувача для однієї програми.
Система комп’ютерної алгебри (СКА), подібна до Maxima, дуже добре вкладається у цю схему. СКА може надавати логіку до програми-калькулятора із довільною точністю обчислень або може виконувати автоматичні перетворення форму у фоновому режимі для більших систем (наприклад, Sage). Крім того, нею можна користуватися і безпосередньо, як самостійною системою. Доступ до Maxima можна отримати з командного рядка. Втім, часто інтерфейси, подібні до wxMaxima, є набагато ефективнішим способом доступу до програмного забезпечення, особливо для початківців.
Maxima є повноцінною системою комп’ютерної алгебри (СКА). СКА — програма, яка може розв’язувати математичні задачі перетворенням формул і визначенням формули, яка розв’язує задачу, замість простого виведення числової форми результату. Іншими словами, Maxima може слугувати калькулятором, який визначає числові значення змінних, а може давати аналітичні розв’язки. Крім того, у програмі передбачено багато обчислювальних методів для аналізу рівнянь і систем рівнянь, які не може бути розв’язано аналітично.
Із докладною документацією до Maxima можна ознайомитися у інтернеті. Доступ до частини цієї документації можна отримати з меню «Довідка» у wxMaxima. Якщо ви натиснете клавішу довідки (у більшості систем це клавіша F1), використання контекстної довідки wxMaxima відкриє для вас сторінку підручника з Maxima із довідкою щодо команди, у якій перебуває курсор.
wxMaxima — графічний інтерфейс користувача, який надає доступ до усіх функціональних можливостей і гнучкості Maxima. wxMaxima надає у розпорядження користувачам графічні засоби роботи та можливості, які значно спрощують роботу з Maxima. Наприклад, у wxMaxima передбачено можливість експортування вмісту будь-якої комірки (або, якщо це потрібно, будь-якої частини формули) у форматі тексту, коду LaTeX або специфікації MathML простим клацанням правою кнопкою миші. Насправді, можна експортувати увесь робочий аркуш у форматі HTML або коду LaTeX. Із документацією до wxMaxima, зокрема робочими книгами для ілюстрації аспектів користування, можна ознайомитися на сайті довідки wxMaxima, а також за допомогою меню «Довідка».
Обчислення, які ви наказуєте виконати wxMaxima у фоновому режимі передаються інструментам командного рядка Maxima.
Призначення більшої частини інтерфейсу wxMaxima є очевидним, але деякі речі потребують більшої уваги. На цьому сайті можна знайти декілька робочих книг, які присвячено різноманітним аспектами роботи у wxMaxima. Опрацювання деяких з цих зразків (зокрема «Десятихвилинного підручника з (wx)Maxima») надасть змогу краще ознайомитися із роботою Maxima і використанням wxMaxima для взаємодії із Maxima. У цьому ж підручнику ми зосередимо увагу на описі тих аспектів wxMaxima, які, ймовірно, є неочевидними і про які немає відомостей у інтернет-підручнику.
Однією із дуже небагатьох речей, які є нестандартними у wxMaxima є те, що дані для Maxima у програмі впорядковано за комірками, які обчислюються (тобто надсилаються до Maxima) лише на запит користувача. При обчисленні комірки усі команди у ній, і лише у ній, обчислюються пакетно. (Попереднє твердження є не зовсім точним: можна позначити набір сусідніх комірок і обчислити їх разом. Крім того, можна наказати Maxima обчислити усі комірки у робочій книзі одразу.) Підхід wxMaxima до надсилання команд на виконання може спочатку видатися незвичним. Втім, він значно спрощує роботу із великими документами (у яких користувач не хоче, щоб програма автоматично вмикала повне переобчислення усього документа у відповідь на будь-яку зміну). Крім того, такий підхід є дуже зручним для усування вад.
Якщо ви почнете вводити якийсь текст у вікні wxMaxima, програма автоматично створить нову комірку робочого аркуша. Тип цієї комірки можна вибрати за допомогою панелі інструментів. Якщо створено комірку з кодом, її вміст може бути надіслано до Maxima. Результат обчислень буде показано під рядком коду. Пару таких команд показано нижче.
On evaluation of an input cell’s contents the input cell
Maxima assigns a label to the input (by default shown in red
and recognizable by the %i
) by which it can be referenced
later in the wxMaxima session. The output that Maxima
generates also gets a label that begins with %o
and by
default is hidden, except if the user assigns the output a name. In this
case by default the user-defined label is displayed. The
%o
-style label Maxima auto-generates will also be
accessible, though.
Окрім комірок для вхідних даних, у wxMaxima передбачено комірки для документації, комірки зображень, комірки заголовків, комірки глав та комірки розділів. У кожної комірки є власний буфер скасовування дій, тому дуже просто діагностувати проблеми, змінюючи значення у комірках і поступово скасовуючи внесені зміни у різних комірках. Крім того, у самого робочого аркуша також є власний буфер скасовування дій, яким може скористатися для скасовування редагувань у комірках, додавання і вилучення комірок.
На рисунку нижче показано різні типи комірок (комірки заголовків, комірки розділів, комірки підрозділів, текстові комірки, комірки введення-виведення та комірки зображення).
Робочий аркуш складається з комірок. У wxMaxima передбачено такі типи комірок:
Типовою поведінкою wxMaxima при введенні тексту є автоматичне створення комірки формули. Комірки інших типів можна створити за допомогою меню «Комірка», натискання клавіатурних скорочень для пунктів з цього меню або за допомогою спадного списку на панелі інструментів. Після створення нематематичної комірки усе, що введено у файл, вважатиметься текстом.
Текст
коментаря (у стилі C) може бути частиною математичної комірки ось
так: /* Цей коментар буде проігноровано Maxima */
«/*
» позначає початок коментаря, «*/
» —
його кінець.
Якщо користувач намагається позначити ціле речення, текстовий процесор намагається розширити позначений фрагмент так, щоб він автоматично завершувався на початку і наприкінці слів. Так само, wxMaxima, якщо позначено декілька комірок, доповнюватиме позначений фрагмент до меж комірок.
Нестандартною особливістю є те, що у wxMaxima передбачено гнучку систему перетягування зі скиданням, у якій визначено два типи курсорів. wxMaxima автоматично перемикатиметься між ними, коли у цьому виникатиме потреба:
Після запуску wxMaxima, ви побачите лише горизонтальний курсор, який
блиматиме. Якщо ви почнете щось вводити, буде автоматично створено
математичну комірку, а курсор буде замінено на звичайний вертикальний
(ви побачите стрілку праворуч як «запит», а після обчислення вмісту
математичної комірки (Ctrl+Enter) ви побачите мітки,
наприклад (%i1)
, (%o1)
).
Ви можете створити комірки іншого типу (за допомогою меню «Комірка»), можливо, комірку заголовка та текстову комірку, яка описуватиме виконану математичну дію, коли почнете створення вашого робочого аркуша.
Якщо ви переходитимете між різними комірками програма також показуватиме горизонтальний курсор, що блиматиме. На місці курсора ви можете вставити комірку до робочого аркуша (математичну комірку простим введенням формули або комірку іншого типу за допомогою меню).
Команду у комірці буде виконано одразу після натискання комбінацій клавіш CTRL+ENTER, SHIFT+ENTER або клавіші ENTER на клавіатурі. Типовим для wxMaxima є введення команд за допомогою CTRL+ENTER або SHIFT+ENTER, але wxMaxima можна налаштувати на виконання команд у відповідь на натискання ENTER.
У wxMaxima реалізовано можливість автоматичного доповнення коду, якою можна скористатися за допомогою меню (Комірка/Доповнити слово) або натисканням комбінації клавіш CTRL+Пробіл. Автоматичне доповнення є чутливим до регістру символів. Наприклад, якщо його активувати зі специфікацією модулів для ezUnits, воно запропонує список відповідних модулів.
Окрім доповнення, назви файла, назви модуля або назви поточної команди чи змінної, засіб автоматичного доповнення може показувати шаблони для більшості команд, вказуючи тип (і значення) параметрів, які очікує отримати відповідна програма. Щоб задіяти цю можливість, натисніть комбінацію клавіш SHIFT+CTRL+ПРОБІЛ або виберіть відповідний пункт меню (Комірка/Показати шаблон).
Комп’ютери традиційно зберігають символи у форматі 8-бітових значень. Це уможливлює існування наборів, що складаються лише із 256 різних символів. У такий набір може бути включено усі літери, цифри та символи керування (завершення передавання, кінець рядка, лінії та кутики для малювання меню тощо) майже будь-якої європейської мови.
Втім, у більшості мов до вибраної кодової сторінки із 256 символів не можна включити додаткові символи, зокрема літери грецької абетки, які широко використовуються у математичних формулах. Щоб подолати обмеження подібного типу, було винайдено Юнікод — кодування, яке працює для латиниці, але використовує набагато більше за 256 символів.
Maxima уможливлює використання символів Юнікоду, якщо програму було зібрано за допомогою компілятора Lisp, у якому передбачено підтримку Юнікоду або такого, який є нейтральним щодо кодування символів. Оскільки, хоча б одна з цих вимог, зазвичай, справджується, у wxMaxima реалізовано спосіб введення грецьких символів з клавіатури:
key | Greek letter | key | Greek letter | key | Greek letter |
---|---|---|---|---|---|
a | alpha | i | iota | r | rho |
b | beta | k | kappa | s | sigma |
g | gamma | l | lambda | t | tau |
d | delta | m | mu | u | upsilon |
e | epsilon | n | nu | f | phi |
z | zeta | x | xi | c | chi |
h | eta | om | omicron | y | psi |
q | theta | p | pi | o | omega |
A | Alpha | I | Iota | R | Rho |
B | Beta | K | Kappa | S | Sigma |
G | Gamma | L | Lambda | T | Tau |
D | Delta | M | Mu | U | Upsilon |
E | Epsilon | N | Nu | P | Phi |
Z | Zeta | X | Xi | C | Chi |
H | Eta | Om | Omicron | Y | Psi |
T | Theta | P | Pi | O | Omega |
You can also use the “Greek letters”-sidebar to enter the Greek letters.
Attention: Lookalike characters
Several Latin letters look like the Greek letters, e.g. the Latin letter “A” and the Greek letter “Alpha”. Although they look identical, they are two different Unicode characters, represented by different Unicode code points (numbers).
This might be problematic, if you assign a value to the Variable A and later use the Greek letter Alpha to do something with this variable, especially on printouts. For the greek letter my (which is also used as prefix for micro) there are also two different unicode code points.
The “Greek letters”-sidebar therefore has the option, that lookalike characters are not available (which can be changed using a right-click menu).
У той самий спосіб можна вводити різноманітні математичні символи:
keys to enter | mathematical symbol |
---|---|
hbar | Planck’s constant: a h with a horizontal bar above it |
Hbar | a H with a horizontal bar above it |
2 | squared |
3 | to the power of three |
/2 | 1/2 |
partial | partial sign (the d of dx/dt) |
integral | integral sign |
sq | square root |
ii | imaginary |
ee | element |
in | in |
impl implies | implies |
inf | infinity |
empty | empty |
TB | big triangle right |
tb | small triangle right |
and | and |
or | or |
xor | xor |
nand | nand |
nor | nor |
equiv | equivalent to |
not | not |
union | union |
inter | intersection |
subseteq | subset or equal |
subset | subset |
notsubseteq | not subset or equal |
notsubset | not subset |
approx | approximately |
propto | proportional to |
neq != /= or # | not equal to |
+/- or pm | a plus/minus sign |
<= or leq | equal or less than |
>= or geq | equal or greater than |
<< or ll | much less than |
>> or gg | much greater than |
qed | end of proof |
nabla | a nabla operator |
sum | sum sign |
prod | product sign |
exists | there exists sign |
nexists | there is no sign |
parallel | a parallel sign |
perp | a perpendicular sign |
leadsto | a leads to sign |
-> | a right arrow |
–> | a long right arrow |
You can also use the “Symbols”-sidebar to enter these Mathematical symbols.
If a special symbol isn’t in the list, it is possible to input arbitrary Unicode characters by pressing ESC [number of the character (hexadecimal)] ESC. Additionally the “symbols” sidebar has a right-click menu that allow to display a list of all available unicode symbols one can add to this toolbar or to the worksheet.
Отже, ESC 61 ESC дасть «a».
Будь ласка, зауважте, що більшість цих символів (виключеннями є логічні символи) не мають спеціального значення у Maxima і тому можуть бути оброблені як звичайні символи. Якщо Maxima зібрано із Lisp, у якому не передбачено обробки символів Юнікоду, використання цих символів може призвести до показу повідомлення про помилку.
It may be the case that e.g. Greek characters or mathematical symbols are not included in the selected font, then they can not be displayed. To solve that problem, select other fonts (using: Edit -> Configure -> Style).
wxMaxima will replace several Unicode characters with their
respective Maxima expressions, e.g. “²” with “^2”, “³” with “^3”, the
square root sign with the function sqrt()
, the
(mathematical) Sigma sign (which is not the same unicode character as
the corresponding greek letter) with sum()
, etc.
Доступ до найважливіших команд Maxima або речей, подібних до таблиці змісту, вікон із діагностичними повідомленнями або журналу останніх виданих команд можна отримати за допомогою бічних панелей. Увімкнути бічні панелі можна за допомогою меню «Перегляд». Панелі можна пересувати як всередині вікна wxMaxima, так і ззовні. Ще однією корисною панеллю є панель введення грецьких літер за допомогою вказівника миші.
За допомогою бічної панелі «Зміст» можна збільшити або зменшити рівень заголовка: просто клацніть на заголовку правою кнопкою миші і виберіть наступний більший або менший рівень заголовка.
Several word processors and similar programs either recognize MathML input and automatically insert it as an editable 2D equation - or (like LibreOffice) have an equation editor that offers an “import MathML from clipboard” feature. Others support RTF maths. WxMaxima, therefore, offers several entries in the right-click menu.
У wxMaxima ви зможете скористатися стандартними варіантами Markdown, які не суперечать математичним позначенням. Одним із елементів розмітки є невпорядковані списки.
Звичайний текст
* Один пункт, рівень відступу 1
* Інший пункт на рівні відступу 1
* Пункт на другому рівні відступу
* Другий пункт на другому рівні відступу
* Третій пункт на першому рівні відступу
Звичайний текст
У wxMaxima фрагменти тексту, які розпочинаються з символів
>
вважаються блоками цитат:
Звичайний текст
> цитата цитата цитата цитата
> цитата цитата цитата цитата
> цитата цитата цитата цитата
Звичайний текст
У коді TeX та HTML wxMaxima також розпізнається рядок
=>
, який програма замінює на відповідний символ
Юнікод:
cogito => sum.
Іншими символами, які буде розпізнано під час експортування до HTML
або TeX, є <=
і >=
для порівнянь,
двобічна стрілка (<=>
), одинарні стрілки
(<->
, ->
і <-
), а
також +/-
як відповідний знак. Для експортування у код TeX
передбачено також підтримку перетворення <<
і
>>
.
Більшість клавіатурних скорочень можна знайти у тексті відповідних меню. Оскільки їх взято з тексту меню і, отже, може бути змінено під час перекладу wxMaxima так, щоб вони відповідали потребам користувачів локалізованих клавіатур, ми не наводимо їх у цьому підручнику. Втім, декілька клавіатурних скорочень все ж не документовано у меню:
Якщо текстову комірку буде розпочато з TeX:
у
експортованих у форматі TeX даних буде буквально відтворено текст, який
вказано після позначки TeX:
. За допомогою цієї можливості
можна використовувати розмітку TeX у робочій книзі
wxMaxima.
Матеріал, який було отримано під час сеансу роботи у wxMaxima може бути збережено для наступного використання у три способи:
Файли .mac
є звичайними текстовими файлами, які містять
команди Maxima. Їх можна прочитати за допомогою команди
batch()
або load()
Maxima або пункту
меню «Файл/Пакетний файл».
Один з прикладів наведено нижче. Quadratic.mac
визначає
функцію і після цього створює креслення за допомогою
wxdraw2d()
. Далі, буде виведено вміст файла
Quadratic.mac
і виконано обчислення нової визначеної
функції f()
.
Увага! Хоча назва файла Quadratic.mac
містить звичайний
для Maxima суфікс (.mac
), прочитати дані з нього
зможе лише wxMaxima, оскільки команда wxdraw2d()
є
wxMaxima-розширенням до Maxima.
Ви можете використовувати файли .mac
для написання
власної бібліотеки макросів. Але оскільки у них не міститься достатніх
даних щодо структури, їх не можна читати як сеанс wxMaxima.
Файли .wxm містять дані робочого аркуша, окрім виведених даних
Maxima. У версіях Maxima >5.38 їх можна прочитати за
допомогою функції load()
Maxima, так само, як
можна прочитати файли .mac. У цьому текстовому форматі іноді є неусувна
проблема — робочі аркуші із новими можливостями не є зворотно сумісними
із застарілими версіями wxMaxima.
У цьому заснованому на XML форматі файлів зберігається увесь робочий аркуш, включно із даними щодо масштабу та списком спостереження. Цей формат файлів є рекомендованим.
Для деяких типових змінних налаштувань у wxMaxima передбачено два способи налаштовування:
Частота кадрів анімації, яка використовуватиметься для нових
анімацій, зберігається у змінній wxanimate_framerate
.
Початкове значення цієї змінної, яке міститиметься у новому робочому
аркуші, можна змінити за допомогою діалогового вікна налаштовування.
Після наступного запуску креслення, які вбудовано до робочого аркуша,
буде створено з цим розміром, якщо значення wxplot_size
не
було змінено maxima.
Щоб встановити розмір графіка для окремого графіка, можна скористатися наведеною нижче конструкцією, яка встановить значення змінної лише для одної команди:
wxdraw2d(
explicit(
x^2,
x,-5,5
)wxplot_size=[480,480]$ ),
За допомогою цього пункту можна увімкнути дві речі:
Якщо позначено цей пункт, файл, у якому зберігається робочий аркуш, буде перезаписано лише за запит користувача. Втім, у випадку аварії, втрати живлення тощо, у каталозі тимчасових даних завжди лишатиметься резервна копія.
Якщо не встановлено цей параметр, wxMaxima поводиться подібно до сучасної програми для мобільних телефонів:
If you are using Unix/Linux, the configuration information will be
saved in a file .wxMaxima
in your home directory (if you
are using wxWidgets < 3.1.1), or .config/wxMaxima.conf
((XDG-Standard) if wxWidgets >= 3.1.1 is used). You can retrieve the
wxWidgets version from the command wxbuild_info();
or by
using the menu option Help->About. wxWidgets is the cross-platform
GUI library, which is the base for wxMaxima (therefore the
wx
in the name). (Since the filename starts with a dot,
.wxMaxima
or .config
will be hidden).
Якщо ви користуєтеся Windows, налаштування буде збережено у реєстрі.
Записи wxMaxima можна знайти у цій гілці:
HKEY_CURRENT_USER\Software\wxMaxima
Основним призначенням wxMaxima є забезпечення графічного інтерфейсу до Maxima. Отже, основним завданням програми є передавання команд до Maxima і сповіщення користувача про результат виконання цих команд. Втім, у деяких випадках, wxMaxima розширює функціональні можливості Maxima. Ми вже згадували про здатність wxMaxima створювати звіти експортуванням вмісту робочої книги до файлів HTML і LaTeX. У цьому розділі ми розглянемо деякі способи, у які wxMaxima удосконалює включення графіки до сеансу.
wxsubscripts
визначає, чи wxMaxima виконуватиме
автоматичне перетворення нижніх індексів у назвах змінних (і як вона це
робитиме):
Якщо має значення false
, функціональну можливість буде
вимкнено, wxMaxima не виконуватиме автоматичного перетворення частини
назв змінної після символу підкреслення.
Якщо встановлено значення all
, усе після символу
підкреслення буде перетворено на нижній індекс.
Якщо встановлено значення true
для
wxsubscripts
, назви змінних у форматі x_y
буде
показано як літеру із нижнім індексом, якщо
x
або y
є одинарною літерою абоy
є цілим числом (може складатися з декількох
символів).Якщо назва змінної не задовольняє ці вимоги, змінну все одно можна
оголосити як змінну із нижнім індексом, за допомогою команди
wxdeclare_subscript(назва_змінної);
або
wxdeclare_subscript([назва_змінної1,назва_змінної2,...]);
Оголошення змінної як змінної із нижнім індексом можна скасувати за
допомогою такої команди:
wxdeclare_subscript(назва_змінної,false);
Для встановлення цих значень ви можете скористатися меню «Перегляд->Автоматичне переведення у нижній індекс».
Команди, які виконуються довго, можуть надавати користувачам
інформацію на смужці стану. Цю інформацію буде замінено на будь-яку нову
інформацію, яку програма надсилатиме туди (це надає змогу
використовувати смужку стану як індикатор поступу), і буде вилучено,
щойно буде завершено виконання поточної команди, яку надіслано до
Maxima. Команду wxstatusbar()
можна безпечно
використовувати навіть у бібліотеках, які може бути використано у
звичайній Maxima (без wxMaxima): якщо
wxMaxima немає, команда wxstatusbar()
просто не
оброблятиметься.
for i:1 thru 10 do (
/* Повідомляємо користувачу, наскільки далеко зайшли */
wxstatusbar(concat("Pass ",i)),
/* (sleep n) — функція Lisp, якою можна скористатися */
/* із додаванням перед нею символу «?». Команда затримує */
/* виконання програми (у нашому прикладі, на 3 секунди) */
sleep(3)
? )$
Креслення (яке фундаментально пов’язано із графікою) є місцем, де графічний інтерфейс користувача має надавати якісь додаткові можливості до оригінальної програми.
Maxima normally instructs the external program gnuplot to open a separate window for every diagram it creates. Since many times it is convenient to embed graphs into the worksheet instead wxMaxima provides its own set of plot functions that don’t differ from the corresponding maxima functions save in their name: They are all prefixed by a “wx”.
The following plotting functions have wx-counterparts:
wxMaxima’s plot function | Maxima’s plot function |
---|---|
wxplot2d() |
plot2d |
wxplot3d() |
plot3d |
wxdraw2d() |
draw2d |
wxdraw3d() |
draw2d |
wxdraw() |
draw |
wximplicit_plot() |
implicit_plot |
wxhistogram() |
histogram |
wxscatterplot() |
scatterplot |
wxbarsplot() |
barsplot |
wxpiechart() |
piechart |
wxboxplot() |
boxplot |
If a wxm
-file is read by (console) Maxima, these
functions are ignored (and printed as output, as other unknown functions
in Maxima).
Як ми вже згадували вище, діалогове вікно налаштовування надає змогу
змінити типові розміри креслень. Унаслідок застосування цього способу
змінюється початкове значення wxplot_size
. Підпрограми
створення креслень wxMaxima враховують це значення, яке
визначає розмір креслення у пікселях. Це значення завжди можна отримати
або використати для встановлення розмірів наступних креслень:
wxplot_size:[1200,800]$
wxdraw2d(
explicit(
sin(x),
x,1,10
) )$
Якщо потрібно змінити розміри лише одного креслення, у Maxima передбачено канонічний спосіб зміни атрибута лише для поточної комірки. У цьому випадку до команди wxdraw2d( ) додається специфікація wxplot_size = [значення1, значення2], яка не є частиною команди wxdraw2d.
wxdraw2d(
explicit(
sin(x),
x,1,10
)wxplot_size=[1600,800]$ ),
Встановлення розміру вбудованого креслення за допомогою
wxplot_size
працює для вбудованих креслень, які
використовують, наприклад, команди wxplot
,
wxdraw
, wxcontour_plot
і
wximplicit_plot
, і для вбудованих анімацій, які
використовують команди with_slider_draw
і
wxanimate
.
Gnuplot, здається, не надає придатного до портування на
різні платформи способу визначення, чи передбачено у програмі підтримку
виведення даних у форматі високоякісного растрового зображення з
використанням бібліотеки cairo. У системах, де gnuplot зібрано
з використанням відповідної бібліотеки, пункт pngCairo у меню
налаштовування (який може бути перевизначено за допомогою змінної
wxplot_pngcairo
) вмикає підтримку згладжування та
додаткових стилів ліній. Якщо встановлено wxplot_pngCairo
без підтримки у gnuplot, результатом буде повідомлення про
помилку замість графіка.
Якщо креслення було створено за допомогою команд типу
wxdraw
(у wxplot2d
і wxplot3d
підтримки цієї можливості не передбачено), і розмір файла базового
проєкту gnuplot не є надто великим, wxMaxima пропонує
контекстне меню, за допомогою якого можна відкрити креслення у
інтерактивному вікні gnuplot.
plot
У MS Windows, якщо у змінній Maxima
gnuplot_command
замінити «gnuplot» на «wgnuplot»,
gnuplot запропонує можливість відкрити вікно консолі, у якому
ви зможете вводити команди gnuplot. На жаль, вмикання цієї
можливості призводить до того, що gnuplot на короткий період
«викрадає» фокусування клавіатури кожного разу, коли готується
креслення.
На просторових креслення доволі важко читати кількісні дані.
Альтернативним рішенням є прив’язка третього параметра до коліщатка
миші. Команда with_slider_draw
є версією
wxdraw2d
, яка готує декілька креслень і надає змогу
перемикатися між ними пересуванням повзунка у верхній частині вікна.
WxMaxima надає змогу експортувати анімацію у форматі анімації
gif.
Першими двома аргументами with_slider_draw
є назва
змінної, яка покроково змінюватиметься між кресленнями, і список значень
цієї змінної. Наступними аргументами є звичайні аргументи
wxdraw2d
:
with_slider_draw(
f,[1,2,3,4,5,6,7,10],
title=concat("f=",f,"Hz"),
explicit(
sin(2*%pi*f*x),
x,0,1
grid=true
), );
Доступ до тих самих можливостей для просторових креслень можна
отримати за допомогою функції with_slider_draw3d
, яка надає
можливість обертати просторові креслення:
wxanimate_autoplay:true;
wxanimate_framerate:20;
with_slider_draw3d(
makelist(i,i,1,360,3),
α,title=sconcat("α=",α),
surface_hide=true,
contour=both,
view=[60,α],
explicit(
sin(x)*sin(y),
x,-π,π,
y,-π,π
) )$
Якщо важливою є загальна форма креслення, може бути достатнім трошки пересунути креслення з метою зробити його просторову природу інтуїтивно зрозумілою:
wxanimate_autoplay:true;
wxanimate_framerate:20;
with_slider_draw3d(
t,makelist(i,i,0,2*π,.05*π),
title=sconcat("α=",α),
surface_hide=true,
contour=both,
view=[60,30+5*sin(t)],
explicit(
sin(x)*y^2,
x,-2*π,2*π,
y,-2*π,2*π
) )$
Для тих, хто знайомий більше з plot
, аніж з
draw
, другий набір функцій:
with_slider
іwxanimate
.Зазвичай, анімації відтворюються і експортуються із частотою кадрів,
яку можна вибрати у налаштуваннях wxMaxima. Щоб встановити
швидкість відтворення окремої анімації, можна скористатися змінною
wxanimate_framerate
:
wxanimate(a, 10,
sin(a*x), [x,-5,5]), wxanimate_framerate=6$
Функції анімації використовують команду maxima
makelist
і тому мають спільну ваду — значення змінної
повзунка замінюється на вираз, лише якщо змінна є безпосередньо видимою
у виразі. Тому такий приклад не працюватиме:
f:sin(a*x);
with_slider_draw(
a,makelist(i/2,i,1,10),
title=concat("a=",float(a)),
grid=true,
explicit(f,x,0,10)
)$
А якщо Maxima явно попросити підставити значення повзунка, креслення працюватиме як слід:
f:sin(a*x);
with_slider_draw(
b,makelist(i/2,i,1,10),
title=concat("a=",float(b)),
grid=true,
explicit(
subst(a=b,f),
x,0,10
) )$
Хоча wxMaxima не надає доступу до цієї можливості, ця функція Maxima (у конфігураціях, де передбачено її підтримку) іноді є дуже зручною. Наведений нижче приклад походить із допису Маріо Родрігеса (Mario Rodriguez) у списку листування Maxima:
load(draw);
/* Парабола у вікні 1 */
draw2d(terminal=[wxt,1],explicit(x^2,x,-1,1));
/* Парабола у вікні 2 */
draw2d(terminal=[wxt,2],explicit(x^2,x,-1,1));
/* Параболоїд у вікні 3 */
draw3d(terminal=[wxt,3],explicit(x^2+y^2,x,-1,1,y,-1,1));
Також можна накреслити декілька креслень в одному вікні:
wxdraw(
gr2d(
key="sin (x)",grid=[2,2],
explicit(sin(x),x,0,2*%pi)),
gr2d(
key="cos (x)",grid=[2,2],
explicit(cos(x),x,0,2*%pi))
);
Бічна панель «Накреслити за допомогою Draw» приховує простий генератор коду, який уможливлює створення сцен, які використовують певну гнучкість пакунка draw, з яким постачається maxima.
Створює каркас команди draw()
, яка малює плоску сцену.
Цю сцену пізніше може бути заповнено за допомогою команд, які створюють
вміст сцени, наприклад, за допомогою кнопок у рядках під кнопкою
«Плоский».
Однією з корисних можливостей кнопки «Плоский» є те, що вона надає змогу налаштувати сцену як анімацію, у якій змінна (типовою змінною є t) має різне значення для кожного з кадрів: часто динамічне плоске креслення надає змогу простіше інтерпретувати дані за ті самі у формі нерухомого просторового креслення.
Створює каркас команди draw()
, яка малює просторову
сцену. Якщо не налаштовано ні двовимірну, ні тривимірну сцену, усі інші
кнопки налаштовуватимуть двовимірну сцену, яка містить команду, яку
створює кнопка.
Додає стандартне креслення виразу, подібного до sin(x)
,
x*sin(x)
або x^2+2*x-4
до команди
draw()
, у якій зараз перебуває курсор. Якщо команди draw
немає, буде створено двовимірну сцену із кресленням. Кожну сцену можна
заповнити довільною кількістю креслень.
Спробувати знайти усі точки, у яких справджуються вирази, подібні до
y=sin(x)
, y*sin(x)=3
або
x^2+y^2=4
, і накреслити криву-результат за допомогою
команди draw()
у поточній позиції курсора. Якщо команди
draw виявлено не буде, буде створено плоску сцену із кресленням.
Покроково проходить змінну від нижньої межі до верхньої межі і
використовує два виразу, подібні до t*sin(t)
і
t*cos(t)
для створення координат точок x, y (у просторових
кресленнях використовується і z) кривої, які буде передано до поточної
команди draw.
Малює точки, які, якщо вказано, буде з’єднано. Координати точок буде взято зі списку списків, двовимірного масиву або списку масивів для кожної з осей.
Малює заголовок у верхній частині діаграми,
Налаштовує вісі.
(Лише для просторових креслень) Додає контурні лінії, подібні до тих, які можна знайти на карті висот, до команд креслення, які йдуть за нею у поточній команді «draw()» і/або до площини основи діаграми. Крім того, цей майстер надає змогу повністю пропустити малювання кривих і показати лише контурне креслення.
Додає запис умовних позначень із назвою наступного креслення на панель умовних позначень діаграми. Порожнє значення назви вимикає створення записів умовних позначень для наступних креслень.
Встановлює колір лінії для наступних креслень у поточній команді малювання.
Встановлює колір заповнення для наступних креслень у поточній команді малювання.
Відкриває допоміжне вікно, за допомогою якого можна налаштувати лінії сітки.
Надає змогу вибрати адекватну позицію у компромісному питанні «швидкість чи точність?», яке є частиною будь-якої програми для креслення.
Якщо використано формат файлів .wxmx
, вбудовування
файлів до проєкту wxMaxima можна виконати простим
перетягуванням зі скиданням. Але іноді (наприклад, якщо вміст зображення
може бути змінено згодом протягом роботи у сеансі), краще наказати
програмі завантажувати файл зображення при обробці команд:
show_image("man.png");
У діалоговому вікні налаштовування wxMaxima передбачено можливість редагування двох файлів із командами, які виконуються під час запуску програми:
maxima-init.mac
wxmaxima-init.mac
Ці файли зберігаються у каталозі користувача Maxima (зазвичай,
каталозі maxima
у Windows, .maxima/
у інших
системах) у домашній теці користувача. Розташування файлів можна
визначити за допомогою такої команди: maxima_userdir;
wxsubscripts
вказує Maxima, чи слід
перетворювати назви змінних, які містять символ підкреслювання
(R_150
або подібні змінні) на змінні із нижніми індексами.
Див. wxdeclare_subscript
, щоб дізнатися більше про те, які
саме назви змінних буде перетворено автоматично.wxfilename
: у цій змінній зберігається назва файла,
який зараз відкрито у wxMaxima.wxdirname
: у цій змінній зберігається назва каталогу, у
якому зберігається поточний відкритий wxMaxima файл.wxplot_pngcairo
визначає те, чи намагатиметься
wxMaxima скористатися терміналом pngcairo gnuplot,
який надає доступ до ширшого вибору стилів ліній та кращої якості
зображення.wxplot_size
визначає роздільну здатність для вбудованих
креслень.wxchangedir
: у більшості операційних систем
wxMaxima автоматично встановлює для робочого каталогу
Maxima каталог поточного файла. Це уможливлює роботу
введення-виведення до файла (наприклад, за допомогою
read_matrix
) без визначення усього шляху до файла, який має
бути прочитано або записано. У Windows ця можливість іноді спричиняє
повідомлення про помилку, тому варто встановити для цього параметра
значення false
у діалоговому вікні налаштовування.wxanimate_framerate
: частота у кадрах на секунду, із
якою відтворюватимуться наступі анімації.wxanimate_autoplay
: типово автоматично відтворювати
анімації?wxmaximaversion
: повертає номер версії
wxMaxima.wxwidgetsversion
: повертає версію wxWidgets, яку
використано у wxMaxima.Функція table_form()
показує двовимірний список у формі,
яка є зручнішою для читання, за виведені дані типової підпрограми
виведення даних Maxima. Вхідними даними є список одного або
декількох списків. Подібно до команди друку, ця команда виводить дані,
навіть якщо її завершити символом долара. Завершення команди символом
крапки з комою призводить до виведення тієї самої таблиці разом із
інструкцією «done».
table_form(
[1,2],
[3,4]
[
] )$
Як показує наступний приклад, списки, які зібрано командою
table_form
, можна створювати до виконання команди.
Крім того, оскільки матриця — список списків, матриці можна перетворювати на таблиці у подібний же спосіб.
У wxMaxima передбачено декілька функцій, які збирають дані щодо поточної системи для звітування щодо вад:
wxbuild_info()
збирає відомості щодо поточної запущеної
версії wxMaximawxbug_report()
надає відомості щодо того, як і де слід
повідомляти про вадиКоманда box()
Maxima призводити до того, що
wxMaxima виводить її аргумент червоним кольором, якщо другим
аргументом команди є текст highlight
.
Оскільки Maxima (програма, яка виконує самі обчислення) і wxMaxima (програма, яка надає простий у користуванні інтерфейс користувача) є окремими програмами, які обмінюються даними за допомогою з’єднання локальною мережею. Тому найімовірнішою причиною є те, що це з’єднання чомусь не працює. Наприклад, брандмауер може бути налаштовано таким чином, що він не просто запобігає неуповноваженим з’єднання з інтернету (і, можливо, також перехоплює з’єднання із інтернетом), але і блокує обмін даними між процесами на тому самому комп’ютері. Зауважте, що оскільки Maxima виконується процесором Lisp, процес. із яким блокується обмін даними, не обов’язково називається «maxima». Типовими назвами програм, які відкривають з’єднання мережі, можуть бути sbcl, gcl, ccl, lisp.exe або щось подібне.
У системах Unix іншою можливою причиною є те, що петльову мережу, яка забезпечує з’єднання мережі між двома програмам, які працюють на одному комп’ютері, не налаштовано належним чином.
На внутрішньому рівні більшість сучасних форматів на основі XML є
звичайними файлами zip. wxMaxima не увімкнула стискання, що
робить вміст файлів .wxmx
придатним до перекладу у
будь-якому текстовому редакторі.
Якщо підпис zip наприкінці файла є неушкодженим після
перейменовування пошкодженого файла .wxmx
на
.zip
, у більшості операційних систем передбачено спосіб
видобування будь-якої частини даних, яка у ньому зберігається. Виконати
таке видобування можна, якщо потрібно відновити початкові файли
зображень з документа текстового процесора. Якщо підпис zip пошкоджено,
це ще не кінець світу: якщо wxMaxima під час збереження виявила
якусь помилку, має ще бути файл .wxmx~
, чий вміст може
допомогти у відновленні даних.
І навіть якщо такого файла не існує — якщо встановлено параметр
налаштування для оптимізації файлів .wxmx для системи керування
версіями, можна перейменувати файл .wxmx на файл .txt і скористатися
текстовим редактором для відновлення частини XML із вмісту файла (він
починається з <?xml version="1.0" encoding="UTF-8"?>
і завершується </wxMaximaDocument>
. До і після цього
фрагмента тексту у текстовому редакторі ви побачите непридатні до
читання двійкові дані).
Якщо текстовий файл, що містить ці дані (наприклад скопійовані і вставлені як текст до звичайного файла), збережено як файл із суфіксом назви .xml, wxMaxima відомий спосіб відновлення тексту документа з цього файла.
Зазвичай, wxMaxima очікує, доки буде передано усю двовимірну
формулу, перш ніж починає виводити дані. Таким чином заощаджується час,
який могло б бути витрачено на постійні спроби вивести незавершену
формулу. Втім, існує команда disp
, яка може виводити
діагностичні дані негайно, не очікуючи на завершення поточної команди
Maxima:
for i:1 thru 10 do (
disp(i),
/* (sleep n) — функція Lisp, якою можна скористатися */
/* із додаванням перед нею символу «?». Команда затримує */
/* виконання програми (у нашому прикладі, на 3 секунди) */
sleep(3)
? )$
Це означає, що wxMaxima не вдалося прочитати файл, який Maxima мала наказати створити gnuplot.
Можливими причинами цієї помилки є такі:
implicit_plot
, але цей пакунок не було завантажено командою
load()
Maxima до того, як команду було передано на
виконання..gnuplot
у каталозі, на який вказує змінна
Maxima maxima_userdir
, містить команди, які
Maxima передавала gnuplot. Здебільшого, вміст цього
файла є дуже корисним для діагностування проблеми.wxplot_pngcairo
значення true з коду Maxima..png
.Значення змінної повзунка, типово, буде підставлено до виразу для
креслення, лише якщо воно є видимим у цьому виразі. Використання команди
subst
, яка підставляє змінну повзунка до рівняння, яке слід
накреслити, має усунути проблему. Наприкінці розділу Вбудовування анімацій
до робочого аркуша наведено приклад.
У програмі передбачено окремі функції скасовування дій для дій з комірками і для дій усередині комірок, тому така подія має бути дуже рідкісною. Якщо таке все ж сталося, існує декілька способів відновити дані:
playback();
Однією з можливих причин є те, що Maxima не вдалося знайти у каталозі, який вказано на сторінці «Maxima» діалогового вікна налаштовування wxMaxima, а отже, програму взагалі не запущено. Встановлення адреси коректного виконуваного файла Maxima має виправити цю проблему.
Теоретично можливий випадок, коли wxMaxima не може розпізнати момент завершення обчислень у Maxima і тому ніколи не дізнається про те, що може надсилати нові дані до Maxima. У цьому випадку команда виконання обчислення може відновити синхронізацію між двома програмами.
Компілятор Lisp SBCL типово позначається із обмеженням на
використання пам’яті, яке надає змогу запускати його на слабких
комп’ютерах. При компіляції великих пакунків програмного забезпечення,
зокрема lapack, або роботі з великими списками або формулами це
обмеження може заважати нормальній роботі. Щоб зняти обмеження, SBCL
можна передати параметр --dynamic-space-size
, який
вказуватиме SBCL, скільки мегабайтів пам’яті слід зарезервувати. У
32-бітовому Windows-SBCL можна зарезервувати до 999 мегабайтів. У
64-бітовій версії SBCL, яку запущено у Windows, можна наказати програмі
використовувати понад близько 1280 мегабайтів, чого має бути достатньо
для збирання lapack.
Одним зі способів передати Maxima (а отже, SBCL) параметри командного рядка є поле «Додаткові параметри для Maxima» вікна налаштовування wxMaxima.
Встановлення пакунка ibus-gtk
має усунути проблему.
Докладніше про це на сторінці (https://bugs.launchpad.net/ubuntu/+source/wxwidgets3.0/+bug/1421558).
Якщо вашу Maxima засновано на SBCL, слід додати такі рядки
до вашого файла .sbclrc
:
setf sb-impl::*default-external-format* :utf-8) (
Тека, у якій має бути розташовано цей файл залежить від системи та способу встановлення. Втім, будь-яка Maxima на основі SBCL, яка вже виконала обчислення у якійсь комірці протягом поточного сеансу, без проблем повідомить, де його можна знайти, у відповідь на таку команду:
:lisp (sb-impl::userinit-pathname)
До робочого аркуша вбудовуються файли .png. wxMaxima дозволяє користувачу вказати, де має бути створено ці файли:
wxdraw2d(
file_name="test",
explicit(sin(x),x,1,10)
);
Якщо має бути використано якийсь інший формат зображень, простіше створити зображення окремо, а потім імпортувати їх до робочого аркуша:
load("draw");
pngdraw(name,[contents]):=
(draw(
append(
[terminal=pngcairo,
dimensions=wxplot_size,
file_name=name
],contents
)
),show_image(printf(false,"~a.png",name))
);pngdraw2d(name,[contents]):=
pngdraw(name,gr2d(contents));
pngdraw2d("Test",
explicit(sin(x),x,1,10)
);
Не безпосередньо, за допомогою Maxima. Але для цього є команди gnuplot:
wxdraw2d(
proportional_axis=xy,
explicit(sin(x),x,1,10)
wxplot_size=[1000,1000]; ),
1 HIToolbox 0x00007ff80cd91726 _ZN15MenuBarInstance22EnsureAutoShowObserverEv + 102
2 HIToolbox 0x00007ff80cd912b8 _ZN15MenuBarInstance14EnableAutoShowEv + 52
3 HIToolbox 0x00007ff80cd35908 SetMenuBarObscured + 408
...
Це може бути проблемою операційної системи. Вимикання приховування смужки меню (SystemSettings => Стільниця і панель => Смужка меню) може усунути проблему. Див. вада у wxMaxima 1746 for more information.
Так. Скористайтеся пакунком LaTeX «geometry» для визначення розмірів полів.
Ви можете додати такий рядок до преамбули LaTeX (наприклад, за допомогою відповідного поля у діалоговому вікні налаштовування («Експорт->Додаткові рядки до преамбули TeX») для встановлення розміру полів у 1 см):
\usepackage[left=1cm,right=1cm,top=1cm,bottom=1cm]{geometry}
Якщо бібліотека wxWidgets є достатньо новою, wxMaxima автоматично працюватиме у темному режимі, якщо у ньому працює решта операційної системи. Сам робочий аркуш типово має світле тло. Втім, колір тла можна змінити. Крім того, ви можете скористатися пунктом меню «Перегляд/Інвертувати яскравість робочого аркуша», за допомогою якого можна швидко перетворити робочий аркуш з темного на світлий, і навпаки.
wxMaxima передає певні складні завдання, зокрема завдання з обробки підручника з Maxima, який складається з понад 1000 сторінок, фоновим завданням, що, зазвичай, відбувається зовсім непомітно. Втім, у момент, коли може знадобитися результат виконання такого завдання, wxMaxima може знадобитися декілька секунд для відновлення нормальної роботи.
(Таке саме може статися із іншими програмами.) Переклад може працювати після натискання кнопки «Гаразд». wxMaxima не просто використовує власні переклади, але і переклади з бібліотеки wxWidgets.
Локалі може не бути у системі. У системах Ubuntu/Debian локалі можна
створити за допомогою такої команди:
dpkg-reconfigure locales
Ці символи можна знайти на бічній панелі Unicode (пошукайте «великі літери із подвійним контуром»). Втім, підтримку цих символів має бути передбачено у вибраному шрифті. Якщо програма не показує символи належним чином, виберіть інший шрифт.
Usually you can start programs with a graphical user interface just by clicking on a desktop icon or desktop menu entry. WxMaxima - if started from the command line - still provides some command-line switches, though.
-v
або --version
: вивести дані щодо версії
програми-h
або --help
: вивести короткий довідковий
текст-o
або --open=<рядок>
: відкрити
файл, який передано як аргумент до цього параметра командного рядка-e
або --eval
: обробити файл після його
відкриття-b
або --batch
: якщо ви відкриваєте файл з
командного рядка, усі комірки у цьому файлі обчислюються, а потім
програма виконує збереження файла. Це, наприклад, корисно, якщо сеанс,
який описано у файлі, призводить до того, що Maxima щось
виводить до файлів. Пакетну обробку буде зупинено, якщо
wxMaxima виявить, що Maxima вивела повідомлення про
помилку, і призупинить обробку, якщо Maxima задасть питання:
математика є дещо інтерактивною за природою, тому повністю автономна
пакетна обробка можлива далеко не завжди.--logtostderr
: Log all “debug messages” sidebar
messages to stderr, too.--pipe
: Pipe messages from Maxima to stdout.--exit-on-error
: Close the program on any maxima
error.-f
or --ini=<str>
: Use the init file
that was given as an argument to this command-line switch-u
, --use-version=<str>
: Use maxima
version <str>
.-l
, --lisp=<str>
: Use a Maxima
compiled with Lisp compiler <str>
.-X
, --extra-args=<str>
: Allows to
specify extra Maxima arguments-m
or --maxima=<str>
: allows
specifying the location of the maxima binary--enableipc
: Lets Maxima control wxMaxima via
interprocess communications. Use this option with care.--wxmathml-lisp=<str>
: Location of wxMathML.lisp
(if not the built-in should be used, mainly for developers).Замість символу мінуса у деяких операційних системах перед перемикачами командного рядка використовується тире.
wxMaxima is mainly developed using the programming language C++ using the wxWidgets framework, as build system we use CMake, a small part is written in Lisp. You can contribute to wxMaxima, join the wxMaxima project at https://github.com/wxMaxima-developers/wxmaxima, if you have knowledge of these programming languages and want to help and contribute to the open source project wxMaxima.
But not only programmers are necessary! You can also contribute to wxMaxima, if you help to improve the documentation, find and report bugs (and maybe bugfixes), suggest new features, help to translate wxMaxima or the manual to your language (read the Readme in the locale subdirectory how wxMaxima and the manual can be translated).
Or answer questions of other users in the discussion forum.
Початковий код wxMaxima документовано за допомогою системи Doxygen тут.
Програма є майже самодостатньою, тому, окрім системних бібліотек (та
бібліотеки wxWidgets), ніяких зовнішніх залежностей (зокрема графічних
файлів або частини Lisp (файла wxmathML.lisp
) не потрібно,
ці файли включено до виконуваного файла програми.
Якщо ви є розробником, можете спробувати внести зміни до
wxmathML.lisp
без перезбирання усього. Можна скористатися
параметром командного рядка --wxmathml-lisp=<рядок>
,
щоб наказати програмі використати інший файл Lisp, замість включеного до
її складу.