Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Views: 1794
Image: ubuntu2004
1
load("__common__.sage")
2
3
def generator():
4
# create a 3x5,4x4,5x3 matrix
5
rows = randrange(3,6)
6
columns = 8-rows
7
8
#start with nice RREF
9
max_number_of_pivots = min(rows,columns)-1
10
number_of_pivots = randrange(2,max_number_of_pivots+1)
11
A = random_matrix(ZZ,rows,columns,algorithm='echelonizable',rank=number_of_pivots,upper_bound=13)
12
13
#Create an almost-RREF matrix by doing one row op to an RREF
14
15
rowop = choice(["elementary","diagonal","permutation"])
16
s=ZZ(choice([randrange(2,8)])*int(choice([-1,1])))
17
if rowop=="elementary":
18
r=randrange(0,number_of_pivots)
19
rr=choice(list(range(0,r))+list(range(r+1,number_of_pivots)))
20
E=elementary_matrix(rows, row1=r, row2=rr, scale=s)
21
if rowop=="diagonal":
22
E=elementary_matrix(rows, row1=randrange(0,number_of_pivots), scale=s)
23
if rowop=="permutation":
24
r=randrange(0,number_of_pivots)
25
rr=choice(list(range(0,r))+list(range(r+1,number_of_pivots)))
26
E=elementary_matrix(rows, row1=r, row2=rr)
27
28
B = E*random_matrix(ZZ,rows,columns,algorithm='echelonizable',rank=number_of_pivots,upper_bound=13).rref()
29
30
return {
31
"A": A,
32
"rref": A.rref(),
33
"B": B,
34
"rowop": rowop,
35
"Brref": (B==B.rref())
36
}
37
38