WxMaxima

Підручник користувача wxMaxima

WxMaxima is a graphical user interface (GUI) for the Maxima computer algebra system (CAS). WxMaxima allows one to use all of Maxima’s functions. In addition, it provides convenient wizards for accessing the most commonly used features. This manual describes some of the features that make wxMaxima one of the most popular GUIs for Maxima.

Логотип wxMaxima

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

WxMaxima basics

Команди, які wxMaxima додає до Maxima

Що робити, якщо wxMaxima працює неправильно

Поширені питання та відповіді на них

Параметри командного рядка, підтримку яких передбачено у wxMaxima


1 Вступ до wxMaxima

1.1 Maxima і wxMaxima

У системі програмного забезпечення з відкритим кодом великі системи, зазвичай, діляться на менші проєкти, з якими простіше працювати невеликим групам розробників. Наприклад, програма для запису компакт-дисків складається з засобу командного рядка, який, власне, виконує запис компакт-диска, і графічного інтерфейсу користувача, за допомогою користувачі можуть виконати потрібні їм дії, не запам’ятовуючи параметрів командного рядка і, загалом, взагалі не маючи справи із командним рядком. Однією із переваг цього підходу є те, що робота з розробки засобу командного рядка може бути використана багатьма програмами: той самий засіб командного рядка для запису компакт-дисків можна використати у додатку надсилання даних на компакт-диск у програмі для керування файлами, для функції «записати на компакт-диск» у музичному програвачі та для запису компакт-диска у програмі для резервного копіювання на DVD. Ще однією перевагою є поділ одного великого завдання на менші частини, що надає змогу розробникам надавати декілька інтерфейсів користувача для однієї програми.

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

1.1.1 Maxima

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

Знімок вікна Maxima, командний рядок

Із докладною документацією до Maxima можна ознайомитися у інтернеті. Доступ до частини цієї документації можна отримати з меню «Довідка» у wxMaxima. Якщо ви натиснете клавішу довідки (у більшості систем це клавіша F1), використання контекстної довідки wxMaxima відкриє для вас сторінку підручника з Maxima із довідкою щодо команди, у якій перебуває курсор.

1.1.2 WxMaxima

WxMaxima is a graphical user interface that provides the full functionality and flexibility of Maxima. WxMaxima offers users a graphical display and many features that make working with Maxima easier. For example wxMaxima allows one to export any cell’s contents (or, if that is needed, any part of a formula, as well) as text, as LaTeX or as MathML specification at a simple right-click. Indeed, an entire workbook can be exported, either as a HTML file or as a LaTeX file. Documentation for wxMaxima, including workbooks to illustrate aspects of its use, is online at the wxMaxima help site, as well as via the help menu.

Вікно wxMaxima

Обчислення, які ви наказуєте виконати wxMaxima у фоновому режимі передаються інструментам командного рядка Maxima.

1.2 Основи роботи із книгою

Призначення більшої частини інтерфейсу wxMaxima є очевидним, але деякі речі потребують більшої уваги. На цьому сайті можна знайти декілька робочих книг, які присвячено різноманітним аспектами роботи у wxMaxima. Опрацювання деяких з цих зразків (зокрема «Десятихвилинного підручника з (wx)Maxima») надасть змогу краще ознайомитися із роботою Maxima і використанням wxMaxima для взаємодії із Maxima. У цьому ж підручнику ми зосередимо увагу на описі тих аспектів wxMaxima, які, ймовірно, є неочевидними і про які немає відомостей у інтернет-підручнику.

1.2.1 Використання робочих книг

One of the very few things that are not standard in wxMaxima is that it organizes the data for Maxima into cells that are evaluated (which means: sent to Maxima) only when the user requests this. When a cell is evaluated, all commands in that cell, and only that cell, are evaluated as a batch. (The preceding statement is not quite accurate: One can select a set of adjacent cells and evaluate them together. Also, one can instruct Maxima to evaluate all cells in a workbook in one pass.) WxMaxima’s approach to submitting commands for execution might feel unfamiliar at the first sight. It does, however, drastically ease work with big documents (where the user does not want every change to automatically trigger a full re-evaluation of the whole document). Also, this approach is very handy for debugging.

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

Комірка введення-виведення

