# How use Maxima through examples (Basics)

Though it would be enjoyable to manipulate equations,
more or less it sometimes falls into an unskilled work.

To make your learning more efficient,
it would be beneficial to let such tedious work be done by your computer.

A well-known software manipulating equations would be "Mathematica",
whenever facing any difficulties, you might be able to ask some help
by referring to its substantial on-line help,
or even you can find some information on web because there are many users.

However, there is a charge (and it is expensive).

Here I'd like to introduce you "Maxima",
which can be said to be a free version of "Mathematica" .

Once you get to know how to use it,
it must serve you well as a kind of developed scientific calculator!

### How to use Maxima

An input of Maxima ends with " ; " or " $" The latter "$ " is an option for not displaying the output on your monitor.

Once you input what you want to evaluate,
press "Shift" + "Enter", then it will be done.

Anyway, let's get do it!

The following shows many examples of input for Maxima.

Copy, paste, and do it, and modify the input!

3+2;   /* comment (string which is ignore for evaluation) is made by closing with "/*  */". */
3-2;
3*2;
3/2;

3^2;
50!;
50!!;
sqrt(50);

float(10^8);
bfloat(10^8);
%e;
float(%e);
bfloat(%e);
%pi;
float(%pi);
bfloat(%pi);
float(sqrt(2));
bfloat(sqrt(2));

#### Imaginary number

##### Imaginary unit
%i;   /* imaginary unit is represented by " %i " */
%i^2;
##### Complex conjugate
conjugate(2+sqrt(3)*%i);
conjugate(a+b*%i);   /* letters are treated as a real number as long as no flag */
##### Real part, Imaginary part
realpart(2+%i*sqrt(3));
imagpart(2+%i*sqrt(3));
##### Absolute value
abs(2+%i*sqrt(3));
##### Polar form
polarform(2+%i*sqrt(3));
##### Rationalization of denominator
rectform(1/(2+%i*sqrt(3)));
rectform(1/(a+%i*b));

#### Algebraic manipulations

factor(10!);
##### Factorization of expression
factor(x^2-4*x+3);
factor(x^6-1);
##### Factorization into Gaussian integer polynomial
gfactor(x^2+1);

where Gaussian integer is a complex number of its real part and imaginary part are both integer.

##### Partial fraction decomposition
partfrac(1/(x^2-4*x+3), x);
partfrac(1/(x^6-1), x);
##### Reduce to a common denominator
xthru(1/(x-1)^2+1/((x-1)*(x-2)));
expand((x+1)^6);
powerdisp:true$/* to make it descend, replace "true" with "false" */ expand((x+1)^6); ##### Simplify expression ratsimp((2*x-2)/((x-1)^2*(x-2))); ##### Judge True or False is(0=sqrt(2)-2^(1/2)); is(0=sqrt(2)-2^(1/3)); but sometimes requires proper process: is(x^2-2*x+1=(x-1)^2); is(x^2-2*x+1=expand((x-1)^2)); ##### Extract coefficient of a specific term from expression ratcoeff((x + y)^6, x, 3); ratcoeff((x + y)^6, x, 4); ##### Substitute a value in expression subst(3, x, a*x^2+b*x+c); ##### Summation, Toal power sum(k, k, 1, 10); sum(k, k, 1, n), simpsum; prod(k, k, 1, 10); is(10!=prod(k, k, 1, 10)); #### Equation ##### Solve simultaneous equations linsolve ([3*x+4*y=5, 2*x+3*y=3], [x, y]); ##### Find root of equation solve(a*x^2+b*x+c=0, x); #### Limit ##### Evaluate limit limit( sin(x)/x, x, 0 ); #### Define function, Evaluate it at some value ##### Assign expression to letter, Evaluation u:x+y; v:(x+y)^3; subst(5, x, u); ev(u, x: 5); ev(v, [x: 3, y: 2]); ##### Use assigned letter: 4 operations u+v; expand(u+v); factor(u+v); expand(u*v); u/v; ##### Use assigned letter: differentiation diff(u, x); /* 1st partial derivative of u with respect to x */ diff(u, y); /* 1st partial derivative of u with respect to y */ diff(v, y, 2); /* 2nd partial derivative of v with respect to y */ is(0=diff(u, x, 1)-diff(u, x)); ##### Use assigned letter: Integration integrate(u, x); /* Indefinite integral of u over x */ integrate(u, x, x1, x2); /*definite integral of u over x from x1 to x2 */ integrate(v, y); ##### Define function, Differential, Integral, Taylor expansion, Substitution f(x):=log(1+x)/x$
integrate(f(x), x);
diff(f(x), x, 1);
taylor(f(x), x, 0, 5);  /* Taylor expansion of f(x) with x around x=0 up to order 5 */
g(x):= x^2$h(x):=g(f(x))$
subst(5, x, h(x));
##### Extract LHS, RHS of equation, Extract Denominator, Numerator
F(x):=x+1$G(x):=x^2+x-2$
eq: x+1 = F(x)/G(x)$rhs(eq); /* RHS of eq */ lhs(eq); /* LHS of eq */ denom(rhs(eq)); num(rhs(eq)); solve(eq, x); #### Differential equation ##### Solve ordinary differential equation assume(k>0)$
desolve( diff( u(t), t, 2 ) = - k^2*u(t), u(t)  );

