#auto
def nicedet(M):
s="$\\left|\\begin{array}{ccc} "
for i in range(M.nrows()):
for j in range(M.ncols()):
s=s+" "+latex(M[i,j])
if j!=M.ncols()-1:
s=s+"&"
s=s+"\\\\"
s=s+"\\end{array}\\right|$"
return s
def maketriple(a,b,c):
s="$"
if a<0:
s=s+"("+latex(a)+")"
else:
s=s+latex(a)
s=s+"\cdot"
if b<0:
s=s+"("+latex(b)+")"
else:
s=s+latex(b)
s=s+"\cdot"
if c<0:
s=s+"("+latex(c)+")"
else:
s=s+latex(c)
s=s+"$"
return s
def minor(M,str,col):
L=[]
for i in range(M.nrows()):
for j in range(M.ncols()):
if (i!=str) and (j!=col):
L.append(M[i,j])
return matrix(M.nrows()-1,M.ncols()-1,L)
@interact
def mkr1(numvar = input_box(default=1, label="Кількість варіантів")):
for var in range(numvar):
html("</pre><center><font size=+2>Варіант %s</font></center>"%(var+1))
A=matrix(QQ,3,3)
for i in range(3):
for j in range(3):
A[i,j]=randint(-5,5)
html("<p>1. Обчисліть визначник %s, використовуючи:<br>"%nicedet(A))
html("<p>а) правило трикутників;<br>")
html("%s=%s$+$%s$+$%s$-($%s$+$%s$+$%s$)=%s$"%(nicedet(A),\
maketriple(A[0,0],A[1,1],A[2,2]),\
maketriple(A[0,1],A[1,2],A[2,0]),\
maketriple(A[1,0],A[2,1],A[0,2]),\
maketriple(A[2,0],A[1,1],A[0,2]),\
maketriple(A[1,0],A[0,1],A[2,2]),\
maketriple(A[0,0],A[2,1],A[1,2]),\
det(A)))
html("<p>б) метод розкладання визначника за елементами деякого рядка або стовпця;<br>")
html("%s="%(nicedet(A)))
str=randint(0,2)
s="$"
s=s+latex(A[str,0])+"\cdot(-1)^{%s+1}\cdot$"%(str+1)+nicedet(minor(A,str,0))+"$"
if A[str,1]>=0:
s=s+"+"
s=s+latex(A[str,1])+"\cdot(-1)^{%s+2}\cdot$"%(str+1)+nicedet(minor(A,str,1))+"$"
if A[str,2]>=0:
s=s+"+"
s=s+latex(A[str,2])+"\cdot(-1)^{%s+3}\cdot$"%(str+1)+nicedet(minor(A,str,2))+"$"
s=s+"=$"
html("%s"%s)
s=""
s=s+latex(A[str,0])+"\cdot"
if (-1)^(str+0)==-1:
s=s+"(-1)"
else:
s=s+"1"
s=s+"\cdot"
if det(minor(A,str,0))<0:
s=s+"("+latex(det(minor(A,str,0)))+")"
else:
s=s+latex(det(minor(A,str,0)))
if A[str,1]>=0:
s=s+"+"
s=s+latex(A[str,1])+"\cdot"
if (-1)^(str+1)==-1:
s=s+"(-1)"
else:
s=s+"1"
s=s+"\cdot"
if det(minor(A,str,1))<0:
s=s+"("+latex(det(minor(A,str,1)))+")"
else:
s=s+latex(det(minor(A,str,1)))
if A[str,2]>=0:
s=s+"+"
s=s+latex(A[str,2])+"\cdot"
if (-1)^(str+2)==-1:
s=s+"(-1)"
else:
s=s+"1"
s=s+"\cdot"
if det(minor(A,str,2))<0:
s=s+"("+latex(det(minor(A,str,2)))+")"
else:
s=s+latex(det(minor(A,str,2)))
html("<br>$=%s=%s$"%(s,det(A)))
html("<p>в) метод зведення до трикутного вигляду.<br>")
B=copy(A)
sign=1
while B[0,0]==0:
B.swap_rows(0,randint(1,2))
sign=-sign
s="%s$=$"%nicedet(A)
if sign==-1:
s=s+"$-$%s$=$"%nicedet(B)
B[0]=-B[0]
s=s+"%s$=$"%nicedet(B)
if B[1,0]!=0:
koeff=-B[1,0]/B[0,0]
B[1]=B[1]+koeff*B[0]
s=s+"%s$=$"%nicedet(B)
if B[2,0]!=0:
koeff=-B[2,0]/B[0,0]
B[2]=B[2]+koeff*B[0]
s=s+"%s$=$"%nicedet(B)
if B[2,1]!=0:
koeff=-B[2,1]/B[1,1]
B[2]=B[2]+koeff*B[1]
s=s+"%s$=$"%nicedet(B)
s=s+maketriple(B[0,0],B[1,1],B[2,2])+"$=%s$"%det(B)
html(s)
html("<hr>")
|
|
Click to the left again to hide and once more to show the dynamic interactive window
|