Maxima 是一个用 LISP 语言构建的计算机代数系统,能在电脑上协助分析函数。早期它主要面向代数运算,所以也可被视作一个计算机代数运算平台。经过多年迭代,它的能力已远超单纯的运算范畴。目前 Maxima 被大量用于高级函数分析,涵盖初等函数、代数、常量、变量、矩阵、微分、积分等方向,为从事数学研究的人提供了一个更智能的计算工具。在函数图像绘制方面,该软件同样表现出色,支持二维作图和数据作图。

1、将Maxima用作计算器
Maxima 可以当作一款响应迅速、结果可靠的计算器来使用,其精度可达到计算机硬件所允许的任意程度。与许多编程语言类似,在 Maxima 中需要输入一条或多条指令与表达式,并用分号“$$”将它们分隔开。
(%i1) 9+7;
(%o1) 16
-323
(%o2) -323
(%i3) 10/2;
(%o3) 5
计算得出的结果可用“%”符号调取,而此前任意一轮的输入值与输出值,则分别通过“%i”(输入)和“%o”(输出)这两个符号来引用。
(%i4) % - 10;
(%o4) -5
(%i5) %o1 * 3;
(%o5) 48
简化处理:从这一步开始,带编号的输入与输出将不再逐一列出,输出改用 a => sign 的形式表示。当分子和分母均为整数时,maxima 会给出约分后的分数或整数结果。要验证这一点,可以调用“float”方法(数值较大时也可用 bfloat)。
8/2;
=> 4
8/2.0;
=> 4.0
2/6;
该式表示三分之一,以分数形式写作 1/3。
float(1/3);
0.33333333333333
1/3.0;
0.33333333333333
26/4;
=> displaystyle frac{13}{2}
将 26 除以 4 后取浮点结果。
=> 6.5
如前所述,数值偏大在这里并不会构成障碍:
13^26;
这个数字串看起来像是一串随机排列的数值,实际上它是一段经过编码的字符序列,共包含29位数字,以9开头、以9结尾,中间由多个不同数字组合而成。
13.0^26
显示格式为 9.1733330193268623 乘以 10 的 +28 次方。
30!;
=> 265252859812191058636308480000000
计算表达式 float((7/3)^35) 的值,该表达式先对 7/3 做 35 次幂运算,再将结果转换为浮点类型。
=> 显示格式 7.5715969098311943 乘以 10 的正 12 次方
一些定量和常见的方程
日常使用中,有一批常见的定量数值会被频繁用到:
e 常数,即欧拉数(Euler’s Number),是数学中一个重要的无理数常数。
%pi 用于在数学公式中输出圆周率符号 π。
%phi 指黄金分割比,其数值等于 (1+√5)/2。
%i 表示虚数单位,即满足平方等于 -1 的数(写作 √-1)。
inf 表示正无穷大(infty)。
minf 表示负无穷大(-∞)
infinity 一款围绕“复杂无限”概念展开的工具软件
在实际运用中,我们不妨把其中若干项代入一些常见方程之中:
sin(%pi/2) + cos(%pi/3);
=> displaystyle frac{3}{2}
计算 %pi/3 的正切值与余切值之积。
=> 1
计算 sec(π/3) 与 csc(π/3) 之和,再对结果取浮点值。
=> 3.154700538379252
sqrt(81);
=> 9
log(%e);
=> 1
2、声明定义方程和变量
变量赋值使用单冒号即可完成,而方程的定义则需借助“:=”符号来区分。下面这段程序展示了它们的具体用法:
a:7; b:8;
=> 7
=> 8
sqrt(a^2+b^2);
=> sqrt{113}
f(x):= x^2 -x + 1;
x x + 1
f(3);
=> 7
f(a);
=> 43
f(b);
=> 57
需要留意的是,Maxima 内置的对数运算仅支持自然对数 log。它并未默认附带以 10 为底的对数函数 log10,若有需要,用户可以自行定义,方式如下:
以10为底的对数可通过换底公式求得:log10(x)等于log(x)除以log(10)。
=> displaystyle log10(x):=frac{log(x)}{log(10)};
log10(10)
=> 1
3、符号计算方法
因数分解可以通过 factor 来完成:
计算30的阶乘后,再对结果进行因数分解。
displaystyle 2^{26},3^{14},5^7,7^4,11^2,13^2,17,19,23,29
或者多项式的因子计算
factor(x^2 + x - 6) 的作用是对该多项式进行因式分解。
(x-2)(x+3)
然后,展开
展开 (x+3)^4 这个表达式。
x^4 加 12x^3 加 54x^2 加 108x 加 81
简化有理数表达式:
ratsimp((x^2-1)/(x+1));
=> x-1
简化三角方程:
trigsimp(2*cos(x)^2 + sin(x)^2);
displaystyle cos ^2x+1
同理,将三角表达式方程进行展开:
trigexpand(sin(2*x)+cos(2*x));
=> displaystyle sinx + 2·cos x·sin x + cosx
需要留意的是,在Maxima里“2x”并不会被当作乘法处理,必须写成“2*x”才算明确。若打算借助TeX生成对应的表达式,可以用方程tex:
tex(%);
$$-\sin^2x+2,\ \cos x,\ \sin x+\cos^2x$$
4、公式求解
用“solve”方程就能轻松求解单个或一组公式:
solve(x^2-4,x);
=> displaystyle left[ x=-2 , x=2 right]
%[2]
=> x=2
solve(x^3=1,x);
x=1,x=(√3i1)/2,x=(√3i+1)/2
trigsimp(solve([cos(x)^2-x=2-sin(x)^2], [x]));
=> displaystyle left[ x=-1 right]
solve([x - 2*y = 14, x + 3*y = 9],[x,y]);
坐标点(12,-1)
5、二维和三维画图
Maxima 具备二维与三维绘图能力,同一张图内还能叠加更多效果。调用 plot2d 和 plot3d 时操作逻辑相当简明:第二个参数(若用 plot3d 则为第三个参数)传入一组 x(以及 y)的数值,由此划定绘图所覆盖的区间。
绘制函数 x^2-x+3 在区间 [-10,10] 上的图像,使用 plot2d 命令即可完成。
plot2d 可同时绘制多条曲线,写法是把表达式放进方括号中,例如 [x^2, x^3, x^4 -x +1];随后再给出自变量及其范围 [x,-10,10],整个调用即 plot2d([x^2, x^3, x^4 -x +1] ,[x,-10,10]);。
f(x,y):= sin(x) + cos(y);
plot3d(f(x,y), [x,-5,5], [y,-5,5]);
6、极限
limit((1+1/x)^x,x,inf);
=> %e
计算 x 趋近于 0 时 sin(x)/x 的极限,可用 limit(sin(x)/x, x, 0) 这个表达式。
=> 1
求极限 limit(2*(x^2-4)/(x-2),x,2)
=> 8
limit(log(x),x,0,plus);
=> 负无穷
limit(sqrt(-x)/x,x,0,minus);
=> -infty
7、微分
对 sin(x) 关于 x 求导,得到的结果是 cos(x)。
=> cos(x) 的显示样式
计算 x 的 x 次方这一函数关于 x 的导数。
显示样式为 x 的 x 次方,乘以括号内 log x 加 1。
我们可以借助一个可选的数字指定微分的阶数,进而求解阶数更高的微分方程:
对 tan(x) 关于 x 求四阶导数,可使用 diff(tan(x), x, 4) 这一表达式完成计算。
secx·tanx + 16·secx·tanx
8、积分
Maxima 具备若干种积分运算方式。在进行不定积分运算时:
integrate(1/x, x)
=> displaystyle log(x)
定积分情形下,把最后两个参数设为积分的上下限即可。
integrate(x+2/(x -3), x, 0,1);
=> displaystyle -2,log 3+2,log 2+{{1}over{2}}
integrate(%e^(-x^2),x,minf,inf);
π 的平方根
当 integrate 无法求出某个积分的解析结果时,可以改用数值计算的方式,选择一个合适的方程来完成,例如 romberg。
romberg(cos(sin(x+1)), x, 0, 1);
0.57591750059682
9、累加和累乘
sum 与 product 这两个方法分别用于求累加和与累乘积。若希望结果得到化简,可启用 simpsum 选项。product 同样能用来定义你自己需要的方程。
sum(k, k, 1, n);
将 k 从 1 到 n 的所有取值依次相加,所得结果即为该表达式的值。
sum(k, k, 1, n), simpsum;
=> displaystyle {{n^2+n}over{2}}
sum(1/k^4, k, 1, inf), simpsum;
该式等于 π 的四次方除以 90。
fact(n):=product(k, k, 1, n);
fact(n) 定义为 k 从 1 到 n 的连乘积。
fact(10);
抱歉,你发来的“原文”只有“=>3628800”这一串字符,看起来是某个数值或代码片段,并不是一段软件介绍文字,我无法据此做介绍文的改写。 请把需要改写的软件介绍段落完整贴出来(保留原有编号/项目符号),我再按你的要求输出改写后的纯文本。
10、展开级数
泰勒展开可借助 taylor 方法实现,末位参数用来指定展开的阶数;也可以改用 powerseries:
这个函数调用用于对 %e^x 在 x=0 处的幂级数展开结果执行 niceindices 操作。
=> displaystyle sum_{i=0}^{infty }{{{x^{i}}over{i!}}}
taylor(%e^x, x, 0, 5);
=> 1 + x + x/2 + x/6 + x/24 + x/120 + 这样的展开式,依次由常数项、一次项、二次项、三次项、四次项、五次项等逐项相加而成,各项系数分别对应阶乘分之一的形式。
在需要把 taylor 的计算结果以图形方式呈现时,可将 trunc 与 plot2d 搭配使用,以处理泰勒级数末尾出现 +cdots 符号的情况:
plot2d([trunc(%), %e^x], [x,-5,5]);
Maxima 通过调用外部程序完成绘图,Gnuplot 就是它默认使用的那个。Gnuplot 本身是一款靠命令行操作的函数与数据绘图工具,能力相当扎实,计算、拟合、脚本编程这些功能都整合在其中;Maxima、Octave 等软件也都把它当作后台绘图引擎来用。经常需要做数学图形的人,不妨直接上手 Gnuplot——它的设置更灵活,功能也更丰富。
特殊函数
Maxima 内置了一批常用的特殊函数,具体每个函数的用法在此不作逐一说明,翻阅任意一本数理方程教材即可查到相关内容。
边值问题
函数bc2(solution, xval_1, yval_1, xval_2, yval_2) 的作用是处理二阶微分方程的边值问题:它接收 ode2 求出的通解 solution,再结合第一点处自变量与因变量的取值 xval_1、yval_1,以及第二点处对应的 xval_2、yval_2,由此完成边值条件的求解。
一阶常微分方程或二阶常微分方程的通解
这个函数写作 (eqn, dvar, ivar),用于求解一阶或二阶常微分方程;三个参数分别对应待解的方程、因变量以及自变量。
对角矩阵
对角矩阵若各对角元素相同,输入时有更省事的做法:diagmatrix(n, x) 会生成一个 n × n 的矩阵,其主对角线上的值全为 x。想得到单位矩阵,写成 diagmatrix(n, 1) 即可;ident(n) 同样能给出单位矩阵。
交互式输入
调用 entermatrix(m,n) 后,Maxima 会逐项读取你输入的每个元素,实现交互式的矩阵录入。当行数与列数一致时,程序会先问这个矩阵属于对角、对称、反对称还是普通类型,借此省去不少重复输入的工作。
1、最大值
Maxima 是一套功能完整的计算机代数系统(CAS)。这类程序处理数学问题的方式并非只给出数值结果,而是通过整理公式、寻找合适的求解表达式来得到答案。也就是说,它既能像计算器那样算出变量的具体数值,也能给出解析形式的解;对于无法求得解析解的等式或方程组,它还配备了多种数值求解手段。
2、waxMaxima
wxMaxima 是 Maxima 的图形前端,把 Maxima 的完整能力与灵活特性以可视化方式呈现出来,让这款工具更容易上手。它提供图形化显示和多种辅助功能,例如只需右键单击,就能将任意单元格的内容导出为文本、LaTeX 或 MathML 格式,必要时也可只导出公式的某一部分;整个工作簿同样可以导出成 HTML 或 LaTeX 文件。关于 wxMaxima 的使用说明(包括演示各项操作的工作簿),既可在其帮助站点在线查阅,也能通过帮助菜单获取。
3、水平和垂直光标
有些场景下,用户可能想选中多个单元格,或者只取某个单元格的一部分来做导出、拖放之类的操作。不过,如果起点落在某个单元格中间、终点又落在另一个单元格中间,这样操作基本都会产生难以预料的结果。遇到这类情况,waxMaxima 会把选区自动扩展到完整的单元格范围。
wxMaxima 的拖放操作之所以灵活,是因为它设定了两类游标,并且会在适当的时候自行完成切换:
可选中任意数量整行单元格的水平光标:将光标移至两个单元格之间,或点击两格之间的空隙即可启用。若要选中一组相邻单元格,先点中顶部单元格左侧括号区域(注意避开三角形图标),再拖动光标,使该单元格与下方单元格(或一段单元格范围)被高亮标出;随后按 Ctrl+Enter 或 Shift+Enter 对高亮单元格执行操作。
在单元格中可启用一条纵向光标,借助鼠标指针或方向键在格内移动即可将其激活;它的操作方式与文本编辑器里的光标十分接近。
光标停留在某个单元格内时,查找范围就只限于该单元格之中。
4、命令自动完成
wxMaxima 的自动补全可由菜单“单元格/完成字”调出,也能直接按 Ctrl + k 组合键触发。该功能会依据当前上下文给出提示:若在 ezUnits 的单位规范内启用,便会列出可用的单位。它不仅能补全当前命令或变量名,还能展示多数命令的模板,说明程序所期望的参数类型及其含义。若要启用模板显示,可按 Shift + Ctrl + k,或选择对应菜单项“单元格/显示模板”;下图所示样式需先安装 TeXmacs 才能呈现。
5、附有MAXIMA的使用教程
在 wxmaxima 的图形界面里打开“帮助”菜单,能直接访问官网,也可以翻阅下载包中的教程文件夹;若双击扩展名为 .wxm 的文件,系统会直接在 MAXIMA 中将其打开。需要留意的是,这些内容均为英文。
(您的评论需要经过审核才能显示)
0条评论