При обчисленні вмісту комірки вхідних даних Maxima призначає мітку для вхідних даних (типово, таку мітку буде показано червоним кольором, вона матиме формат %i). За цією міткою можна посилатися на вміст далі у сеансі роботи з wxMaxima. Виведені Maxima дані також отримають мітку, яка починається з %o, і яку типово буде приховано, хіба що користувач надасть назву виведеними даним. Якщо надано назву, буде показано визначену користувачем мітку. Втім, можна буде користуватися і автоматично створеною Maxima міткою у стилі %o.

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

На рисунку нижче показано різні типи комірок (комірки заголовків, комірки розділів, комірки підрозділів, текстові комірки, комірки введення-виведення та комірки зображення).

Приклад різних комірок wxMaxima

1.2.2 Комірки

The worksheet is organized in cells. WxMaxima knows the following cell types:

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

A (C-style) comment text can be part of a math cell as follows: /* This comment will be ignored by Maxima */

«/*» позначає початок коментаря, «*/» — його кінець.

1.2.3 Горизонтальний і вертикальний курсори

If the user tries to select a complete sentence, a word processor will try to extend the selection to automatically begin and end with a word boundary. Likewise, if more than one cell is selected, wxMaxima will extend the selection to whole cells.

What isn’t standard is that wxMaxima provides drag-and-drop flexibility by defining two types of cursors. WxMaxima will switch between them automatically when needed:

Після запуску wxMaxima, ви побачите лише горизонтальний курсор, який блиматиме. Якщо ви почнете щось вводити, буде автоматично створено математичну комірку, а курсор буде замінено на звичайний вертикальний (ви побачите стрілку праворуч як «запит», а після обчислення вмісту математичної комірки (Ctrl+Enter) ви побачите мітки, наприклад (%i1), (%o1)).

Горизонтальний курсор після запуску wxMaxima

You might want to create a different cell type (using the “Cell” menu), maybe a title cell or text cell, which describes, what will be done, when you start creating your worksheet.

If you navigate between the different cells, you will also see the (blinking) horizontal cursor, where you can insert a cell into your worksheet (either a math cell, by just start typing your formula - or a different cell type using the menu).

Горизонтальний курсор між комірками

1.2.4 Надсилання комірок для обчислення у Maxima

The command in a code cell is executed once by pressing CTRL+ENTER, SHIFT+ENTER or the ENTER key on the keypad. The wxMaxima default is to enter commands when either CTRL+ENTER or SHIFT+ENTER is entered, but wxMaxima can be configured to execute commands in response to ENTER.

1.2.5 Автоматичне доповнення команд

WxMaxima contains an autocompletion feature that is triggered via the menu (Cell/Complete Word) or alternatively by pressing the key combination CTRL+SPACE. The autocompletion is context-sensitive. For example, if activated within a unit specification for ezUnits it will offer a list of applicable units.

ezUnits

Besides completing a file name, a unit name, or the current command or variable name, the autocompletion is able to show a template for most of the commands indicating the type (and meaning) of the parameters this program expects. To activate this feature press SHIFT+CTRL+SPACE or select the respective menu item (Cell/Show Template).

1.2.5.1 Грецькі літери

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

For most countries, the codepage of 256 characters that has been chosen does not include things like Greek letters, though, that are frequently used in mathematics. To overcome this type of limitation Unicode has been invented: An encoding that makes English text work like normal, but to use much more than 256 characters.

Maxima allows Unicode if it was compiled using a Lisp compiler that either supports Unicode or that doesn’t care about the font encoding. As at least one of this pair of conditions is likely to be true. WxMaxima provides a method of entering Greek characters using the keyboard:

key greek letter key greek letter key greek letter
a альфа i йота r ро
b бета k каппа s сигма
g гамма l лямбда t тау
d дельта m мю u упсилоn
e епсилон n ню f фі
z дзета x ксі c хі
h ета om омікрон y псі
q тета p пі o омега
A Альфа I Йота R Ро
B Бета K Каппа S Сигма
G Гамма L Лямбда T Тау
D Дельта M Мю U Упсилон
E Епсилон N Ню P Фі
Z Дзета X Ксі C Хі
H Ета Om Омікрон Y Псі
T Тета P Пі O Омега

У той самий спосіб можна вводити різноманітні математичні символи:

