File: maxima_16.html

package info (click to toggle)
maxima 5.47.0-9
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 193,104 kB
  • sloc: lisp: 434,678; fortran: 14,665; tcl: 10,990; sh: 4,577; makefile: 2,763; ansic: 447; java: 328; python: 262; perl: 201; xml: 60; awk: 28; sed: 15; javascript: 2
file content (300 lines) | stat: -rw-r--r-- 18,280 bytes parent folder | download | duplicates (2)
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
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Maxima Manual: Арифметические операторы</title>

<meta name="description" content="Maxima Manual: Арифметические операторы">
<meta name="keywords" content="Maxima Manual: Арифметические операторы">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="maxima_toc.html#Top" rel="start" title="Top">
<link href="maxima_264.html#g_t_0423_043a_0430_0437_0430_0442_0435_043b_044c-_0444_0443_043d_043a_0446_0438_0439-_0438-_043f_0435_0440_0435_043c_0435_043d_043d_044b_0445" rel="index" title="Указатель функций и переменных">
<link href="maxima_toc.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="maxima_11.html#g_t_041e_043f_0435_0440_0430_0442_043e_0440_044b" rel="up" title="Операторы">
<link href="maxima_17.html#g_t_041e_043f_0435_0440_0430_0442_043e_0440_044b-_043e_0442_043d_043e_0448_0435_043d_0438_044f" rel="next" title="Операторы отношения">
<link href="maxima_15.html#g_t_041f_0440_0435_0444_0438_043a_0441_043d_044b_0435-_043e_043f_0435_0440_0430_0442_043e_0440_044b-_0028prefix_0029" rel="previous" title="Префиксные операторы (prefix)">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
body {color: black; background: white;  margin-left: 8%; margin-right: 13%;
      font-family: "FreeSans", sans-serif}
h1 {font-size: 150%; font-family: "FreeSans", sans-serif}
h2 {font-size: 125%; font-family: "FreeSans", sans-serif}
h3 {font-size: 100%; font-family: "FreeSans", sans-serif}
a[href] {color: rgb(0,0,255); text-decoration: none;}
a[href]:hover {background: rgb(220,220,220);}
div.textbox {border: solid; border-width: thin; padding-top: 1em;
    padding-bottom: 1em; padding-left: 2em; padding-right: 2em}
div.titlebox {border: none; padding-top: 1em; padding-bottom: 1em;
    padding-left: 2em; padding-right: 2em; background: rgb(200,255,255);
    font-family: sans-serif}
div.synopsisbox {
    border: none; padding-top: 1em; padding-bottom: 1em; padding-left: 2em;
    padding-right: 2em; background: rgb(255,220,255);}
pre.example {border: 1px solid rgb(180,180,180); padding-top: 1em;
    padding-bottom: 1em; padding-left: 1em; padding-right: 1em;
    background-color: rgb(238,238,255)}
div.spacerbox {border: none; padding-top: 2em; padding-bottom: 2em}
div.image {margin: 0; padding: 1em; text-align: center}
div.categorybox {border: 1px solid gray; padding-top: 1em; padding-bottom: 1em;
    padding-left: 1em; padding-right: 1em; background: rgb(247,242,220)}
img {max-width:80%; max-height: 80%; display: block; margin-left: auto; margin-right: auto}

-->
</style>

<link rel="icon" href="figures/favicon.ico">
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6>"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head>

