load("__common__.sage")
def generator():
n = choice([3,4,5])
vec=[]
for i in range(0,n):
vec.append(vector([ randrange(-5,5), randrange(-3,3), randrange(-5,5), randrange(-3,3)]))
lincombo = choice([false,true])
combovector=[]
if lincombo==1:
combovector=randrange(-3,3)*vec[0]+randrange(-3,3)*vec[1]+randrange(-3,3)*vec[2]
else:
combovector = vector([ randrange(-10,10), randrange(-10,10), randrange(-10,10), randrange(-10,10)])
if choice([false,true]):
vec[2]=randrange(-3,3)*vec[0]+randrange(-3,3)*vec[1]
if n>3:
vec[3]=randrange(-3,3)*vec[0]+randrange(-3,3)*vec[1]+randrange(-3,3)*vec[2]
if n>4:
vec[4]=randrange(-3,3)*vec[0]+randrange(-3,3)*vec[1]+randrange(-3,3)*vec[2]
A=column_matrix([vec[0],vec[1],vec[2]])
while 3 not in A.augment(combovector).pivots():
combovector = vector([ randrange(-10,10), randrange(-10,10), randrange(-10,10), randrange(-10,10)])
xs=[var("x_"+str(i+1)) for i in range(0,n)]
A=matrix(vec).transpose().augment(combovector,subdivide=true)
return {
"lc": lincombo,
"veclist": vectorList(vec),
"combovector": column_matrix(combovector),
"statement": choice([true,false]),
"veceq": vectorEquation(A),
"matrix": A,
"rref": A.rref()
}