File: wxmaxima.uk.html

package info (click to toggle)
wxmaxima 20.12.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid
  • size: 46,476 kB
  • sloc: cpp: 77,833; xml: 10,445; ansic: 3,583; lisp: 1,837; makefile: 13; sh: 7
file content (1045 lines) | stat: -rw-r--r-- 141,753 bytes parent folder | download
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>&lt;= або leq</td>
<td>менше або дорівнює</td>
</tr>
<tr class="odd">
<td>&gt;= або geq</td>
<td>більше або дорівнює</td>
</tr>
<tr class="even">
<td>&lt;&lt; або ll</td>
<td>набагато менше</td>
</tr>
<tr class="odd">
<td>&gt;&gt; або 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>-&gt;</td>
<td>стрілка праворуч</td>
</tr>
<tr class="odd">
<td>–&gt;</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>&gt;</code> вважаються блоками цитат:</p>
<pre><code>Звичайний текст
&gt; цитата цитата цитата цитата
&gt; цитата цитата цитата цитата
&gt; цитата цитата цитата цитата
Звичайний текст</code></pre>
<p>У коді TeX та HTML <em>wxMaxima</em> також розпізнається рядок <code>=&gt;</code>, який програма замінює на відповідний символ Юнікод:</p>
<pre><code>cogito =&gt; sum.</code></pre>
<p>Іншими символами, які буде розпізнано під час експортування до HTML або TeX, є <code>&lt;=</code> і <code>&gt;=</code> для порівнянь, двобічна стрілка (<code>&lt;=&gt;</code>), одинарні стрілки (<code>&lt;-&gt;</code>, <code>-&gt;</code> і <code>&lt;-</code>), а також <code>+/-</code> як відповідний знак. Для експортування у код TeX передбачено також підтримку перетворення <code>&lt;&lt;</code> і <code>&gt;&gt;</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">&quot;test.mac&quot;</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 &gt;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 &lt; 3.1.1), або <code>.config/wxMaxima.conf</code> ((стандартний каталог XDG), якщо використано wxWidgets &gt;= 3.1.1). Визначити версію wxWidgets можна за допомогою команди <code>wxbuild_info();</code> або пункту меню «Довідка -&gt; Про програму». <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">&quot;Pass &quot;</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">&quot;f=&quot;</span>,<span class="cn">f</span>,<span class="st">&quot;Hz&quot;</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">&quot;α=&quot;</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">&quot;α=&quot;</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">&quot;a=&quot;</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">&quot;a=&quot;</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">&quot;sin (x)&quot;</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">&quot;cos (x)&quot;</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">&quot;man.png&quot;</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>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</code> і завершується <code>&lt;/wxMaximaDocument&gt;</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">&quot;test&quot;</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">&quot;draw&quot;</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">&quot;~a.png&quot;</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">&quot;Test&quot;</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 (наприклад, за допомогою відповідного поля у діалоговому вікні налаштовування («Експорт-&gt;Додаткові рядки до преамбули 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=&lt;рядок&gt;</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=&lt;str&gt;</code>: Use the init file that was given as argument to this command-line switch</li>
<li><code>-u</code>, <code>--use-version=&lt;str&gt;</code>: Use maxima version <code>&lt;str&gt;</code>.</li>
<li><code>-l</code>, <code>--lisp=&lt;str&gt;</code>: Use a Maxima compiled with Lisp compiler <code>&lt;str&gt;</code>.</li>
<li><code>-X</code>, <code>--extra-args=&lt;str&gt;</code>: Allows to specify extra Maxima arguments</li>
<li><code>-m</code> or <code>--maxima=&lt;str&gt;</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>