#### Manipulation of trigonometric function (Hyperbolic function)

##### Expand argument sum
trigexpand(sin(a+b));
trigexpand(cos(a+b));
trigexpand(cosh(a+b));
trigexpand(tanh(a+b));
##### Simplification
trigsimp(sin(a)^2+cos(a)^2);
trigsimp(sinh(a)^2-cosh(a)^2);
##### Reduction
trigreduce(sin(a)^2);
trigreduce(cosh(a)^3);
exponentialize: true$/* To display in trigon. change "true" ==>> "false" */ sin(a); cosh(a); #### List ##### Make List, Refer its element S:[a, b, c]; S[1]; S[3]; ##### Use list T:[1, 10, 100, 1000]$
sum( T[i], i, 1, 3);
length(S);
length(T);
##### Generate a list
n[k] := k$n[10]; N[n]:=makelist(n[k], k, 1, n)$
N[10];

#### Iterative process

i:0$while i<5 do(i:i+1,print("i=", i)); ##### FOR for j:1 step 1 thru 5 do print(j); ##### Advanced: Numerical solution via iterative substitution A numerical solution to an equation can be found by iterative substitution starting with and generating a sequence by iteration given by indeed kill(all)$
x[0]:0$for i:1 step 1 thru 100 do x[i]:bfloat(-exp(x[i-1]))$
x[100];
bfloat(x[100]+%e^(x[100]));

or using "while"

kill(all)$x[0]:0$
i:0$while i < 100 do( i:i+1, x[i]:bfloat(-exp(x[i-1])) )$
x[100];
bfloat(x[100]+%e^(x[100]));

#### Display the output in TeX style

Eq:a*x^2+b*x+c=0$sol:solve(Eq, x)$
sol1:rhs(sol[1]);
sol2:rhs(sol[2]);
tex(sol2);

#### Conditional branch

H(x):=if  x < 0  then 0 else 1$This is the Heaviside step function, which returns 1 for non-negavite input, and otherwise 0. ##### Advanced: Numerical solution via bisection method Let us find a numerical solution to Here is an example of "if-then-else" and "block" which regards and carries out several process as a single process. f(x):=bfloat( cos(x)-x )$
a[0]:bfloat(0)$b[0]:bfloat(1)$
i:0$while i<10 do( if f((a[i]+b[i])/2) < 0 then block(a[i+1]:bfloat(a[i]), b[i+1]:bfloat((a[i]+b[i])/2)) else block(a[i+1]:bfloat((a[i]+b[i])/2), b[i+1]:bfloat(b[i])), i:i+1); c[n]:=bfloat((a[n]+b[n])/2)$
makelist(a[i], i, 0, 9);
makelist(b[i], i, 0, 9);
makelist(c[i], i, 0, 9);
makelist(f(c[i]), i, 0, 9);

#### Linear algebra

##### Input matrix
s1: matrix([0,1], [1,0]);
s2: matrix([0,-%i], [%i,0]);
s3: matrix([1,0], [0,-1]);
M: matrix([ a11, a12, a13 ], [ a21, a22, a23 ]);
M[1][3];

or

M[1,3];
s1+s3;
s1.s3;
determinant(s2);
invert(s2);
transpose(s2);
eigenvalues(s2);
##### Eigen value, Eigen vector
eigenvectors(s2);

KeywordsMaxima