Cramer's rule: Difference between revisions
Content added Content deleted
m (Minor c++ fix) |
|||
Line 2,073: | Line 2,073: | ||
=={{header|Python}}== |
=={{header|Python}}== |
||
<lang python> |
<lang python> |
||
def det(m,n): |
|||
# a simple implementation using numpy |
|||
if n==1: return m[0][0] |
|||
from numpy import linalg |
|||
z=0 |
|||
⚫ | |||
A=[[2,-1,5,1],[3,2,2,-6],[1,3,3,-1],[5,-2,-3,3]] |
|||
k=m[:] |
|||
B=[-3,-32,-47,49] |
|||
del k[r] |
|||
C=[[2,-1,5,1],[3,2,2,-6],[1,3,3,-1],[5,-2,-3,3]] |
|||
z+=m[r][0]*(-1)**r*det([p[1:]for p in k],n-1) |
|||
X=[] |
|||
return z |
|||
⚫ | |||
w=len(t) |
|||
for j in range(0,len(B)): |
|||
d=det(h,w) |
|||
C[j][i]=B[j] |
|||
if d==0:r=[] |
|||
else:r=[det([r[0:i]+[s]+r[i+1:]for r,s in zip(h,t)],w)/d for i in range(w)] |
|||
C[j][i-1]=A[j][i-1] |
|||
print(r) |
|||
X.append(round(linalg.det(C)/linalg.det(A),1)) |
|||
print('w=%s'%X[0],'x=%s'%X[1],'y=%s'%X[2],'z=%s'%X[3]) |
|||
</lang> |
</lang> |
||
{{out}} |
|||
<pre> |
|||
w=2.0 x=-12.0 y=-4.0 z=1.0 |
|||
</pre> |
|||
=={{header|Racket}}== |
=={{header|Racket}}== |