查看“Maxima在线性代数的应用”的源代码
来自Ubuntu中文
←
Maxima在线性代数的应用
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
作者:蔡炎龍 原文:[http://math.nccu.edu.tw/~yenlung/mynotes/maximalinear_html html] 简体整理:dbzhang 本文:[http://maxima.sourceforge.net/docs/tutorial/cn/maxima_l_cn.pdf pdf] 状态:整理中... ==简介== 这篇文章,是介绍Maxima 这套数学软件,在学习线性代数的应用。 Maxima 是一个所谓的「电脑代数系统」(Computer Algebra System, CAS),这种系统比较为人熟知的还有Mathematica 和Maple 等等。我们选定Maxima 做为我们使用的程序,主要有三个原因: ;免费 : Maxima 是免费,又是各平台都有的。所有的人可以在自己的电脑上练习。 ;功能完整 : Maxima 虽然不要钱,并不代表不好。Maxima 不论计算或图形功能都十分完整。事实上,Maxima 是最早的全功能CAS 系统Macsyma 的后代。 ;具代表性 : 许多新的CAS 系统,如Maple, Mathematica 都多少受到Macsyma 的启发。所以学会Maxima,要学会Maple 或Mathematica 等软件都是很容易的事。 这篇文章主要是介绍线性代数相关功能。我们不假设同学已会基本的Maxima 使用方式,所以我们会用到的概念,也许不纯粹是线性代数的,也会一并介绍。专就线性代数而言,我们要会的其实并不多。想要快速进入状况,可以跳过前面的部份,直接看线性代数相关指令,在操作上有问题时,再回头看有问题部份的相关说明即可。 如果同学们比较喜欢使用Mathematica,Maple,或是Matlab 等商业软件也是可以的。我们系上的电脑室有提供这些软件,可以上机试用看看。 == 基本概念 == 我们先介绍一下Maxima 操作的方式。 === Maxima 当计算器 === 我们先来看,如果我们要把Maxima 当计算器用,会是什么情况? (%i1) 1+1; (%o1) 2 (%i2) 3*4*7; (%o2) 84 (%i3) 9/3; (%o3) 3 到目前为止,似乎还没什么特别。除了可以做复杂一点点的运算,和平常的计算机或数值计算软件也没什么不同。以下的例子就不一样了: (%i4) 7/3; 7 (%o4) - 3 (%i5) 1/2+2/3; 7 (%o5) - 6 从(%o4)我们看到,7/3这种运算,Maxima 不是告诉我们2.3333...,而是分数的形式!难道Maxima 真的懂分数?不要怀疑,这就是所谓电脑代数系统(CAS) 的特长。我们可以像(%o5)的例子一样,输入个分数的四则运算试试即知。 如果坚持要用浮点数,那只要加个float 指令即可: (%i6) float(7/3); (%o6) 2.333333333333334 为了完整,我们顺便再介绍指数,根号,阶乘表示法: (%i7) 2^10; (%o7) 1024 (%i8) sqrt(9); (%o8) 3 (%i9) 5!; 我们可以看出,这些运算不是自然的数学符号,就是和我们平常电脑程序语言的写法。 === 指令结尾=== 在上面的例子中,我们发现,在Maxima 下指令,结束时一定要打上分号「;」,让Maxima 知道我们下的指令已结束。为什么要多这一个动作,主要是为了有时打比较长的指令可以换行之故。另一个结束方式是打入「$」的符号。不同於分号的地方是「运算结果不会显示出来」: (%i10) 2+3$ (%i11) 2+3; (%o11) 5 有一些CAS 程序,如Matehmatica 是用分号表示不显示运算结果。不过Maxima 中分号已用上,必需用其他字符。 ===离开Maxima=== 离开Maxima 打入“quit();” 即可。 当然,很多人可能会觉得奇怪,为什么不是打入“quit” 就好了呢?原来像这种程序导向的语言,什么动作其实都是执行一个函数。所以我们事实上是执行一个叫「离开」的函数。这函数没有参数,所以就成了quit() 的形式。 === 结果的引用=== 我们时常会需要引用前面的结果,这时就用百分比符号“%” 。比方说: (%i12) 7/3; 7 (%o12) - 3 (%i13) float(%); (%o13) 2.333333333333334 Maxima 也可以指定使用第几个输出的结果,不过自己定一个标签可能是最好的方式。比方说,我们可以这样用: (%i14) myresult:34+(65*72)/119; 8726 (%o14) ---- 119 (%i15) float(myresult); (%o15) 73.32773109243698 ===重要常数=== Maxima 当然有内建e 或是π 常常用到的数,只是表示法奇怪一点。e 是%e 而π 是%pi 。 ===定义变量=== Maxima定义变量的想法有点特别,在定义一个变数时,其时是给某个数字、矩阵,或想要定义的任何式子等等一个标签。让我们来看几个例子: (%i16) a: 37; (%o16) 37 (%i17) a; (%o17) 37 (%i18) b: 22+100*(375-128); (%o18) 24722 (%i19) a+b; (%o19) 24759 ===函数=== Maxima 函数的定义和使用非常直觉,我们看几个例子就知道: (%i20) f(x) := 3*x^2+5; 2 (%o20) f(x) := 3 x + 5 (%i21) f(2); (%o21) 17 (%i22) g(x, y) := sin(x)*cos(y); (%o22) g(x, y) := sin(x) cos(y) (%i23) g(2*%pi, 4); (%o23) 0 重点就是,在定义函数时要用“:=” 去定义。比较一下和变数定义的不同,想想为什么要有两种不一样的定义方式。 ==进阶使用== ===列式而不运算=== 我们先计算一个瑕积分,用到无穷大的部份Maxima 是以inf 表示: (%i1) integrate(%e^(-x^2),x,0,inf); sqrt(%pi) (%o1) --------- 2 还记得这在微积分是怎么积出来的吗?Maxima 居然会积!不过,今天这不是我们的重点。今天重点是,有时你不是要秀答案,只是要列出式子。我们要怎么样让Maxima 不要太自动就算出来呢?答案是加个“”号在前面,例如: (%i2) 'integrate(%e^(-x^2),x,0,inf); inf / 2 [ - x (%o2) I %e dx ] / 0 ===kill 指令=== 有时我们设定了一堆变数,函数,后来又不想再用下去,可以用kill 指令。而kill(all) 更是把我们定义过的变数,函数全部删除。看些例子就更加清楚: (%i3) f(x) := 3*x^2+5; 2 (%o3) f(x) := 3 x + 5 (%i4) f(x); 2 (%o4) 3 x + 5 (%i5) kill(f); (%o5) done (%i6) f(x); (%o6) f(x) ===ev的使用=== 我们可以把Maxima 的ev 指令想成一个独立的环境。有点像在写程序时的函式一样, 并不会影响到其他的运作。第一种ev 的应用是把我们设成不要执行的指令执行: (%i7) f: 'integrate(x^2, x); / [ 2 (%o7) I x dx ] / (%i8) ev(f, integrate); 3 x (%o8) -- 3 另一个很有用的使用方式是, 我们有个式子, 比方说: (%i9) f: a*x^2+b*2+c; 2 (%o9) a x + c + 2 b 假设我们想令一个式子是a = 1, b = −2, c = −8 的情况, 我们当然可以先令各个变数是这样,们问题是这么一来, f 也永远是x2 − 2x − 8, a, b, c 这三个变数也不再是「符号」, 而是有值的。为了避免这个问题, 我们可以用ev 指令, 在下了这个指令后, 我们可以发现, 并没有变动到原来a, b, c或是f : (%i10) g: ev(f, a=1, b=-2, c=-8); 2 (%o10) x - 12 (%i11) a; (%o11) a == == == == == == == == == ==
返回
Maxima在线性代数的应用
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
登录
导航
首页
最近更改
随机页面
页面分类
帮助
搜索
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息