Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Views: 1794
Image: ubuntu2004
1
load("__common__.sage")
2
3
def generator():
4
context=choice(["polynomial","matrix"])
5
task=choice(["independent","span"])
6
7
if task=="independent":
8
n=4
9
vec=[]
10
for i in range(0,n):
11
vec.append(vector([ randrange(-6,6), randrange(-6,6), randrange(-6,6), randrange(-6,6)]))
12
13
#Pick if yes a linear combination or no
14
independent = choice([false,true])
15
16
#If dependent, Generate the 4th vector and sometimes the 3rd vector
17
if independent==0:
18
d = choice( range(3,n))
19
vec[d]=randrange(-3,3)*vec[0]+randrange(-3,3)*vec[1]+randrange(-3,3)*vec[2]
20
if choice([false,true]):
21
d = choice( range(2,n))
22
vec[d]=randrange(-3,3)*vec[0]+randrange(-3,3)*vec[1]
23
24
A=matrix(vec).transpose()
25
if rank(A)<n:
26
independent = false
27
else:
28
independent = true
29
30
result=independent
31
32
if task=="span":
33
#Pick How many vectors in R4
34
n=choice([4,5,6])
35
vec=[]
36
for i in range(0,n):
37
vec.append(vector([ randrange(-5,5),randrange(-5,5), randrange(-5,5),randrange(-5,5)]))
38
39
#Pick if yes a spanning set or no
40
span = choice([false,true])
41
42
#If they should not span, generate columns 3 or 4 through n.
43
if span==false:
44
if choice([false,true]):
45
vec[2] = randrange(-3,3)*vec[0]+randrange(-4,4)*vec[1]
46
for i in range (3,n):
47
vec[3] = randrange(-3,3)*vec[0]+randrange(-3,3)*vec[1]+randrange(-3,3)*vec[2]
48
49
#Constructor uses vecs as rows
50
A=matrix(vec).transpose()
51
if rank(A)<4:
52
span = false
53
else:
54
span = true
55
56
result=span
57
58
#Create equation
59
if context=="polynomial":
60
polys=[ sum([v[i]*x^i for i in range(0,len(v))]) for v in vec ]
61
vset=polys
62
vars=[var("y_"+str(i+1)) for i in range(0,len(vec))]
63
lc=linearCombination(vars,polys,parentheses=true)
64
if task=="independent":
65
eq=Equation(lc,"0")
66
else:
67
eq=lc
68
69
if context=="matrix":
70
matrices = [ matrix(ZZ,2,v) for v in vec]
71
vset=matrices
72
vars=[var("y_"+str(i+1)) for i in range(0,len(vec))]
73
lc=linearCombination(vars,matrices)
74
if task=="independent":
75
eq=Equation(lc,matrix(ZZ,2)) #matrix() defaults to zero matrix
76
else:
77
eq=lc
78
79
return {
80
"task": task,
81
"context": context,
82
"set": bracedSet(vset),
83
"equation": eq,
84
"result": result,
85
"matrix": A,
86
"rref": A.rref(),
87
}
88