<body lang="ru" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="g_t_0410_0440_0438_0444_043c_0435_0442_0438_0447_0435_0441_043a_0438_0435-_043e_043f_0435_0440_0430_0442_043e_0440_044b"></a>
<div class="header">
<p>
Next: <a href="maxima_17.html#g_t_041e_043f_0435_0440_0430_0442_043e_0440_044b-_043e_0442_043d_043e_0448_0435_043d_0438_044f" accesskey="n" rel="next">Операторы отношения</a>, Previous: <a href="maxima_15.html#g_t_041f_0440_0435_0444_0438_043a_0441_043d_044b_0435-_043e_043f_0435_0440_0430_0442_043e_0440_044b-_0028prefix_0029" accesskey="p" rel="previous">Префиксные операторы (prefix)</a>, Up: <a href="maxima_11.html#g_t_041e_043f_0435_0440_0430_0442_043e_0440_044b" accesskey="u" rel="up">Операторы</a> &nbsp; [<a href="maxima_toc.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="maxima_264.html#g_t_0423_043a_0430_0437_0430_0442_0435_043b_044c-_0444_0443_043d_043a_0446_0438_0439-_0438-_043f_0435_0440_0435_043c_0435_043d_043d_044b_0445" title="Index" rel="index">Index</a>]</p>
</div>
<a name="Arifmeticheskie-operatory"></a>
<h3 class="section">5.5 Арифметические операторы</h3>

<a name="Item_003a-Operators_002fdeffn_002f_002b"></a><dl>
<dt><a name="index-_002b"></a>Оператор: <strong>+</strong></dt>
<dd><a name="Item_003a-Operators_002fdeffn_002f_002d"></a></dd><dt><a name="index-_002d"></a>Оператор: <strong>-</strong></dt>
<dd><a name="Item_003a-Operators_002fdeffn_002f_002a"></a></dd><dt><a name="index-_002a"></a>Оператор: <strong>*</strong></dt>
<dd><a name="Item_003a-Operators_002fdeffn_002f_002f"></a></dd><dt><a name="index-_002f"></a>Оператор: <strong>/</strong></dt>
<dd><a name="Item_003a-Operators_002fdeffn_002f_005e"></a></dd><dt><a name="index-_005e"></a>Оператор: <strong>^</strong></dt>
<dd>
<p>Символы <code>+</code>, <code>*</code>, <code>/</code> и <code>^</code> обозначают
суммирование, умножение, деление и возведение в степень, соответственно.
Имена этих операторов <code>&quot;+&quot;</code>, <code>&quot;*&quot;</code>, <code>&quot;/&quot;</code> и <code>&quot;^&quot;</code>
могут появляться там, где требуется имя функции или оператора.
</p>
<p>Символы <code>+</code> и <code>-</code> представляют унарное суммирование и вычитание, соответственно,
и имена этих операторов: <code>&quot;+&quot;</code> и <code>&quot;-&quot;</code>, соответственно.
</p>
<p>Вычитание <code>a - b</code> представляется в Maxima как суммирование <code>a + (- b)</code>.
Выражения, такие как <code>a + (- b)</code>, отображаются как вычитание.
Maxima распознает <code>&quot;-&quot;</code> только как имя унарного оператора вычитания,
а не как имя бинарного оператора вычитания.
</p>
<p>Деление <code>a / b</code> представляется в Maxima как умножение, <code>a * b^(- 1)</code>.
Выражения, такие как <code>a * b^(- 1)</code>, отображаются как деление.
Maxima распознает <code>&quot;/&quot;</code> как имя оператора деления.
</p>
<p>Суммирование и умножение - n-арные (n-ary), коммутативные операторы.
Деление и возведение в степень - бинарные, некоммутативные операторы.
</p>
<p>Maxima сортирует операнды коммутативных операторов для конструирования канонического представления.
Во внутреннем хранилище упорядочивание управляется с помощью <code>orderlessp</code>.
Для отображения, упорядочивание при суммировании управляется с помощью <code>ordergreatp</code>,
а для умножения, флаг тот же, что и для внутреннего упорядочивания.
</p>
<p>Арифметические вычисления выполняются для буквальных чисел
(целых, рациональных, обыкновенных чисел с плавающей точкой и чисел с плавающей точкой повышенной точности (bigfloat)).
За исключением возведения в степень, все арифметические операции для чисел упрощаются до чисел.
Возведение в степень упрощается до числа, в случае если, либо операнд является обыкновенным числом с плавающей точкой 
или числом с плавающей точкой повышенной точности (bigfloat),
или если результат есть точное целое или рациональное число;
иначе возведение в степень может быть упрощено до <code>sqrt</code> или другого возведения в степень, 
или оставлено неизменным.
</p>
<p>В арифметических вычислениях имеет место приведение типов значений результата:
если любой операнд есть bigfloat, то результат будет bigfloat;
или же, если любой операнд есть обыкновенное число с плавающей точкой,  
результат будет обыкновенным числом с плавающей точкой;
или же, если операнды являются рациональными или целыми значениями, 
то  результат будет рациональным или целым.
</p>
<p>Арифметические вычисления являются упрощением, а не в вычислением.
Таким образом, арифметические операции выполняется в экранированных (но упрощенных) выражениях.
</p>
<p>Арифметические операции применяются элемент-за-элементом
к спискам, когда глобальный флаг <code>listarith</code> есть <code>true</code>,
и всегда применяется элемент-за-элементом к матрицам.
Когда один операнд есть список или матрица и другой есть операнд некоторого другого типа,
то другой операнд объединяется с каждым из элементом списка или матрицы.
</p>
<p>Примеры:
</p>
<p>Суммирование и умножение являются n-арными (n-ary) коммутативными операторами.
Maxima сортирует операнды для того, чтобы сконструировать каноническое представление.
Имена этих операторов <code>&quot;+&quot;</code> и <code>&quot;*&quot;</code>.
</p>
<div class="example">
<pre class="example">(%i1) c + g + d + a + b + e + f;
(%o1)               g + f + e + d + c + b + a
(%i2) [op (%), args (%)];
(%o2)              [+, [g, f, e, d, c, b, a]]
(%i3) c * g * d * a * b * e * f;
(%o3)                     a b c d e f g
(%i4) [op (%), args (%)];
(%o4)              [*, [a, b, c, d, e, f, g]]
(%i5) apply (&quot;+&quot;, [a, 8, x, 2, 9, x, x, a]);
(%o5)                    3 x + 2 a + 19
(%i6) apply (&quot;*&quot;, [a, 8, x, 2, 9, x, x, a]);
                                 2  3
(%o6)                       144 a  x
</pre></div>

<p>Деление и возведение в степень - бинарные, некоммутативные операторы.
Имена этих операторов <code>&quot;/&quot;</code> и <code>&quot;^&quot;</code>.
</p>
<div class="example">
<pre class="example">(%i1) [a / b, a ^ b];
                              a   b
(%o1)                        [-, a ]
                              b
(%i2) [map (op, %), map (args, %)];
(%o2)              [[/, ^], [[a, b], [a, b]]]
(%i3) [apply (&quot;/&quot;, [a, b]), apply (&quot;^&quot;, [a, b])];
                              a   b
(%o3)                        [-, a ]
                              b
</pre></div>

<p>Вычитание и деление внутренне представляются 
в терминах суммирования и умножения, соответственно.
</p>
<div class="example">
<pre class="example">(%i1) [inpart (a - b, 0), inpart (a - b, 1), inpart (a - b, 2)];
(%o1)                      [+, a, - b]
(%i2) [inpart (a / b, 0), inpart (a / b, 1), inpart (a / b, 2)];
                                   1
(%o2)                       [*, a, -]
                                   b
</pre></div>

<p>Вычисления выполняются над буквальными числами.
Выполняется приведение типов значений результата.
</p>
<div class="example">
<pre class="example">(%i1) 17 + b - (1/2)*29 + 11^(2/4);
                                       5
(%o1)                   b + sqrt(11) + -
                                       2
(%i2) [17 + 29, 17 + 29.0, 17 + 29b0];
(%o2)                   [46, 46.0, 4.6b1]
</pre></div>

<p>Арифметические вычисления являются упрощением, а не вычислением.
</p>
<div class="example">
<pre class="example">(%i1) simp : false;
(%o1)                         false
(%i2) '(17 + 29*11/7 - 5^3);
                              29 11    3
(%o2)                    17 + ----- - 5
                                7
(%i3) simp : true;
(%o3)                         true
(%i4) '(17 + 29*11/7 - 5^3);
                                437
(%o4)                         - ---
                                 7
</pre></div>

<p>Арифметические операции выполняется элемент-за-элементом для списков 
(в зависимости от значения <code>listarith</code>) и матриц.
</p>
<div class="example">
<pre class="example">(%i1) matrix ([a, x], [h, u]) - matrix ([1, 2], [3, 4]);
                        [ a - 1  x - 2 ]
(%o1)                   [              ]
                        [ h - 3  u - 4 ]
(%i2) 5 * matrix ([a, x], [h, u]);
                          [ 5 a  5 x ]
(%o2)                     [          ]
                          [ 5 h  5 u ]
(%i3) listarith : false;
(%o3)                         false
(%i4) [a, c, m, t] / [1, 7, 2, 9];
                          [a, c, m, t]
(%o4)                     ------------
                          [1, 7, 2, 9]
(%i5) [a, c, m, t] ^ x;
                                      x
(%o5)                     [a, c, m, t]
(%i6) listarith : true;
(%o6)                         true
(%i7) [a, c, m, t] / [1, 7, 2, 9];
                              c  m  t
(%o7)                     [a, -, -, -]
                              7  2  9
(%i8) [a, c, m, t] ^ x;
                          x   x   x   x
(%o8)                   [a , c , m , t ]
</pre></div>





</dd></dl>

<a name="Item_003a-Operators_002fdeffn_002f_002a_002a"></a><dl>
<dt><a name="index-_002a_002a"></a>Оператор: <strong>**</strong></dt>
<dd><p>Оператор возведения в степень.
Maxima распознает <code>**</code> как тот же оператор, что и <code>^</code> при вводе,
и он отображается как <code>^</code> в 1D (одномерном) выводе,
или в виде показателя степени как верхний индекс в 2D (двумерном) выводе.
</p>
<p>Функция <code>fortran</code> выводит оператор возведения в степень как <code>**</code>,
не в зависимости от того, как он был задан при вводе, как <code>**</code> или <code>^</code>.
</p>
<p>Примеры:
</p>
<div class="example">
<pre class="example">(%i1) is (a**b = a^b);
(%o1)                         true
(%i2) x**y + x^z;
                              z    y
(%o2)                        x  + x
(%i3) string (x**y + x^z);
(%o3)                        x^z+x^y
(%i4) fortran (x**y + x^z);
      x**z+x**y
(%o4)                         done
</pre></div>





</dd></dl>

<a name="Item_003a-Operators_002fnode_002f_041e_043f_0435_0440_0430_0442_043e_0440_044b-_043e_0442_043d_043e_0448_0435_043d_0438_044f"></a><hr>
<div class="header">
<p>
Next: <a href="maxima_17.html#g_t_041e_043f_0435_0440_0430_0442_043e_0440_044b-_043e_0442_043d_043e_0448_0435_043d_0438_044f" accesskey="n" rel="next">Операторы отношения</a>, Previous: <a href="maxima_15.html#g_t_041f_0440_0435_0444_0438_043a_0441_043d_044b_0435-_043e_043f_0435_0440_0430_0442_043e_0440_044b-_0028prefix_0029" accesskey="p" rel="previous">Префиксные операторы (prefix)</a>, Up: <a href="maxima_11.html#g_t_041e_043f_0435_0440_0430_0442_043e_0440_044b" accesskey="u" rel="up">Операторы</a> &nbsp; [<a href="maxima_toc.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="maxima_264.html#g_t_0423_043a_0430_0437_0430_0442_0435_043b_044c-_0444_0443_043d_043a_0446_0438_0439-_0438-_043f_0435_0440_0435_043c_0435_043d_043d_044b_0445" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>