#auto
html('<h1>Метод квадратних коренів</h1>')
@interact
def KvadratnieKorni( m=slider(vmin=2, vmax=6, step_size=1, label="Розмірність системи рівнянь :", default=3)):
n=m
LT=[]
for i in range(m):
for j in range(n):
if i>j:
LT.append( var('a%s%s'%(j+1,i+1)) )
else:
LT.append( var('a%s%s'%(i+1,j+1)) )
A = matrix(m,n,LT)
x=matrix(n,1,var(",".join("x%s"%(i+1) for i in range(n))))
y=matrix(n,1,var(",".join("y%s"%(i+1) for i in range(n))))
b=matrix(n,1,var(",".join("b%s"%(i+1) for i in range(m))))
s="$\\left \\{ \\begin{eqnarray}"
for i in range(m):
s=s+"%s=%s \\\\"%(latex((A*x)[i][0]),latex(b[i][0]))
s=s+"\\end{eqnarray} \\right."
html("</pre>Система рівнянь:<br>"+s)
html("<p>Матриця коефіцієнтів: <b>A</b>=$%s$"%latex(A))
html("<p>Вектор невідомих: <b><i>x</i></b>=$%s$"%latex(x))
html("<p>Вектор вільних коефіцієнтів: <b><i>b</i></b>=$%s$"%latex(b))
LT=[]
for i in range(m):
for j in range(n):
if i>j:
LT.append(0)
else:
LT.append( var('t%s%s'%(i+1,j+1)) )
T = matrix(m,n,LT)
html("<p>Трикутні матриці: <b>T</b>=$%s$, <b>T</b><i><sup>T</sup></i>=$%s$<br>"%(latex(T),latex(T.transpose())))
systema=[]
s="$\\left \\{ \\begin{eqnarray}"
for i in range(m):
for j in range(n):
if i<=j:
s=s+"%s=%s \\\\"%(latex((T*T.transpose())[i][j]),latex(A[i][j]))
systema=systema+[(T*T.transpose())[i][j]==A[i][j]]
s=s+"\\end{eqnarray} \\right."
html("</pre>Система рівнянь:<br>"+s)
LT=[]
for k in T.list():
if k!=0:
LT.append(k)
sol=solve(systema,LT)[0]
LT=[]
s=''
index=0
for i in range(m):
for j in range(n):
if i>j:
LT.append(0)
else:
k=sol[index]
index=index+1
s+='$'+latex(k)+'$'+"<br>"
LT.append(k.rhs())
T = matrix(m,n,LT)
html("<br></pre>Розв'язок:<br>"+s)
systema=[]
s="$\\left \\{ \\begin{eqnarray}"
for i in range(m):
s=s+"%s=%s \\\\"%(latex((T.transpose()*y)[i][0]),latex(b[i][0]))
systema=systema+[(T.transpose()*y)[i][0]==b[i][0]]
s=s+"\\end{eqnarray} \\right."
html("</pre>Система рівнянь для <b>T<i></b><sup>T</sup><b></i><i>y=b</i></b>:<br>"+s)
sol=solve(systema,y.list())[0]
s=''
for k in sol:
s+='$'+latex(k)+'$'+"<br>"
html("<br></pre>Розв'язок:<br>"+s)
s="$\\left \\{ \\begin{eqnarray}"
for i in range(m):
s=s+"%s=%s \\\\"%(latex((T*x)[i][0]),latex(y[i][0]))
s=s+"\\end{eqnarray} \\right."
html("</b><br></pre>Система рівнянь для <b>T<i>x=y</i></b>:<br>"+s)
LT=[]
for k in sol:
LT.append(k.rhs())
y=matrix(n,1,LT)
systema=[]
for i in range(m):
systema=systema+[(T*x)[i][0]==y[i][0]]
sol=solve(systema,x.list())[0]
s=''
for k in sol:
s+='$'+latex(k)+'$'+"<br>"
html("<br></pre>Остаточний розв'язок :<br>"+s)
|
|
Метод квадратних коренів
| Розмірність системи рівнянь : |
|
|
|
| |
|
|
Click to the left again to hide and once more to show the dynamic interactive window
|