введений рядок математичний символ
hbar стала Планка: h із горизонтальною рискою згори
Hbar H із горизонтальною рискою згори
2 квадрат
3 куб
/2 1/2
partial знак частинної похідної (d у dx/dt)
integral символ інтеграла
sq квадратний корінь
ii уявна одиниця
ee елемент
in включається
impl implies випливає
inf нескінченність
empty порожня множина
TB великий трикутник праворуч
tb малий трикутник праворуч
and і
or або
xor виключне або
nand ні-і
nor ні-або
equiv еквівалентний
not ні
union об’єднання
inter перетин
subseteq підмножина або рівна множина
subset підмножина
notsubseteq не підмножина або рівна множина
notsubset не підмножина
approx приблизно
propto пропорційне до
neq != /= або # не рівне
+/- або pm плюс-мінус
<= або leq менше або дорівнює
>= або geq більше або дорівнює
<< або ll набагато менше
>> або gg набагато більше
qed що і слід було довести
nabla набла-оператор
sum знак суми
prod знак добутку
exists знак «існує»
nexists знак «не існує»
parallel знак «паралельно»
perp знак «перпендикулярно»
leadsto знак «випливає»
-> стрілка праворуч
–> довга стрілка праворуч

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.

Отже, ESC 61 ESC дасть «a».

Please note that most of these symbols (notable exceptions are the logic symbols) do not have a special meaning in Maxima and therefore will be interpreted as ordinary characters. If Maxima is compiled using a Lisp that doesn’t support Unicode characters they might cause an error message.

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).

1.2.6 Бічні панелі

Shortcuts to the most important Maxima commands, things like a table of contents, windows with debug messages or a history of the last issued commands can be accessed using the side panes. They can be enabled using the “View” menu. They all can be moved to other locations inside or outside the wxMaxima window. Other useful panes is the one that allows to input Greek letters using the mouse.

Приклад різних бічних панелей

In the “table of contents” side pane, one can increase or decrease a heading by just clicking on the heading with the right mouse button and select the next higher or lower heading type.

Збільшення або зменшення рівня заголовка за допомогою бічної панелі «Зміст»

1.2.7 Виведення коду MathML

Several word processors and similar programs either recognize MathML input and automatically insert it as an editable 2D equation - or (like LibreOffice 5.1) 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.

1.2.8 Підтримка Markdown

WxMaxima offers a set of standard Markdown conventions that don’t collide with mathematical notation. One of these elements is bullet lists.

Звичайний текст
 * Один пункт, рівень відступу 1
 * Інший пункт на рівні відступу 1
   * Пункт на другому рівні відступу
   * Другий пункт на другому рівні відступу
 * Третій пункт на першому рівні відступу
Звичайний текст

WxMaxima will recognize text starting with > chars as block quotes:

Звичайний текст
> цитата цитата цитата цитата
> цитата цитата цитата цитата
> цитата цитата цитата цитата
Звичайний текст

WxMaxima’s TeX and HTML output will also recognize => and replace it by the corresponding Unicode sign:

cogito => sum.

Other symbols the HTML and TeX export will recognize are <= and >= for comparisons, a double-pointed double arrow (<=>), single-headed arrows (<->, -> and <-) and +/- as the respective sign. For TeX output also << and >> are recognized.

1.2.9 Клавіатурні скорочення

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

1.2.10 Код TeX у експортованому TeX

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

1.3 Формати файлів

Матеріал, який було отримано під час сеансу роботи у wxMaxima може бути збережено для наступного використання у три способи:

1.3.1 .mac

Файли .mac є звичайними текстовими файлами, які містять команди Maxima. Їх можна прочитати за допомогою команди batch() або load() Maxima або пункту меню «Файл/Пакетний файл».

One example is shown below. Quadratic.mac defines a function and afterward generates a plot with wxdraw2d(). Afterward the contents of the file Quadratic.mac are printed and newly defined function f() is evaluated.

Завантаження файла .mac за допомогою batch()

Увага! Хоча назва файла Quadratic.mac містить звичайний для Maxima суфікс (.mac), прочитати дані з нього зможе лише wxMaxima, оскільки команда wxdraw2d() є wxMaxima-розширенням до Maxima.

Ви можете використовувати файли .mac для написання власної бібліотеки макросів. Але оскільки у них не міститься достатніх даних щодо структури, їх не можна читати як сеанс wxMaxima.

1.3.2 .wxm

