Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
3774 views
ubuntu2004
1
load("__common__.sage")
2
3
def generator():
4
5
6
#Choose omitted op
7
omitted_op = choice([0,1,2])
8
if omitted_op==0: #Omit diagonal
9
rows=sample([0,1,2,3],3)
10
mat1 = identity_matrix(4).with_swapped_rows(rows[0],rows[1])
11
row_op1 = rowOp("permutation",rows[0]+1, rows[1]+1)
12
13
scale = randrange(2,6)*choice([-1,1])
14
mat2 = identity_matrix(4).with_added_multiple_of_row(rows[1],rows[2],scale)
15
row_op2 = rowOp("elementary",rows[1]+1,rows[2]+1,scale)
16
17
if omitted_op==1: #Omit permutation
18
rows=sample([0,1,2,3],2)
19
scale = randrange(2,6)*choice([-1,1])
20
mat1 = identity_matrix(4).with_rescaled_row(rows[0],scale)
21
row_op1 = rowOp("diagonal",rows[0]+1,rows[0]+1,scale)
22
23
scale = randrange(2,6)*choice([-1,1])
24
mat2 = identity_matrix(4).with_added_multiple_of_row(rows[0],rows[1],scale)
25
row_op2 = rowOp("elementary",rows[0]+1,rows[1]+1,scale)
26
27
if omitted_op==2: #Omit elementary
28
rows=sample([0,1,2,3],2)
29
scale = randrange(2,6)*choice([-1,1])
30
mat1 = identity_matrix(4).with_rescaled_row(rows[0],scale)
31
row_op1 = rowOp("diagonal",rows[0]+1,rows[0]+1,scale)
32
33
mat2 = identity_matrix(4).with_swapped_rows(rows[0],rows[1])
34
row_op2 = rowOp("permutation",rows[0]+1, rows[1]+1)
35
36
#Swap presentation order half the time
37
if choice([True,False]):
38
row_op1,row_op2 = row_op2,row_op1
39
mat1,mat2 = mat2,mat1
40
41
42
name1, name2 = sample(["B","C","M","N","P","Q"],2)
43
44
#randomly swap order of ops
45
swapped = choice([True,False])
46
47
48
return {
49
"row_op1": row_op1,
50
"row_op2": row_op2,
51
"mat1": mat1,
52
"mat2": mat2,
53
"name1": name1,
54
"name2": name2,
55
"swapped": swapped
56
}
57
58
59
60