Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Views: 1794
Image: ubuntu2004
1
load("__common__.sage")
2
3
def generator():
4
# random row scaling
5
row = randrange(0,4)
6
scale = randrange(2,6)*choice([-1,1])
7
scale_matrix = identity_matrix(4).with_rescaled_row(row,scale)
8
scale_op = rowOp("diagonal",row+1,row+1,scale)
9
# random row swapping
10
rows = sample([0,1,2,3],2)
11
shuffle(rows)
12
swap_matrix = identity_matrix(4).with_swapped_rows(rows[0],rows[1])
13
swap_op = rowOp("permutation",rows[0]+1, rows[1]+1)
14
# random row adding
15
rows = sample([0,1,2,3],2)
16
shuffle(rows)
17
scale = randrange(2,6)*choice([-1,1])
18
add_matrix = identity_matrix(4).with_added_multiple_of_row(rows[0],rows[1],scale)
19
add_op = rowOp("elementary",rows[0]+1,rows[1]+1,scale)
20
21
#choose two random ops
22
ops = sample([0,1,2],2)
23
shuffle(ops)
24
row_op1 = [scale_op,swap_op,add_op][ops[0]]
25
mat1 = [scale_matrix,swap_matrix,add_matrix][ops[0]]
26
row_op2 = [scale_op,swap_op,add_op][ops[1]]
27
mat2 = [scale_matrix,swap_matrix,add_matrix][ops[1]]
28
29
30
name1, name2 = sample(["B","C","M","N","P","Q"],2)
31
32
#randomly swap order of ops
33
swapped = choice([True,False])
34
35
36
return {
37
"row_op1": row_op1,
38
"row_op2": row_op2,
39
"mat1": mat1,
40
"mat2": mat2,
41
"name1": name1,
42
"name2": name2,
43
"swapped": swapped
44
}
45
46
47
48