.wxm files contain the worksheet except for Maxima’s output. On Maxima versions >5.38 they can be read using Maxima’s load() function just as .mac files can be. With this plain-text format, it sometimes is unavoidable that worksheets that use new features are not downwards-compatible with older versions of wxMaxima.

1.3.3 .wxmx

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

1.4 Параметри налаштування

Для деяких типових змінних налаштувань у wxMaxima передбачено два способи налаштовування:

Налаштування wxMaxima 1

1.4.1 Типова частота кадрів анімації

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

1.4.2 Типовий розмір креслення для нових сеансів maxima

After the next start, plots embedded into the worksheet will be created with this size if the value of wxplot_size isn’t changed by maxima.

Щоб встановити розмір графіка для окремого графіка, можна скористатися наведеною нижче конструкцією, яка встановить значення змінної лише для одної команди:

wxdraw2d(
   explicit(
       x^2,
       x,-5,5
   )
), wxplot_size=[480,480]$

1.4.3 Перевіряти баланс дужок у тексті

За допомогою цього пункту можна увімкнути дві речі:

1.4.4 Не зберігати робочий аркуш автоматично

If this option is set, the file where the worksheet is will be overwritten only the request of the user. In case of a crash/power loss/… a recent backup copy is still made available in the temp directory, though.

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

1.4.5 Де зберігаються налаштування?

Якщо ви користуєтеся Unix/Linux, дані налаштувань буде збережено до файла .wxMaxima у вашому домашньому каталозі (якщо ви користуєтеся wxWidgets < 3.1.1), або .config/wxMaxima.conf ((стандартний каталог XDG), якщо використано wxWidgets >= 3.1.1). Визначити версію wxWidgets можна за допомогою команди wxbuild_info(); або пункту меню «Довідка -> Про програму». wxWidgets є бібліотекою графічного інтерфейсу користувача, яка працює на багатьох платформах і є основою wxMaxima (звідси wx у назві програми). (Оскільки назви файлів починається з крапки, файл .wxMaxima і каталог.config є прихованими).

Якщо ви користуєтеся Windows, налаштування буде збережено у реєстрі. Записи wxMaxima можна знайти у цій гілці: HKEY_CURRENT_USER\Software\wxMaxima


2 Розширення Maxima

WxMaxima is primarily a graphical user interface for Maxima. As such, its main purpose is to pass along commands to Maxima and to report the results of executing those commands. In some cases, however, wxMaxima adds functionality to Maxima. WxMaxima’s ability to generate reports by exporting a workbook’s contents to HTML and LaTeX files has been mentioned. This section considers some ways that wxMaxima enhances the inclusion of graphics in a session.

2.1 Змінні із індексами

wxsubscripts specifies, if (and how) wxMaxima will autosubscript variable names:

If it is false, the functionality is off, wxMaxima will not autosubscript part of variable names after an underscore.

If it is set to 'all, everything after an underscore will be subscripted.

If it is set to true variable names of the format x_y are displayed using a subscript if

How variables are autosubscripted using wxsubscripts

If the variable name doesn’t match these requirements, it can still be declared as “to be subscripted” using the command wxdeclare_subscript(variable_name); or wxdeclare_subscript([variable_name1,variable_name2,...]); Declaring a variable as subscripted can be reverted using the following command: wxdeclare_subscript(variable_name,false);

You can use the menu “View->Autosubscript” to set these values.

2.2 Візуальний супровід дій користувача у смужці стану

Long-running commands can provide user feedback in the status bar. This user feedback is replaced by any new feedback that is placed there (allowing to use it as a progress indicator) and is deleted as soon as the current command sent to Maxima is finished. It is safe to use wxstatusbar() even in libraries that might be used with plain Maxima (as opposed to wxMaxima): If wxMaxima isn’t present the wxstatusbar() command will just be left unevaluated.

for i:1 thru 10 do (
    /* Повідомляємо користувачу, наскільки далеко зайшли */
    wxstatusbar(concat("Pass ",i)),
    /* (sleep n) — функція Lisp, якою можна скористатися */
    /* із додаванням перед нею символу «?». Команда затримує */
    /* виконання програми (у нашому прикладі, на 3 секунди) */
    ?sleep(3)
)$

2.3 Креслення

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

2.3.1 Embedding a plot into the worksheet

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”. For example wxplot2d corresponds to plot2d, wxplot3d corresponds to plot3d, wxdraw corresponds to draw and wxhistogram corresponds to histogram.

2.3.2 Збільшення або зменшення вбудованих креслень

As noted above, the configure dialog provides a way to change the default size plots created which sets the starting value of wxplot_size. The plotting routines of wxMaxima respect this variable that specifies the size of a plot in pixels. It can always be queried or used to set the size of the following plots:

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]$

Setting the size of embedded plot with wxplot_size works for embedded plots using e.g. wxplot, wxdraw, wxcontour_plot and wximplicit_plot commands and for embedded animations with with_slider_draw and wxanimate commands.

2.3.3 Креслення кращої якості

Gnuplot doesn’t seem to provide a portable way of determining whether it supports the high-quality bitmap output that the Cairo library provides. On systems where gnuplot is compiled to use this library the pngCairo option from the configuration menu (that can be overridden by the variable wxplot_pngcairo) enables support for antialiasing and additional line styles. If wxplot_pngCairo is set without gnuplot supporting this the result will be error messages instead of graphics.

2.3.4 Відкриття вбудованих креслень в інтерактивних вікнах gnuplot

Якщо креслення було створено за допомогою команд типу wxdrawwxplot2d і wxplot3d підтримки цієї можливості не передбачено), і розмір файла базового проєкту gnuplot не є надто великим, wxMaxima пропонує контекстне меню, за допомогою якого можна відкрити креслення у інтерактивному вікні gnuplot.

2.3.5 Відкриття консолі команд gnuplot у вікнах plot

У MS Windows, якщо у змінній Maxima gnuplot_command замінити «gnuplot» на «wgnuplot», gnuplot запропонує можливість відкрити вікно консолі, у якому ви зможете вводити команди gnuplot. На жаль, вмикання цієї можливості призводить до того, що gnuplot на короткий період «викрадає» фокусування клавіатури кожного разу, коли готується креслення.

2.3.6 Вбудовування анімацій до робочого аркуша

3D diagrams tend to make it hard to read quantitative data. A viable alternative might be to assign the 3rd parameter to the mouse wheel. The with_slider_draw command is a version of wxdraw2d that does prepare multiple plots and allows to switch between them by moving the slider on top of the screen. WxMaxima allows to export this animation as an animated 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
    )
)$

For those more familiar with plot than with draw, there is a second set of functions:

Normally the animations are played back or exported with the frame rate chosen in the configuration of wxMaxima. To set the speed at an individual animation is played back the variable wxanimate_framerate can be used:

wxanimate(a, 10,
    sin(a*x), [x,-5,5]), wxanimate_framerate=6$

The animation functions use Maxima’s makelist command and therefore share the pitfall that the slider variable’s value is substituted into the expression only if the variable is directly visible in the expression. Therefore the following example will fail:

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
    )
)$

2.3.7 Відкриття декількох креслень у вікнах одночасно

While not being provided by wxMaxima this feature of Maxima (on setups that support it) sometimes comes in handily. The following example comes from a post from Mario Rodriguez to the Maxima mailing list:

    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))
     );

2.3.8 Бічна панель «Накреслити за допомогою Draw»

The “Plot using draw” sidebar hides a simple code generator that allows generating scenes that make use of some of the flexibility of the draw package maxima comes with.

2.3.8.1 Двовимірний

Створює каркас команди draw(), яка малює плоску сцену. Цю сцену пізніше може бути заповнено за допомогою команд, які створюють вміст сцени, наприклад, за допомогою кнопок у рядках під кнопкою «Плоский».

One helpful feature of the 2D button is that it allows to set up the scene as an animation in which a variable (by default it is t) has a different value in each frame: Often a moving 2D plot allows easier interpretation than the same data in a non-moving 3D one.

2.3.8.2 Тривимірний

Generates the skeleton of a draw() command that draws a 3D scene. If neither a 2D nor a 3D scene is set up, all of the other buttons set up a 2D scene that contains the command the button generates.

2.3.8.3 Вираз

Додає стандартне креслення виразу, подібного до sin(x), x*sin(x) або x^2+2*x-4 до команди draw(), у якій зараз перебуває курсор. Якщо команди draw немає, буде створено двовимірну сцену із кресленням. Кожну сцену можна заповнити довільною кількістю креслень.

