Maple中的evalf与evalhf
evalf
- 可作用于单值
- 可作用于List
- 可作用于Set
- 可作用于Vector(<..>)
- 可作用于Matrix(<..|..|..>)
evalhf
- 可作用于单值
- 可作用于Vector(<..>)
- 可作用于Matrix(<..|..|..>)
- 不可作用于List
- 不可作用于Set
Maple编程中的常用的参数限定
positive 正数
negative 负数
negzero 0或负0
poszero 0或正0
integer 整数
nonnegint 非负整数
nonposint 非正整数
negint 负整数
posint 正整数
Maple中的嵌套编程
Maple中也可嵌套编程。求一个阶乘吧!
f := proc (k::nonposint)
if 0 < k then
return f(k-1)*k;
elif k = 0 then
return 1;
end if;
end proc;
即可。
Maple学习: 函数的快速定义
函数与过程的定义一般是使用proc...end proc来定义,但在定义较为简单的函数时,Maple提供了更为便捷的方式。例如:
- 无参数
定义过程: f:=()->"这是一个无参数函数定义";
调用过程: f();
- 单参数
定义过程: f:=(x)->x^2+x+1; 或 f:=x->x^2+x+1;
调用过程: f(2);
- 多参数
定义过程: f:=(x,y,z)->x^2+y+z;
调用过程: f(1,2,3);
另外,"->"后面的表达式可以是if语句(在if语句中可嵌套其他的语句)。例如:
定义过程: f:=(x,y,z)->if x > 0 then x^2+y+z else x+y+z end if;
调用过程: f(1,2,3);
或 s:=1,2,3; f(s); # s为表达式序列
参数表中也可指定参数的类型。
Maple中查看某些系数函数的代码
Maple的大部分系统函数是用Maple语言编写的,只有Maple内核的函数是用其他语言编译完成的,我们可以使用Maple命令来查看系统函数的函数体,从而可以参考其编写方式,当然内核函数的函数体是看不到的。
首先运行: interface(verboseproc = 2);
再运行: print(sin);
则可以看到sin函数的代码.
另外如果是我们自己写的函数, 我们直接用print(函数名)来查看.
Maple当中的三种引号
- 双引号(double quote symbol, "): 表示字符串的定界符
> str := "This is a string";
"This is a string"
- 右单引号(right single quotes, ‘ ‘): 表示非赋值表达式或是延迟表达式的求值
> x := 2; y := 3;
> f := x+y; g := ‘x+y‘; ‘f‘; f;
5
x + y
f
5
> a := 1;
1
> ‘‘a‘‘;
‘a‘
> ‘a‘;
a
> a;
1
> ‘2‘;
2
> dependent := 2;
type(s, ‘dependent({s, t})‘);
true
> type(s, dependent({s, t}));
false
> x := 5;
5
> x := ‘x‘;
x
> x;
x
- 左单引号(left single quote symbol , `)
* 一对(` `)之间的字符串序列可以形成一个name
* 对于一个合法的Maple的name, 加不加(` `)效果是一样的
* 对于保留字, 加了(` `)之后可以成为name, 不加的话则不可以. 这在type里面用的挺多的
> `This is a name!` := 1; # 加了(` `), 成为name
> `This is a name!`;
1
> type(m+n, +); # +没有加引号, 当作运算符或保留字处理
> type(m+n, `+`); # +加引号, 当作name处理
true
>a, `a`; # a是Maple中一个合法的name, 加不加引号效果一样
1, 1