打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
译言网 | 10分钟教程:用Maxima解决数学问题
userphoto

2014.02.26

关注

大约有5万人读了我的另一篇叫做“3 swesome free math programs”的文章。其中一部分人大概已经下载并安装了Maxima。如果你是其中一人,但是却不太擅长这类CAS(计算机代数系统)软件的话,Maxima可能让你感觉很复杂,并且很难掌握,甚至仅仅是简单的高中代数问题都会无从下手。事实上,Maxima用起来没有那么可怕,10分钟的教程足以让你明白它的用法,找到正确的方向。一旦你开始了第一步,对于实际问题中的特定的功能,你只要去搜寻它的文档就可以了。或者,你可以用以下这种形式(问号 + 一个字符串)去得到相应帮助(比如 ? integrate)。这个教程将会结合实际动手,使用一些简单的例子来讲解怎么去计算一些常见的问题。当然,这仅仅是冰山一脚。Maxima能做很多很多的其他事情,但是在开头阶段,接触这些问题足以帮助你明白并且让你能够使用。并且,最后一点,你不会牺牲超过10分钟的时间。

把Maxima当做计算器用

你可以把Maxima当作一个快速的并且可靠的计算器用。它的精度在计算机硬件的限度内可以是任意的。跟很多编程语言一样,在Maxima,你需要输入一个或者多个指令和表达式,并以分号"$$"分隔。

(%i1) 9+7;
(%o1)

(%i2) -17*19;
(%o2)

(%i3) 10/2;
(%o3)

上一次计算的结果可以用“%”符号来表示,而且之前的任意一次的输入和输出可以通过符号 “%i”(输出)或者“%o”(输出)来表示。

 

(%i4) % - 10;
(%o4)

(%i5) %o1 * 3;
(%o5)

简单一点,从这里起,我们将会省略掉那些标有号码的输入和输出,并且用 a => sign 来表示输出。分数情况下,分子和分母都是整数的情况下,maxima会返回一个相应的简化的分数或者一个整数。这些可以通过一些使用“float”方法来验证(或者bfloat,在大的浮点数字的情况下):

8/2;
=>

8/2.0;
=>

2/6;
=>

float(1/3);
=>

1/3.0;
=>

26/4;
=>

float(26/4);
=>


如上所述,在这里,大数值的数字不是个问题:

13^26;
=>

13.0^26
=>

30!;
=>

float((7/3)^35);
=>


一些定量和常见的方程

这里是一些常见的定量数值,在日常使用中会经常用到:
  • %e - Euler’s Number
  • %pi -
  • %phi - the golden mean (
    )
  • %i - the imaginary unit (
    )
  • inf - real positive infinity (
    )
  • minf - real minus infinity (
    )
  • infinity - complex infinity

我们可以用它们中的一些在一些常见的方程里:

sin(%pi/2) + cos(%pi/3);
=>

tan(%pi/3) * cot(%pi/3);
=>

float(sec(%pi/3) + csc(%pi/3));
=>

sqrt(81);
=>

log(%e);
=>


声明定义方程和变量

变量可以用一个冒号来赋值,而方程需要用":="来定义。以下的程序是用来演示怎么去使用它们:

a:7; b:8;
=>

=>

sqrt(a^2+b^2);
=>

f(x):= x^2 -x + 1;
=>

f(3);
=>

f(a);
=>

f(b);
=>

请注意,Maxima只提供自然对数计算功能 log. 默认情况下,不提供 log10,但是你可以自己定义,如下:

log10(x):= log(x)/log(10);
=>

log10(10)
=>


符号计算方法

我们可以使用 factor 来进行因数分解:

factor(30!);
=>

或者多项式的因子计算

factor(x^2 + x -6);
=>

然后,展开

expand((x+3)^4);
=>

简化有理数表达式:

ratsimp((x^2-1)/(x+1));
=>


简化三角方程:

trigsimp(2*cos(x)^2 + sin(x)^2);
=>

类似的,展开三角表达方程:

trigexpand(sin(2*x)+cos(2*x));
=>

请注意,2x在Maxima中不是乘法表达式,相应的,它要求明确使用 2*x。如果你想使用TeX来生成相应的表达式,你可以使用方程tex:

 tex(%);

=> $$-sin ^2x+2,cos x,sin x+cos ^2x$$

公式求解

我们可以用方程“solve”轻松的解一个,或者一组公式:

solve(x^2-4,x);
=>

%[2]
=>

solve(x^3=1,x);
=>

trigsimp(solve([cos(x)^2-x=2-sin(x)^2], [x]));
=>

solve([x - 2*y = 14, x + 3*y = 9],[x,y]);
=>

二维和三维画图

Maxima提供了二维和三维画图功能,并且有更多的功能在同一个图表里。"plot2d"和"plot3d"用起来非常直接。第二个(或者第三个,在使用plot3d的时候)参数就是一系列x(和y)的数值,用来定义画图的取值范围。

plot2d(x^2-x+3,[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]);

极限

limit((1+1/x)^x,x,inf);
=> %

limit(sin(x)/x,x,0);
=>

limit(2*(x^2-4)/(x-2),x,2);
=>

limit(log(x),x,0,plus);
=>

limit(sqrt(-x)/x,x,0,minus);
=>

微分

diff(sin(x), x);
=>

diff(x^x, x);
=>

我们能使用一个任选的数字来定义微分计算的阶数,从而来计算更高阶的微分方程:

diff(tan(x), x, 4);
=>

积分

Maxima提供了一些类型的几分计算。当计算不定积分时候:

integrate(1/x, x);
=>

定积分的情况下,只需要把后两个参数定义成积分的范围:

integrate(x+2/(x -3), x, 0,1);
=>

integrate(%e^(-x^2),x,minf,inf);
=>

如果方程integrate不能计算一个积分的时候,你可以运行数值计算,用一个合适的方程(例如:romberg):

romberg(cos(sin(x+1)), x, 0, 1);
=> 0.57591750059682

累加和累乘

sumproduct 是用于计算累加和累乘的方法。当需要简化结果的时候,可以使用simpsum选项。注意,你也可以用product来定义你自己的方程。

sum(k, k, 1, n);
=>

sum(k, k, 1, n), simpsum;
=>

sum(1/k^4, k, 1, inf), simpsum;
=>

fact(n):=product(k, k, 1, n);
=>

fact(10);
=>

展开级数

级数展开可以通过方法taylor来进行(最后一个参数用于定义展开深度),或者用powerseries:

niceindices(powerseries(%e^x, x, 0));
=>

taylor(%e^x, x, 0, 5);
=>

当taylor的输出需要用图形表示的时候,trunc方法和plot2d一起使用(去解决泰勒级数尾部输出的

符号问题):

plot2d([trunc(%), %e^x], [x,-5,5]);

我希望这个能对你有帮助,而且希望它能帮你快速开始使用Maxima。CAS是非常清大的工具,如果你想学会正确的使用它们,你会很快发现它很值得所投入的时间。

翻译的很烂,望多包涵。纯属练笔,同时自己也在学习这个软件。其中很多大学的术语已经忘记了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
数学软件Maple使用教程
matlab实用函数及技巧整理
matlab参数方程画曲线
傅里叶级数 三角形式 到 复数形式
MATLAB WEEK8 SOLUTION Numerical integration and Differentiation
Python绘制参数方程图
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服