Solves simultaneous linear equations of any order using Crammer's rule. Required input is two lists..one for coefficients, and other for constants eg. 2x+3y=8 x+4y=6 will be written as simul([[2,3],[1,4]],[8,6])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | def det(l):
n=len(l)
if (n>2):
i=1
t=0
sum=0
while t<=n-1:
d={}
t1=1
while t1<=n-1:
m=0
d[t1]=[]
while m<=n-1:
if (m==t):
u=0
else:
d[t1].append(l[t1][m])
m+=1
t1+=1
l1=[d[x] for x in d]
sum=sum+i*(l[0][t])*(det(l1))
i=i*(-1)
t+=1
return sum
else:
return (l[0][0]*l[1][1]-l[0][1]*l[1][0])
def simul(leq,lcoeff):
D=float(det(leq))
if D==0:
return -1
else:
t=0
n=len(leq)
l=[]
while t<=(n-1):
lt=[]
for x in leq:
ltemp=[]
for y in x:
ltemp.append(y)
lt.append(ltemp)
m=0
while m<=(n-1):
lt[m][t]=lcoeff[m]
m+=1
l.append(det(lt)/D)
t+=1
return l
|