#C27.txt: home-made linear algera solver Help:=proc(): print(` MySolve(eq,var), Req(x,n,K) `): end: #MySolve(eq,var): inputs a seq of equations eq in a set #of variables var, and outputs a general solutioin or FAIL #For example MySolve({x+y=5, x-y=1},{x,y}); should return #{x=3,y=2} MySolve:=proc(eq,var) local i,eq1,var1,x,x0,Neweq, sol1: if eq={} then RETURN({seq(i=i, i in var)}): fi: if var={} then RETURN(FAIL): fi: x:=var[1]: var1:=var minus {x}: for eq1 in eq do if coeff(eq1,x,1)<>0 then x0:= -(eq1-x*coeff(eq1,x,1))/coeff(eq1,x,1): Neweq:=subs(x=x0,eq) minus {0}: sol1:=MySolve(Neweq,var1): if sol1=FAIL then RETURN(sol1): fi: RETURN(sol1 union {x=subs(sol1,x0)}): fi: od: MySolve(eq,var1) union {x=x}: end: #Req(x,n,K): a random eq. in x[1], ..., x[n] #with coeffs between 0 and K Req:=proc(x,n,K) local i,ra: ra:=rand(-K..K): add(ra()*x[i],i=1..n)-ra(): end: