Hi Sid, two points:

1.VectorSpaceBasis is not exposed, so interpreter cannot find its functions.

2. coordinatesIfCan requires as second argument a basis, i.e. an element of VectorSpaceBasis(F), not just a list of vectors.

Here is the corrected code:

(1) -> )r isBasis
)expose VectorSpaceBasis

   VectorSpaceBasis is already explicitly exposed in frame frame1
F ==> PF 11

Type: Void
VF ==> Vector F

Type: Void
(v1,v2,v3) : VF

Type: Void
v1 := [1,1,2]


   (4)  [1, 1, 2]
Type: Vector(PrimeField(11))
v2 := [2,1,2]


   (5)  [2, 1, 2]
Type: Vector(PrimeField(11))
v3 := [1,2,1]


   (6)  [1, 2, 1]
Type: Vector(PrimeField(11))
M : Matrix F := [v1,v2,v3]


        +1  1  2+
        |       |
   (7)  |2  1  2|
        |       |
        +1  2  1+
Type: Matrix(PrimeField(11))
rank M


   (8)  3
Type: PositiveInteger
isBasis?([v1,v2,v3])


   (9)  true
Type: Boolean
w : VF := [2,3,10]


   (10)  [2, 3, 10]
Type: Vector(PrimeField(11))
b := basis [v1,v2,v3]


   (11)  VectorSpace [[1, 1, 2], [2, 1, 2], [1, 2, 1]]
Type: VectorSpaceBasis(PrimeField(11))
coordinatesIfCan(w,b)


   (12)  [8, 5, 6]
Type: Union(Vector(PrimeField(11)),...)




Am 12.12.23 um 16:18 schrieb Sid Andal:
The function isBasis?() returns with non-trivial linear combination when
applied to linearly independent vectors:

(1) -> F ==> PF 11
(2) -> VF ==> Vector F
(9) -> (v1,v2,v3) : VF

(11) -> v1 := [1,1,2]

   (11)  [1, 1, 2]

(12) -> v2 := [2,1,2]

   (12)  [2, 1, 2]

(13) -> v3 := [1,2,1]

   (13)  [1, 2, 1]

(14) -> M : Matrix F := [v1,v2,v3]

         ┌1  1  2┐
         │           │
         │2  1  2│
         │           │
         └1  2  1┘

(15) -> rank M

   (15)  3

Applying isBasis:

(17) -> isBasis?([v1,v2,v3])

   (17)  isBasis?
                 1, 2, 1

It should've returned 0,0,0.

Now, trying to express a vector, w, in terms of the new basis {v1,v2,v3}
also runs into problem:

(16) -> w : VF := [2,3,10]

   (16)  [2, 3, 10]

(17) -> coordinatesIfCan(w,[v1,v2,v3])
   There are no exposed library operations named coordinatesIfCan but
      there is one unexposed operation with that name. Use HyperDoc
      Browse or issue
                        )display op coordinatesIfCan
      to learn more about the available operation.

   Cannot find a definition or applicable library operation named
      coordinatesIfCan with argument type(s)
                           Vector(PrimeField(11))
                        List(Vector(PrimeField(11)))

      Perhaps you should use "@" to indicate the required return type,
      or "$" to specify which version of the function you need.

Are the two functions applied the wrong way in the above cases?

Thanks,
SWA
--
You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/fricas-devel/eb43990c-c999-476d-b81e-5888a43066dan%40googlegroups.com <https://groups.google.com/d/msgid/fricas-devel/eb43990c-c999-476d-b81e-5888a43066dan%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
Mit freundlichen Grüßen

Johannes Grabmeier

Prof. Dr. Johannes Grabmeier,
Köckstraße 1, D-94469 Deggendorf
Tel. +49-(0)-991-2979584, Tel. +49-(0)-151-681-70756
Fax: +49-(0)-991-2979592

--
You received this message because you are subscribed to the Google Groups "FriCAS - 
computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/fricas-devel/ef3c6b92-1797-4623-a04f-18427588ae1c%40grabmeier.net.

Reply via email to