Maxima的一些高级功能

    MAXIMA 是完全可以跟 Mathematica 和 Maple 比美的 CAS。实际上 Mathematica 和 Maple 的很多优点都是从 MACSYMA 身上学来的。

  1. 严密的逻辑

    Maple 和 Mathematica 经常做错的东西,MACSYMA 经常会给你一个合理的答复。当然它也会做错。小心!计算机代数系统给出的答案都有可能是错误的,不能完全依赖它们。

    你可以试试积分: integrate(x^i,x) 和 Integrate 1/sqrt(2-2*cos(x)) from x=-pi/2 to pi/2。 Mathematica 4.1 会立即给你一个不完全正确甚至错误的答案。

    在这种情况下,MAXIMA 的表现要聪明的多,因为它毕竟有几十年的经验。MAXIMA 缺省是一个非常严密的系统,如果你要积分:

    integrate(x^i,x);

    MAXIMA 会问你:

    Is  i + 1  zero or nonzero?

    这是因为现在我们不知道 i 是否等于 -1。如果 i=-1, 那么这个积分应该等于 LOG(x),其中 LOG 是 MAXIMA 的自然对数符号。如果 i 不等于 -1,那么积分应该等于

                                         i + 1
    x
    ------
    i + 1

    这样每次都要问你有时很麻烦,你也可以告诉它,没有特殊指明的情况下,假设积分里的符号都是正数:

    ASSUME_POS: True;

    它以后遇到 integrate(x^i,x); 就会直接给你

                                         i + 1
    x
    ------
    i + 1
    而不会再问你问题了。
  2. 方便的推理

    不仅严密,而且 MAXIMA 有比 Mathematica 和 Maple 方便的推理系统。你跟 MAXIMA 就像在对话:

    看看这个例子: 如果A>=B, B>=C, C>=A, 那么 A=C 吗?

    (C1) ASSUME(A>=B, B>=C); 

    (D1) [A >= B, B >= C]
    (C2) ASSUME(C>=A);

    (D2) [C >= A]
    (C3) IS(EQUAL(A,B));

    (D3) TRUE
    另一个例子: 如果 x>y, 那么x^2 >y^2 吗?
    (C4) ASSUME(x>y);

    (D4) [x > y]
    (C5) IS(x^2>=y^2);

    MACSYMA was unable to evaluate the predicate:
    2 2
    x >= y
    -- an error. Quitting. To debug this try DEBUGMODE(TRUE);)
    MAXIMA 不能回答你,因为 x,y 的符号未知。 现在你告诉它 x 和 y 都是正数:
    (C6) assume(x>0, y>0);

    (D6) [x > 0, y > 0]
    (C7) is(x^2>y^2);

    (D7) TRUE
    这下它告诉你答案了。

    它可以根据一些事实来化简式子。我们有这样一个复杂的式子:

    (C11) EXP:-K^2*L^2*M^2*N^2-K^2*L^2*N^2+K^2*M^2*N^2+K^2*N^2
    2 2 2 2 2 2 2 2 2 2 2 2
    (D11) - K L M N + K M N - K L N + K N
    我们还有两个简单的事实:
    (C12) EQ1:L^2+K^2 = 1
    2 2
    (D12) L + K = 1
    (C13) EQ2:N^2-M^2 = 1
    2 2
    (D13) N - M = 1
    让它根据这两个事实化简第一个式子:
    (C14) SCSIMP(EXP,EQ1,EQ2)
    得到一个很简单的答案:
                                          4  4
    (D14) K N
  3. 抽象代数

    在你还没有函数的定义时,你就可以声明这个函数的一些性质。这样你可以在很多时候大大简化结果。比如,你可以声明一个函数是奇函数:

    (C1) DECLARE(F,ODDFUN);

    (D1) DONE
    (C2) F(-A);
    (D2) -F(A)
    F(-A) 以后简化时就可以被当成 -F(A)。你再声明 F(X) 是 OUTATIVE:
    (C5) DECLARE(F,OUTATIVE);

    (D5) DONE
    (C6) F(3*A);

    (D6) 3 F(A)
    这样,F(3a) 可以被当成 3F(a)。综合以上两个事实,我们可以得到:
    (C7)  F(-A)+F(2*A)-F(A);

    (D7) 0

    如果你告诉 MAXIMA,n 是一个整数,那么它就知道 sin(n pi) = 0.

    (C1) declare(n,integer);
    (D1) DONE
    (C2) sin(n*%pi);
    (D2) 0

    你甚至可以定义自己的操作符,它可以有中缀,前缀,后缀,nary等各种方式,可以有任意的优先级,可以设定它是左结合还是右结合。比如我们来定义一个NARY操作 "&",它的优先级是180(缺省),它是右结合的。

    (C6) NARY("&");

    (D6) "&"
    (C7) declare("&",RASSOCIATIVE);

    (D7) DONE
    (C8) x&y&a&b;

    (D8) x & (y & (a & b))
  4. 超强的扩展能力

    另外,MAXIMA 是可以用自己的语言或者 LISP 进行扩展的。比如你可以用 recur 包来推导递推关系:

    (C8) load(recur);

    (D8) /usr/share/maxima/5.9.0rc3/share/algebra/recur.mac

    现在我们来解一个“快速排序”的时间复杂度分析里出现的简单的递推关系:

    T(0)=0
    T(N)=2*T(N-1)+1

    这样输入到 MAXIMA:

    (C14) CHAR(T(N+1)-2*T(N),1,T,N,1,[T(0)=0]);

    N
    (D14) T(N) = 2 - 1

    这个 recur 实际上只是一个200多行的小程序,就可以帮你处理线性递推关系, 生成函数……

    MAXIMA 有函数式的程序语言,它比通常的过程式语言要强大的多。你甚至可以接触到它底层的 LISP。Mathematica 的语法就是跟 MACSYMA 学来的。

    MAXIMA 完全是用 LISP 语言写的,所以它继承了 LISP 语言天生的特征。它分为上下两层,上面一层叫做 MAXIMA level,下面一层叫做 LISP level。上下两层是相通的,如果你懂得 LISP,你可以随时按 Ctrl-C 进入到 LISP 的环境,定义一个函数,然后退回到 MAXIMA 层调用那个函数。当然在 LISP level 还有很多工作可以做。你也可以在 MAXIMA level 定义了函数,然后在 LISP level 进行调用。