2.3.8.4 Графік неявної функції

Спробувати знайти усі точки, у яких справджуються вирази, подібні до y=sin(x), y*sin(x)=3 або x^2+y^2=4, і накреслити криву-результат за допомогою команди draw() у поточній позиції курсора. Якщо команди draw виявлено не буде, буде створено плоску сцену із кресленням.

2.3.8.5 Графік параметричної функції

Покроково проходить змінну від нижньої межі до верхньої межі і використовує два виразу, подібні до t*sin(t) і t*cos(t) для створення координат точок x, y (у просторових кресленнях використовується і z) кривої, які буде передано до поточної команди draw.

2.3.8.6 Точки

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

2.3.8.7 Заголовок діаграми

Малює заголовок у верхній частині діаграми,

2.3.8.8 Вісь

Налаштовує вісі.

2.3.8.9 Контур

(Only for 3D plots): Adds contour lines similar to the ones one can find in a map of a mountain to the plot commands that follow in the current draw() command and/or to the ground plane of the diagram. Alternatively, this wizard allows skipping drawing the curves entirely only showing the contour plot.

2.3.8.10 Назва графіка

Додає запис умовних позначень із назвою наступного креслення на панель умовних позначень діаграми. Порожнє значення назви вимикає створення записів умовних позначень для наступних креслень.

2.3.8.11 Колір лінії

Встановлює колір лінії для наступних креслень у поточній команді малювання.

2.3.8.12 Колір заповнення

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

2.3.8.13 Сітка

Відкриває допоміжне вікно, за допомогою якого можна налаштувати лінії сітки.

2.3.8.14 Точність

Надає змогу вибрати адекватну позицію у компромісному питанні «швидкість чи точність?», яке є частиною будь-якої програми для креслення.

2.4 Вбудовування графіків

Якщо використано формат файлів .wxmx, вбудовування файлів до проєкту wxMaxima можна виконати простим перетягуванням зі скиданням. Але іноді (наприклад, якщо вміст зображення може бути змінено згодом протягом роботи у сеансі), краще наказати програмі завантажувати файл зображення при обробці команд:

show_image("man.png");

2.5 Файли запуску

У діалоговому вікні налаштовування wxMaxima передбачено можливість редагування двох файлів із командами, які виконуються під час запуску програми:

Ці файли зберігаються у каталозі користувача Maxima (зазвичай, каталозі maxima у Windows, .maxima/ у інших системах) у домашній теці користувача. Розташування файлів можна визначити за допомогою такої команди: maxima_userdir;

2.6 Спеціальні змінні wx…

2.7 Структурний друк двовимірних даних

Функція table_form() показує двовимірний список у формі, яка є зручнішою для читання, за виведені дані типової підпрограми виведення даних Maxima. Вхідними даними є список одного або декількох списків. Подібно до команди друку, ця команда виводить дані, навіть якщо її завершити символом долара. Завершення команди символом крапки з комою призводить до виведення тієї самої таблиці разом із інструкцією «done».

table_form(
    [
        [1,2],
        [3,4]
    ]
)$

Як показує наступний приклад, списки, які зібрано командою table_form, можна створювати до виконання команди.

Третій приклад таблиці

Крім того, оскільки матриця — список списків, матриці можна перетворювати на таблиці у подібний же спосіб.

Ще один приклад table_form

2.8 Звітування про вади

WxMaxima provides a few functions that gather bug reporting information about the current system:

2.9 Як зробити так, щоб виведені дані було показано червоним кольором?

Maxima’s box() command causes wxMaxima to print its argument with a red foreground, if the second argument to the command is the text highlight.


3 Вирішення проблем

3.1 Не вдається з’єднатися із Maxima

Since Maxima (the program that does the actual mathematics) and wxMaxima (providing the easy-to-use user interface) are separate programs that communicate by the means of a local network connection. Therefore the most probable cause is that this connection is somehow not working. For example, a firewall could be set up in a way that it doesn’t just prevent unauthorized connections from the internet (and perhaps intercept some connections to the internet, too), but also blocks inter-process-communication inside the same computer. Note that since Maxima is being run by a Lisp processor the process communication that is blocked does not necessarily have to be named “maxima”. Common names of the program that opens the network connection would be sbcl, gcl, ccl, lisp.exe, or similar names.

On Unix computers another possible reason would be that the loopback network that provides network connections between two programs in the same computer isn’t properly configured.

3.2 Як зберегти дані із пошкодженого файла .wxmx

Internally most modern XML-based formats are ordinary zip files. WxMaxima doesn’t turn on compression, so the contents of .wxmx files can be viewed in any text editor.

If the zip signature at the end of the file is still intact after renaming a broken .wxmx file to .zip most operating systems will provide a way to extract any portion of the information that is stored inside it. This can be done when there is a need of recovering the original image files from a text processor document. If the zip signature isn’t intact that does not need to be the end of the world: If wxMaxima during saving detected that something went wrong there will be a .wxmx~ file whose contents might help.

І навіть якщо такого файла не існує — якщо встановлено параметр налаштування для оптимізації файлів .wxmx для системи керування версіями, можна перейменувати файл .wxmx на файл .txt і скористатися текстовим редактором для відновлення частини XML із вмісту файла (він починається з <?xml version="1.0" encoding="UTF-8"?> і завершується </wxMaximaDocument>. До і після цього фрагмента тексту у текстовому редакторі ви побачите непридатні до читання двійкові дані).

If a text file containing only these contents (e.g. copy and paste this text into a new file) is saved as a file ending in .xml, wxMaxima will know how to recover the text from the document.

3.3 Хочу бачити діагностичні відомості на екрані, перш ніж команда завершить свою роботу

Зазвичай, wxMaxima очікує, доки буде передано усю двовимірну формулу, перш ніж починає виводити дані. Таким чином заощаджується час, який могло б бути витрачено на постійні спроби вивести незавершену формулу. Втім, існує команда disp, яка може виводити діагностичні дані негайно, не очікуючи на завершення поточної команди Maxima:

for i:1 thru 10 do (
   disp(i),
   /* (sleep n) — функція Lisp, якою можна скористатися */
   /* із додаванням перед нею символу «?». Команда затримує */
   /* виконання програми (у нашому прикладі, на 3 секунди) */
   ?sleep(3)
)$

3.4 На кресленні показано лише закриту порожню обгортку із повідомленням про помилку

Це означає, що wxMaxima не вдалося прочитати файл, який Maxima мала наказати створити gnuplot.

Можливими причинами цієї помилки є такі:

3.5 Спроба накреслити анімацію призводить до повідомлення «помилка: невизначена змінна»

The value of the slider variable by default is only substituted into the expression that is to be plotted if it is visible there. Using a subst command that substitutes the slider variable into the equation to plot resolves this problem. At the end of section Embedding animations into the spreadsheet, you can see an example.

3.6 I lost cell content and undo doesn’t remember

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

playback();

3.7 WxMaxima starts up with the message “Maxima process terminated.”

Однією з можливих причин є те, що Maxima не вдалося знайти у каталозі, який вказано на сторінці «Maxima» діалогового вікна налаштовування wxMaxima, а отже, програму взагалі не запущено. Встановлення адреси коректного виконуваного файла Maxima має виправити цю проблему.

3.8 Maxima висне при обчислення і не відповідає на команди

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

3.9 Версії Maxima на основі SBCL не вистачає оперативної пам’яті

The Lisp compiler SBCL by default comes with a memory limit that allows it to run even on low-end computers. When compiling a big software package like Lapack or dealing with extremely big lists of equations this limit might be too low. In order to extend the limits, SBCL can be provided with the command line parameter --dynamic-space-size that tells SBCL how many megabytes it should reserve. A 32bit Windows-SBCL can reserve up to 999 Megabytes. A 64-bit SBCL version running on Windows can be instructed to use more than the about 1280 Megabytes compiling Lapack needs.

Одним зі способів передати Maxima (а отже, SBCL) параметри командного рядка є поле «Додаткові параметри для Maxima» вікна налаштовування wxMaxima.

sbcl memory

3.10 При введенні даних програма уповільнюється або пропускає символи в Ubuntu

