[3a1141]: ru / faq.xml  Maximize  Restore  History

Download this file

519 lines (376 with data), 42.3 kB

  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
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../main.xsl"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" id="faq" xml:lang="ru">
<head>
<title>Ответы на часто задаваемые вопросы</title>
<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"/>
<link rel="schema.DCTERMS" href="http://purl.org/dc/terms/"/>
<meta name="DC.identifier" scheme="DCTERMS.URI" content="http://maxima.sourceforge.net/ru/faq.html"/>
</head>
<body>
<p>©&#x00a0;2007 <a href="http://beshenov.ru/">Алексей Бешенов</a>&#x00a0;&lt;<a href="mailto:al@beshenov.ru">al@beshenov.ru</a>&gt;, русский перевод.</p>
<p>Версия Maxima на момент последнего обновления&#x00a0;— 5.9.0.</p>
<p><em>Последнее обновление&#x00a0;— 16 сентября 2007&#x00a0;г.</em></p>
<div class="small">
<p>©&#x00a0;2003 Judah Milgram. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.</p>
</div>
<hr />
<h3>Содержание</h3>
<h4 style="margin: 0; padding: 0">1. Основные вопросы</h4>
<ul class="il">
<li><a href="#General0">1.1. Благодарности</a></li>
<li><a href="#General1">1.2. Кто-то на самом деле задавал эти вопросы?</a></li>
<li><a href="#General2">1.3. Что такое Maxima?</a></li>
<li><a href="#General3">1.4. В чем различия между Macsyma, DOE-Macsyma, Symbolics Macsyma и Maxima?</a></li>
<li><a href="#General4">1.5. Кто написал систему?</a></li>
<li><a href="#General5">1.6. Кто сейчас занимается поддержкой?</a></li>
<li><a href="#General6">1.7. Свободна (бесплатна) ли Maxima?</a></li>
<li><a href="#General7">1.8. Какие еще есть пакеты символьной математики?</a></li>
</ul>
<h4 style="margin: 0; padding: 0">2. Документация</h4>
<ul class="il">
<li><a href="#Documentation0">2.1. Где я могу прочитать о Maxima?</a></li>
<li><a href="#Documentation1">2.2. Откуда два «Справочных руководства»?</a></li>
<li><a href="#Documentation2">2.3. Что со страницей на utexas.edu? Она показывает версии только по 5.6.0</a></li>
<li><a href="#Documentation3">2.4. Что насчет LISP?</a></li>
</ul>
<h4 style="margin: 0; padding: 0">3. Установка Maxima</h4>
<ul class="il">
<li><a href="#InstallingMaxima2">3.3. Какие дистрибутивы Linux включают Maxima?</a></li>
</ul>
<h4 style="margin: 0; padding: 0">4. LISP</h4>
<ul class="il">
<li><a href="#Lisp0">4.1. С какими реализациями LISP может работать Maxima?</a></li>
<li><a href="#Lisp1">4.2. CLISP</a></li>
<li><a href="#Lisp2">4.3. CMUCL</a></li>
<li><a href="#Lisp3">4.4. GCL</a></li>
</ul>
<h4 style="margin: 0; padding: 0">5. Emacs</h4>
<ul class="il">
<li><a href="#Emacs0">5.1. Как сделать доступным режим Maxima в Emacs?</a></li>
</ul>
<h4 style="margin: 0; padding: 0">6. Ошибки и другие проблемы</h4>
<ul class="il">
<li><a href="#Bugsandotherproblems0">6.1. Почему в столь старой программе еще существуют элементарные ошибки?</a></li>
<li><a href="#Bugsandotherproblems1">6.2. Как лучше сообщить об ошибке?</a></li>
<li><a href="#Bugsandotherproblems2">6.3. Тексты сессий в сообщениях об ошибках</a></li>
<li><a href="#Bugsandotherproblems3">6.4. Что делать с проблемами компиляции?</a></li>
<li><a href="#Bugsandotherproblems4">6.5. Maxima 5.9.0 не работает с GCL 2.4.0</a></li>
</ul>
<h4 style="margin: 0; padding: 0">7. Дополнительные пакеты</h4>
<ul class="il">
<li><a href="#AdditionalPackages0">7.1. Графы и гиперграфы</a></li>
</ul>
<h4 style="margin: 0; padding: 0">8. Вопросы новичков</h4>
<ul class="il">
<li><a href="#BeginnerQuestions0">8.1. <code>inchar</code> и <code>outchar</code></a></li>
<li><a href="#BeginnerQuestions1">8.2. Решение систем уравнений</a></li>
<li><a href="#BeginnerQuestions2">8.3. Как извлечь столбец матрицы?</a></li>
<li><a href="#BeginnerQuestions3">8.4. Почему в циклах не работает «return»?</a></li>
<li><a href="#BeginnerQuestions4">8.5. <code>desolve</code> не работает?!</a></li>
<li><a href="#BeginnerQuestions5">8.6. Нужна ли кавычка?</a></li>
<li><a href="#BeginnerQuestions6">8.7. Подстановка</a></li>
</ul>
<h4 style="margin: 0; padding: 0">9. Вывод в T<sub>E</sub>X</h4>
<ul class="il">
<li><a href="#TeXOutput0">9.1. Как мне настроить вывод отдельных переменных Maxima в T<sub>E</sub>X?</a></li>
</ul>
<hr />
<h3>1. Основные вопросы</h3>
<h4 style="padding-top: 0; margin-top: 0" id="General0">1.1. Благодарности</h4>
<p>Множество людей участвовали в написании этого текста или в обсуждениях почтовой конференции Maxima, из которой и были позаимствованы многие материалы&#x00a0;:-)</p>
<p>Вот люди, которым мы хотим вынести особые благодарности:</p>
<ul class="dashedlist">
<li>Джей Белангер,</li>
<li>Ричард Фейтман,</li>
<li>Девид Холмгрен,</li>
<li>Николаос Иоакимидис,</li>
<li>Ставрос Макракис,</li>
<li>Мартин Рубей,</li>
<li>Реймонд Той,</li>
<li>Бартон Уиллис.</li>
</ul>
<p>Отдельная благодарность Уильяму Шелтеру.</p>
<h4 id="General1">1.2. Кто-то на самом деле задавал эти вопросы?</h4>
<p>Многие из них&#x00a0;:-)</p>
<h4 id="General2">1.3. Что такое Maxima?</h4>
<p>Maxima основана на Macsyma, разработанной в MIT в 1970-х, и является полноценной программой символьных расчетов. Возможности включают символьные операции с многочленами, матрицами и рациональными функциями; интегрирование, алгоритм Тодда-Коксетера, построение графиков, расчеты над числами с плавающей точкой большой точности. Система довольно надежна, имеет отладчик, хорошую сборку мусора; не имеет утечек памяти, для проверки работы с ней поставляются сотни тестов.</p>
<h4 id="General3">1.4. В чем различия между Macsyma, DOE-Macsyma, Symbolics Macsyma и Maxima?</h4>
<p>Разработанная в MIT система была названа Macsyma. Иногда использовались сокращенные названия «MACSYM» и «MAXIMA», так как имена файлов были ограничены шестью символами верхнего регистра шестибитной кодировки.</p>
<p>Symbolics лицензировал Macsyma у MIT и зарегистрировал торговую марку «Macsyma», видимо, с разрешения MIT.</p>
<p>Когда исходный код Macsyma перестал быть доступным бесплатно, на MIT было оказано давление (в основном, Ричардом Фейтманом), чтобы код, разработанный в значительной степени совместно с Министерством энергетики США, был передан министерству, которое далее опубликовало бы исходники для третьих лиц под соответствующей лицензией.</p>
<p>Эта основа кода была названа DOE Macsyma (от «Department of Energy»). Неизвестно, какие законные права министерство имело на название Macsyma, в отличие от прав на собственно код, но, по-видимому, некоммерческие пользователи DOE Macsyma, желая избежать юридические споры по поводу названия, с какого-то момента стали именовать пакет Maxima.</p>
<p>Так что Maxima есть просто последнее название ветки разработки, начатой как «DOE Macsyma».</p>
<h4 id="General4">1.5. Кто написал систему?</h4>
<p>Maxima&#x00a0;— потомок DOE Macsyma, разработанной в начале 60-х в MIT. Это единственная основанная на Macsyma система, все еще публично доступная и имеющая активное сообщество пользователей благодаря своей открытости. Macsyma произвела в свое время переворот в компьютерной алгебре и оказала влияние на многие другие системы, в числе которых Maple и Mathematica. Работу над Maxima вел Уильям Шелтер с 1982 года и до своей кончины в 2001 году. Выживание Maxima стало возможным только благодаря его усилиям и способностям, мы очень благодарны ему за уделенные проекту время и знания эксперта, которые поддерживали код DOE Macsyma актуальным и качественным.</p>
<h4 id="General5">1.6. Кто сейчас занимается поддержкой?</h4>
<p>После кончины Уильяма Шелтера была собрана группа пользователей, поддерживающих Maxima в актуальном состоянии. Сейчас мы находимся в промежуточном состоянии, выбираем дальнейшие направления развития и оцениваем имеющиеся возможности и ресурсы. Сама по себе Maxima имеет относительно полный набор возможностей на этом этапе, включая символьное интегрирование, построение трехмерных графиков и решение ОДУ, но осталось много работы по исправлению ошибок, чистке и документированию. Не сказать, что не будет новых возможностей, но есть еще много работы, которую нужно сделать до того, как будет достигнут следующий этап, и пока что мы не можем заниматься новыми возможностями.</p>
<h4 id="General6">1.7. Свободна (бесплатна) ли Maxima?</h4>
<p>Да. Maxima распространяется по <a href="http://www.gnu.org/licenses/licenses.html#GPL">GNU General Public License</a> с некоторыми ограничениями на использование кода от Министерства энергетики США.</p>
<h4 id="General7">1.8. Какие еще есть пакеты символьной математики?</h4>
<p>Есть еще несколько, однако не все они имеют открытый исходный код и не все бесплатны.</p>
<ul class="dashedlist">
<li><a href="http://www-swiss.ai.mit.edu/%7Ejaffer/JACAL.html">JACAL</a> (GPL, на Scheme)</li>
<li><a href="http://yacas.sourceforge.net/yacas.html">YACAS</a> (GPL)</li>
<li><a href="http://www.synaptics.com/people/daveg/">Calc, the GNU Emacs Calculator</a> (GPL)</li>
<li><a href="http://www.strout.net/python/pythonica.html">Pythonica</a>
(лицензия не известна, но доступен исходный код)</li>
<li><a href="http://www.symbolics.com/Macsyma-1.htm">Macsyma</a></li>
<li><a href="http://www.wolfram.com/products/mathematica/index.html">Mathematica</a></li>
<li><a href="http://www.maplesoft.com/">Maple</a></li>
</ul>
<p>По отзывам пользователей, Jacal и Yacas не имеют такой широкий набор команд, как Maxima; Calc немногим более развит и, в частности, включает хороший интегратор.</p>
<h3>2. Документация</h3>
<h4 style="padding-top: 0; margin-top: 0" id="Documentation0">2.1. Где я могу прочитать о Maxima?</h4>
<ul class="dashedlist">
<li>Нетерпеливые должны начать со <a href="http://www.math.psu.edu/glasner/Max_doc/macref.pdf">Справочного руководства по DOE-Maxima</a>, написанного Майклом Кларксоном на основе исходного руководства Maxima.</li>
<li>Ссылки на документацию приводятся на <a href="documentation.html">отдельной странице этого сайта</a>.</li>
<li>Техасский университет поддерживает <a href="http://www.math.utexas.edu/mailman/listinfo/maxima">список рассылки по Maxima</a>. Также есть листы на <a href="http://www.sourceforge.net/">SourceForge</a>, но пока в них пишут мало, основные обсуждения идут на <a href="MIT:maxima@math.utexas.edu">maxima@math.utexas.edu</a>.</li>
<li><a href="http://www.maxima.fr.st/">Превосходная страница Мишеля Госса о Maxima</a>&#x00a0;— другой хороший повод выучить французский ;-)</li>
</ul>
<h4 id="Documentation1">2.2. Откуда два «Справочных руководства»?</h4>
<p>Исходное руководство за авторством Уильяма Шелтера больше не поддерживается. Текст Майка Кларксона не является в точности заменой руководства Шелтера, а скорее отдельной работой, подготовленной ранее для DOE-Macsyma и адаптированной для Maxima с изменением DOE-Macsyma на DOE-Maxima в названии.</p>
<h4 id="Documentation2">2.3. Что со страницей на utexas.edu? Она показывает версии только по 5.6.0</h4>
<p>По адресу <a href="http://www.ma.utexas.edu/maxima.html">http://www.ma.utexas.edu/maxima.html</a> находилась старая домашняя страница Уильяма Шелтера, и больше она не поддерживается. Однако там можно найти некоторые снимки экрана и другую полезную информацию.</p>
<h4 id="Documentation3">2.4. Что насчет LISP?</h4>
<p>Вот некоторые английские сайты с хорошей информацией о Common LISP:</p>
<ul class="dashedlist">
<li><a href="http://cl-cookbook.sourceforge.net/">The Common LISP Cookbook</a></li>
<li><a href="http://clisp.cons.org/resources.html">Common LISP Documentation</a></li>
<li><a href="http://www.apl.jhu.edu/%7Ehall/lisp.html">An Introduction and Tutorial for Common LISP</a></li>
<li>David Touretzky. <a href="http://www-2.cs.cmu.edu/afs/cs.cmu.edu/user/dst/www/LispBook/index.html">Common LISP: A Gentle Introduction to Symbolic Computation</a></li>
<li><a href="http://www-2.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html">Common LISP the Language</a></li>
</ul>
<h3>3. Установка Maxima</h3>
<h4 style="padding-top: 0; margin-top: 0" id="InstallingMaxima2">3.3. Какие дистрибутивы Linux включают Maxima?</h4>
<p>Насколько нам известно, есть только два дистрибутива, включающих Maxima:</p>
<ul class="dashedlist">
<li><a href="http://www.debian.org/">Debian</a> (нестабильная ветвь</li>
<li><a href="http://www.altlinux.org/">ALT Linux</a> (Master 2.0, Master 2.2)</li>
</ul>
<h3>4. LISP</h3>
<h4 style="padding-top: 0; margin-top: 0" id="Lisp0">4.1. С какими реализациями LISP может работать Maxima?</h4>
<p>CLISP, CMUCL и GCL полностью поддерживаются Maxima; предыдущие версии Maxima полностью поддерживали только GCL. Порты для других ANSI-реализаций LISP не должны вызвать трудностей и приветствуются; свяжитесь с разработчиками, если заинтересованны в работе по портированию.</p>
<h4 id="Lisp1">4.2. <a href="http://clisp.cons.org/">CLISP</a></h4>
<p>CLISP включает поддержку GNU <code>readline</code>, так что при сборке на нем Maxima будет иметь дополнительные удобства редактирования в командной строке. Maxima не может быть собрана на версии 2.26 из-за ошибок в CLISP. 2.28 и 2.29 работает; в 2.30 есть проблемы с числами с плавающей точкой, так что рекомендуется 2.29.</p>
<h4 id="Lisp2">4.3. <a href="http://www.cons.org/cmucl/">CMUCL</a></h4>
<p>CMUCL является самым быстрым вариантом для Maxima на тех платформах, где он доступен. К сожалению, он не включает поддержку <code>readline</code>, но ее можно добавить, обернув Maxima <a href="ftp://ftp.inria.fr/INRIA/Projects/cristal/Daniel.de_Rauglaudre/Tools/">исполняемым файлом <code>ledit</code></a>. Maxima собирается с CMUCL 18c, но зависает на некоторых операциях времени исполнения. 18d должно работать.</p>
<h4 id="Lisp3">4.4. <a href="http://savannah.gnu.org/projects/gcl">GCL</a></h4>
<p>Версии 2.4.4 и 2.5.0 должны подойти. 2.5.0 не издана на момент написания текста, cvs-версии 2.5.0 были успешно использованы для сборки Maxima. Версии с 2.4.3 могут собираться с поддержкой <code>readline</code>.</p>
<h3>5. Emacs</h3>
<h4 style="padding-top: 0; margin-top: 0" id="Emacs0">5.1. Как сделать доступным режим Maxima в Emacs?</h4>
<p>Добавьте в ~/.emacs нечто вроде такого:</p>
<pre>(setq auto-mode-alist (cons '("\\.max" . maxima-mode) auto-mode-alist))
(setq load-path (cons "/usr/share/maxima/5.9.0/emacs" load-path ))
(autoload 'maxima "maxima" "Running Maxima interactively" t)
(autoload 'maxima-mode "maxima" "Maxima editing mode" t)</pre>
<p>Вместо изменения пути загрузки, вы можете копировать все файлы .el из /usr/share/maxima/5.9.0/emacs (или откуда еще) в директорию <kbd>site-lisp</kbd> вашего пути загрузки.</p>
<h3>6. Ошибки и другие проблемы</h3>
<h4 style="padding-top: 0; margin-top: 0" id="Bugsandotherproblems0">6.1. Почему в столь старой программе еще существуют элементарные ошибки?</h4>
<blockquote>
<p>Я только что отправил сообщение об ошибке на SourceForge и удивлен тому, что в столь старой программе еще существуют элементарные ошибки. Это то, что мой калькулятор может сделать сейчас, а этой программе, по-видимому, уже около 30 лет.</p>
</blockquote>
<p class="answer"><strong>Ответ:</strong></p>
<ol>
<li>Вы могли сообщить о том, что не является ошибкой, а связано с непониманием того, что программа должна делать. (Это очень распространено, хотя, конечно, может и не относиться к вашему отчету).</li>
<li>Та возможность, которую вы использовали, была написана не 30 лет назад пользователем, во многом таким же, как вы, и не была протестирована, так как не является основной функцией системы. Может быть, она написана в конце 70-х.</li>
<li>Большая часть этой системы не проверялась с 1982 года, так что последние лет 20 (когда работа шла только над коммерческой версией) не в счет.</li>
<li>Если была найдена ошибка, надеемся, она исправлена.</li>
</ol>
<h4 id="Bugsandotherproblems1">6.2. Как лучше сообщить об ошибке?</h4>
<p>Ошибки должны вводиться напрямую в <a href="https://sourceforge.net/tracker/?group_id=4933&amp;atid=104933">базу данных</a>, это лучший способ их отслеживания, чем написание отчетов в список рассылки. Конечно, если вы хотите что-то обсудить, можете написать подписчикам. Интерфейс базы данных с ошибками позволяет отправлять файлы, которые могут помочь в документировании проблемы.</p>
<p>Базовый отчет об ошибке включает достаточно информации для ее воспроизведения, в том числе информацию о версии, полученную при помощи bug_report().</p>
<p>Качественный полный отчет включает:</p>
<ul class="dashedlist">
<li>Хороший заголовок, передающий суть проблемы.</li>
<li>Ясный порядок воспроизведения ошибки. Убедитесь, что ошибка может воспроизводиться в последней версии системы. Если вы не можете повторить ошибку, включите как можно больше сведений о том, что вы делали перед тем, как она проявилась. Чем проще руководство по воспроизведению ошибки, тем лучше; также лучше, если оно сведется к простому случаю. Также полезно привести случаи, которые имеют небольшие отличия, но не приводят к ошибке.</li>
<li>Если это не полностью ясно, объяснение, почему ответ ошибочен и каков верный ответ.</li>
<li>Полная версия, которую вы используете, как выводит bug_report().</li>
<li>Краткое замечание о том, почему важно решить проблему (чтобы помочь разработчикам разделить работу по приоритетам), например, «практически каждый пользователь рано или поздно встретится с этой коварной ошибкой и потеряет все свои наработки», или «эта ошибка не дает нашей группе использовать Maxima, так как этот класс матриц используется повсеместно в популяционной генетике», или «для начала подойдет способ обхода ошибки», «это искусственно созданный случай, я почти уверен, что он никогда не встретится простому пользователю» (хотя часто ошибки в сложных случаях проявляют себя также и в простых ситуациях).</li>
<li>Если вы знаете, как избежать проблему, или у вас есть код, исправляющий ее, укажите в заголовке «FIX», чтобы разработчики могли быстро зарегистрировать отчет.</li>
<li>Некоторые проблемы могут быть не ошибками, а функциональными ограничениями. В этом случае интересно знать, что делают другие системы, особенно коммерческая Macsyma. Если вы знаете, почему должно быть ограничение, укажите («Согласно теории Кратова, задача не решается в общем случае»). Также интересен метод их обработки, например, «пакет для ОДУ не обрабатывает триэкспоненциальный случай седьмого порядка, но это может muPad 29.23; думаю, модифицированный метод Фуока-Мафуза в реализации Одибвы (J.Sym.Alg. 23:5:230) обрабатывает его верно». А еще лучше добавить «…и я реализую это для Maxima 6.0» :-).</li>
</ul>
<h4 id="Bugsandotherproblems2">6.3. Тексты сессий в сообщениях об ошибках</h4>
<p>Письма с сообщениями об ошибках часто включают тесты сессий Maxima, что очень хорошо. К сожалению, разметка часто искажается, так как символы табуляции по-разному обрабатываются в почтовых программах, браузерах HTML, и т. д. Даже для почтовых клиентов с верным отображением символов табуляции все портится, как только исходное сообщение выравнивается для цитирования (в начале строк добавляется «&gt;»).</p>
<p>Так что если вы цитируете тексты сессий, пожалуйста, сделайте одно из двух:</p>
<ul class="dashedlist">
<li>замените символы табуляции пробелами (например, используя утилиту UNIX <code>expand</code> или команду Emacs <code>untabify</code>),</li>
<li>отключите <code>display2d</code> при получении текста.</li>
</ul>
<p>Первое лучше, если важно сохранить выражение читаемым, второе&#x00a0;— если требуется копировать и вставить выражение обратно в строку ввода.</p>
<p>Пример:</p>
<pre>(C47) taylor(erf(x),x,0,5);
3 5
(2 SQRT(%PI)) x (2 SQRT(%PI)) x SQRT(%PI) x
(D47)/T/ --------------- - ---------------- + ------------ + . . .
%PI 3 %PI 5 %PI</pre>
<p>Так это выглядит в некоторых почтовых агентах:</p>
<pre> 3 5
(2 SQRT(%PI)) x (2 SQRT(%PI)) x SQRT(%PI) x
(D47)/T/ --------------- - ---------------- + ------------ + . . .
%PI 3 %PI 5 %PI</pre>
<p>То же самое после <code>untabify</code>:</p>
<pre>(C47) taylor(erf(x),x,0,5);
3 5
(2 SQRT(%PI)) x (2 SQRT(%PI)) x SQRT(%PI) x
(D47)/T/ --------------- - ---------------- + ------------ + . . .
%PI 3 %PI 5 %PI</pre>
<p>Если использовано <code>display2d:false</code>:</p>
<pre>(C48) display2d:false;
(D48) FALSE
(C49) d47;
(D49) 2*SQRT(%PI)*x/%PI-2*SQRT(%PI)*x^3/(3*%PI)+SQRT(%PI)*x^5/(5*%PI)</pre>
<h4 id="Bugsandotherproblems3">6.4. Что делать с проблемами компиляции?</h4>
<p>Отправьте описание проблемы на <a href="https://sourceforge.net/tracker/?group_id=4933&amp;atid=104933"> https://sourceforge.net/tracker/?group_id=4933&amp;atid=104933</a></p>
<ul class="dashedlist">
<li>Если вы подозреваете GCL, направьте копию <a href="MIT:gcl-devel@gnu.org">&lt;gcl-devel@gnu.org&gt;</a></li>
<li>Советуем держаться подальше от gcc-2.96&#x00a0;— эта версия компилятора известна как неустойчивая, и есть что-то будет работать, то только по недоразумению. gcc-2.95, gcc-3.0, gcc-3.1 и gcc-3.2 должны работать с GCL cvs или последней стабильной версией.</li>
<li>Отправьте полный вывод конфигурации и сборки вместе с информацией о версиях библиотек, от которых зависит GCL (ldd saved_gcl), компилятора и <kbd>binutils</kbd>.<br />
<kbd>binutils</kbd>: <code>ld -v</code>,<br />
<kbd>gcc</kbd>: <code>gcc -v</code>.</li>
</ul>
<h4 id="Bugsandotherproblems4">6.5. Maxima 5.9.0 не работает с GCL 2.4.0</h4>
<p>Вам требуется более поздняя версия GCL. Известно, что 2.4.0 не подходит. Судя по всему, 2.4.x работает для некоторых x, также как и 2.5.x.</p>
<h3>7. Дополнительные пакеты</h3>
<h4 style="padding-top: 0; margin-top: 0" id="AdditionalPackages0">7.1. Графы и гиперграфы</h4>
<p>Пакет Мартина Рубей <kbd><a href="http://www.mat.univie.ac.at/%7Erubey/Maxima/graphs.lisp">graphs.lisp</a></kbd> позволяет Maxima генерировать различные графы и гиперграфы, рассчитывать некоторые их свойства и предоставляет интерфейс к программе <a href="http://pigale.sourceforge.net/">PIGALE</a>, которая пытается аккуратно отобразить графы на экране.</p>
<h3>8. Вопросы новичков</h3>
<h4 style="padding-top: 0; margin-top: 0" id="BeginnerQuestions0">8.1. <code>inchar</code> и <code>outchar</code></h4>
<blockquote>
<p>Когда я ввел уравнение</p>
<pre>(C1) eq1:v1=(1/(z-1))*(b1*vin - g1*v2 - c1*fb);</pre>
<p>я получил на выводе совершенно не то, что ожидал.</p>
</blockquote>
<p class="answer"><strong>Ответ:</strong></p>
<p>«<code>c1</code>»&#x00a0;— это ваше объявление ввода. Обратите внимание, что входные и выходные строки имеют метки вроде «<code>(C1)</code>» и «<code>(D1)</code>». Попробуйте использовать другое имя переменной, например «<code>c_1</code>».</p>
<p>Иначе вы можете поменять символы, используемые в метках, установив <code>inchar</code> и <code>outchar</code>:</p>
<pre>(C1) inchar;
(D1) C
(C2) outchar;
(D2) D
(C3) inchar : c_;
(D3) c_
(c_3) outchar : d_;
(d_3) d_
(c_4) 5!;
(d_4) 120</pre>
<h4 id="BeginnerQuestions1">8.2. Решение систем уравнений</h4>
<blockquote>
<p>Я хочу вывести <code>n[v]=2*n-n[c]-2</code> из</p>
<pre>n[e]=1/2*(3*n[v]+n[c])</pre>
<p>и</p>
<pre>n-n[e]+n[v]=1</pre>
<p>Другими словами, я хочу выразить <code>n[v]</code> через другие переменные. Но <code>solve</code> не делает это для меня. Какую функцию нужно использовать?</p>
</blockquote>
<p class="answer"><strong>Ответ:</strong></p>
<p>Нужно использовать <code>solve</code> для двух переменных:</p>
<pre>(C1) n[e]=1/2*(3*n[v]+n[c]);
3 n + n
v C
(D1) n = ---------
e 2
(C2) n-n[e]+n[v]=1;
(D2) n + n - n = 1
v e
(C3) solve([d1,d2],[n[v],n[e]]);
(D3) [[n = 2 n - n - 2, n = 3 n - n - 3]]
v C e C</pre>
<p>Другая возможность:</p>
<pre>(C1) eliminate([n[e]=1/2*(3*n[v]+n[c]),n-n[e]+n[v]=1],[n[e]]);
(D1) [- n + 2 n - n - 2]
v c
(C2) solve(%,n[v]);
(D2) [n = 2 n - n - 2]
v c</pre>
<h4 id="BeginnerQuestions2">8.3. Как извлечь столбец матрицы?</h4>
<blockquote>
<p><code>m[i]</code>&#x00a0;<code>i</code>-я строка матрицы <code>m</code>. Есть ли какой-то способ получить столбец? Я знаю про <code>col(m,i)</code>, но <code>col</code> возвращает матрицу и присвоить ей значение невозможно. Удобно писать «<code>m[i]:[1,2,3]</code>». Почему я не могу сделать то же самое со столбцами?</p>
</blockquote>
<p class="answer"><strong>Ответ:</strong></p>
<p>Попробуйте транспонировать <code>m</code>, а потом транспонировать снова.</p>
<h4 id="BeginnerQuestions3">8.4. Почему в циклах не работает «return»?</h4>
<blockquote>
<p>Пример:</p>
<pre>(C1) block([],for i:1 thru 5 do return(1), 0);
(D1) 0</pre>
</blockquote>
<p class="answer"><strong>Ответ:</strong></p>
<p><code>1</code> возвращается циклом <code>for</code>, затем блок возвращает <code>0</code>.</p>
<h4 id="BeginnerQuestions4">8.5. <code>desolve</code> не работает?!</h4>
<blockquote>
<p><code>desolve(diff(y(x),x)=(4-2*x)/(3*y^2-5),y(x))</code> дает неверный ответ.</p>
</blockquote>
<p class="answer"><strong>Ответ:</strong></p>
<p>Как сказано в документации, «функциональные отношения должны явно обозначаться». Поэтому в <code>desolve</code> вы не можете написать <code>'diff(y(x),x)=y+x</code>, вы должны написать <code>'diff(y(x),x)=y(x)+x</code>. Поэтому <code>desolve</code> не может решить это, но может <code>ode2</code>, однако <code>ode2</code> принимает другую форму ввода (да, это нелогично и это раздражает): <code>depends(y,x); 'diff(y,x)=y+x</code>. Исходный код:</p>
<pre>(C1) depends(y,x);
(D1) [y(x)]
(C2) 'diff(y,x)=(4-2*x)/(3*y^2-5);
dy 4 - 2 x
(D2) -- = --------
dx 2
3 y - 5
(C3) ode2(%,y,x);
3 2
y - 5 y x - 4 x
(D3) - -------- = -------- + %C
2 2</pre>
<p>Теперь давайте проверим ответ:</p>
<pre>(C4) diff(d3,x);
2 dy dy
3 y -- - 5 --
dx dx 2 x - 4
(D4) - -------------- = -------
2 2
(C5) solve(d4,'diff(y,x));
dy 2 x - 4
(D5) [-- = - --------]
dx 2
3 y - 5
(C6) subst(d5,d2);
2 x - 4 4 - 2 x
(D6) - -------- = --------
2 2
3 y - 5 3 y - 5
(C7) ratsimp(lhs(d6)-rhs(d6));
(D7) 0
</pre>
<h4 id="BeginnerQuestions5">8.6. Нужна ли кавычка?</h4>
<blockquote>
<p>Выше в примере с <code>desolve</code>, если вы указываете системе, что y зависит от x, вам не нужно ставить кавычку перед оператором <code>diff</code>. Кавычка нужна, если не напечатано <code>depends(y,x)</code>.</p>
</blockquote>
<p class="answer"><strong>Ответ:</strong></p>
<p>Верно. В примере с ОДУ вы можете не указывать <code>depends</code> и поставить кавычку перед <code>diff</code>, или указать <code>depends</code> и ставить перед <code>diff</code> кавычку на свое усмотрение.</p>
<p>Кавычка подчеркивает, что вы имеете в виду дифференциал, а не выполняете дифференцирование.</p>
<p>Конечно, обсуждение <code>desolve</code> и <code>ode2</code> должно проводиться в более широком контексте «как решать дифференциальные уравнения». Здесь только подход <code>desolve</code> к зависимостям (использование явных функций вроде <code>f(x)</code>) сравнивается с подходом <code>ode2</code> (указать, что y зависит от x или просто поставить кавычку перед дифференциалом).</p>
<h4 id="BeginnerQuestions6">8.7. Подстановка</h4>
<p><strong class="question">Вопрос:</strong></p>
<blockquote>
<p>У меня есть такой вызов функции в более сложном выражении:</p>
<pre>erf((((64800 * %i + 64800) * t + 37 * %i + 35)/72))</pre>
<p>У меня есть другая функция acref, которая принимает два аргумента, первый&#x00a0;— аргумент функции ошибок, второй&#x00a0;— порядок аппроксимации. Я хочу подставить вызов <code>acerf</code> вместо <code>erf</code> в мое более сложное выражение, например:</p>
<pre>acerf((((64800 * %i + 64800) * t + 37 * %i + 35)/72), 2)</pre>
<p>Есть ли простой способ сделать это в Maxima?</p>
</blockquote>
<p class="answer"><strong>Ответ:</strong></p>
<pre>matchdeclare(any, true)$
defrule(r1,erf(any), acerf(any,order))$
order:2$
apply1(expression, r1);</pre>
<p>Или что-то в таком духе.</p>
<h3>9. Вывод в T<sub>E</sub>X</h3>
<h4 style="padding-top: 0; margin-top: 0" id="TeXOutput0">9.1. Как мне настроить вывод отдельных переменных Maxima в T<sub>E</sub>X?</h4>
<p>Создайте файл «<kbd>foo.lisp</kbd>» (или любой другой) c выражениями LISP вроде</p>
<pre>(defprop $cla "c_{l_\alpha}" texword)</pre>
<p>Затем загрузите его в свой сценарий, например:</p>
<pre>(C1) load("foo.lisp");
(D1) foo.lisp
(C2) tex(cla);
$$c_{l_alpha}$$</pre>
<p>Maxima 5.9.0 и более поздних версий имеет вспомогательную функцию <code>texput</code>, которая позволяет настраивать вывод в T<sub>E</sub>X. Вот тот же пример, что был ранее:</p>
<pre>(C1) texput(cla, "c_{l_\\alpha}")$
(C3) tex(cla);
$$c_{l_\alpha}$$</pre>
<p>Обратите внимание, что здесь мы должны использовать двойной слэш перед <kbd>alpha</kbd>, чтобы получить один слэш в разметке T<sub>E</sub>X.</p>
</body>
</html>

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

JavaScript is required for this form.





No, thanks