1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="generator" content="pandoc" />
<title>wxMaxima</title>
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<link rel="stylesheet" href="wxmaxima.css" type="text/css" />
<link rel="icon" type="image/svg+xml" href="wxmaxima.svg" />
</head>
<body>
<div id="header">
<h1 class="title">wxMaxima</h1>
</div>
<div id="TOC">
<ul>
<li><a href="#підручник-користувача-wxmaxima">Підручник користувача wxMaxima</a></li>
<li><a href="#вступ-до-wxmaxima"><span class="toc-section-number">1</span> Вступ до wxMaxima</a>
<ul>
<li><a href="#maxima-і-wxmaxima"><span class="toc-section-number">1.1</span> <em>Maxima</em> і wxMaxima</a>
<ul>
<li><a href="#maxima"><span class="toc-section-number">1.1.1</span> <em>Maxima</em></a></li>
<li><a href="#wxmaxima"><span class="toc-section-number">1.1.2</span> wxMaxima</a></li>
</ul></li>
<li><a href="#основи-роботи-із-книгою"><span class="toc-section-number">1.2</span> Основи роботи із книгою</a>
<ul>
<li><a href="#використання-робочих-книг"><span class="toc-section-number">1.2.1</span> Використання робочих книг</a></li>
<li><a href="#комірки"><span class="toc-section-number">1.2.2</span> Комірки</a></li>
<li><a href="#горизонтальний-і-вертикальний-курсори"><span class="toc-section-number">1.2.3</span> Горизонтальний і вертикальний курсори</a></li>
<li><a href="#надсилання-комірок-для-обчислення-у-maxima"><span class="toc-section-number">1.2.4</span> Надсилання комірок для обчислення у Maxima</a></li>
<li><a href="#автоматичне-доповнення-команд"><span class="toc-section-number">1.2.5</span> Автоматичне доповнення команд</a></li>
<li><a href="#бічні-панелі"><span class="toc-section-number">1.2.6</span> Бічні панелі</a></li>
<li><a href="#виведення-коду-mathml"><span class="toc-section-number">1.2.7</span> Виведення коду MathML</a></li>
<li><a href="#підтримка-markdown"><span class="toc-section-number">1.2.8</span> Підтримка Markdown</a></li>
<li><a href="#клавіатурні-скорочення"><span class="toc-section-number">1.2.9</span> Клавіатурні скорочення</a></li>
<li><a href="#код-tex-у-експортованому-tex"><span class="toc-section-number">1.2.10</span> Код TeX у експортованому TeX</a></li>
</ul></li>
<li><a href="#формати-файлів"><span class="toc-section-number">1.3</span> Формати файлів</a>
<ul>
<li><a href="#mac"><span class="toc-section-number">1.3.1</span> .mac</a></li>
<li><a href="#wxm"><span class="toc-section-number">1.3.2</span> .wxm</a></li>
<li><a href="#wxmx"><span class="toc-section-number">1.3.3</span> .wxmx</a></li>
</ul></li>
<li><a href="#параметри-налаштування"><span class="toc-section-number">1.4</span> Параметри налаштування</a>
<ul>
<li><a href="#типова-частота-кадрів-анімації"><span class="toc-section-number">1.4.1</span> Типова частота кадрів анімації</a></li>
<li><a href="#типовий-розмір-креслення-для-нових-сеансів-maxima"><span class="toc-section-number">1.4.2</span> Типовий розмір креслення для нових сеансів <em>maxima</em></a></li>
<li><a href="#перевіряти-баланс-дужок-у-тексті"><span class="toc-section-number">1.4.3</span> Перевіряти баланс дужок у тексті</a></li>
<li><a href="#не-зберігати-робочий-аркуш-автоматично"><span class="toc-section-number">1.4.4</span> Не зберігати робочий аркуш автоматично</a></li>
<li><a href="#де-зберігаються-налаштування"><span class="toc-section-number">1.4.5</span> Де зберігаються налаштування?</a></li>
</ul></li>
</ul></li>
<li><a href="#розширення-maxima"><span class="toc-section-number">2</span> Розширення <em>Maxima</em></a>
<ul>
<li><a href="#змінні-із-індексами"><span class="toc-section-number">2.1</span> Змінні із індексами</a></li>
<li><a href="#візуальний-супровід-дій-користувача-у-смужці-стану"><span class="toc-section-number">2.2</span> Візуальний супровід дій користувача у смужці стану</a></li>
<li><a href="#креслення"><span class="toc-section-number">2.3</span> Креслення</a>
<ul>
<li><a href="#вбудовування-креслення-до-робочого-аркуша"><span class="toc-section-number">2.3.1</span> Вбудовування креслення до робочого аркуша</a></li>
<li><a href="#збільшення-або-зменшення-вбудованих-креслень"><span class="toc-section-number">2.3.2</span> Збільшення або зменшення вбудованих креслень</a></li>
<li><a href="#креслення-кращої-якості"><span class="toc-section-number">2.3.3</span> Креслення кращої якості</a></li>
<li><a href="#відкриття-вбудованих-креслень-в-інтерактивних-вікнах-gnuplot"><span class="toc-section-number">2.3.4</span> Відкриття вбудованих креслень в інтерактивних вікнах <em>gnuplot</em></a></li>
<li><a href="#відкриття-консолі-команд-gnuplot-у-вікнах-plot"><span class="toc-section-number">2.3.5</span> Відкриття консолі команд gnuplot у вікнах <code>plot</code></a></li>
<li><a href="#вбудовування-анімацій-до-робочого-аркуша"><span class="toc-section-number">2.3.6</span> Вбудовування анімацій до робочого аркуша</a></li>
<li><a href="#відкриття-декількох-креслень-у-вікнах-одночасно"><span class="toc-section-number">2.3.7</span> Відкриття декількох креслень у вікнах одночасно</a></li>
<li><a href="#бічна-панель-накреслити-за-допомогою-draw"><span class="toc-section-number">2.3.8</span> Бічна панель «Накреслити за допомогою Draw»</a></li>
</ul></li>
<li><a href="#вбудовування-графіків"><span class="toc-section-number">2.4</span> Вбудовування графіків</a></li>
<li><a href="#файли-запуску"><span class="toc-section-number">2.5</span> Файли запуску</a></li>
<li><a href="#спеціальні-змінні-wx"><span class="toc-section-number">2.6</span> Спеціальні змінні wx…</a></li>
<li><a href="#структурний-друк-двовимірних-даних"><span class="toc-section-number">2.7</span> Структурний друк двовимірних даних</a></li>
<li><a href="#звітування-про-вади"><span class="toc-section-number">2.8</span> Звітування про вади</a></li>
<li><a href="#як-зробити-так-щоб-виведені-дані-було-показано-червоним-кольором"><span class="toc-section-number">2.9</span> Як зробити так, щоб виведені дані було показано червоним кольором?</a></li>
</ul></li>
<li><a href="#вирішення-проблем"><span class="toc-section-number">3</span> Вирішення проблем</a>
<ul>
<li><a href="#не-вдається-зєднатися-із-maxima"><span class="toc-section-number">3.1</span> Не вдається з’єднатися із <em>Maxima</em></a></li>
<li><a href="#як-зберегти-дані-із-пошкодженого-файла-.wxmx"><span class="toc-section-number">3.2</span> Як зберегти дані із пошкодженого файла .wxmx</a></li>
<li><a href="#хочу-бачити-діагностичні-відомості-на-екрані-перш-ніж-команда-завершить-свою-роботу"><span class="toc-section-number">3.3</span> Хочу бачити діагностичні відомості на екрані, перш ніж команда завершить свою роботу</a></li>
<li><a href="#на-кресленні-показано-лише-закриту-порожню-обгортку-із-повідомленням-про-помилку"><span class="toc-section-number">3.4</span> На кресленні показано лише закриту порожню обгортку із повідомленням про помилку</a></li>
<li><a href="#спроба-накреслити-анімацію-призводить-до-повідомлення-помилка-невизначена-змінна"><span class="toc-section-number">3.5</span> Спроба накреслити анімацію призводить до повідомлення «помилка: невизначена змінна»</a></li>
<li><a href="#втрачено-вміст-комірок-і-скасовування-дій-не-допомагає"><span class="toc-section-number">3.6</span> Втрачено вміст комірок і скасовування дій не допомагає</a></li>
<li><a href="#wxmaxima-запускається-із-повідомленням-процес-maxima-несподівано-перервав-роботу."><span class="toc-section-number">3.7</span> <em>wxMaxima</em> запускається із повідомленням «Процес Maxima несподівано перервав роботу.»</a></li>
<li><a href="#maxima-висне-при-обчислення-і-не-відповідає-на-команди"><span class="toc-section-number">3.8</span> Maxima висне при обчислення і не відповідає на команди</a></li>
<li><a href="#версії-maxima-на-основі-sbcl-не-вистачає-оперативної-памяті"><span class="toc-section-number">3.9</span> Версії <em>Maxima</em> на основі SBCL не вистачає оперативної пам’яті</a></li>
<li><a href="#при-введенні-даних-програма-уповільнюється-або-пропускає-символи-в-ubuntu"><span class="toc-section-number">3.10</span> При введенні даних програма уповільнюється або пропускає символи в Ubuntu</a></li>
<li><a href="#wxmaxima-припиняє-роботу-коли-maxima-обробляє-грецькі-символи-або-умляути"><span class="toc-section-number">3.11</span> <em>wxMaxima</em> припиняє роботу, коли <em>Maxima</em> обробляє грецькі символи або умляути</a></li>
<li><a href="#креслення-1"><span class="toc-section-number">3.12</span> Креслення</a>
<ul>
<li><a href="#чи-можна-зробити-так-щоб-wxmaxima-виводила-дані-одразу-до-файлів-зображень-і-до-вбудованих-до-аркуша-креслень"><span class="toc-section-number">3.12.1</span> Чи можна зробити так, щоб <em>wxMaxima</em> виводила дані одразу до файлів зображень і до вбудованих до аркуша креслень?</a></li>
<li><a href="#чи-можна-встановити-співвідношення-розмірів-зображення-креслення"><span class="toc-section-number">3.12.2</span> Чи можна встановити співвідношення розмірів зображення креслення?</a></li>
</ul></li>
</ul></li>
<li><a href="#поширені-питання-та-відповіді-на-них"><span class="toc-section-number">4</span> Поширені питання та відповіді на них</a>
<ul>
<li><a href="#чи-є-якийсь-спосіб-умістити-більше-тексту-на-сторінку-latex"><span class="toc-section-number">4.1</span> Чи є якийсь спосіб умістити більше тексту на сторінку LaTeX?</a></li>
<li><a href="#чи-передбачено-у-програмі-темний-режим"><span class="toc-section-number">4.2</span> Чи передбачено у програмі «темний» режим?</a></li>
<li><a href="#wxmaxima-іноді-повисає-на-декілька-секунд-під-час-першої-хвилини-роботи"><span class="toc-section-number">4.3</span> <em>wxMaxima</em> іноді повисає на декілька секунд під час першої хвилини роботи</a></li>
</ul></li>
<li><a href="#параметри-командного-рядка"><span class="toc-section-number">5</span> Параметри командного рядка</a></li>
</ul>
</div>
<h1 class="unnumbered" number="" id="підручник-користувача-wxmaxima">Підручник користувача wxMaxima</h1>
<p>wxMaxima — графічний інтерфейс користувача до системи комп’ютерної алгебри (СКА) <em>Maxima</em>. За допомогою wxMaxima можна користуватися усіма функціями <em>Maxima</em>. Крім того, у програмі передбачено зручні допоміжні програми для доступу до найпоширеніших можливостей СКА. У цьому підручнику наведено опис деяких можливостей, які роблять wxMaxima одним із найпопулярніших графічних інтерфейсів <em>Maxima</em>.</p>
<div class="figure">
<img src="./wxMaximaLogo.png" id="img_wxMaximaLogo" alt="" />
<p class="caption">Логотип wxMaxima</p>
</div>
<p>Перш ніж ми перейдемо до суті, декілька зауважень щодо навігації підручником. Нижче наведено коротку таблицю змісту. Натискання будь-якого з елементів у списку переведе курсор до початку відповідного розділу підручника. Натискання пункту <a href="#TOC">Зміст</a> переведе курсор до розширеної таблиці змісту. Цією розширеною таблицею можна скористатися для точнішого переходу до окремих частин підручника. У текст буде розташовано посилання на таблицю змісту з навігаційною метою.</p>
<ul>
<li><a href="#introduction-to-wxmaxima" title="Вступ до wxMaxima">Вступ</a>:</li>
</ul>
<p>Основи wxMaxima</p>
<ul>
<li><a href="#extensions-to-maxima" title="Розширення">Розширення</a>:</li>
</ul>
<p>Команди, які wxMaxima додає до <em>Maxima</em></p>
<ul>
<li><a href="#troubleshooting" title="Усування вад">Усування вад</a>:</li>
</ul>
<p>Що робити, якщо wxMaxima працює неправильно</p>
<ul>
<li><a href="#faq" title="Поширені питання та відповіді на них">Поширені питання</a>:</li>
</ul>
<p>Поширені питання та відповіді на них</p>
<ul>
<li><a href="#command-line-arguments" title="Командний рядок _Maxima_">Командний рядок</a>:</li>
</ul>
<p>Параметри командного рядка, підтримку яких передбачено у wxMaxima</p>
<hr />
<h1 number="1" id="вступ-до-wxmaxima"><span class="header-section-number">1</span> Вступ до wxMaxima</h1>
<h2 number="1.1" id="maxima-і-wxmaxima"><span class="header-section-number">1.1</span> <em>Maxima</em> і wxMaxima</h2>
<p>У системі програмного забезпечення з відкритим кодом великі системи, зазвичай, діляться на менші проєкти, з якими простіше працювати невеликим групам розробників. Наприклад, програма для запису компакт-дисків складається з засобу командного рядка, який, власне, виконує запис компакт-диска, і графічного інтерфейсу користувача, за допомогою користувачі можуть виконати потрібні їм дії, не запам’ятовуючи параметрів командного рядка і, загалом, взагалі не маючи справи із командним рядком. Однією із переваг цього підходу є те, що робота з розробки засобу командного рядка може бути використана багатьма програмами: той самий засіб командного рядка для запису компакт-дисків можна використати у додатку надсилання даних на компакт-диск у програмі для керування файлами, для функції «записати на компакт-диск» у музичному програвачі та для запису компакт-диска у програмі для резервного копіювання на DVD. Ще однією перевагою є поділ одного великого завдання на менші частини, що надає змогу розробникам надавати декілька інтерфейсів користувача для однієї програми.</p>
<p>Система комп’ютерної алгебри (СКА), подібна до <em>Maxima</em>, дуже добре вкладається у цю схему. СКА може надавати логіку до програми-калькулятора із довільною точністю обчислень або може виконувати автоматичні перетворення форму у фоновому режимі для більших систем (наприклад, <a href="https://www.sagemath.org/">Sage</a>). Крім того, нею можна користуватися і безпосередньо, як самостійною системою. Доступ до <em>Maxima</em> можна отримати з командного рядка. Втім, часто інтерфейси, подібні до <em>wxMaxima</em>, є набагато ефективнішим способом доступу до програмного забезпечення, особливо для початківців.</p>
<h3 number="1.1.1" id="maxima"><span class="header-section-number">1.1.1</span> <em>Maxima</em></h3>
<p><em>Maxima</em> є повноцінною системою комп’ютерної алгебри (СКА). СКА — програма, яка може розв’язувати математичні задачі перетворенням формул і визначенням формули, яка розв’язує задачу, замість простого виведення числової форми результату. Іншими словами, <em>Maxima</em> може слугувати калькулятором, який визначає числові значення змінних, а може давати аналітичні розв’язки. Крім того, у програмі передбачено багато обчислювальних методів для аналізу рівнянь і систем рівнянь, які не може бути розв’язано аналітично.</p>
<div class="figure">
<img src="./maxima_screenshot.png" id="img_maxima_screenshot" alt="" />
<p class="caption">Знімок вікна Maxima, командний рядок</p>
</div>
<p>Із докладною документацією до <em>Maxima</em> можна <a href="http://maxima.sourceforge.net/documentation.html">ознайомитися у інтернеті</a>. Доступ до частини цієї документації можна отримати з меню «Довідка» у wxMaxima. Якщо ви натиснете клавішу довідки (у більшості систем це клавіша F1), використання контекстної довідки <em>wxMaxima</em> відкриє для вас сторінку підручника з <em>Maxima</em> із довідкою щодо команди, у якій перебуває курсор.</p>
<h3 number="1.1.2" id="wxmaxima"><span class="header-section-number">1.1.2</span> wxMaxima</h3>
<p><em>wxMaxima</em> — графічний інтерфейс користувача, який надає доступ до усіх функціональних можливостей і гнучкості <em>Maxima</em>. <em>wxMaxima</em> надає у розпорядження користувачам графічні засоби роботи та можливості, які значно спрощують роботу з <em>Maxima</em>. Наприклад, у wxMaxima передбачено можливість експортування вмісту будь-якої комірки (або, якщо це потрібно, будь-якої частини формули) у форматі тексту, коду LaTeX або специфікації MathML простим клацанням правою кнопкою миші. Насправді, можна експортувати увесь робочий аркуш у форматі HTML або коду LaTeX. Із документацією до <em>wxMaxima</em>, зокрема робочими книгами для ілюстрації аспектів користування, можна ознайомитися на <a href="https://wxMaxima-developers.github.io/wxmaxima/help.html">сайті довідки</a> <em>wxMaxima</em>, а також за допомогою меню «Довідка».</p>
<div class="figure">
<img src="./wxMaximaWindow.png" id="img_wxMaximaWindow" alt="" />
<p class="caption">Вікно wxMaxima</p>
</div>
<p>Обчислення, які ви наказуєте виконати <em>wxMaxima</em> у фоновому режимі передаються інструментам командного рядка <em>Maxima</em>.</p>
<h2 number="1.2" id="основи-роботи-із-книгою"><span class="header-section-number">1.2</span> Основи роботи із книгою</h2>
<p>Призначення більшої частини інтерфейсу <em>wxMaxima</em> є очевидним, але деякі речі потребують більшої уваги. На <a href="https://wxMaxima-developers.github.io/wxmaxima/help.html">цьому сайті</a> можна знайти декілька робочих книг, які присвячено різноманітним аспектами роботи у <em>wxMaxima</em>. Опрацювання деяких з цих зразків (зокрема «Десятихвилинного підручника з <em>(wx)Maxima</em>») надасть змогу краще ознайомитися із роботою <em>Maxima</em> і використанням <em>wxMaxima</em> для взаємодії із <em>Maxima</em>. У цьому ж підручнику ми зосередимо увагу на описі тих аспектів <em>wxMaxima</em>, які, ймовірно, є неочевидними і про які немає відомостей у інтернет-підручнику.</p>
<h3 number="1.2.1" id="використання-робочих-книг"><span class="header-section-number">1.2.1</span> Використання робочих книг</h3>
<p>Однією із дуже небагатьох речей, які є нестандартними у <em>wxMaxima</em> є те, що дані для <em>Maxima</em> у програмі впорядковано за комірками, які обчислюються (тобто надсилаються до <em>Maxima</em>) лише на запит користувача. При обчисленні комірки усі команди у ній, і лише у ній, обчислюються пакетно. (Попереднє твердження є не зовсім точним: можна позначити набір сусідніх комірок і обчислити їх разом. Крім того, можна наказати <em>Maxima</em> обчислити усі комірки у робочій книзі одразу.) Підхід <em>wxMaxima</em> до надсилання команд на виконання може спочатку видатися незвичним. Втім, він значно спрощує роботу із великими документами (у яких користувач не хоче, щоб програма автоматично вмикала повне переобчислення усього документа у відповідь на будь-яку зміну). Крім того, такий підхід є дуже зручним для усування вад.</p>
<p>Якщо ви почнете вводити якийсь текст у вікні <em>wxMaxima</em>, програма автоматично створить нову комірку робочого аркуша. Тип цієї комірки можна вибрати за допомогою панелі інструментів. Якщо створено комірку з кодом, її вміст може бути надіслано до <em>Maxima</em>. Результат обчислень буде показано під рядком коду. Пару таких команд показано нижче.</p>
<div class="figure">
<img src="./InputCell.png" id="img_InputCell" alt="" />
<p class="caption">Комірка введення-виведення</p>
</div>
<p>При обчисленні вмісту комірки вхідних даних <em>Maxima</em> призначає мітку для вхідних даних (типово, таку мітку буде показано червоним кольором, вона матиме формат <code>%i</code>). За цією міткою можна посилатися на вміст далі у сеансі роботи з <em>wxMaxima</em>. Виведені <em>Maxima</em> дані також отримають мітку, яка починається з <code>%o</code>, і яку типово буде приховано, хіба що користувач надасть назву виведеними даним. Якщо надано назву, буде показано визначену користувачем мітку. Втім, можна буде користуватися і автоматично створеною <em>Maxima</em> міткою у стилі <code>%o</code>.</p>
<p>Окрім комірок для вхідних даних, у <em>wxMaxima</em> передбачено комірки для документації, комірки зображень, комірки заголовків, комірки глав та комірки розділів. У кожної комірки є власний буфер скасовування дій, тому дуже просто діагностувати проблеми, змінюючи значення у комірках і поступово скасовуючи внесені зміни у різних комірках. Крім того, у самого робочого аркуша також є власний буфер скасовування дій, яким може скористатися для скасовування редагувань у комірках, додавання і вилучення комірок.</p>
<p>На рисунку нижче показано різні типи комірок (комірки заголовків, комірки розділів, комірки підрозділів, текстові комірки, комірки введення-виведення та комірки зображення).</p>
<div class="figure">
<img src="./cell-example.png" id="img_cell-example" alt="" />
<p class="caption">Приклад різних комірок wxMaxima</p>
</div>
<h3 number="1.2.2" id="комірки"><span class="header-section-number">1.2.2</span> Комірки</h3>
<p>Робочий аркуш складається з комірок. У кожній комірці можуть міститися інші комірки або дані таких типів:</p>
<ul>
<li>один або декілька рядків вхідних даних <em>Maxima</em></li>
<li>одне або декілька зображень</li>
<li>виведені дані або питання від <em>Maxima</em></li>
<li>текстовий блок, який може бути, наприклад, документацією</li>
<li>заголовок, розділ або підрозділ.</li>
</ul>
<p>Типовою поведінкою <em>wxMaxima</em> при введенні тексту є автоматичне створення комірки формули. Комірки інших типів можна створити за допомогою меню «Комірка», натискання клавіатурних скорочень для пунктів з цього меню або за допомогою спадного списку на панелі інструментів. Після створення нематематичної комірки усе, що введено у файл, вважатиметься текстом.</p>
<p>До математичної комірки може бути введено текст додаткового коментаря у відповідних обмежувачах: <code>/*Цей коментар не буде надіслано до Maxima для обробки*/</code>.</p>
<h3 number="1.2.3" id="горизонтальний-і-вертикальний-курсори"><span class="header-section-number">1.2.3</span> Горизонтальний і вертикальний курсори</h3>
<p>Якщо користувач намагається позначити ціле речення, текстовий процесор намагається розширити позначений фрагмент так, щоб він автоматично завершувався на початку і наприкінці слів. Так само, <em>wxMaxima</em>, якщо позначено декілька комірок, доповнюватиме позначений фрагмент до меж комірок.</p>
<p>Нестандартною особливістю є те, що у <em>wxMaxima</em> передбачено гнучку систему перетягування зі скиданням, у якій визначено два типи курсорів. <em>wxMaxima</em> автоматично перемикатиметься між ними, коли у цьому виникатиме потреба:</p>
<ul>
<li>Курсор буде намальовано горизонтально, якщо його пересунуто до проміжку між двома комірками, або якщо користувач клацнув кнопкою миші у проміжку між двома комірками.</li>
<li>Вертикальний курсор, який працює у комірці. Цей курсор активується пересуванням курсора всередину комірки за допомогою вказівника миші або клавіш зі стрілками. Цей курсор працює подібно до курсора у текстовому редакторі.</li>
</ul>
<h3 number="1.2.4" id="надсилання-комірок-для-обчислення-у-maxima"><span class="header-section-number">1.2.4</span> Надсилання комірок для обчислення у Maxima</h3>
<p>Команду у комірці буде виконано одразу після натискання комбінацій клавіш <kbd>CTRL</kbd>+<kbd>ENTER</kbd>, <kbd>SHIFT</kbd>+<kbd>ENTER</kbd> або клавіші <kbd>ENTER</kbd> на клавіатурі. Типовим для <em>wxMaxima</em> є введення команд за допомогою <kbd>CTRL+ENTER</kbd> або <kbd>SHIFT+ENTER</kbd>, але <em>wxMaxima</em> можна налаштувати на виконання команд у відповідь на натискання <kbd>ENTER</kbd>.</p>
<h3 number="1.2.5" id="автоматичне-доповнення-команд"><span class="header-section-number">1.2.5</span> Автоматичне доповнення команд</h3>
<p>У <em>wxMaxima</em> реалізовано можливість автоматичного доповнення коду, якою можна скористатися за допомогою меню (Комірка/Доповнити слово) або натисканням комбінації клавіш <kbd>CTRL</kbd>+<kbd>Пробіл</kbd>. Автоматичне доповнення є чутливим до регістру символів. Наприклад, якщо його активувати зі специфікацією модулів для ezUnits, воно запропонує список відповідних модулів.</p>
<div class="figure">
<img src="./ezUnits.png" id="img_ezUnits" alt="" />
<p class="caption">ezUnits</p>
</div>
<p>Окрім доповнення, назви файла, назви модуля або назви поточної команди чи змінної, засіб автоматичного доповнення може показувати шаблони для більшості команд, вказуючи тип (і значення) параметрів, які очікує отримати відповідна програма. Щоб задіяти цю можливість, натисніть комбінацію клавіш <kbd>SHIFT</kbd>+<kbd>CTRL</kbd>+<kbd>ПРОБІЛ</kbd> або виберіть відповідний пункт меню (Комірка/Показати шаблон).</p>
<h4 number="1.2.5.1" id="грецькі-літери"><span class="header-section-number">1.2.5.1</span> Грецькі літери</h4>
<p>Комп’ютери традиційно зберігають символи у форматі 8-бітових значень. Це уможливлює існування наборів, що складаються лише із 256 різних символів. У такий набір може бути включено усі літери, цифри та символи керування (завершення передавання, кінець рядка, лінії та кутики для малювання меню <em>тощо</em>) майже будь-якої європейської мови.</p>
<p>Втім, у більшості мов до вибраної кодової сторінки із 256 символів не можна включити додаткові символи, зокрема літери грецької абетки, які широко використовуються у математичних формулах. Щоб подолати обмеження подібного типу, було винайдено <a href="https://home.unicode.org/">Юнікод</a> — кодування, яке працює для латиниці, але використовує набагато більше за 256 символів.</p>
<p><em>Maxima</em> уможливлює використання символів Юнікоду, якщо програму було зібрано за допомогою компілятора Lisp, у якому передбачено підтримку Юнікоду або такого, який є нейтральним щодо кодування символів. Оскільки, хоча б одна з цих вимог, зазвичай, справджується, у <em>wxMaxima</em> реалізовано спосіб введення грецьких символів з клавіатури:</p>
<ul>
<li>Грецьку літеру можна ввести натисканням клавіші <kbd>ESC</kbd> з наступним введенням назви символу грецької абетки.</li>
<li>Крім того, можна натиснути <kbd>ESC</kbd>, ввести одну літеру (чи дві літери для грецької літери «омікрон») і натиснути <kbd>ESC</kbd> ще раз. У цьому випадку прив’язка до літер є такою:</li>
</ul>
<table>
<thead>
<tr class="header">
<th align="center">key</th>
<th align="center">greek letter</th>
<th align="center">key</th>
<th align="center">greek letter</th>
<th align="center">key</th>
<th align="center">greek letter</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td align="center">a</td>
<td align="center">альфа</td>
<td align="center">i</td>
<td align="center">йота</td>
<td align="center">r</td>
<td align="center">ро</td>
</tr>
<tr class="even">
<td align="center">b</td>
<td align="center">бета</td>
<td align="center">k</td>
<td align="center">каппа</td>
<td align="center">s</td>
<td align="center">сигма</td>
</tr>
<tr class="odd">
<td align="center">g</td>
<td align="center">гамма</td>
<td align="center">l</td>
<td align="center">лямбда</td>
<td align="center">t</td>
<td align="center">тау</td>
</tr>
<tr class="even">
<td align="center">d</td>
<td align="center">дельта</td>
<td align="center">m</td>
<td align="center">мю</td>
<td align="center">u</td>
<td align="center">упсилоn</td>
</tr>
<tr class="odd">
<td align="center">e</td>
<td align="center">епсилон</td>
<td align="center">n</td>
<td align="center">ню</td>
<td align="center">f</td>
<td align="center">фі</td>
</tr>
<tr class="even">
<td align="center">z</td>
<td align="center">дзета</td>
<td align="center">x</td>
<td align="center">ксі</td>
<td align="center">c</td>
<td align="center">хі</td>
</tr>
<tr class="odd">
<td align="center">h</td>
<td align="center">ета</td>
<td align="center">om</td>
<td align="center">омікрон</td>
<td align="center">y</td>
<td align="center">псі</td>
</tr>
<tr class="even">
<td align="center">q</td>
<td align="center">тета</td>
<td align="center">p</td>
<td align="center">пі</td>
<td align="center">o</td>
<td align="center">омега</td>
</tr>
<tr class="odd">
<td align="center">A</td>
<td align="center">Альфа</td>
<td align="center">I</td>
<td align="center">Йота</td>
<td align="center">R</td>
<td align="center">Ро</td>
</tr>
<tr class="even">
<td align="center">B</td>
<td align="center">Бета</td>
<td align="center">K</td>
<td align="center">Каппа</td>
<td align="center">S</td>
<td align="center">Сигма</td>
</tr>
<tr class="odd">
<td align="center">G</td>
<td align="center">Гамма</td>
<td align="center">L</td>
<td align="center">Лямбда</td>
<td align="center">T</td>
<td align="center">Тау</td>
</tr>
<tr class="even">
<td align="center">D</td>
<td align="center">Дельта</td>
<td align="center">M</td>
<td align="center">Мю</td>
<td align="center">U</td>
<td align="center">Упсилон</td>
</tr>
<tr class="odd">
<td align="center">E</td>
<td align="center">Епсилон</td>
<td align="center">N</td>
<td align="center">Ню</td>
<td align="center">P</td>
<td align="center">Фі</td>
</tr>
<tr class="even">
<td align="center">Z</td>
<td align="center">Дзета</td>
<td align="center">X</td>
<td align="center">Ксі</td>
<td align="center">C</td>
<td align="center">Хі</td>
</tr>
<tr class="odd">
<td align="center">H</td>
<td align="center">Ета</td>
<td align="center">Om</td>
<td align="center">Омікрон</td>
<td align="center">Y</td>
<td align="center">Псі</td>
</tr>
<tr class="even">
<td align="center">T</td>
<td align="center">Тета</td>
<td align="center">P</td>
<td align="center">Пі</td>
<td align="center">O</td>
<td align="center">Омега</td>
</tr>
</tbody>
</table>
<p>У той самий спосіб можна вводити різноманітні математичні символи:</p>
<table>
<thead>
<tr class="header">
<th>введений рядок</th>
<th>математичний символ</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>hbar</td>
<td>стала Планка: h із горизонтальною рискою згори</td>
</tr>
<tr class="even">
<td>Hbar</td>
<td>H із горизонтальною рискою згори</td>
</tr>
<tr class="odd">
<td>2</td>
<td>квадрат</td>
</tr>
<tr class="even">
<td>3</td>
<td>куб</td>
</tr>
<tr class="odd">
<td>/2</td>
<td>1/2</td>
</tr>
<tr class="even">
<td>partial</td>
<td>знак частинної похідної (d у dx/dt)</td>
</tr>
<tr class="odd">
<td>integral</td>
<td>символ інтеграла</td>
</tr>
<tr class="even">
<td>sq</td>
<td>корінь</td>
</tr>
<tr class="odd">
<td>ii</td>
<td>уявна одиниця</td>
</tr>
<tr class="even">
<td>ee</td>
<td>елемент</td>
</tr>
<tr class="odd">
<td>in</td>
<td>включається</td>
</tr>
<tr class="even">
<td>impl implies</td>
<td>випливає</td>
</tr>
<tr class="odd">
<td>inf</td>
<td>нескінченність</td>
</tr>
<tr class="even">
<td>empty</td>
<td>порожня множина</td>
</tr>
<tr class="odd">
<td>TB</td>
<td>великий трикутник праворуч</td>
</tr>
<tr class="even">
<td>tb</td>
<td>малий трикутник праворуч</td>
</tr>
<tr class="odd">
<td>and</td>
<td>і</td>
</tr>
<tr class="even">
<td>or</td>
<td>або</td>
</tr>
<tr class="odd">
<td>xor</td>
<td>виключне або</td>
</tr>
<tr class="even">
<td>nand</td>
<td>ні-і</td>
</tr>
<tr class="odd">
<td>nor</td>
<td>ні-або</td>
</tr>
<tr class="even">
<td>equiv</td>
<td>еквівалентний</td>
</tr>
<tr class="odd">
<td>not</td>
<td>ні</td>
</tr>
<tr class="even">
<td>union</td>
<td>об’єднання</td>
</tr>
<tr class="odd">
<td>inter</td>
<td>перетин</td>
</tr>
<tr class="even">
<td>subseteq</td>
<td>підмножина або рівна множина</td>
</tr>
<tr class="odd">
<td>subset</td>
<td>підмножина</td>
</tr>
<tr class="even">
<td>notsubseteq</td>
<td>не підмножина або рівна множина</td>
</tr>
<tr class="odd">
<td>notsubset</td>
<td>не підмножина</td>
</tr>
<tr class="even">
<td>approx</td>
<td>приблизно</td>
</tr>
<tr class="odd">
<td>propto</td>
<td>пропорційне до</td>
</tr>
<tr class="even">
<td>neq != /= або #</td>
<td>не рівне</td>
</tr>
<tr class="odd">
<td>+/- або pm</td>
<td>плюс-мінус</td>
</tr>
<tr class="even">
<td><= або leq</td>
<td>менше або дорівнює</td>
</tr>
<tr class="odd">
<td>>= або geq</td>
<td>більше або дорівнює</td>
</tr>
<tr class="even">
<td><< або ll</td>
<td>набагато менше</td>
</tr>
<tr class="odd">
<td>>> або gg</td>
<td>набагато більше</td>
</tr>
<tr class="even">
<td>equiv</td>
<td>є еквівалентним</td>
</tr>
<tr class="odd">
<td>qed</td>
<td>що і слід було довести</td>
</tr>
<tr class="even">
<td>nabla</td>
<td>набла-оператор</td>
</tr>
<tr class="odd">
<td>sum</td>
<td>знак суми</td>
</tr>
<tr class="even">
<td>prod</td>
<td>знак добутку</td>
</tr>
<tr class="odd">
<td>exists</td>
<td>знак «існує»</td>
</tr>
<tr class="even">
<td>nexists</td>
<td>знак «не існує»</td>
</tr>
<tr class="odd">
<td>parallel</td>
<td>знак «паралельно»</td>
</tr>
<tr class="even">
<td>perp</td>
<td>знак «перпендикулярно»</td>
</tr>
<tr class="odd">
<td>leadsto</td>
<td>знак «випливає»</td>
</tr>
<tr class="even">
<td>-></td>
<td>стрілка праворуч</td>
</tr>
<tr class="odd">
<td>–></td>
<td>довга стрілка праворуч</td>
</tr>
</tbody>
</table>
<p>Якщо спеціального символу немає у списку, ви можете ввести його як довільний символ Юнікод натисканням послідовності клавіш <kbd>ESC</kbd> [номер символу (шістнадцятковий)] <kbd>ESC</kbd>.</p>
<p>Отже, <kbd>ESC</kbd> <kbd>61</kbd> <kbd>ESC</kbd> дасть «a».</p>
<p>Будь ласка, зауважте, що більшість цих символів (виключеннями є логічні символи) не мають спеціального значення у <em>Maxima</em> і тому можуть бути оброблені як звичайні символи. Якщо <em>Maxima</em> зібрано із Lisp, у якому не передбачено обробки символів Юнікоду, використання цих символів може призвести до показу повідомлення про помилку.</p>
<h3 number="1.2.6" id="бічні-панелі"><span class="header-section-number">1.2.6</span> Бічні панелі</h3>
<p>Доступ до найважливіших команд <em>Maxima</em> або речей, подібних до таблиці змісту, вікон із діагностичними повідомленнями або журналу останніх виданих команд можна отримати за допомогою бічних панелей. Увімкнути бічні панелі можна за допомогою меню «Перегляд». Панелі можна пересувати як всередині вікна <em>wxMaxima</em>, так і ззовні. Ще однією корисною панеллю є панель введення грецьких літер за допомогою вказівника миші.</p>
<div class="figure">
<img src="./SidePanes.png" id="img_SidePanes" alt="" />
<p class="caption">Приклад різних бічних панелей</p>
</div>
<h3 number="1.2.7" id="виведення-коду-mathml"><span class="header-section-number">1.2.7</span> Виведення коду MathML</h3>
<p>Деякі текстові процесори і подібні програми або розпізнають вхідні дані MathML і автоматично вставляють їх до придатного для редагування рівняння, або (подібно до LibreOffice 5.1) мають у складі редактор рівнянь, у якому передбачено можливість імпортування даних MathML з буфера обміну даними. У інших редакторах передбачено підтримку формул у RTF. Через це у <em>wxMaxima</em> передбачено декілька відповідних пунктів у контекстному меню.</p>
<h3 number="1.2.8" id="підтримка-markdown"><span class="header-section-number">1.2.8</span> Підтримка Markdown</h3>
<p>У <em>wxMaxima</em> ви зможете скористатися стандартними варіантами розмітки, які не суперечать математичним позначенням. Одним із елементів розмітки є невпорядковані списки.</p>
<pre><code>Звичайний текст
* Один пункт, рівень відступу 1
* Інший пункт на рівні відступу 1
* Пункт на другому рівні відступу
* Другий пункт на другому рівні відступу
* Третій пункт на першому рівні відступу
Звичайний текст</code></pre>
<p>У <em>wxMaxima</em> фрагменти тексту, які розпочинаються з символів <code>></code> вважаються блоками цитат:</p>
<pre><code>Звичайний текст
> цитата цитата цитата цитата
> цитата цитата цитата цитата
> цитата цитата цитата цитата
Звичайний текст</code></pre>
<p>У коді TeX та HTML <em>wxMaxima</em> також розпізнається рядок <code>=></code>, який програма замінює на відповідний символ Юнікод:</p>
<pre><code>cogito => sum.</code></pre>
<p>Іншими символами, які буде розпізнано під час експортування до HTML або TeX, є <code><=</code> і <code>>=</code> для порівнянь, двобічна стрілка (<code><=></code>), одинарні стрілки (<code><-></code>, <code>-></code> і <code><-</code>), а також <code>+/-</code> як відповідний знак. Для експортування у код TeX передбачено також підтримку перетворення <code><<</code> і <code>>></code>.</p>
<h3 number="1.2.9" id="клавіатурні-скорочення"><span class="header-section-number">1.2.9</span> Клавіатурні скорочення</h3>
<p>Більшість клавіатурних скорочень можна знайти у тексті відповідних меню. Оскільки їх взято з тексту меню і, отже, може бути змінено під час перекладу <em>wxMaxima</em> так, щоб вони відповідали потребам користувачів локалізованих клавіатур, ми не наводимо їх у цьому підручнику. Втім, декілька клавіатурних скорочень все ж не документовано у меню:</p>
<ul>
<li><kbd>CTRL</kbd>+<kbd>SHIFT</kbd>+<kbd>DELETE</kbd> вилучає увесь вміст комірки.</li>
<li><kbd>CTRL</kbd>+<kbd>TAB</kbd> або <kbd>CTRL</kbd>+<kbd>SHIFT</kbd>+<kbd>TAB</kbd> перемикає механізм автоматичного доповнення.</li>
<li><kbd>SHIFT</kbd>+<kbd>ПРОБІЛ</kbd> вставляє нерозривний пробіл.</li>
</ul>
<h3 number="1.2.10" id="код-tex-у-експортованому-tex"><span class="header-section-number">1.2.10</span> Код TeX у експортованому TeX</h3>
<p>Якщо текстову комірку буде розпочато з <code>TeX:</code> у експортованих у форматі TeX даних буде буквально відтворено текст, який вказано після позначки <code>TeX:</code>. За допомогою цієї можливості можна використовувати розмітку TeX у робочій книзі <em>wxMaxima</em>.</p>
<h2 number="1.3" id="формати-файлів"><span class="header-section-number">1.3</span> Формати файлів</h2>
<p>Матеріал, який було отримано під час сеансу роботи у <em>wxMaxima</em> може бути збережено для наступного використання у три способи:</p>
<h3 number="1.3.1" id="mac"><span class="header-section-number">1.3.1</span> .mac</h3>
<p>Файли .mac є звичайними текстовими файлами, які містять команди <em>Maxima</em>. Їх можна прочитати за допомогою команди read <em>Maxima</em> або пункту меню «Файл/Пакетний файл».</p>
<p>Один приклад:</p>
<p>Було створено файл .mac із назвою Quadratic.mac. Його вміст складається з двох команд: <code>f(x) := (x - 5)^2;</code> і <code>wxdraw2d( explicit(f(x),x,-5,15))</code>. Результат передавання на обчислення цього пакетного файла наведено нижче. (Частину даних щодо шляхів до каталогів вилучено.)</p>
<div class="figure">
<img src="./BatchImage.png" id="img_BatchImage" alt="" />
<p class="caption">Зображення пакетного файла</p>
</div>
<div class="sourceCode" id="cb4"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true"></a></span>
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true"></a><span class="fu">read</span>(<span class="st">"test.mac"</span>);</span></code></pre></div>
<p>Ви можете використовувати файли <code>.mac</code> для написання власної бібліотеки макросів. Але оскільки у них не міститься достатніх даних щодо структури, їх не можна читати як сеанс <em>wxMaxima</em>.</p>
<h3 number="1.3.2" id="wxm"><span class="header-section-number">1.3.2</span> .wxm</h3>
<p>Файли .wxm містять дані робочого аркуша, окрім виведених даних <em>Maxima</em>. У версіях Maxima >5.38 їх можна прочитати за допомогою функції <code>load()</code> <em>Maxima</em>, так само, як можна прочитати файли .mac. У цьому текстовому форматі іноді є неусувна проблема — робочі аркуші із новими можливостями не є зворотно сумісними із застарілими версіями <em>wxMaxima</em>.</p>
<h3 number="1.3.3" id="wxmx"><span class="header-section-number">1.3.3</span> .wxmx</h3>
<p>У цьому заснованому на XML форматі файлів зберігається увесь робочий аркуш, включно із даними щодо масштабу та списком спостереження. Цей формат файлів є рекомендованим.</p>
<h2 number="1.4" id="параметри-налаштування"><span class="header-section-number">1.4</span> Параметри налаштування</h2>
<p>Для деяких типових змінних налаштувань у <em>wxMaxima</em> передбачено два способи налаштовування:</p>
<ul>
<li>За допомогою діалогової панелі налаштовування, знімок якої наведено нижче, ви можете змінити типові значення для поточного і наступних сеансі роботи програми.</li>
<li>Крім того, значення більшості змінних налаштувань може бути змінено лише для поточного сеансу перезаписуванням їхніх значень з робочого аркуша, як це показано нижче.</li>
</ul>
<div class="figure">
<img src="./wxMaxima_configuration_001.png" id="img_wxMaxima_configuration_001" alt="" />
<p class="caption">Налаштування wxMaxima 1</p>
</div>
<h3 number="1.4.1" id="типова-частота-кадрів-анімації"><span class="header-section-number">1.4.1</span> Типова частота кадрів анімації</h3>
<p>Частота кадрів анімації, яка використовуватиметься для нових анімацій, зберігається у змінній <code>wxanimate_framerate</code>. Початкове значення цієї змінної, яке міститиметься у новому робочому аркуші, можна змінити за допомогою діалогового вікна налаштовування.</p>
<h3 number="1.4.2" id="типовий-розмір-креслення-для-нових-сеансів-maxima"><span class="header-section-number">1.4.2</span> Типовий розмір креслення для нових сеансів <em>maxima</em></h3>
<p>Після наступного запуску креслення, які вбудовано до робочого аркуша, буде створено з цим розміром, якщо значення <code>wxplot_size</code> не було змінено <em>maxima</em>.</p>
<p>Щоб встановити розмір графіка для окремого графіка, можна скористатися наведеною нижче конструкцією, яка встановить значення змінної лише для одної команди:</p>
<div class="sourceCode" id="cb5"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true"></a><span class="cn">wxdraw2d</span>( </span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true"></a> <span class="cn">explicit</span>(</span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true"></a> <span class="cn">x</span>^<span class="dv">2</span>,</span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true"></a> <span class="cn">x</span>,<span class="dv">-5</span>,<span class="dv">5</span></span>
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true"></a> )</span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true"></a>), <span class="cn">wxplot_size</span>=[<span class="dv">480</span>,<span class="dv">480</span>]$</span></code></pre></div>
<h3 number="1.4.3" id="перевіряти-баланс-дужок-у-тексті"><span class="header-section-number">1.4.3</span> Перевіряти баланс дужок у тексті</h3>
<p>За допомогою цього пункту можна увімкнути дві речі:</p>
<ul>
<li>Якщо ви введете у <em>wxMaxima</em> початкову круглу або квадратну дужку або подвійні лапки, програма автоматично вставить завершальну дужку або лапки за нею.</li>
<li>Якщо при натисканні якоїсь із цих комбінацій клавіш було позначено фрагмент тексту, цей текст буде вставлено між відповідними символами.</li>
</ul>
<h3 number="1.4.4" id="не-зберігати-робочий-аркуш-автоматично"><span class="header-section-number">1.4.4</span> Не зберігати робочий аркуш автоматично</h3>
<p>Якщо позначено цей пункт, файл, у якому зберігається робочий аркуш, буде перезаписано лише за запит користувача. Втім, у випадку аварії, втрати живлення тощо, у каталозі тимчасових даних завжди лишатиметься резервна копія.</p>
<p>Якщо не встановлено цей параметр, <em>wxMaxima</em> поводиться подібно до сучасної програми для мобільних телефонів:</p>
<ul>
<li>Файли автоматично зберігаються під час виходу з програми</li>
<li>І файл буде автоматично збережено кожні 3 хвилини.</li>
</ul>
<h3 number="1.4.5" id="де-зберігаються-налаштування"><span class="header-section-number">1.4.5</span> Де зберігаються налаштування?</h3>
<p>Якщо ви користуєтеся Unix/Linux, дані налаштувань буде збережено до файла <code>.wxMaxima</code> у вашому домашньому каталозі (якщо ви користуєтеся wxWidgets < 3.1.1), або <code>.config/wxMaxima.conf</code> ((стандартний каталог XDG), якщо використано wxWidgets >= 3.1.1). Визначити версію wxWidgets можна за допомогою команди <code>wxbuild_info();</code> або пункту меню «Довідка -> Про програму». <a href="https://www.wxwidgets.org/">wxWidgets</a> є бібліотекою графічного інтерфейсу користувача, яка працює на багатьох платформах і є основою <em>wxMaxima</em> (звідси <code>wx</code> у назві програми). (Оскільки назви файлів починається з крапки, файл <code>.wxMaxima</code> і каталог<code>.config</code> є прихованими).</p>
<p>Якщо ви користуєтеся Windows, налаштування буде збережено у реєстрі. Записи <em>wxMaxima</em> можна знайти у цій гілці: <code>HKEY_CURRENT_USER\Software\wxMaxima</code></p>
<hr />
<h1 number="2" id="розширення-maxima"><span class="header-section-number">2</span> Розширення <em>Maxima</em></h1>
<p>Основним призначенням <em>wxMaxima</em> є забезпечення графічного інтерфейсу до <em>Maxima</em>. Отже, основним завданням програми є передавання команд до <em>Maxima</em> і сповіщення користувача про результат виконання цих команд. Втім, у деяких випадках, <em>wxMaxima</em> розширює функціональні можливості <em>Maxima</em>. Ми вже згадували про здатність <em>wxMaxima</em> створювати звіти експортуванням вмісту робочої книги до файлів HTML і LaTeX. У цьому розділі ми розглянемо деякі способи, у які <em>wxMaxima</em> удосконалює включення графіки до сеансу.</p>
<h2 number="2.1" id="змінні-із-індексами"><span class="header-section-number">2.1</span> Змінні із індексами</h2>
<p>якщо встановлено значення true для <code>wxsubscripts</code>, назви змінних у форматі <code>x_y</code> буде показано як літеру із нижнім індексом, якщо</p>
<ul>
<li><code>y</code> є одинарною літерою</li>
<li><code>y</code> є цілим числом</li>
</ul>
<p>Якщо назва змінної не задовольняє ці вимоги, змінну все одно можна оголосити як змінну із нижнім індексом, за допомогою команди <code>wxdeclare_subscript(назва_змінної);</code> або <code>wxdeclare_subscript([назва_змінної1,назва_змінної2,...]);</code> Оголошення змінної як змінної із нижнім індексом можна скасувати за допомогою такої команди: <code>wxdeclare_subscript(назва_змінної,false);</code></p>
<h2 number="2.2" id="візуальний-супровід-дій-користувача-у-смужці-стану"><span class="header-section-number">2.2</span> Візуальний супровід дій користувача у смужці стану</h2>
<p>Команди, які виконуються довго, можуть надавати користувачам інформацію на смужці стану. Цю інформацію буде замінено на будь-яку нову інформацію, яку програма надсилатиме туди (це надає змогу використовувати смужку стану як індикатор поступу), і буде вилучено, щойно буде завершено виконання поточної команди, яку надіслано до <em>Maxima</em>. Команду <code>wxstatusbar()</code> можна безпечно використовувати навіть у бібліотеках, які може бути використано у звичайній <em>Maxima</em> (без <em>wxMaxima</em>): якщо <em>wxMaxima</em> немає, команда <code>wxstatusbar()</code> просто не оброблятиметься.</p>
<div class="sourceCode" id="cb6"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true"></a><span class="kw">for</span> <span class="cn">i</span>:<span class="dv">1</span> <span class="kw">thru</span> <span class="dv">10</span> <span class="kw">do</span> (</span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true"></a> <span class="co">/* Повідомляємо користувачу, наскільки далеко зайшли */</span></span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true"></a> <span class="cn">wxstatusbar</span>(<span class="fu">concat</span>(<span class="st">"Pass "</span>,<span class="cn">i</span>)),</span>
<span id="cb6-4"><a href="#cb6-4" aria-hidden="true"></a> <span class="co">/* (sleep n) — функція Lisp, якою можна скористатися */</span></span>
<span id="cb6-5"><a href="#cb6-5" aria-hidden="true"></a> <span class="co">/* із додаванням перед нею символу «?». Команда затримує */</span></span>
<span id="cb6-6"><a href="#cb6-6" aria-hidden="true"></a> <span class="co">/* виконання програми (у нашому прикладі, на 3 секунди) */</span></span>
<span id="cb6-7"><a href="#cb6-7" aria-hidden="true"></a> ?<span class="cn">sleep</span>(<span class="dv">3</span>)</span>
<span id="cb6-8"><a href="#cb6-8" aria-hidden="true"></a>)$</span></code></pre></div>
<h2 number="2.3" id="креслення"><span class="header-section-number">2.3</span> Креслення</h2>
<p>Креслення (яке фундаментально пов’язано із графікою) є місцем, де графічний інтерфейс користувача має надавати якісь додаткові можливості до оригінальної програми.</p>
<h3 number="2.3.1" id="вбудовування-креслення-до-робочого-аркуша"><span class="header-section-number">2.3.1</span> Вбудовування креслення до робочого аркуша</h3>
<p>Зазвичай, <em>Maxima</em> наказує зовнішній програмі <em>gnuplot</em> відкривати окреме вікно для кожної створеної програмою діаграми. Оскільки набагато зручніше вбудовувати графіки безпосередньо до робочого аркуша, у <em>wxMaxima</em> передбачено власний набір команд для креслення, які не відрізняються від відповідних функцій <em>maxima</em> майже нічим, окрім назви: в усіх цих командах використано префікс «wx». Наприклад, команда <code>wxplot2d</code> відповідає команді <code>plot2d</code>, команда <code>wxplot3d</code> — команді <code>plot3d</code>, команда <code>wxdraw</code> — команді <code>draw</code>, а команда <code>wxhistogram</code> — команді <code>histogram</code>.</p>
<h3 number="2.3.2" id="збільшення-або-зменшення-вбудованих-креслень"><span class="header-section-number">2.3.2</span> Збільшення або зменшення вбудованих креслень</h3>
<p>Як ми вже згадували вище, діалогове вікно налаштовування надає змогу змінити типові розміри креслень. Унаслідок застосування цього способу змінюється початкове значення <code>wxplot_size</code>. Підпрограми створення креслень <em>wxMaxima</em> враховують це значення, яке визначає розмір креслення у пікселях. Це значення завжди можна отримати або використати для встановлення розмірів наступних креслень:</p>
<div class="sourceCode" id="cb7"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true"></a><span class="cn">wxplot_size</span>:[<span class="dv">1200</span>,<span class="dv">800</span>]$</span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true"></a><span class="cn">wxdraw2d</span>(</span>
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true"></a> <span class="cn">explicit</span>(</span>
<span id="cb7-4"><a href="#cb7-4" aria-hidden="true"></a> <span class="fu">sin</span>(<span class="cn">x</span>),</span>
<span id="cb7-5"><a href="#cb7-5" aria-hidden="true"></a> <span class="cn">x</span>,<span class="dv">1</span>,<span class="dv">10</span></span>
<span id="cb7-6"><a href="#cb7-6" aria-hidden="true"></a> )</span>
<span id="cb7-7"><a href="#cb7-7" aria-hidden="true"></a>)$</span></code></pre></div>
<p>Якщо потрібно змінити розміри лише одного креслення, у <em>Maxima</em> передбачено канонічний спосіб зміни атрибута лише для поточної комірки. У цьому випадку до команди wxdraw2d( ) додається специфікація wxplot_size = [значення1, значення2], яка не є частиною команди wxdraw2d.</p>
<div class="sourceCode" id="cb8"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true"></a><span class="cn">wxdraw2d</span>(</span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true"></a> <span class="cn">explicit</span>(</span>
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true"></a> <span class="fu">sin</span>(<span class="cn">x</span>),</span>
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true"></a> <span class="cn">x</span>,<span class="dv">1</span>,<span class="dv">10</span></span>
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true"></a> )</span>
<span id="cb8-6"><a href="#cb8-6" aria-hidden="true"></a>),<span class="cn">wxplot_size</span>=[<span class="dv">1600</span>,<span class="dv">800</span>]$</span></code></pre></div>
<h3 number="2.3.3" id="креслення-кращої-якості"><span class="header-section-number">2.3.3</span> Креслення кращої якості</h3>
<p><em>Gnuplot</em>, здається, не надає придатного до портування на різні платформи способу визначення, чи передбачено у програмі підтримку виведення даних у форматі високоякісного растрового зображення з використанням бібліотеки cairo. У системах, де <em>gnuplot</em> зібрано з використанням відповідної бібліотеки, пункт pngcairo у меню налаштовування (який може бути перевизначено за допомогою змінної <code>wxplot_pngcairo</code>) вмикає підтримку згладжування та додаткових стилів ліній. Якщо встановлено <code>wxplot_pngcairo</code> без підтримки у <em>gnuplot</em>, результатом буде повідомлення про помилку замість графіка.</p>
<h3 number="2.3.4" id="відкриття-вбудованих-креслень-в-інтерактивних-вікнах-gnuplot"><span class="header-section-number">2.3.4</span> Відкриття вбудованих креслень в інтерактивних вікнах <em>gnuplot</em></h3>
<p>Якщо креслення було створено за допомогою команд типу <code>wxdraw</code> (у <code>wxplot2d</code> і <code>wxplot3d</code> підтримки цієї можливості не передбачено), і розмір файла базового проєкту <em>gnuplot</em> не є надто великим, <em>wxMaxima</em> пропонує контекстне меню, за допомогою якого можна відкрити креслення у інтерактивному вікні <em>gnuplot</em>.</p>
<h3 number="2.3.5" id="відкриття-консолі-команд-gnuplot-у-вікнах-plot"><span class="header-section-number">2.3.5</span> Відкриття консолі команд gnuplot у вікнах <code>plot</code></h3>
<p>У MS Windows, якщо у змінній <em>Maxima</em> <code>gnuplot_command</code> замінити «gnuplot» на «wgnuplot», <em>gnuplot</em> запропонує можливість відкрити вікно консолі, у якому ви зможете вводити команди <em>gnuplot</em>. На жаль, вмикання цієї можливості призводить до того, що <em>gnuplot</em> на короткий період «викрадає» фокусування клавіатури кожного разу, коли готується креслення.</p>
<h3 number="2.3.6" id="вбудовування-анімацій-до-робочого-аркуша"><span class="header-section-number">2.3.6</span> Вбудовування анімацій до робочого аркуша</h3>
<p>На просторових креслення доволі важко читати кількісні дані. Альтернативним рішенням є прив’язка третього параметра до коліщатка миші. Команда <code>with_slider_draw</code> є версією <code>wxdraw2d</code>, яка готує декілька креслень і надає змогу перемикатися між ними пересуванням повзунка у верхній частині вікна. <em>wxMaxima</em> надає змогу експортувати анімацію у форматі анімації gif.</p>
<p>Першими двома аргументами <code>with_slider_draw</code> є назва змінної, яка покроково змінюватиметься між кресленнями, і список значень цієї змінної. Наступними аргументами є звичайні аргументи <code>wxdraw2d</code>:</p>
<div class="sourceCode" id="cb9"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true"></a><span class="cn">with_slider_draw</span>(</span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true"></a> <span class="cn">f</span>,[<span class="dv">1</span>,<span class="dv">2</span>,<span class="dv">3</span>,<span class="dv">4</span>,<span class="dv">5</span>,<span class="dv">6</span>,<span class="dv">7</span>,<span class="dv">10</span>],</span>
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true"></a> <span class="cn">title</span>=<span class="fu">concat</span>(<span class="st">"f="</span>,<span class="cn">f</span>,<span class="st">"Hz"</span>),</span>
<span id="cb9-4"><a href="#cb9-4" aria-hidden="true"></a> <span class="cn">explicit</span>(</span>
<span id="cb9-5"><a href="#cb9-5" aria-hidden="true"></a> <span class="fu">sin</span>(<span class="dv">2</span>*<span class="va">%pi</span>*<span class="cn">f</span>*<span class="cn">x</span>),</span>
<span id="cb9-6"><a href="#cb9-6" aria-hidden="true"></a> <span class="cn">x</span>,<span class="dv">0</span>,<span class="dv">1</span></span>
<span id="cb9-7"><a href="#cb9-7" aria-hidden="true"></a> ),<span class="cn">grid</span>=<span class="kw">true</span></span>
<span id="cb9-8"><a href="#cb9-8" aria-hidden="true"></a>);</span></code></pre></div>
<p>Доступ до тих самих можливостей для просторових креслень можна отримати за допомогою функції <code>with_slider_draw3d</code>, яка надає можливість обертати просторові креслення:</p>
<div class="sourceCode" id="cb10"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true"></a><span class="cn">wxanimate_autoplay</span>:<span class="kw">true</span>;</span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true"></a><span class="cn">wxanimate_framerate</span>:<span class="dv">20</span>;</span>
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true"></a><span class="cn">with_slider_draw3d</span>(</span>
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true"></a> α,<span class="fu">makelist</span>(<span class="cn">i</span>,<span class="cn">i</span>,<span class="dv">1</span>,<span class="dv">360</span>,<span class="dv">3</span>),</span>
<span id="cb10-5"><a href="#cb10-5" aria-hidden="true"></a> <span class="cn">title</span>=<span class="fu">sconcat</span>(<span class="st">"α="</span>,α),</span>
<span id="cb10-6"><a href="#cb10-6" aria-hidden="true"></a> <span class="cn">surface_hide</span>=<span class="kw">true</span>,</span>
<span id="cb10-7"><a href="#cb10-7" aria-hidden="true"></a> <span class="cn">contour</span>=<span class="cn">both</span>,</span>
<span id="cb10-8"><a href="#cb10-8" aria-hidden="true"></a> <span class="cn">view</span>=[<span class="dv">60</span>,α],</span>
<span id="cb10-9"><a href="#cb10-9" aria-hidden="true"></a> <span class="cn">explicit</span>(</span>
<span id="cb10-10"><a href="#cb10-10" aria-hidden="true"></a> <span class="fu">sin</span>(<span class="cn">x</span>)*<span class="fu">sin</span>(<span class="cn">y</span>),</span>
<span id="cb10-11"><a href="#cb10-11" aria-hidden="true"></a> <span class="cn">x</span>,-π,π,</span>
<span id="cb10-12"><a href="#cb10-12" aria-hidden="true"></a> <span class="cn">y</span>,-π,π</span>
<span id="cb10-13"><a href="#cb10-13" aria-hidden="true"></a> )</span>
<span id="cb10-14"><a href="#cb10-14" aria-hidden="true"></a>)$</span></code></pre></div>
<p>Якщо важливою є загальна форма креслення, може бути достатнім трошки пересунути креслення з метою зробити його просторову природу інтуїтивно зрозумілою:</p>
<div class="sourceCode" id="cb11"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true"></a><span class="cn">wxanimate_autoplay</span>:<span class="kw">true</span>;</span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true"></a><span class="cn">wxanimate_framerate</span>:<span class="dv">20</span>;</span>
<span id="cb11-3"><a href="#cb11-3" aria-hidden="true"></a><span class="cn">with_slider_draw3d</span>(</span>
<span id="cb11-4"><a href="#cb11-4" aria-hidden="true"></a> <span class="cn">t</span>,<span class="fu">makelist</span>(<span class="cn">i</span>,<span class="cn">i</span>,<span class="dv">0</span>,<span class="dv">2</span>*π,<span class="fl">.05</span>*π),</span>
<span id="cb11-5"><a href="#cb11-5" aria-hidden="true"></a> <span class="cn">title</span>=<span class="fu">sconcat</span>(<span class="st">"α="</span>,α),</span>
<span id="cb11-6"><a href="#cb11-6" aria-hidden="true"></a> <span class="cn">surface_hide</span>=<span class="kw">true</span>,</span>
<span id="cb11-7"><a href="#cb11-7" aria-hidden="true"></a> <span class="cn">contour</span>=<span class="cn">both</span>,</span>
<span id="cb11-8"><a href="#cb11-8" aria-hidden="true"></a> <span class="cn">view</span>=[<span class="dv">60</span>,<span class="dv">30+5</span>*<span class="fu">sin</span>(<span class="cn">t</span>)],</span>
<span id="cb11-9"><a href="#cb11-9" aria-hidden="true"></a> <span class="cn">explicit</span>(</span>
<span id="cb11-10"><a href="#cb11-10" aria-hidden="true"></a> <span class="fu">sin</span>(<span class="cn">x</span>)*<span class="cn">y</span>^<span class="dv">2</span>,</span>
<span id="cb11-11"><a href="#cb11-11" aria-hidden="true"></a> <span class="cn">x</span>,<span class="dv">-2</span>*π,<span class="dv">2</span>*π,</span>
<span id="cb11-12"><a href="#cb11-12" aria-hidden="true"></a> <span class="cn">y</span>,<span class="dv">-2</span>*π,<span class="dv">2</span>*π</span>
<span id="cb11-13"><a href="#cb11-13" aria-hidden="true"></a> )</span>
<span id="cb11-14"><a href="#cb11-14" aria-hidden="true"></a>)$</span></code></pre></div>
<p>Для тих, хто знайомий більше з <code>plot</code>, аніж з <code>draw</code>, другий набір функцій:</p>
<ul>
<li><code>with_slider</code> і</li>
<li><code>wxanimate</code>.</li>
</ul>
<p>Зазвичай, анімації відтворюються і експортуються із частотою кадрів, яку можна вибрати у налаштуваннях <em>wxMaxima</em>. Щоб встановити швидкість відтворення окремої анімації, можна скористатися змінною <code>wxanimate_framerate</code>:</p>
<div class="sourceCode" id="cb12"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true"></a><span class="cn">wxanimate</span>(<span class="cn">a</span>, <span class="dv">10</span>,</span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true"></a> <span class="fu">sin</span>(<span class="cn">a</span>*<span class="cn">x</span>), [<span class="cn">x</span>,<span class="dv">-5</span>,<span class="dv">5</span>]), <span class="cn">wxanimate_framerate</span>=<span class="dv">6</span>$</span></code></pre></div>
<p>Функції анімації використовують команду <em>maxima</em> <code>makelist</code> і тому мають спільну ваду — значення змінної повзунка замінюється на вираз, лише якщо змінна є безпосередньо видимою у виразі. Тому такий приклад не працюватиме:</p>
<div class="sourceCode" id="cb13"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true"></a><span class="cn">f</span>:<span class="fu">sin</span>(<span class="cn">a</span>*<span class="cn">x</span>);</span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true"></a><span class="cn">with_slider_draw</span>(</span>
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true"></a> <span class="cn">a</span>,<span class="fu">makelist</span>(<span class="cn">i</span>/<span class="dv">2</span>,<span class="cn">i</span>,<span class="dv">1</span>,<span class="dv">10</span>),</span>
<span id="cb13-4"><a href="#cb13-4" aria-hidden="true"></a> <span class="cn">title</span>=<span class="fu">concat</span>(<span class="st">"a="</span>,<span class="fu">float</span>(<span class="cn">a</span>)),</span>
<span id="cb13-5"><a href="#cb13-5" aria-hidden="true"></a> <span class="cn">grid</span>=<span class="kw">true</span>,</span>
<span id="cb13-6"><a href="#cb13-6" aria-hidden="true"></a> <span class="cn">explicit</span>(<span class="cn">f</span>,<span class="cn">x</span>,<span class="dv">0</span>,<span class="dv">10</span>)</span>
<span id="cb13-7"><a href="#cb13-7" aria-hidden="true"></a>)$</span></code></pre></div>
<p>А якщо <em>Maxima</em> явно попросити підставити значення повзунка, креслення працюватиме як слід:</p>
<div class="sourceCode" id="cb14"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true"></a><span class="cn">f</span>:<span class="fu">sin</span>(<span class="cn">a</span>*<span class="cn">x</span>);</span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true"></a><span class="cn">with_slider_draw</span>(</span>
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true"></a> <span class="cn">b</span>,<span class="fu">makelist</span>(<span class="cn">i</span>/<span class="dv">2</span>,<span class="cn">i</span>,<span class="dv">1</span>,<span class="dv">10</span>),</span>
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true"></a> <span class="cn">title</span>=<span class="fu">concat</span>(<span class="st">"a="</span>,<span class="fu">float</span>(<span class="cn">b</span>)),</span>
<span id="cb14-5"><a href="#cb14-5" aria-hidden="true"></a> <span class="cn">grid</span>=<span class="kw">true</span>,</span>
<span id="cb14-6"><a href="#cb14-6" aria-hidden="true"></a> <span class="cn">explicit</span>(</span>
<span id="cb14-7"><a href="#cb14-7" aria-hidden="true"></a> <span class="fu">subst</span>(<span class="cn">a</span>=<span class="cn">b</span>,<span class="cn">f</span>),</span>
<span id="cb14-8"><a href="#cb14-8" aria-hidden="true"></a> <span class="cn">x</span>,<span class="dv">0</span>,<span class="dv">10</span></span>
<span id="cb14-9"><a href="#cb14-9" aria-hidden="true"></a> )</span>
<span id="cb14-10"><a href="#cb14-10" aria-hidden="true"></a>)$</span></code></pre></div>
<h3 number="2.3.7" id="відкриття-декількох-креслень-у-вікнах-одночасно"><span class="header-section-number">2.3.7</span> Відкриття декількох креслень у вікнах одночасно</h3>
<p>Хоча <em>wxMaxima</em> не надає доступу до цієї можливості, ця функція <em>Maxima</em> (у конфігураціях, де передбачено її підтримку) іноді є дуже зручною. Наведений нижче приклад походить із допису Маріо Родрігеса (Mario Rodriguez) у списку листування <em>Maxima</em>:</p>
<div class="sourceCode" id="cb15"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true"></a> <span class="fu">load</span>(<span class="fu">draw</span>);</span>
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true"></a> </span>
<span id="cb15-3"><a href="#cb15-3" aria-hidden="true"></a> <span class="co">/* Парабола у вікні 1 */</span></span>
<span id="cb15-4"><a href="#cb15-4" aria-hidden="true"></a> <span class="fu">draw2d</span>(<span class="cn">terminal</span>=[<span class="cn">wxt</span>,<span class="dv">1</span>],<span class="cn">explicit</span>(<span class="cn">x</span>^<span class="dv">2</span>,<span class="cn">x</span>,<span class="dv">-1</span>,<span class="dv">1</span>));</span>
<span id="cb15-5"><a href="#cb15-5" aria-hidden="true"></a> </span>
<span id="cb15-6"><a href="#cb15-6" aria-hidden="true"></a> <span class="co">/* Парабола у вікні 2 */</span></span>
<span id="cb15-7"><a href="#cb15-7" aria-hidden="true"></a> <span class="fu">draw2d</span>(<span class="cn">terminal</span>=[<span class="cn">wxt</span>,<span class="dv">2</span>],<span class="cn">explicit</span>(<span class="cn">x</span>^<span class="dv">2</span>,<span class="cn">x</span>,<span class="dv">-1</span>,<span class="dv">1</span>));</span>
<span id="cb15-8"><a href="#cb15-8" aria-hidden="true"></a> </span>
<span id="cb15-9"><a href="#cb15-9" aria-hidden="true"></a> <span class="co">/* Параболоїд у вікні 3 */</span></span>
<span id="cb15-10"><a href="#cb15-10" aria-hidden="true"></a> <span class="fu">draw3d</span>(<span class="cn">terminal</span>=[<span class="cn">wxt</span>,<span class="dv">3</span>],<span class="cn">explicit</span>(<span class="cn">x</span>^<span class="dv">2</span>+<span class="cn">y</span>^<span class="dv">2</span>,<span class="cn">x</span>,<span class="dv">-1</span>,<span class="dv">1</span>,<span class="cn">y</span>,<span class="dv">-1</span>,<span class="dv">1</span>));</span></code></pre></div>
<p>Також можна накреслити декілька креслень в одному вікні:</p>
<div class="sourceCode" id="cb16"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true"></a> <span class="cn">wxdraw</span>(</span>
<span id="cb16-2"><a href="#cb16-2" aria-hidden="true"></a> <span class="cn">gr2d</span>(</span>
<span id="cb16-3"><a href="#cb16-3" aria-hidden="true"></a> <span class="cn">key</span>=<span class="st">"sin (x)"</span>,<span class="cn">grid</span>=[<span class="dv">2</span>,<span class="dv">2</span>],</span>
<span id="cb16-4"><a href="#cb16-4" aria-hidden="true"></a> <span class="cn">explicit</span>(<span class="fu">sin</span>(<span class="cn">x</span>),<span class="cn">x</span>,<span class="dv">0</span>,<span class="dv">2</span>*<span class="va">%pi</span>)),</span>
<span id="cb16-5"><a href="#cb16-5" aria-hidden="true"></a> <span class="cn">gr2d</span>(</span>
<span id="cb16-6"><a href="#cb16-6" aria-hidden="true"></a> <span class="cn">key</span>=<span class="st">"cos (x)"</span>,<span class="cn">grid</span>=[<span class="dv">2</span>,<span class="dv">2</span>],</span>
<span id="cb16-7"><a href="#cb16-7" aria-hidden="true"></a> <span class="cn">explicit</span>(<span class="fu">cos</span>(<span class="cn">x</span>),<span class="cn">x</span>,<span class="dv">0</span>,<span class="dv">2</span>*<span class="va">%pi</span>))</span>
<span id="cb16-8"><a href="#cb16-8" aria-hidden="true"></a> );</span></code></pre></div>
<h3 number="2.3.8" id="бічна-панель-накреслити-за-допомогою-draw"><span class="header-section-number">2.3.8</span> Бічна панель «Накреслити за допомогою Draw»</h3>
<p>Бічна панель «Накреслити за допомогою Draw» приховує простий генератор коду, який уможливлює створення сцен, які використовують певну гнучкість пакунка <em>draw</em>, з яким постачається <em>maxima</em>.</p>
<h4 number="2.3.8.1" id="двовимірний"><span class="header-section-number">2.3.8.1</span> Двовимірний</h4>
<p>Створює каркас команди <code>draw()</code>, яка малює плоску сцену. Цю сцену пізніше може бути заповнено за допомогою команд, які створюють вміст сцени, наприклад, за допомогою кнопок у рядках під кнопкою «Плоский».</p>
<p>Однією з корисних можливостей кнопки «Плоский» є те, що вона надає змогу налаштувати сцену як анімацію, у якій змінна (типовою змінною є <em>t</em>) має різне значення для кожного з кадрів: часто динамічне плоске креслення надає змогу простіше інтерпретувати дані за ті самі у формі нерухомого просторового креслення.</p>
<h4 number="2.3.8.2" id="тривимірний"><span class="header-section-number">2.3.8.2</span> Тривимірний</h4>
<p>Створює каркас команди <code>draw()</code>, яка малює просторову сцену. Якщо не налаштовано ні двовимірну, ні тривимірну сцену, усі інші кнопки налаштовуватимуть двовимірну сцену, яка містить команду, яку створює кнопка.</p>
<h4 number="2.3.8.3" id="вираз"><span class="header-section-number">2.3.8.3</span> Вираз</h4>
<p>Додає стандартне креслення виразу, подібного до <code>sin(x)</code>, <code>x*sin(x)</code> або <code>x^2+2*x-4</code> до команди <code>draw()</code>, у якій зараз перебуває курсор. Якщо команди draw немає, буде створено двовимірну сцену із кресленням. Кожну сцену можна заповнити довільною кількістю креслень.</p>
<h4 number="2.3.8.4" id="графік-неявної-функції"><span class="header-section-number">2.3.8.4</span> Графік неявної функції</h4>
<p>Спробувати знайти усі точки, у яких справджуються вирази, подібні до <code>y=sin(x)</code>, <code>y*sin(x)=3</code> або <code>x^2+y^2=4</code>, і накреслити криву-результат за допомогою команди <code>draw()</code> у поточній позиції курсора. Якщо команди draw виявлено не буде, буде створено плоску сцену із кресленням.</p>
<h4 number="2.3.8.5" id="графік-параметричної-функції"><span class="header-section-number">2.3.8.5</span> Графік параметричної функції</h4>
<p>Покроково проходить змінну від нижньої межі до верхньої межі і використовує два виразу, подібні до <code>t*sin(t)</code> і <code>t*cos(t)</code> для створення координат точок x, y (у просторових кресленнях використовується і z) кривої, які буде передано до поточної команди draw.</p>
<h4 number="2.3.8.6" id="точки"><span class="header-section-number">2.3.8.6</span> Точки</h4>
<p>Малює точки, які, якщо вказано, буде з’єднано. Координати точок буде взято зі списку списків, двовимірного масиву або списку масивів для кожної з осей.</p>
<h4 number="2.3.8.7" id="заголовок-діаграми"><span class="header-section-number">2.3.8.7</span> Заголовок діаграми</h4>
<p>Малює заголовок у верхній частині діаграми,</p>
<h4 number="2.3.8.8" id="вісь"><span class="header-section-number">2.3.8.8</span> Вісь</h4>
<p>Налаштовує вісі.</p>
<h4 number="2.3.8.9" id="контур"><span class="header-section-number">2.3.8.9</span> Контур</h4>
<p>(Лише для просторових креслень) Додає контурні лінії, подібні до тих, які можна знайти на карті висот, до команд креслення, які йдуть за нею у поточній команді «draw()» і/або до площини основи діаграми. Крім того, цей майстер надає змогу повністю пропустити малювання кривих і показати лише контурне креслення.</p>
<h4 number="2.3.8.10" id="назва-графіка"><span class="header-section-number">2.3.8.10</span> Назва графіка</h4>
<p>Додає запис умовних позначень із назвою наступного креслення на панель умовних позначень діаграми. Порожнє значення назви вимикає створення записів умовних позначень для наступних креслень.</p>
<h4 number="2.3.8.11" id="колір-лінії"><span class="header-section-number">2.3.8.11</span> Колір лінії</h4>
<p>Встановлює колір лінії для наступних креслень у поточній команді малювання.</p>
<h4 number="2.3.8.12" id="колір-заповнення"><span class="header-section-number">2.3.8.12</span> Колір заповнення</h4>
<p>Встановлює колір заповнення для наступних креслень у поточній команді малювання.</p>
<h4 number="2.3.8.13" id="сітка"><span class="header-section-number">2.3.8.13</span> Сітка</h4>
<p>Відкриває допоміжне вікно, за допомогою якого можна налаштувати лінії сітки.</p>
<h4 number="2.3.8.14" id="точність"><span class="header-section-number">2.3.8.14</span> Точність</h4>
<p>Надає змогу вибрати адекватну позицію у компромісному питанні «швидкість чи точність?», яке є частиною будь-якої програми для креслення.</p>
<h2 number="2.4" id="вбудовування-графіків"><span class="header-section-number">2.4</span> Вбудовування графіків</h2>
<p>Якщо використано формат файлів <code>.wxmx</code>, вбудовування файлів до проєкту <em>wxMaxima</em> можна виконати простим перетягуванням зі скиданням. Але іноді (наприклад, якщо вміст зображення може бути змінено згодом протягом роботи у сеансі), краще наказати програмі завантажувати файл зображення при обробці команд:</p>
<div class="sourceCode" id="cb17"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true"></a><span class="cn">show_image</span>(<span class="st">"man.png"</span>);</span></code></pre></div>
<h2 number="2.5" id="файли-запуску"><span class="header-section-number">2.5</span> Файли запуску</h2>
<p>У діалоговому вікні налаштовування <em>wxMaxima</em> передбачено можливість редагування двох файлів із командами, які виконуються під час запуску програми:</p>
<ul>
<li>Файла, у якому містяться команди, які виконуються під час запуску <em>Maxima</em>: <code>maxima-init.mac</code></li>
<li>одного файла із додатковими командами, які виконуються, якщо <em>wxMaxima</em> запускає <em>Maxima</em>: <code>wxmaxima-init.mac</code></li>
</ul>
<p>Ці файли зберігаються у каталозі користувача Maxima (зазвичай, каталозі <code>maxima</code> у Windows, <code>.maxima/</code> у інших системах) у домашній теці користувача. Розташування файлів можна визначити за допомогою такої команди: <code>maxima_userdir;</code></p>
<h2 number="2.6" id="спеціальні-змінні-wx"><span class="header-section-number">2.6</span> Спеціальні змінні wx…</h2>
<ul>
<li><code>wxsubscripts</code> вказує <em>Maxima</em>, чи слід перетворювати назви змінних, які містять символ підкреслювання (<code>R_150</code> або подібні змінні) на змінні із нижніми індексами. Див. <code>wxdeclare_subscript</code>, щоб дізнатися більше про те, які саме назви змінних буде перетворено автоматично.</li>
<li><code>wxfilename</code>: у цій змінній зберігається назва файла, який зараз відкрито у <em>wxMaxima</em>.</li>
<li><code>wxplot_pngcairo</code> визначає те, чи намагатиметься <em>wxMaxima</em> скористатися терміналом pngcairo <em>gnuplot</em>, який надає доступ до ширшого вибору стилів ліній та кращої якості зображення.</li>
<li><code>wxplot_size</code> визначає роздільну здатність для вбудованих креслень.</li>
<li><code>wxchangedir</code>: у більшості операційних систем <em>wxMaxima</em> автоматично встановлює для робочого каталогу <em>Maxima</em> каталог поточного файла. Це уможливлює роботу введення-виведення до файла (наприклад, за допомогою <code>read_matrix</code>) без визначення усього шляху до файла, який має бути прочитано або записано. У Windows ця можливість іноді спричиняє повідомлення про помилку, тому варто встановити для цього параметра значення <code>false</code> у діалоговому вікні налаштовування.</li>
<li><code>wxanimate_framerate</code>: частота у кадрах на секунду, із якою відтворюватимуться наступі анімації.</li>
<li><code>wxanimate_autoplay</code>: типово автоматично відтворювати анімації?</li>
</ul>
<h2 number="2.7" id="структурний-друк-двовимірних-даних"><span class="header-section-number">2.7</span> Структурний друк двовимірних даних</h2>
<p>Функція <code>table_form()</code> показує двовимірний список у формі, яка є зручнішою для читання, за виведені дані типової підпрограми виведення даних <em>Maxima</em>. Вхідними даними є список одного або декількох списків. Подібно до команди друку, ця команда виводить дані, навіть якщо її завершити символом долара. Завершення команди символом крапки з комою призводить до виведення тієї самої таблиці разом із інструкцією «done».</p>
<div class="sourceCode" id="cb18"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true"></a><span class="cn">table_form</span>(</span>
<span id="cb18-2"><a href="#cb18-2" aria-hidden="true"></a> [</span>
<span id="cb18-3"><a href="#cb18-3" aria-hidden="true"></a> [<span class="dv">1</span>,<span class="dv">2</span>],</span>
<span id="cb18-4"><a href="#cb18-4" aria-hidden="true"></a> [<span class="dv">3</span>,<span class="dv">4</span>]</span>
<span id="cb18-5"><a href="#cb18-5" aria-hidden="true"></a> ]</span>
<span id="cb18-6"><a href="#cb18-6" aria-hidden="true"></a>)$</span></code></pre></div>
<p>Як показує наступний приклад, списки, які зібрано командою <code>table_form</code>, можна створювати до виконання команди.</p>
<div class="figure">
<img src="./MatrixTableExample.png" id="img_MatrixTableExample" alt="" />
<p class="caption">Третій приклад таблиці</p>
</div>
<p>Крім того, оскільки матриця — список списків, матриці можна перетворювати на таблиці у подібний же спосіб.</p>
<div class="figure">
<img src="./SecondTableExample.png" id="img_SecondTableExample" alt="" />
<p class="caption">Ще один приклад table_form</p>
</div>
<h2 number="2.8" id="звітування-про-вади"><span class="header-section-number">2.8</span> Звітування про вади</h2>
<p>У <em>wxMaxima</em> передбачено декілька функцій, які збирають дані щодо поточної системи для звітування щодо вад:</p>
<ul>
<li><code>wxbuild_info()</code> збирає відомості щодо поточної запущеної версії <em>wxMaxima</em></li>
<li><code>wxbug_report()</code> надає відомості щодо того, як і де слід повідомляти про вади</li>
</ul>
<h2 number="2.9" id="як-зробити-так-щоб-виведені-дані-було-показано-червоним-кольором"><span class="header-section-number">2.9</span> Як зробити так, щоб виведені дані було показано червоним кольором?</h2>
<p>Команда <code>box()</code> <em>Maxima</em> призводити до того, що <em>wxMaxima</em> виводить її аргумент червоним кольором.</p>
<hr />
<h1 number="3" id="вирішення-проблем"><span class="header-section-number">3</span> Вирішення проблем</h1>
<h2 number="3.1" id="не-вдається-зєднатися-із-maxima"><span class="header-section-number">3.1</span> Не вдається з’єднатися із <em>Maxima</em></h2>
<p>Оскільки <em>Maxima</em> (програма, яка виконує самі обчислення) і <em>wxMaxima</em> (програма, яка надає простий у користуванні інтерфейс користувача) є окремими програмами, які обмінюються даними за допомогою з’єднання локальною мережею. Тому найімовірнішою причиною є те, що це з’єднання чомусь не працює. Наприклад, брандмауер може бути налаштовано таким чином, що він не просто запобігає неуповноваженим з’єднання з інтернету (і, можливо, також перехоплює з’єднання із інтернетом), але і блокує обмін даними між процесами на тому самому комп’ютері. Зауважте, що оскільки <em>Maxima</em> виконується процесором Lisp, процес. із яким блокується обмін даними, не обов’язково називається «maxima». Типовими назвами програм, які відкривають з’єднання мережі, можуть бути sbcl, gcl, ccl, lisp.exe або щось подібне.</p>
<p>У системах Un*x іншою можливою причиною є те, що петльову мережу, яка забезпечує з’єднання мережі між двома програмам, які працюють на одному комп’ютері, не налаштовано належним чином.</p>
<h2 number="3.2" id="як-зберегти-дані-із-пошкодженого-файла-.wxmx"><span class="header-section-number">3.2</span> Як зберегти дані із пошкодженого файла .wxmx</h2>
<p>На внутрішньому рівні більшість сучасних форматів на основі XML є звичайними файлами zip. <em>wxMaxima</em> не увімкнула стискання, що робить вміст файлів .wxmx придатним до перекладу у будь-якому текстовому редакторі.</p>
<p>Якщо підпис zip наприкінці файла є неушкодженим після перейменовування пошкодженого файла .wxmx на .zip, у більшості операційних систем передбачено спосіб видобування будь-якої частини даних, яка у ньому зберігається. Виконати таке видобування можна, якщо потрібно відновити початкові файли зображень з документа текстового процесора. Якщо підпис zip пошкоджено, це ще не кінець світу: якщо <em>wxMaxima</em> під час збереження виявила якусь помилку, має ще бути файл wxmx~, чий вміст може допомогти у відновленні даних.</p>
<p>І навіть якщо такого файла не існує — якщо встановлено параметр налаштування для оптимізації файлів .wxmx для системи керування версіями, можна перейменувати файл .wxmx на файл .txt і скористатися текстовим редактором для відновлення частини XML із вмісту файла (він починається з <code><?xml version="1.0" encoding="UTF-8"?></code> і завершується <code></wxMaximaDocument></code>. До і після цього фрагмента тексту у текстовому редакторі ви побачите непридатні до читання двійкові дані).</p>
<p>Якщо текстовий файл, що містить ці дані (наприклад скопійовані і вставлені як текст до звичайного файла), збережено як файл із суфіксом назви .xml, <em>wxMaxima</em> відомий спосіб відновлення тексту документа з цього файла.</p>
<h2 number="3.3" id="хочу-бачити-діагностичні-відомості-на-екрані-перш-ніж-команда-завершить-свою-роботу"><span class="header-section-number">3.3</span> Хочу бачити діагностичні відомості на екрані, перш ніж команда завершить свою роботу</h2>
<p>Зазвичай, <em>wxMaxima</em> очікує, доки буде передано усю двовимірну формулу, перш ніж починає виводити дані. Таким чином заощаджується час, який могло б бути витрачено на постійні спроби вивести незавершену формулу. Втім, існує команда <code>disp</code>, яка може виводити діагностичні дані негайно, не очікуючи на завершення поточної команди <em>Maxima</em>:</p>
<div class="sourceCode" id="cb19"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true"></a><span class="kw">for</span> <span class="cn">i</span>:<span class="dv">1</span> <span class="kw">thru</span> <span class="dv">10</span> <span class="kw">do</span> (</span>
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true"></a> <span class="fu">disp</span>(<span class="cn">i</span>),</span>
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true"></a> <span class="co">/* (sleep n) — функція Lisp, якою можна скористатися */</span></span>
<span id="cb19-4"><a href="#cb19-4" aria-hidden="true"></a> <span class="co">/* із додаванням перед нею символу «?». Команда затримує */</span></span>
<span id="cb19-5"><a href="#cb19-5" aria-hidden="true"></a> <span class="co">/* виконання програми (у нашому прикладі, на 3 секунди) */</span></span>
<span id="cb19-6"><a href="#cb19-6" aria-hidden="true"></a> ?<span class="cn">sleep</span>(<span class="dv">3</span>)</span>
<span id="cb19-7"><a href="#cb19-7" aria-hidden="true"></a>)$</span></code></pre></div>
<h2 number="3.4" id="на-кресленні-показано-лише-закриту-порожню-обгортку-із-повідомленням-про-помилку"><span class="header-section-number">3.4</span> На кресленні показано лише закриту порожню обгортку із повідомленням про помилку</h2>
<p>Це означає, що <em>wxMaxima</em> не вдалося прочитати файл, який <em>Maxima</em> мала наказати створити <em>gnuplot</em>.</p>
<p>Можливими причинами цієї помилки є такі:</p>
<ul>
<li>Команда креслення є частиною стороннього пакунка, наприклад <code>implicit_plot</code>, але цей пакунок не було завантажено командою <code>load()</code> <em>Maxima</em> до того, як команду було передано на виконання.</li>
<li><em>Maxima</em> tried to do something the currently installed version of <em>gnuplot</em> isn’t able to understand. In this case, a file ending in <code>.gnuplot</code> located in the directory, which <em>Maxima</em>’s variable <code>maxima_userdir</code> is pointing, contains the instructions from <em>Maxima</em> to <em>gnuplot</em>. Most of the time, this file’s contents therefore are helpful when debugging the problem.</li>
<li>Gnuplot було наказано використовувати бібліотеку pngcairo, яка надає можливості згладжування зображення та додаткових стилів ліній, але саму програму не було зібрано із підтримкою цієї бібліотеки. Вирішення: зніміть позначку з пункту «Використовувати термінал cairo для креслення» у діалоговому вікні налаштувань і не встановлюйте для <code>wxplot_pngcairo</code> значення true з коду <em>Maxima</em>.</li>
<li>Gnuplot didn’t output a valid <code>.png</code> file.</li>
</ul>
<h2 number="3.5" id="спроба-накреслити-анімацію-призводить-до-повідомлення-помилка-невизначена-змінна"><span class="header-section-number">3.5</span> Спроба накреслити анімацію призводить до повідомлення «помилка: невизначена змінна»</h2>
<p>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 <code>subst</code> command that substitutes the slider variable into the equation to plot resolves this problem. At the end of section <a href="#embedding-animations-into-the-spreadsheet">Embedding animations into the spreadsheet</a> you can see an example.</p>
<h2 number="3.6" id="втрачено-вміст-комірок-і-скасовування-дій-не-допомагає"><span class="header-section-number">3.6</span> Втрачено вміст комірок і скасовування дій не допомагає</h2>
<p>У програмі передбачено окремі функції скасовування дій для дій з комірками і для дій усередині комірок, тому така подія має бути дуже рідкісною. Якщо таке все ж сталося, існує декілька способів відновити дані:</p>
<ul>
<li>У <em>wxMaxima</em> є два списки скасовування дій: загальний буфер скасовування, який є активним, якщо не позначено жодної комірки, та окремі буфери комірок, які є активним, якщо курсор перебуває у відповідній комірці. Варто спробувати скористатися обома варіантами скасовування, щоб спробувати дістатися потрібного вам попереднього значення.</li>
<li>Якщо у вас лишився доступ до мітки, яку <em>Maxima</em> призначила комірці, просто введіть до комірки цю мітку, і програма покаже її вміст.</li>
<li>Якщо доступу не лишилося, не панікуйте. У меню «Перегляд» є пункт для показу панелі журналу, на якій буде показано усі команди <em>Maxima</em>, які було нещодавно віддано.</li>
<li>Якщо ніщо інше не допомагає, у <em>Maxima</em> є функція для відтворення усіх команд:</li>
</ul>
<div class="sourceCode" id="cb20"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true"></a><span class="fu">playback</span>();</span></code></pre></div>
<h2 number="3.7" id="wxmaxima-запускається-із-повідомленням-процес-maxima-несподівано-перервав-роботу."><span class="header-section-number">3.7</span> <em>wxMaxima</em> запускається із повідомленням «Процес Maxima несподівано перервав роботу.»</h2>
<p>Однією з можливих причин є те, що <em>Maxima</em> не вдалося знайти у каталозі, який вказано на сторінці «Maxima» діалогового вікна налаштовування <em>wxMaxima</em>, а отже, програму взагалі не запущено. Встановлення адреси коректного виконуваного файла <em>Maxima</em> має виправити цю проблему.</p>
<h2 number="3.8" id="maxima-висне-при-обчислення-і-не-відповідає-на-команди"><span class="header-section-number">3.8</span> Maxima висне при обчислення і не відповідає на команди</h2>
<p>Теоретично можливий випадок, коли <em>wxMaxima</em> не може розпізнати момент завершення обчислень у <em>Maxima</em> і тому ніколи не дізнається про те, що може надсилати нові дані до <em>Maxima</em>. У цьому випадку команда виконання обчислення може відновити синхронізацію між двома програмами.</p>
<h2 number="3.9" id="версії-maxima-на-основі-sbcl-не-вистачає-оперативної-памяті"><span class="header-section-number">3.9</span> Версії <em>Maxima</em> на основі SBCL не вистачає оперативної пам’яті</h2>
<p>Компілятор Lisp SBCL типово позначається із обмеженням на використання пам’яті, яке надає змогу запускати його на слабких комп’ютерах. При компіляції великих пакунків програмного забезпечення, зокрема lapack, або роботі з великими списками або формулами це обмеження може заважати нормальній роботі. Щоб зняти обмеження, SBCL можна передати параметр <code>--dynamic-space-size</code>, який вказуватиме SBCL, скільки мегабайтів пам’яті слід зарезервувати. У 32-бітовому Windows-SBCL можна зарезервувати до 999 мегабайтів. У 64-бітовій версії SBCL, яку запущено у Windows, можна наказати програмі використовувати понад близько 1280 мегабайтів, чого має бути достатньо для збирання lapack.</p>
<p>Одним зі способів передати <em>Maxima</em> (а отже, SBCL) параметри командного рядка є поле «Додаткові параметри для Maxima» вікна налаштовування <em>wxMaxima</em>.</p>
<div class="figure">
<img src="./sbclMemory.png" id="img_sbclMemory" alt="" />
<p class="caption">sbcl memory</p>
</div>
<h2 number="3.10" id="при-введенні-даних-програма-уповільнюється-або-пропускає-символи-в-ubuntu"><span class="header-section-number">3.10</span> При введенні даних програма уповільнюється або пропускає символи в Ubuntu</h2>
<p>Встановлення пакунка <code>ibus-gtk</code> має усунути проблему. Докладніше про це на сторінці (<a href="https://bugs.launchpad.net/ubuntu/+source/wxwidgets3.0/+bug/1421558">https://bugs.launchpad.net/ubuntu/+source/wxwidgets3.0/+bug/1421558</a>).</p>
<h2 number="3.11" id="wxmaxima-припиняє-роботу-коли-maxima-обробляє-грецькі-символи-або-умляути"><span class="header-section-number">3.11</span> <em>wxMaxima</em> припиняє роботу, коли <em>Maxima</em> обробляє грецькі символи або умляути</h2>
<p>Якщо вашу <em>Maxima</em> засновано на SBCL, слід додати такі рядки до вашого файла <code>.sbclrc</code>:</p>
<div class="sourceCode" id="cb21"><pre class="sourceCode commonlisp"><code class="sourceCode commonlisp"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true"></a>(<span class="kw">setf</span> sb-impl::*default-external-format* :utf<span class="dv">-8</span>)</span></code></pre></div>
<p>Тека, у якій має бути розташовано цей файл залежить від системи та способу встановлення. Втім, будь-яка <em>Maxima</em> на основі SBCL, яка вже виконала обчислення у якійсь комірці протягом поточного сеансу, без проблем повідомить, де його можна знайти, у відповідь на таку команду:</p>
<pre><code>:lisp (sb-impl::userinit-pathname)</code></pre>
<h2 number="3.12" id="креслення-1"><span class="header-section-number">3.12</span> Креслення</h2>
<h3 number="3.12.1" id="чи-можна-зробити-так-щоб-wxmaxima-виводила-дані-одразу-до-файлів-зображень-і-до-вбудованих-до-аркуша-креслень"><span class="header-section-number">3.12.1</span> Чи можна зробити так, щоб <em>wxMaxima</em> виводила дані одразу до файлів зображень і до вбудованих до аркуша креслень?</h3>
<p>До робочого аркуша вбудовуються файли .png. <em>wxMaxima</em> дозволяє користувачу вказати, де має бути створено ці файли:</p>
<div class="sourceCode" id="cb23"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true"></a><span class="cn">wxdraw2d</span>(</span>
<span id="cb23-2"><a href="#cb23-2" aria-hidden="true"></a> <span class="cn">file_name</span>=<span class="st">"test"</span>,</span>
<span id="cb23-3"><a href="#cb23-3" aria-hidden="true"></a> <span class="cn">explicit</span>(<span class="fu">sin</span>(<span class="cn">x</span>),<span class="cn">x</span>,<span class="dv">1</span>,<span class="dv">10</span>)</span>
<span id="cb23-4"><a href="#cb23-4" aria-hidden="true"></a>);</span></code></pre></div>
<p>Якщо має бути використано якийсь інший формат зображень, простіше створити зображення окремо, а потім імпортувати їх до робочого аркуша:</p>
<div class="sourceCode" id="cb24"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true"></a><span class="fu">load</span>(<span class="st">"draw"</span>);</span>
<span id="cb24-2"><a href="#cb24-2" aria-hidden="true"></a><span class="cn">pngdraw</span>(<span class="cn">name</span>,[<span class="cn">contents</span>]):=</span>
<span id="cb24-3"><a href="#cb24-3" aria-hidden="true"></a>(</span>
<span id="cb24-4"><a href="#cb24-4" aria-hidden="true"></a> <span class="fu">draw</span>(</span>
<span id="cb24-5"><a href="#cb24-5" aria-hidden="true"></a> <span class="fu">append</span>(</span>
<span id="cb24-6"><a href="#cb24-6" aria-hidden="true"></a> [</span>
<span id="cb24-7"><a href="#cb24-7" aria-hidden="true"></a> <span class="cn">terminal</span>=<span class="cn">pngcairo</span>,</span>
<span id="cb24-8"><a href="#cb24-8" aria-hidden="true"></a> <span class="cn">dimensions</span>=<span class="cn">wxplot_size</span>,</span>
<span id="cb24-9"><a href="#cb24-9" aria-hidden="true"></a> <span class="cn">file_name</span>=<span class="cn">name</span></span>
<span id="cb24-10"><a href="#cb24-10" aria-hidden="true"></a> ],</span>
<span id="cb24-11"><a href="#cb24-11" aria-hidden="true"></a> <span class="cn">contents</span></span>
<span id="cb24-12"><a href="#cb24-12" aria-hidden="true"></a> )</span>
<span id="cb24-13"><a href="#cb24-13" aria-hidden="true"></a> ),</span>
<span id="cb24-14"><a href="#cb24-14" aria-hidden="true"></a> <span class="cn">show_image</span>(<span class="fu">printf</span>(<span class="kw">false</span>,<span class="st">"~a.png"</span>,<span class="cn">name</span>))</span>
<span id="cb24-15"><a href="#cb24-15" aria-hidden="true"></a>);</span>
<span id="cb24-16"><a href="#cb24-16" aria-hidden="true"></a><span class="cn">pngdraw2d</span>(<span class="cn">name</span>,[<span class="cn">contents</span>]):=</span>
<span id="cb24-17"><a href="#cb24-17" aria-hidden="true"></a> <span class="cn">pngdraw</span>(<span class="cn">name</span>,<span class="cn">gr2d</span>(<span class="cn">contents</span>));</span>
<span id="cb24-18"><a href="#cb24-18" aria-hidden="true"></a></span>
<span id="cb24-19"><a href="#cb24-19" aria-hidden="true"></a><span class="cn">pngdraw2d</span>(<span class="st">"Test"</span>,</span>
<span id="cb24-20"><a href="#cb24-20" aria-hidden="true"></a> <span class="cn">explicit</span>(<span class="fu">sin</span>(<span class="cn">x</span>),<span class="cn">x</span>,<span class="dv">1</span>,<span class="dv">10</span>)</span>
<span id="cb24-21"><a href="#cb24-21" aria-hidden="true"></a>);</span></code></pre></div>
<h3 number="3.12.2" id="чи-можна-встановити-співвідношення-розмірів-зображення-креслення"><span class="header-section-number">3.12.2</span> Чи можна встановити співвідношення розмірів зображення креслення?</h3>
<p>Не безпосередньо, за допомогою <em>Maxima</em>. Але для цього є команди gnuplot:</p>
<div class="sourceCode" id="cb25"><pre class="sourceCode maxima"><code class="sourceCode maxima"><span id="cb25-1"><a href="#cb25-1" aria-hidden="true"></a><span class="cn">wxdraw2d</span>(</span>
<span id="cb25-2"><a href="#cb25-2" aria-hidden="true"></a> <span class="cn">proportional_axis</span>=<span class="cn">xy</span>,</span>
<span id="cb25-3"><a href="#cb25-3" aria-hidden="true"></a> <span class="cn">explicit</span>(<span class="fu">sin</span>(<span class="cn">x</span>),<span class="cn">x</span>,<span class="dv">1</span>,<span class="dv">10</span>)</span>
<span id="cb25-4"><a href="#cb25-4" aria-hidden="true"></a>),<span class="cn">wxplot_size</span>=[<span class="dv">1000</span>,<span class="dv">1000</span>];</span></code></pre></div>
<hr />
<h1 number="4" id="поширені-питання-та-відповіді-на-них"><span class="header-section-number">4</span> Поширені питання та відповіді на них</h1>
<h2 number="4.1" id="чи-є-якийсь-спосіб-умістити-більше-тексту-на-сторінку-latex"><span class="header-section-number">4.1</span> Чи є якийсь спосіб умістити більше тексту на сторінку LaTeX?</h2>
<p>Звичайно, є. Просто додайте вказані нижче рядки до преамбули LaTeX (наприклад, за допомогою відповідного поля у діалоговому вікні налаштовування («Експорт->Додаткові рядки до преамбули TeX»)):</p>
<div class="sourceCode" id="cb26"><pre class="sourceCode latex"><code class="sourceCode latex"><span id="cb26-1"><a href="#cb26-1" aria-hidden="true"></a><span class="bu">\usepackage</span>[left=1cm,right=1cm,top=1cm,bottom=1cm]{<span class="ex">geometry</span>}</span></code></pre></div>
<h2 number="4.2" id="чи-передбачено-у-програмі-темний-режим"><span class="header-section-number">4.2</span> Чи передбачено у програмі «темний» режим?</h2>
<p>Якщо бібліотека wxWidgets є достатньо новою, <em>wxMaxima</em> автоматично працюватиме у темному режимі, якщо у ньому працює решта операційної системи. Сам робочий аркуш типово має світле тло. Втім, колір тла можна змінити. Крім того, ви можете скористатися пунктом меню «Перегляд/Інвертувати яскравість робочого аркуша», за допомогою якого можна швидко перетворити робочий аркуш з темного на світлий, і навпаки.</p>
<h2 number="4.3" id="wxmaxima-іноді-повисає-на-декілька-секунд-під-час-першої-хвилини-роботи"><span class="header-section-number">4.3</span> <em>wxMaxima</em> іноді повисає на декілька секунд під час першої хвилини роботи</h2>
<p><em>wxMaxima</em> передає певні складні завдання, зокрема завдання з обробки підручника з <em>Maxima</em>, який складається з понад 1000 сторінок, фоновим завданням, що, зазвичай, відбувається зовсім непомітно. Втім, у момент, коли може знадобитися результат виконання такого завдання, <em>wxMaxima</em> може знадобитися декілька секунд для відновлення нормальної роботи.</p>
<hr />
<h1 number="5" id="параметри-командного-рядка"><span class="header-section-number">5</span> Параметри командного рядка</h1>
<p>У більшості операційних систем передбачено простіші способи запуску програми, ніж командний рядок, тому навряд ви запускатиме програму з командного рядка. Втім, у <em>wxMaxima</em> передбачено декілька корисних параметрів командного рядка.</p>
<ul>
<li><code>-v</code> або <code>--version</code>: вивести дані щодо версії програми</li>
<li><code>-h</code> або <code>--help</code>: вивести короткий довідковий текст</li>
<li><code>-o</code> або <code>--open=<рядок></code>: відкрити файл, який передано як аргумент до цього параметра командного рядка</li>
<li><code>-e</code> або <code>--eval</code>: обробити файл після його відкриття</li>
<li><code>-b</code> або <code>--batch</code>: якщо ви відкриваєте файл з командного рядка, усі комірки у цьому файлі обчислюються, а потім програма виконує збереження файла. Це, наприклад, корисно, якщо сеанс, який описано у файлі, призводить до того, що <em>Maxima</em> щось виводить до файлів. Пакетну обробку буде зупинено, якщо <em>wxMaxima</em> виявить, що <em>Maxima</em> вивела повідомлення про помилку, і призупинить обробку, якщо <em>Maxima</em> задасть питання: математика є дещо інтерактивною за природою, тому повністю автономна пакетна обробка можлива далеко не завжди.</li>
<li><code>--logtostdout</code>: Log all “debug messages” sidebar messages to stderr, too.</li>
<li><code>--pipe</code>: Pipe messages from Maxima to stdout.</li>
<li><code>--exit-on-error</code>: Close the program on any maxima error.</li>
<li><code>-f</code> or <code>--ini=<str></code>: Use the init file that was given as argument to this command-line switch</li>
<li><code>-u</code>, <code>--use-version=<str></code>: Use maxima version <code><str></code>.</li>
<li><code>-l</code>, <code>--lisp=<str></code>: Use a Maxima compiled with Lisp compiler <code><str></code>.</li>
<li><code>-X</code>, <code>--extra-args=<str></code>: Allows to specify extra Maxima arguments</li>
<li><code>-m</code> or <code>--maxima=<str></code>: allows to specify the location of the <em>maxima</em> binary</li>
<li><code>--enableipc</code>: Lets Maxima control wxMaxima via interprocess communications. Use this option with care.</li>
</ul>
<p>Замість символу мінуса у деяких операційних системах перед перемикачами командного рядка використовується тире.</p>
</body>
</html>
|