Встановлення пакунка ibus-gtk має усунути проблему. Докладніше про це на сторінці (https://bugs.launchpad.net/ubuntu/+source/wxwidgets3.0/+bug/1421558).

3.11 WxMaxima halts when Maxima processes Greek characters or Umlauts

Якщо вашу Maxima засновано на SBCL, слід додати такі рядки до вашого файла .sbclrc:

(setf sb-impl::*default-external-format* :utf-8)

The folder where this file has to be placed is system- and installation-specific. But any SBCL-based Maxima that already has evaluated a cell in the current session will happily tell where it can be found after getting the following command:

:lisp (sb-impl::userinit-pathname)

3.12 Креслення

3.12.1 Чи можна зробити так, щоб wxMaxima виводила дані одразу до файлів зображень і до вбудованих до аркуша креслень?

The worksheet embeds .png files. WxMaxima allows the user to specify where they should be generated:

wxdraw2d(
    file_name="test",
    explicit(sin(x),x,1,10)
);

If a different format is to be used, it is easier to generate the images and then import them into the worksheet again:

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)
);

3.12.2 Чи можна встановити співвідношення розмірів зображення креслення?

Not directly using Maxima. But there are Gnuplot commands for it:

wxdraw2d(
    proportional_axis=xy,
    explicit(sin(x),x,1,10)
),wxplot_size=[1000,1000];

3.12.3 After upgrading to MacOS 13.1 plot and/or draw commands output error messages like


1 HIToolbox 0x00007ff80cd91726 _ZN15MenuBarInstance22EnsureAutoShowObserverEv + 102
2 HIToolbox 0x00007ff80cd912b8 _ZN15MenuBarInstance14EnableAutoShowEv + 52
3 HIToolbox 0x00007ff80cd35908 SetMenuBarObscured + 408
...

This might be an issue with the operating system. Disable the hiding of the menu bar (SystemSettings => Desktop & Dock => Menu Bar) might solve the issue. See wxMaxima issue #1746 for more information.


4 Поширені питання та відповіді на них

4.1 Чи є якийсь спосіб умістити більше тексту на сторінку LaTeX?

Yes. Use the LaTeX package “geometry” to specify the size of the borders.

Ви можете додати такий рядок до преамбули LaTeX (наприклад, за допомогою відповідного поля у діалоговому вікні налаштовування («Експорт->Додаткові рядки до преамбули TeX») для встановлення розміру полів у 1 см):

\usepackage[left=1cm,right=1cm,top=1cm,bottom=1cm]{geometry}

4.2 Чи передбачено у програмі «темний» режим?

If wxWidgets is new enough, wxMaxima will automatically be in dark mode if the rest of the operating system is. The worksheet itself is by default equipped with a bright background. But it can be configured otherwise. Alternatively, there is a View/Invert worksheet brightness menu entry that allows to quickly convert the worksheet from dark to bright and vice versa.

4.3 WxMaxima sometimes hangs for several seconds once in the first minute

WxMaxima delegates some big tasks like parsing Maxima’s >1000-page-manual to background tasks, which normally goes totally unnoticed. At the moment the result of such a task is needed, though, it is possible that wxMaxima needs to wait a couple of seconds before it can continue its work.

4.4 З’являється повідомлення «Неможливо встановити локаль “xx_YY”», особливо під час тестування параметрів нової локалі

Попередження про локаль

(The same problem can occur with other applications too). The translations seem okay after you click on ‘OK’. WxMaxima does not only use its own translations but the translations of the wxWidgets framework too.

These locales maybe not present in the system. On Ubuntu/Debian systems they can be generated using: dpkg-reconfigure locales

4.5 Якщо скористатися символами множин дійсних чисел, натуральних чисел (ℝ, ℕ) тощо?

You can find these symbols in the Unicode sidebar (search for ‘double-struck capital’). But the selected font must also support these symbols. If they do not display properly, select another font.


5 Параметри командного рядка

Most operating systems provide less complicated ways of starting programs than the command-line so this possibility is only rarely used. WxMaxima still provides some command-line switches, though.

Instead of a minus, some operating systems might use a dash in front of the command-line switches.


6 About the program, contributing to wxMaxima

wxMaxima is mainly developed using the program 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.

The source code of wxMaxima is documented using Doxygen here.

The program is nearly self-contained, so except for system libraries (and the wxWidgets library), no external dependencies (like graphic files or the Lisp part (the wxmathML.lisp-file) is needed, these files are included in the executable.

If you are a developer, you might want to try out a modified wxmathML.lisp-file without recompiling everything, one can use the command line option --wxmathml-lisp=<str> to use another Lisp file, not the included one.