Maxima/数字
外观
< Maxima
(%i1) load(to_poly); (%o1) home/a/maxima/share/to_poly_solve/to_poly.lisp (%i2) r; (%o2) r (%i3) isreal_p(r); (%o3) true /* When I use unspecified variables, Maxima seems to assume that they are real */ (%i4) z:x+y*%i; (%o4) %i y + x (%i5) isreal_p(z); (%o5) isreal_p(%i y) /* maxima can't check if it is real or not */ (%i6) isreal_p(x); (%o6) true (%i7) isreal_p(y); (%o7) true (%i8) complex_number_p(z); (%o8) false (%i9) declare(z, complex); (%o9) done (%i10) complex_number_p(z); (%o10) false /* still not complex */ true
bfloat(random(10^fpprec) / 10^fpprec); /* random bfloat with fpprec decimal digits in the range 0 to 1 */
(%i1) ibase; (%o1) 10 (%i2) obase; (%o2) 10 (%i3) ibase:2; (%o3) 2 (%i4) x=1001110; (%o4) x=78
复数辐角的主值,用 carg 函数产生 (-pi, pi] 范围内的结果。可以通过将负值加上 2*pi 映射到 [0, 2*pi)
carg_t(z):= block( [t], t:carg(z)/(2*%pi), /* now in turns */ if t<0 then t:t+1, /* map from (-1/2,1/2] to [0, 1) */ return(t) )$
可以根据复数点的辐角来排序复数点列表
l2_ordered: sort(l2, lambda([z1,z2], is(carg(z1) < carg(z2))))$
- rat
- ratp
有理化,限制分母:[1]
limit_denominator(x, max_denominator):= block([p0, q0, p1, q1, n, d, a, q2, k, bound1, bound2, ratprint: false], [p0, q0, p1, q1]: [0, 1, 1, 0], [n, d]: ratexpand([ratnum(x), ratdenom(x)], 0), if d <= max_denominator then x else (catch( do block( a: quotient(n, d), q2: q0+a*q1, if q2 > max_denominator then throw('done), [p0, q0, p1, q1]: [p1, q1, p0+a*p1, q2], [n, d]: [d, n-a*d])), k: quotient(max_denominator-q0, q1), bound1: (p0+k*p1)/(q0+k*q1), bound2: p1/q1, if abs(bound2 - x) <= abs(bound1 - x) then bound2 else bound1))$
(%i1) is(0=0.0); (%o1) false
比较
(%i1) a:0.0$ (%i2)is(equal(a,0)); (%o2) true
谓词函数列表(参见末尾的 p)
- abasep
- alphacharp
- alphanumericp
- atom
- bfloatp
- blockmatrixp
- cequal
- cequalignore
- cgreaterp
- cgreaterpignore
- charp
- clessp
- clesspignore
- 来自 to_poly 包的 complex_number_p
- constantp
- constituent
- diagmatrixp
- digitcharp
- disjointp
- elementp
- emptyp
- evenp
- featurep
- floatnump (比较:isreal_p)
- if
- integerp
- intervalp
- is
- 来自 to_poly 包的 isreal_p
- lcharp
- listp
- listp
- lowercasep
- mapatom
- matrixp
- matrixp
- maybe
- member
- nonnegintegerp
- nonscalarp
- numberp
- oddp
- operatorp
- ordergreatp
- orderlessp
- picture_equalp
- picturep
- poly_depends_p
- poly_grobner_subsetp
- polynomialp
- prederror
- primep
- ratnump
- ratp
- scalarp
- sequal
- sequalignore
- setequalp
- setp
- stringp
- subsetp
- subvarp
- symbolp
- symmetricp
- taylorp
- unknown
- uppercasep
- zeroequiv
- zeromatrixp
- zn_primroot_p
参见
- declare[2]
- property
- 有理数、无理数、实数、虚数、复数
- 偶数、奇数
- 递减、递增
- evenfun、oddfun
- property
有一些函数和运算符对整数很有用
在 Maxima 中,有一些初等函数,例如阶乘 n!和双阶乘 n!!定义为 其中 是不大于 的最大整数
对整数最重要的函数中的一些与整除性有关
gcd, ifactor, mod, divisors...
它们在帮助中都有很好的文档。您可以使用“?”命令查看它。
函数 ifactors 接受正整数并返回一对列表:素数因子及其指数。例如
a:ifactors(8); [[2,3]]
这意味着:
连分数
(%i6) cfdisrep([1,1,1,1]); (%o6) 1+1/(1+1/(1+1/1)) (%i7) float(%), numer; (%o7) 1.666666666666667