Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Views: 1794
Image: ubuntu2004
1
load("__common__.sage")
2
3
def generator():
4
# create a mxn standard matrix
5
columns = randrange(3,4)
6
rows = 7-columns
7
A = random_matrix(QQ,rows,columns,algorithm='echelonizable',rank=min(rows,columns)-1,upper_bound=9)
8
9
# construct variables
10
xs=choice([
11
column_matrix(vector([var("x_"+str(i+1)) for i in range(0,columns)])),
12
column_matrix(vector([var("x"),var("y"),var("z"),var("zw",latex_name="w")][0:columns])),
13
])
14
15
#Get kernel set
16
free_vars = [var("a"), var("b"), var("c"), var("d")]
17
kernelbasis=A.right_kernel(basis='pivot').basis()
18
19
solutions = column_matrix(zero_vector(ZZ, len(A.columns())))
20
# add span of homogeneous general solution
21
predicate = []
22
for v in kernelbasis:
23
free_var = free_vars.pop(0)
24
predicate.append(free_var)
25
predicate.append(",")
26
solutions += free_var*column_matrix(v)
27
if (len(predicate) > 0):
28
predicate.pop() #Remove extra comma
29
predicate.append(LatexExpr(r"\in\mathbb{R}"))
30
kernel = setBuilder(solutions,predicate)
31
else:
32
kernel = setBuilder(solutions)
33
34
#Get image basis
35
imagebasis=[A.column(i) for i in A.pivots()]
36
37
return {
38
"columns": columns,
39
"rows": rows,
40
"Tvar": A*xs,
41
"varvector": xs,
42
"matrix": A,
43
"rref": A.rref(),
44
"imagebasis": vectorSet(imagebasis),
45
"kernelbasis": vectorSet(kernelbasis),
46
"kernel": kernel,
47
"rank": len(imagebasis),
48
"nullity": len(kernelbasis)
49
}
50
51