文章目录
前言
目前数学软件国内常用的是Matlab或Mathematics,但是还有一款非常强大的来自加拿大的软件Maple,是笔者非常喜欢的一款数学软件。它是目前世界上最为通用的数学和工程计算软件之一,在数学和科学领域享有盛誉。
Maple的功能比起Matlab更加简单易用,它内置常用的各类数学运行公式、建模和仿真工具等。能够使用各类强大的符号计算、高精度数值计算等。同时内置超过6000个计算命令,覆盖微积分、微分方程、特殊函数、线性代数、图像声音处理、统计、动力系统等几乎所有方面。
[百度百科] Maple不仅仅提供编程工具,更重要的是提供数学知识。Maple是教授、研究员、科学家、工程师、学生们必备的科学计算工具,从简单的数字计算到高度复杂的非线性问题,Maple都可以帮助您快速、高效地解决问题。用户通过Maple产品可以在单一的环境中完成多领域物理系统建模和仿真、符号计算、数值计算、程序设计、技术文件、报告演示、算法开发、外部程序连接等功能,满足各个层次用户的需要,从高中学生到高级研究人员。
使用Maple,我们可以快速计算大部分常见的内容,比如:
# 求100以内素数的和
add(ifelse(isprime(x), x, 0), x in [seq(x, x = 2 .. 100)]);
1060
1 基本运算
1.1 常用变量
infinity: ∞
pi: 圆周率
其他
2+4;
6
12*34567890;
414814680
134^39;
9059143440314737055251638566206777129140235091118703742385647407\
4097423209059057664
3/5 + 5/9 + 7/12;
313
---
180
sqrt(24);
2*sqrt(6)
4*(3+Pi);
12 + 4*Pi
sin(5*Pi/3);
-sqrt(3)/2
sec(Pi/4);
sqrt(2)
arcsin(-1);
-Pi/2
tan(Pi/2);
Error, (in tan) numeric exception: division by zero
exp(x);
exp(x)
abs(x);
|x|
abs(-3);
3
abs(exp(1)-Pi);
-exp(1) + Pi
p:=3/5+5/9+7/12;
p := 313/180
evalf(p);
1.738888889
w:=4*(3+Pi);
w := 12 + 4 Pi
evalf(w);
24.56637062
evalf(w,4);
24.57
evalf(w,45);
24.5663706143591729538505735331180115367886776
result:=seq(sqrt(k),k=1..10);
result := 1, sqrt(2), sqrt(3), 2, sqrt(5), sqrt(6), sqrt(7), 2*sqrt(2), 3, sqrt(10)
evalf(result);
1., 1.414213562, 1.732050808, 2., 2.236067977, 2.449489743, 2.645751311, 2.828427124, 3., 3.162277660
3/5+5/9+7/12;
313/180
evalf(%);
1.738888889
Pi;
Pi
evalf(%);
3.141592654
%+5;
8.141592654
p; h;
313/180
32
restart;
p; h; // 重启后 p 和 h的值都没了
p
h
2 代数
3 函数
3.1 函数的定义
函数的定义有两种情况。第一种为一般性定义,格式为 y := f(x)
, 如 w1:=3*x^2+8
,这种方式为一般性定义,不能直接计算,如:
w1 := 3*x^2 + 8;
w1(3);
3x(3) + 8
subs(x = 3, w1); // 等效于 subs(x=4, 3*x^2+8);
35
第二种方式可以直接计算,格式为 y = x -> f(x)
,如 w2:=x->3*x^2+8
,求值的时候直接代入即可,如:
w2 := x -> 3*x^2 + 8;
w2 := x → 3*x^2+8 end proc
w2(3);
35
3.2 常用函数
多项式展开
expand((x + 1)^4);
x^4 + 4*x^3 + 6*x^2 + 4*x + 1
expand(exp(a + ln(b)));
e^a * b
因式分解
factor(3*x^2-10*x-8);
(3*x + 2)*(x - 4)
解一元方程
solve(2*x = 3, x);
3/2
solve(x^2 - 2x + 1 = 0);
1, 1
solve((a^2*c^2 - 4*b^2)/b = a^6*b - 4*a^3*b, c);
-b*(a^3 - 2)/a, b*(a^3 - 2)/a
解多元方程:
eq1 := 2*x + 2*y + z = 2;
eq2 := x + 2*y + z = 1;
eq3 := 3*x + 4*y + 5*z = 6;
solve({eq1, eq2, eq3}, {x, y, z});
{ x = 1, y = -1/2, z = 1 }
序列函数 seq
seq(i, i = 0 .. 6);
[0, 1, 2, 3, 4, 5, 6]
seq(k^2,k=1..100);
1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225,
256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729,
784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444,
1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304,
2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364,
3481, 3600, 3721, 3844, 3969, 4096, 4225, 4356, 4489, 4624,
4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084,
6241, 6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744,
7921, 8100, 8281, 8464, 8649, 8836, 9025, 9216, 9409, 9604,
9801, 10000
X := [seq(i, i = 0 .. 6)];
X := [0, 1, 2, 3, 4, 5, 6]
X;
[0, 1, 2, 3, 4, 5, 6]
连乘 product(f, x=x1…x2)
product(x^2, x = 1 .. 10);
13168189440000
product(x^2, x);
GAMMA(x)^2
求和 sum(f, x=x1…x2)
f := x^2;
f := x^2
sum(f, x);
1/3*x^3 - 1/2*x^2 + 1/6*x
sum(f, x = 1 .. 5);
55
映射 map
f := x -> x^2 + 3;
map(f, [1, 2, 3, 9]);
[4, 7, 12, 84]
map(f, [seq(i^2, i = 3 .. 6)]);
[84, 259, 628, 1299]
map(x -> x^2, sum(k, k = 1 .. 3));
36
其他函数
X := [seq(i, i = 0 .. 6)];
F := x -> x^2 + 2*x + 10;
map(F, X);
[10, 13, 18, 25, 34, 45, 58]
simplify(表达式),
convert(表达式,形式,选项),
取分子numer(分式),
取分母 denom(分式)
# 2D绘制
## 绘制多条二维曲线
e1 := 2*x^2 + 3*x + 4;
e2 := 3*x^2 + 2*x + 3;
e3 := 4*x^2 + 6*x - 2;
plot({e1, e2, e3}, x = -10 .. 10)
4 微积分 Calculas
求导
diff(x^2, x);
2x
diff(ln(x), x);
1/x
积分
int(x^2, x); # 不定积分
x^3/3
int(x^2, x=1..3); # 定积分
26/3
9 嵌入编程
for i to 10 do
printf("i=%+2d and i^(1/2)=%+6.3f\n", i, eval(sqrt(i)));
end do