Maxima 中的基本类型布尔值
Primitive type Boolean in Maxima
我对 Maxima 很陌生,但我知道 Java。我需要编写一个在 Java:
中这样写的 Maxima 函数
private boolean isEchelon() {
for (int i = 0; i < headElementColumnIndexes.length; i++) {
int current = headElementColumnIndexes[i];
for (int j = i + 1; j < headElementColumnIndexes.length; j++)
if (current == headElementColumnIndexes[j])
return false;
}
return true;
}
甚至可以在 Maxima 中编写 returns 布尔值的函数吗?我可以问一些例子吗?
是的,这是可能的。内置布尔函数的 Maxima 称为谓词,并且(通常)以 "p" 结尾。示例:
(%i1) integerp (0);
(%o1) true
(%i2) integerp (%pi);
(%o2) false
您也可以编写自己的谓词。
(%i1) even_prime(n) := evenp(n) and primep(n);
(%o1) even_prime(n) := evenp(n) and primep(n)
(%i2) even_prime(3);
(%o2) false
(%i3) even_prime(2);
(%o3) true
一开始显式 return 布尔值可能更容易,因为这更接近 java 语法。
(%i1) even_prime(n) := if evenp(n) and primep(n) then true else false;
(%o1) even_prime(n) := if evenp(n) and primep(n) then true else false;
(%i2) even_prime(4);
(%o2) false
Maxima 的一个特点是二进制数值关系(=
、<
等)不会计算为布尔值。
(%i1) 4 = 5;
(%o1) 4 = 5
(%i2) 5 > 3;
(%o2) 5 > 3
要强制将此类关系计算为布尔值,请使用 is
函数。
(%i1) is (4 = 5);
(%o1) false
(%i2) is (5 > 3);
(%o2) true
我对 Maxima 很陌生,但我知道 Java。我需要编写一个在 Java:
中这样写的 Maxima 函数private boolean isEchelon() {
for (int i = 0; i < headElementColumnIndexes.length; i++) {
int current = headElementColumnIndexes[i];
for (int j = i + 1; j < headElementColumnIndexes.length; j++)
if (current == headElementColumnIndexes[j])
return false;
}
return true;
}
甚至可以在 Maxima 中编写 returns 布尔值的函数吗?我可以问一些例子吗?
是的,这是可能的。内置布尔函数的 Maxima 称为谓词,并且(通常)以 "p" 结尾。示例:
(%i1) integerp (0);
(%o1) true
(%i2) integerp (%pi);
(%o2) false
您也可以编写自己的谓词。
(%i1) even_prime(n) := evenp(n) and primep(n);
(%o1) even_prime(n) := evenp(n) and primep(n)
(%i2) even_prime(3);
(%o2) false
(%i3) even_prime(2);
(%o3) true
一开始显式 return 布尔值可能更容易,因为这更接近 java 语法。
(%i1) even_prime(n) := if evenp(n) and primep(n) then true else false;
(%o1) even_prime(n) := if evenp(n) and primep(n) then true else false;
(%i2) even_prime(4);
(%o2) false
Maxima 的一个特点是二进制数值关系(=
、<
等)不会计算为布尔值。
(%i1) 4 = 5;
(%o1) 4 = 5
(%i2) 5 > 3;
(%o2) 5 > 3
要强制将此类关系计算为布尔值,请使用 is
函数。
(%i1) is (4 = 5);
(%o1) false
(%i2) is (5 > 3);
(%o2) true