Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Views: 19480
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(QQ,rows,columns,algorithm='echelonizable',rank=number_of_pivots,upper_bound=13)
12
13
#Get solution set
14
free_vars = [var("a"), var("b"), var("c"), var("d")]
15
basis=A.right_kernel(basis='pivot').basis()
16
17
solutions = column_matrix(zero_vector(ZZ, len(A.columns())))
18
# add span of homogeneous general solution
19
predicate = []
20
for v in basis:
21
free_var = free_vars.pop(0)
22
predicate.append(free_var)
23
predicate.append(",")
24
solutions += free_var*column_matrix(v)
25
if (len(predicate) > 0):
26
predicate.pop() #Remove extra comma
27
predicate.append(LatexExpr(r"\in\mathbb{R}"))
28
solset = setBuilder(solutions,predicate)
29
else:
30
solset = setBuilder(solutions)
31
32
return {
33
"system": latex_system_from_matrix(A),
34
"alignCols": A.ncols()+1,
35
"basis": vectorSet(basis),
36
"solutions": solset,
37
"matrix": A.augment( vector([0 for i in range(0,A.nrows())]),true),
38
"rref":A.augment( vector([0 for i in range(0,A.nrows())]),true).rref(),
39
}
40
41