Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Maxima/Numbers

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Check (%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 Random numbers bfloat(random(10^fpprec) / 10^fpprec); /* random bfloat with fpprec decimal digits in the range 0 to 1 */ Number types Binary numbers (%i1) ibase; (%o1) 10 (%i2) obase; (%o2) 10 (%i3) ibase:2; (%o3) 2 (%i4) x=1001110; (%o4) x=78 Complex numbers Argument Principial value of argument of complex number in turns carg produces results in the range (-pi, pi] . It can be mapped to [0, 2*pi) by adding 2*pi to the negative values 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) )$ On can order list of complex points according to it's argument : l2_ordered: sort(l2, lambda([z1,z2], is(carg(z1) < carg(z2))))$ rational numbers rat ratp Rationalize with limit denominator:stackoverflow question : rationalize-number-with-limit-denominator 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))$ Predicate functions (%i1) is(0=0.0); (%o1) false Compare : (%i1) a:0.0$ (%i2)is(equal(a,0)); (%o2) true List of predicate functions ( see p at the end ) : abasep alphacharp alphanumericp atom bfloatp blockmatrixp cequal cequalignore cgreaterp cgreaterpignore charp clessp clesspignore complex_number_p from to_poly package constantp constituent diagmatrixp digitcharp disjointp elementp emptyp evenp featurep floatnump ( compare : isreal_p) if integerp intervalp is isreal_p from to_poly package 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 See also : declaremaxima manual : Category Declarations-and-inferences property: rational, irrational, real, imaginary, complex, even, odd, decreasing, increasing evenfun, oddfun Number Theory There are functions and operators useful with integer numbers Elementary number theory In Maxima there are some elementary functions like the factorial n! and the double factorial n!! defined as where is the greatest integer less than or equal to Divisibility Some of the most important functions for integer numbers have to do with divisibility: gcd, ifactor, mod, divisors... all of them well documented in help. you can view it with the '?' command. Function ifactors takes positive integer and returns a list of pairs : prime factor and its exponent. For example : a:ifactors(8); [[2,3]] It means that : Other Functions Continuus fractions : (%i6) cfdisrep([1,1,1,1]); (%o6) 1+1/(1+1/(1+1/1)) (%i7) float(%), numer; (%o7) 1.666666666666667