Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Views: 1794
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
# construct variables
14
xs=vector([var("x_"+str(i+1)) for i in range(0,columns)])
15
16
# construct system
17
#system="<md>"
18
#for r in A.rows():
19
# system+="<mrow>"+latex(r*xs)+"&=0</mrow>"
20
#system+="</md>"
21
22
23
#Get solution set
24
free_vars = [var("a"), var("b"), var("c"), var("d")]
25
basis=A.right_kernel(basis='pivot').basis()
26
27
solutions = column_matrix(zero_vector(ZZ, len(A.columns())))
28
# add span of homogeneous general solution
29
predicate = []
30
for v in basis:
31
free_var = free_vars.pop(0)
32
predicate.append(free_var)
33
predicate.append(",")
34
solutions += free_var*column_matrix(v)
35
if (len(predicate) > 0):
36
predicate.pop() #Remove extra comma
37
predicate.append(LatexExpr(r"\in\mathbb{R}"))
38
solset = setBuilder(solutions,predicate)
39
else:
40
solset = setBuilder(solutions)
41
42
return {
43
"system": systemEquations(A).equations,
44
"alignCols": A.ncols()+1,
45
"basis": vectorSet(basis),
46
"solutions": solset,
47
"matrix": A.augment( vector([0 for i in range(0,A.nrows())]),true),
48
"rref":A.augment( vector([0 for i in range(0,A.nrows())]),true).rref(),
49
}
50
51