2006年5月3日星期三

如何使用Maxima(一)

Maxima是一个优秀的开放源代码代数运算系统,符号运算能力可以和著名商业数学软件Mathematica相媲美。这里是它的使用方法的一个简介。
  1. 运行和退出

    运行:
    maxima
    进入maxima环境后,会看到开始处有(%i1),这是行标。%i表示输入行,%o表示输出行,后面的数字表示第几个输入或输出。 退出:
    quit();
    可以看出,maxima语法和C语言类似,语句结束需要加分号。maxima里面是要区分大小写的。
  2. 算术运算

    符号+, -, *, /, ^分别表示加、减、乘、除、乘方。maxima是一个精确计算的代数系统,例如分数,开方等运算会保持符号形式,不会被自动转化为小数。
    (%i1) 2/5+3/4;
                                          23
    (%o1)                                 --
                                          20
    
    如果要输出小数,可以用numer命令:
    (%i2) %,numer;
    (%o2)                                1.15
    
    百分号%代表最后一次输出的结果。另外,可以用bfloat输出任意精确度的小数,有效数字位数由变量fpprec控制,默认是16位。
    (%i3) fpprec:100;
    (%o3)                                 100
    (%i4) bfloat(%pi);
    (%o4) 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068b0
    
    (%i3)中的冒号表示赋值。
  3. 代数运算

    多项式展开:
    (%i5) (x^2+2*x*y+3*y^2)^3;
                                     2            2 3
    (%o5)                        (3 y  + 2 x y + x )
    (%i6) expand(%);
                6         5       2  4       3  3       4  2      5      6
    (%o6)   27 y  + 54 x y  + 63 x  y  + 44 x  y  + 21 x  y  + 6 x  y + x
    
    等量代换:
    (%i7) %o6, x=2/z;
                     5        4        3        2
                108 y    252 y    352 y    336 y    192 y   64       6
    (%o7)       ------ + ------ + ------ + ------ + ----- + -- + 27 y
                  z         2        3        4       5      6
                           z        z        z       z      z
    
    提取公分母:
    (%i8) ratsimp(%);
              6  6        5  5        4  4        3  3        2  2
          27 y  z  + 108 y  z  + 252 y  z  + 352 y  z  + 336 y  z  + 192 y z + 64
    (%o8) -----------------------------------------------------------------------
                                             6
                                            z
    
    因式分解:
    (%i9) factor(%);
                                    2  2             3
                                (3 y  z  + 4 y z + 4)
    (%o9)                       ----------------------
                                           6
                                          z
    
    解非线性方程组:
    (%i10) a+b+2*c=0;
    (%o10)                          2 c + b + a = 0
    (%i11) 2*a-b=1;
    (%o11)                            2 a - b = 1
    (%i12) a-2*b*c=5;
    (%o12)                           a - 2 b c = 5
    (%i13) solve([%o10,%o11,%o12],[a,b,c]);
                 sqrt(7) + 1      2 sqrt(7) - 1      sqrt(7) - 14
    (%o13) [[a = -----------, b = -------------, c = -------------],
                      3                 3            4 sqrt(7) - 2
                              sqrt(7) - 1        2 sqrt(7) + 1      sqrt(7) + 14
                       [a = - -----------, b = - -------------, c = -------------]]
                                   3                   3            4 sqrt(7) + 2
    

没有评论: