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