Fix bug #1848: taytorat leaks internal gensyms from multivar expansions
[maxima.git] / doc / info / Introduction.texi
blob3588e99db19bd5bb76b80c0956dee6489128be31
1 Start Maxima with the command "maxima".  Maxima will display version
2 information and a prompt.  End each Maxima command with a semicolon.
3 End the session with the command "@code{quit();}".  Here's a sample session:
5 @example
6 $ maxima
7 Maxima 5.45.1 https://maxima.sourceforge.io
8 using Lisp SBCL 2.0.1.debian
9 Distributed under the GNU Public License. See the file COPYING.
10 Dedicated to the memory of William Schelter.
11 The function bug_report() provides bug reporting information.
12 (%i1) factor(10!);
13                                    8  4  2
14 (%o1)                             2  3  5  7
15 (%i2) expand ((x + y)^6);
16            6        5       2  4       3  3       4  2      5      6
17 (%o2)     y  + 6 x y  + 15 x  y  + 20 x  y  + 15 x  y  + 6 x  y + x
18 (%i3) factor (x^6 - 1);
19                                      2            2
20 (%o3)              (x - 1) (x + 1) (x  - x + 1) (x  + x + 1)
21 (%i4) quit();
23 @end example
25 Maxima can search the info pages.  Use the @mref{describe} command to show
26 information about the command or all the commands and variables containing 
27 a string.
28 The question mark @mref{?} (exact search) and double question mark @mref{??}@w{}
29 (inexact search) are abbreviations for @code{describe}:
31 @example
32 (%i1) ?? integ
33  0: Functions and Variables for Elliptic Integrals
34  1: Functions and Variables for Integration
35  2: Introduction to Elliptic Functions and Integrals
36  3: Introduction to Integration
37  4: askinteger  (Functions and Variables for Simplification)
38  5: integerp  (Functions and Variables for Miscellaneous Options)
39  6: integer_partitions  (Functions and Variables for Sets)
40  7: integrate  (Functions and Variables for Integration)
41  8: integrate_use_rootsof  (Functions and Variables for Integration)
42  9: integration_constant_counter  (Functions and Variables for
43     Integration)
44  10: nonnegintegerp  (Functions and Variables for linearalgebra)
45 Enter space-separated numbers, `all' or `none': 5 4
47  -- Function: integerp (<expr>)
48      Returns `true' if <expr> is a literal numeric integer, otherwise
49      `false'.
51      `integerp' returns false if its argument is a symbol, even if the
52      argument is declared integer.
54      Examples:
56           (%i1) integerp (0);
57           (%o1)                         true
58           (%i2) integerp (1);
59           (%o2)                         true
60           (%i3) integerp (-17);
61           (%o3)                         true
62           (%i4) integerp (0.0);
63           (%o4)                         false
64           (%i5) integerp (1.0);
65           (%o5)                         false
66           (%i6) integerp (%pi);
67           (%o6)                         false
68           (%i7) integerp (n);
69           (%o7)                         false
70           (%i8) declare (n, integer);
71           (%o8)                         done
72           (%i9) integerp (n);
73           (%o9)                         false
75  -- Function: askinteger (<expr>, integer)
76  -- Function: askinteger (<expr>)
77  -- Function: askinteger (<expr>, even)
78  -- Function: askinteger (<expr>, odd)
79      `askinteger (<expr>, integer)' attempts to determine from the
80      `assume' database whether <expr> is an integer.  `askinteger'
81      prompts the user if it cannot tell otherwise, and attempt to
82      install the information in the database if possible.  `askinteger
83      (<expr>)' is equivalent to `askinteger (<expr>, integer)'.
85      `askinteger (<expr>, even)' and `askinteger (<expr>, odd)'
86      likewise attempt to determine if <expr> is an even integer or odd
87      integer, respectively.
89 (%o1)                                true
90 @end example
92 To use a result in later calculations, you can assign it to a variable or
93 refer to it by its automatically supplied label.  In addition, @mref{%}@w{}
94 refers to the most recent calculated result:
96 @example
97 (%i1) u: expand ((x + y)^6);
98        6        5       2  4       3  3       4  2      5      6
99 (%o1) y  + 6 x y  + 15 x  y  + 20 x  y  + 15 x  y  + 6 x  y + x
100 (%i2) diff (u, x);
101          5         4       2  3       3  2       4        5
102 (%o2) 6 y  + 30 x y  + 60 x  y  + 60 x  y  + 30 x  y + 6 x
103 (%i3) factor (%o2);
104                                     5
105 (%o3)                      6 (y + x)
106 @end example
108 Maxima knows about complex numbers and numerical constants:
110 @example
111 (%i1) cos(%pi);
112 (%o1)                          - 1
113 (%i2) exp(%i*%pi);
114 (%o2)                          - 1
115 @end example
117 Maxima can do differential and integral calculus:
119 @example
120 (%i1) u: expand ((x + y)^6);
121        6        5       2  4       3  3       4  2      5      6
122 (%o1) y  + 6 x y  + 15 x  y  + 20 x  y  + 15 x  y  + 6 x  y + x
123 (%i2) diff (%, x);
124          5         4       2  3       3  2       4        5
125 (%o2) 6 y  + 30 x y  + 60 x  y  + 60 x  y  + 30 x  y + 6 x
126 (%i3) integrate (1/(1 + x^3), x);
127                                   2 x - 1
128                 2            atan(-------)
129            log(x  - x + 1)        sqrt(3)    log(x + 1)
130 (%o3)    - --------------- + ------------- + ----------
131                   6             sqrt(3)          3
132 @end example
134 Maxima can solve linear systems and cubic equations:
136 @example
137 (%i1) linsolve ([3*x + 4*y = 7, 2*x + a*y = 13], [x, y]);
138                         7 a - 52        25
139 (%o1)              [x = --------, y = -------]
140                         3 a - 8       3 a - 8
141 (%i2) solve (x^3 - 3*x^2 + 5*x = 15, x);
142 (%o2)       [x = - sqrt(5) %i, x = sqrt(5) %i, x = 3]
143 @end example
145 Maxima can solve nonlinear sets of equations.  Note that if you don't
146 want a result printed, you can finish your command with @kbd{$} instead
147 of @kbd{;}.
149 @example
150 (%i1) eq_1: x^2 + 3*x*y + y^2 = 0$
151 (%i2) eq_2: 3*x + y = 1$
152 (%i3) solve ([eq_1, eq_2]);
153               3 sqrt(5) + 7      sqrt(5) + 3
154 (%o3) [[y = - -------------, x = -----------], 
155                     2                 2
157                                3 sqrt(5) - 7        sqrt(5) - 3
158                           [y = -------------, x = - -----------]]
159                                      2                   2
160 @end example
162 Maxima can generate plots of one or more functions:
164 @example
165 (%i1) plot2d (sin(x)/x, [x, -20, 20])$
166 @end example
167 @ifnotinfo
168 @image{figures/introduction1, 10cm}
169 @end ifnotinfo
170 @example
171 (%i2) plot2d ([atan(x), erf(x), tanh(x)], [x, -5, 5], [y, -1.5, 2])$
172 @end example
173 @ifnotinfo
174 @image{figures/introduction2, 10cm}
175 @end ifnotinfo
176 @example
177 @group
178 (%i3) plot3d (sin(sqrt(x^2 + y^2))/sqrt(x^2 + y^2), 
179          [x, -12, 12], [y, -12, 12])$
180 @end group
181 @end example
182 @ifnotinfo
183 @image{figures/introduction3, 12cm}
184 @end ifnotinfo 
186 @c FOLLOWING TEXT DESCRIBES THE TCL/TK PLOT WINDOW WHICH IS NO LONGER THE DEFAULT
187 @c Moving the cursor to the top left corner of the plot window will pop up
188 @c a menu that will, among other things, let you generate a PostScript file
189 @c of the plot.  (By default, the file is placed in your home directory.)
190 @c You can rotate a 3D plot.
192 @opencatbox{Categories:}
193 @category{Help}
194 @closecatbox