Note: 04-Apr-2021: This page is abandoned. It's new place is https://fricas.github.io/fricas-notebooks/FriCAS-SkewPolynomial.html Computing with non-commutative polynomialsUnivariate differential caseLet's first consider a differential operator algebra. fricas (1) -> Z ==> Integer Type: Void
fricas P ==> UnivariatePolynomial('x, Type: Void
fricas sigma1: Automorphism P := 1
Type: Automorphism(UnivariatePolynomial(x,
fricas delta1: P -> P := D$P
fricas S1 ==> UnivariateSkewPolynomial('X, Type: Void
fricas x1: S1 := 'x
Type: UnivariateSkewPolynomial?(X,
fricas X1: S1 := 'X
Type: UnivariateSkewPolynomial?(X,
fricas X1*x1
Type: UnivariateSkewPolynomial?(X, Univariate shift caseSimilarly, we can define a shift algebra. fricas xp: P := 'x
Type: UnivariatePolynomial(x,
fricas sigma2: Automorphism P := morphism((p: P): P +-> p(x+1),
Type: Automorphism(UnivariatePolynomial(x,
fricas delta2: P -> P := (p: P): P +-> 0
fricas S2 ==> UnivariateSkewPolynomial('X, Type: Void
fricas x2: S2 := 'x
Type: UnivariateSkewPolynomial?(X,
fricas X2: S2 := 'X
Type: UnivariateSkewPolynomial?(X,
fricas X2*x2
Type: UnivariateSkewPolynomial?(X, Multivariate caseThe multivariate case is only sligthly more complicated. Let us here use a field as coefficient domain. fricas Q ==> Fraction UnivariatePolynomial('q, Type: Void
fricas VM ==> OrderedVariableList ['y, Type: Void
fricas V ==> OrderedVariableList ['Y, Type: Void
fricas M ==> SparseMultivariatePolynomial(Q, Type: Void
fricas K := Fraction M
Type: Type
fricas sigmay: Automorphism K := 1
Type: Automorphism(Fraction(SparseMultivariatePolynomial?(Fraction(UnivariatePolynomial(q,
fricas yv: VM := 'y
fricas derivy(m: M): M == D(m, Type: Void
fricas deltay(k: K): K == D(k, Type: Void
fricas wm: M := 'w
Type: SparseMultivariatePolynomial?(Fraction(UnivariatePolynomial(q,
fricas sigmaw1(k: K): K == eval(k, Type: Void
fricas sigmaw2(k: K): K == eval(k, Type: Void
fricas sigmaw: Automorphism K := morphism(sigmaw1, fricas Compiling function sigmaw1 with type Fraction( SparseMultivariatePolynomial(Fraction(UnivariatePolynomial(q, fricas Compiling function sigmaw2 with type Fraction( SparseMultivariatePolynomial(Fraction(UnivariatePolynomial(q,
Type: Automorphism(Fraction(SparseMultivariatePolynomial?(Fraction(UnivariatePolynomial(q,
fricas um: M := 'u; qQ: Q := 'q::Q; qQ1 := inv qQ
Type: Fraction(UnivariatePolynomial(q,
fricas sigmau1(k: K): K == eval(k, Type: Void
fricas sigmau2(k: K): K == eval(k, Type: Void
fricas sigmau: Automorphism K := morphism(sigmau1, fricas Compiling function sigmau1 with type Fraction( SparseMultivariatePolynomial(Fraction(UnivariatePolynomial(q, fricas Compiling function sigmau2 with type Fraction( SparseMultivariatePolynomial(Fraction(UnivariatePolynomial(q,
Type: Automorphism(Fraction(SparseMultivariatePolynomial?(Fraction(UnivariatePolynomial(q,
fricas deltawu(k: K): K == 0 Type: Void
fricas YV: V := index(1)$V; WV: V := index(2)$V; fricas sigma(v: V): Automorphism K ==_ if v=YV then sigmay else if v=WV then sigmaw else sigmau Type: Void
fricas delta(v: V): K -> K == if v=YV then deltay else deltawu Type: Void
fricas T ==> SparseMultivariateSkewPolynomial(K, Type: Void
fricas y: T := 'y::K::T; w: T := 'w::K::T; u: T := 'u::K::T; q: T := qQ::K::T; fricas Compiling function sigma with type OrderedVariableList([Y, fricas Compiling function delta with type OrderedVariableList([Y, Type: SparseMultivariateSkewPolynomial?(Fraction(SparseMultivariatePolynomial?(Fraction(UnivariatePolynomial(q,
fricas Y: T := monomial(1,
Type: SparseMultivariateSkewPolynomial?(Fraction(SparseMultivariatePolynomial?(Fraction(UnivariatePolynomial(q,
fricas W: T := monomial(1,
Type: SparseMultivariateSkewPolynomial?(Fraction(SparseMultivariatePolynomial?(Fraction(UnivariatePolynomial(q,
fricas U: T := monomial(1,
Type: SparseMultivariateSkewPolynomial?(Fraction(SparseMultivariatePolynomial?(Fraction(UnivariatePolynomial(q,
fricas t: T := y*w*u*q
Type: SparseMultivariateSkewPolynomial?(Fraction(SparseMultivariatePolynomial?(Fraction(UnivariatePolynomial(q,
fricas Y*t fricas Compiling function deltay with type Fraction( SparseMultivariatePolynomial(Fraction(UnivariatePolynomial(q, fricas Compiling function derivy with type SparseMultivariatePolynomial( Fraction(UnivariatePolynomial(q,
Type: SparseMultivariateSkewPolynomial?(Fraction(SparseMultivariatePolynomial?(Fraction(UnivariatePolynomial(q,
fricas W*t fricas Compiling function deltawu with type Fraction( SparseMultivariatePolynomial(Fraction(UnivariatePolynomial(q,
Type: SparseMultivariateSkewPolynomial?(Fraction(SparseMultivariatePolynomial?(Fraction(UnivariatePolynomial(q,
fricas U*t
Type: SparseMultivariateSkewPolynomial?(Fraction(SparseMultivariatePolynomial?(Fraction(UnivariatePolynomial(q,
fricas )set message time on Type: SparseMultivariateSkewPolynomial?(Fraction(SparseMultivariatePolynomial?(Fraction(UnivariatePolynomial(q,
fricas Time: 0.27 (EV) = 0.27 sec (X1+x1+1)^100; Type: UnivariateSkewPolynomial?(X,
fricas Time: 0.18 (EV) = 0.19 sec (X2+x2+1)^100; Type: UnivariateSkewPolynomial?(X,
fricas Time: 0.27 (IN) + 0.46 (EV) + 0.03 (OT) = 0.77 sec |