摘自:http://docs.huihoo.com/homepage/shredderyin/maxima.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maxima快速参考手册 命令手册 帮助 pdf 目录 1 基本介绍 4 1.1 一点历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 启动和退出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 在线帮助 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 初等数学 8 2.1 算术运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2 常用初等函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 预定义常数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 自定义函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.5 求和与求积 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.6 代数运算与化简 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.6.1 多项式展开 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.6.2 因式分解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.6.3 等量代换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.6.4 分式展开 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.6.5 分式化简 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.6.6 对数、指数及根式化简 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.6.7 条件假设 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.7 三角函数变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 *Maxima快速参考手册 by Huan Ma is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. +Copyright ?c 2010–2011 Huan Ma. 欢迎反馈:yusufma77@yahoo.com 1 2.7.1 常用变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.7.2 控制变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.8 解方程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.8.1 单个方程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.8.2 方程组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.8.3 数值解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.9 复数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.9.1 实部与虚部 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.9.2 复共轭 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.9.3 复数模和辐角 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.9.4 直角形式和极坐标形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3 矩阵 17 3.1 矩阵输入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.1.1 交互式输入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.1.2 以列表形式输入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.1.3 以函数形式输入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.1.4 对角矩阵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.1.5 单一非零元素矩阵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2 矩阵运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2.1 加减乘除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2.2 幂运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2.3 矩阵乘法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3 行(列)操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3.1 提取行(列) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3.2 增加行(列) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.3.3 子矩阵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.4 线性代数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.4.1 行列式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.4.2 矩阵转置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.4.3 矩阵的逆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.4.4 矩阵的秩 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.4.5 高斯消元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.4.6 本征值和本征向量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4 微积分 23 4.1 微分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2 积分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2.1 不定积分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2.2 定积分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2 4.2.3 数值积分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.3 泰勒展开 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.4 拉普拉斯变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.5 留数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5 微分方程 27 5.1 一阶或二阶常微分方程通解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.2 初值问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.3 边值问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.4 一阶线性微分方程组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6 特殊函数 29 7 作图 30 7.1 二维作图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 7.1.1 一般函数作图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 7.1.2 对数坐标图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 7.1.3 参数方程作图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 7.1.4 数据作图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 7.1.5 存为图片文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 7.2 三维作图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 8 图形界面 35 8.1 wxMaxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 8.2 xmaxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 8.3 TeXmacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 8.4 Emacs+imaxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 9 Maxima编程 39 9.1 do循环 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 9.2 if条件句 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 9.3 block程序块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 9.4 read读取 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 9.5 结果输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 9.5.1 二维表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 9.5.2 输出到文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 9.6 随机数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 9.7 batch执行程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 9.8 tex输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 索引 43 3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值