查看“Maxima导引”的源代码
来自Ubuntu中文
←
Maxima导引
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
来源:http://blog.chinaunix.net/u/20/showart_172159.html 作者:win_hate Maxima: http://wiki.ubuntu.org.cn/Maxima == 函数 == === 定义函数 === 注意函数使用的符号是 := ==== 一元函数 ==== f(x):=expr; 例子: (%i1) f(x):= 1+x; (%o1) f(x) := 1 + x (%i2) f(2); (%o2) 3 ==== 多元函数 ==== f(x,y):=expr; 例子: (%i3) f(x,y):=y^2+x^2; 2 2 (%o3) f(x, y) := y + x (%i4) f(2,3); (%o4) 13 === 初等函数 === ;幂函数: x^2, x^(-1/2),...;指数函数:2^x, (1/2)^x, exp(x), %e^x...:在 maxima 中,常数e=2.718281828459045被记为:%e. 所以指数函数 e^x 在 maxima 中被表示为:%e^x 由于这个函数的重要性,它有一个专门的记法:exp(x). (%i2)f(x) := %e^x; x (%o2) f(x) := %e (%i3)g(x) := exp(x); (%o3) g(x) := exp(x) (%i4)expand(f(x) - g(x)); (%o4) 0 ;对数函数:log(x):在 maxima 中,log(x) 就是自然对数,即以 e 为底的对数,数学上常记为 ln(x)。maxima 没有其它形式的对数,要使用以 10 或 2 为底的对数,只能使用换底公式。如果把下面的代码放到 ~/.maxima/maxima-init.mac 中,则 maxima 在运行时会加载自定义函数 log10、log2,并把 ln 定义为 log。这样就可以使用 log10、log2 和 ln 了。 log10(x):=log(x)/log(10); log2(x):=log(x)/log(2); ln:log; ;三角函数:sin, cos, tan, cot, sec, csc:在 maxima 中,pi=3.141592653589793 被记为 %pi. ;反三角函数:asin, acos, atan, acot, asec, acsc === 分段函数 === f(x)= x-1, x<0 0, x=0 x+1, x>0 (%i2) f(x) := if x < 0 then x - 1 else (if x = 0 then 0 else 1 + x); (%o2) f(x) := if x < 0 then x - 1 else (if x = 0 then 0 else 1 + x) (%i3) f(- 1); (%o3) - 2 (%i4) f(0) (%o4) 0 (%i5) f(1) (%o5) 2 == 极限 == 求极限的命令为: limit (expr, var, val, direction); <br> expr 是要求极限的表达式; var 是变量名; val 指定在何处取极限;direction 是方向,可以是 plus 和 miuns,分别指右极限和左极限。 <br> 例子: (%i2)limit (sin(x)/x, x, 0); (%o2) 1 (%i3)limit (tan(x), x, %pi/2); (%o3) und (%i4)f:diff(abs(x), x); (%i5)limit(f, x, 0, plus); (%o5) 1 (%i6)limit(f, x, 0, minus); (%o6) -1 其中 und 表示极限不存在。 如果要取无穷处的极限,可以用常数 inf, minf。前者表示正无穷,後者表示负无穷。 (%i1) limit (1/x, x, inf); (%o1) 0 (%i2) limit (atan(x), x, inf); (%o2) %pi/2 (%i3) limit (atan(x), x, minf); (%o3) -%pi/2 == 导数 == 求导数: <pre>diff(expr, var)</pre> 例子: <pre> (%i1) diff(sin(x),x); (%o1) cos(x) (%i2) diff(f(x)*g(x),x); d d (%o2) f(x) (-- (g(x))) + g(x) (-- (f(x))) dx dx </pre> 求高阶导数: <pre>diff(expr, var, n)</pre> 例子: <pre> (%i3)diff(sin(x),x, 2); (%o3) - sin(x) (%i4) diff(f(x)*g(x),x,3); 3 2 d d d (%o4) f(x) (--- (g(x))) + 3 (-- (f(x))) (--- (g(x))) 3 dx 2 dx dx 2 3 d d d + 3 (--- (f(x))) (-- (g(x))) + g(x) (--- (f(x))) 2 dx 3 dx dx </pre> == 集合 == === 集合定义 === maxima 似乎只支持有限集。建立集合的方式是列举。 ;set(a_1, ..., a_n):n 个元素的集合 ;{a_1, ..., a_n}:同上 ;setify(foo):list->set :把列表 foo 转换为集合 ;fullsetify(foo):把列表 foo 转换为集合, 对列表的列表元素递归调用 fullsetify。列表的列表元素指的是:列表的一个元素,本身又是一个列表。 例子: (%i2) A : set(1, 2, 3) (%o2) {1, 2, 3} (%i3) B : {a, b, c} (%o3) {a, b, c} (%i4) C : {} (%o4) {} (%i2) setify([a, b, c]) (%o2) {a, b, c} (%i3) setify([a, b, [1, 2], [a, b, c]]) (%o3) {[1, 2], a, [a, b, c], b} (%i2) fullsetify([a, b, [1, 2], [a, b, c]]) (%o2) {{1, 2}, a, {a, b, c}, b} <br> === 元素与集合 === ;elementp(x,y):判断 x 是否集合 S 的元素 ;adjoin(x, S):返回集合 {t | (t in S) or t = x} 即返回把 x 添加到 S 中得到的集合,但 S 本身并不改变。 ;disjoin(x, S):返回把 x 从集合 S 中去除後的集合,S 本身并不改变。 例子: (%i2) A : {a, b, c} (%o2) {a, b, c} (%i3) elementp(a, A) (%o3) true (%i4) elementp(d, A) (%o4) false # 把 d 添加到 A 中 (%i5) adjoin(d, A) (%o5) {a, b, c, d} # A 并未改变,d 不是 A 的元素 (%i6) elementp(d, A) (%o6) false # 把 d 添加到 A 中,并把得到的集合赋值给 A (%i7) A : adjoin(d, A) (%o7) {a, b, c, d} (%i8) elementp(d, A) (%o8) true (%i9) A : disjoin(a, A) (%o9) {b, c, d} (%i10) elementp(a, A) (%o10) false === 集合运算 === ;emptyp(S):判断 S 是否空集 ;intersection(A, B):交 ;intersect(A, B):同上,似乎无任何区别 ;union (A, B):并 ;setdifference(A, B):差,馀。 A\B ;symmdifference(A,B):对称差 ;subsetp(A,B):判断 A 是否 B 的子集 ;subset(A, f):返回集合 {x | (x in A) and (f(x)=true)} f 必须是谓词函数,也即其值域为 {true, false}。 ;subset (A, f):返回一个 A 的一个子集合,由 A 中满足 f 的元素全体组成。 ;powerset(A):返回 A 的全部子集合构成的集合。 ;powerset(A,n):返回 A 的大小为 n 的子集构成的集合。 ;cartesian_product(A,B):返回 A, B 的笛卡尔积(直积)。 ;cardinality:返回集合 A 的大小|A|。 ;disjointp(A,B):若集合 A, B 相交,则返回 false,否则返回 true。 例子: (%i2) A : {a, b, c} (%o2) {a, b, c} (%i3) B : {b, c, d} (%o3) {b, c, d} (%i4) intersection(A, B) (%o4) {b, c} (%i5) intersect(A, B) (%o5) {b, c} (%i6) setdifference(A, B) (%o6) {a} (%i7) symmdifference(A, B) (%o7) {a, d} (%i8) subsetp(A, B) (%o8) false (%i9) subsetp(setdifference(B, A), B) (%o9) true (%i10) powerset(A) (%o10) {{}, {a}, {a, b}, {a, b, c}, {a, c}, {b}, {b, c}, {c}} (%i11) powerset(A, 2) (%o11) {{a, b}, {a, c}, {b, c}} (%i12) cartesian_product(A, B) (%o12) {[a, b], [a, c], [a, d], [b, b], [b, c], [b, d], [c, b], [c, c], [c, d]} # 在 Maxima 中,用 % 表示上一条命令的输出,在这里,就是 A 与 B 的直积。 (%i13) cardinality(%) (%o13) 9
返回
Maxima导引
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
登录
导航
首页
最近更改
随机页面
页面分类
帮助
搜索
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息