Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
3774 views
ubuntu2004
1
load("__common__.sage")
2
3
def generator():
4
# create a mxn standard matrix
5
columns = 4
6
rows = 7-columns
7
rank = randrange(2,4)
8
nullity = columns-rank
9
A = simple_random_matrix_of_rank(rank,rows=rows,columns=columns)
10
11
# construct variables
12
xs=choice([
13
[var("x_"+str(i+1)) for i in range(columns)],
14
[var("x"),var("y"),var("z"),var("zw",latex_name="w")][:columns],
15
])
16
xs_vector = column_matrix(vector(xs))
17
free_vars = [var("a"), var("b"), var("c"), var("d")]
18
19
#Get kernel/image
20
kernel_basis=A.right_kernel(basis='pivot').basis()
21
kernel_rep=column_matrix(sum([free_vars[i]*kernel_basis[i] for i in range(nullity)]))
22
kernel_predicate = [LatexExpr(",".join([latex(v) for v in free_vars[:nullity]])),LatexExpr(r"\in\mathbb{R}")]
23
kernel = setBuilder(kernel_rep,kernel_predicate)
24
image_basis=[A.column(i) for i in A.pivots()]
25
image_rep=column_matrix(sum([free_vars[i]*image_basis[i] for i in range(rank)]))
26
image_predicate = [LatexExpr(",".join([latex(v) for v in free_vars[:rank]])),LatexExpr(r"\in\mathbb{R}")]
27
image = setBuilder(image_rep,image_predicate)
28
29
30
return {
31
"columns": columns,
32
"rows": rows,
33
"Tvar": A*xs_vector,
34
"varvector": xs_vector,
35
"matrix": A,
36
"rref": A.rref(),
37
"image_basis": vectorSet(image_basis),
38
"kernel_basis": vectorSet(kernel_basis),
39
"image": image,
40
"kernel": kernel,
41
"rank": rank,
42
"nullity": nullity,
43
}
44
45