#auto
def mrandint(left,right):
res=randint(left,right)
while res==0:
res=randint(left,right)
return res
def different():
res=vector([0,0,0,0,0,0])
res[0]=randint(-10,10)
for i in range(5):
k=i+1
rnd=randint(-10,10)
j=0
while j<6:
if res[j]==rnd:
rnd=randint(-10,10)
j=-1
j=j+1
res[k]=rnd
return res
var("x y t m n")
@interact
def mkr1(numvar = input_box(default=1, label="Кількість варіантів")):
answers=[]
for var in range(numvar):
html("</pre><center><font size=+2>Варіант %s</font></center>"%(var+1))
res=different()
M1=vector([res[0],res[1]])
M2=vector([res[2],res[3]])
M3=vector([res[4],res[5]])
html("<p>1. Нехай точки <i>M</i><sub>1</sub>($%s$,$%s$), <i>M</i><sub>2</sub>($%s$,$%s$), <i>M</i><sub>3</sub>($%s$,$%s$) - вершини трикутника <i>M</i><sub>1</sub><i>M</i><sub>2</sub><i>M</i><sub>3</sub>. Складіть:"%(latex(M1[0]),latex(M1[1]),latex(M2[0]),latex(M2[1]),latex(M3[0]),latex(M3[1])))
html("<br>а) загальне рівняння сторони <i>M</i><sub>1</sub><i>M</i><sub>2</sub>;")
html("<br>б) канонічне рівняння висоти <i>M</i><sub>1</sub><i>D</i>;")
html("<br>в) параметричне рівняння медіани <i>M</i><sub>2</sub><i>M</i>;")
html("<br>г) рівняння прямої, що проходить через точку <i>M</i><sub>3</sub> паралельно до сторони <i>M</i><sub>1</sub><i>M</i><sub>2</sub>.<br>")
answers.append((x-M1[0])*(M2[1]-M1[1])-(y-M1[1])*(M2[0]-M1[0])==0)
M2M3=M3-M2
l=vector([M2M3[1],-M2M3[0]])
answers.append((x-M1[0])/l[0]==(y-M1[1])/l[1])
M=(M1+M3)/2
M2M=M-M2
answers.append(solve([(x-M2[0])/(M[0]-M2[0])==t, (y-M2[1])/(M[1]-M2[1])==t],[x,y])[0])
M1M2=M2-M1
answers.append((x-M3[0])/M1M2[0]-(y-M3[1])/M1M2[1]==0)
A=mrandint(-5,5)
B=mrandint(-5,5)
C=mrandint(-5,5)
C1=mrandint(-5,5)
num=randint(1,4)
L1=A*x+B*y+C==0
L2=A*num*x+B*num*y+C1==0
html("<p>2. Доведіть, що прямі $%s$ та $%s$ паралельні, і знайдіть відстань між ними"%(latex(L1),latex(L2)))
x0=(solve(L1,x)[0].rhs())(y=0)
d=abs(A*num*x0+B*num*0+C1)/sqrt(A*num*A*num+B*num*B*num)
answers.append(d)
A=mrandint(-5,5)
B=mrandint(-5,5)
C=mrandint(-5,5)
L=A*x+B*y+C==0
html("<p>3. Знайдіть площу трикутника, який відсікається від осей координат прямою $%s$"%latex(L))
S=abs((-C/A)*(-C/B)/2)
answers.append(S)
A1=m+randint(-10,10)
B1=mrandint(-10,10)
C1=n+randint(-10,10)
A2=mrandint(-5,5)
B2=m+randint(-5,5)
C2=n*randint(-2,2)+randint(-5,5)
L1=A1*x+B1*y+C1==0
L2=A2*x+B2*y+C2==0
html("<p>4. Визначте, при яких значеннях <i>m</i> i <i>n</i> прямі $%s$ та $%s$:"%(latex(L1),latex(L2)))
html("<br>а) паралельні;")
html("<br>б) збігаються;")
html("<br>в) перпендикулярні.")
answers.append(solve(A1/A2==B1/B2,m))
answers.append(solve([A1/A2==B1/B2,B1/B2==C1/C2],[m,n]))
answers.append(solve(A1*A2+B1/B2==0,m))
a=randint(-6,6)
b=randint(-6,6)
c=0 #randint(-6,6)
d=randint(-6,6)
e=randint(-6,6)
f=randint(-6,6)
L=a*x^2+b*y^2+c*x*y+d*x+e*y+f
html("<p>5. Задано рівняння кривої другого порядку $%s=0$. Виконайте такі дії:"%latex(L))
html("<br>а) визначте за рівнянням вид кривої;")
html("<br>б) у випадку еліпса знайдіть величину півосей, координат фокусів, ексцентриситет, складіть рівняння директрис;")
html("<br>в) у випадку гіперболи знайдіть величину півосей, координат фокусів, ексцентриситет, складіть рівняння директрис та асимптот;")
html("<br>г) у випадку параболи знайдіть значення параметра, координати фокуса, складіть рівняння директриси;")
html("<br>д) виконайте креслення кривої з поданням фокусів, директрис, асимптот (за наявності).")
if a!=0 and b!=0:
L1=(a*(x+d/(2*a))^2+b*(y+e/(2*b))^2)/(d^2/(4*a)+e^2/(4*b)-f)==1
answers.append(L1)
else:
answers.append(L)
html("<hr>")
html("<p><p><p><p><p><p><p><p>")
for var in range(numvar):
html("<p><b>Варіант %s</b>: "%(var+1))
html("1. а) $%s$, б) $%s$, в) $%s$, г) $%s$; 2. $%s$; 3. $%s$; 4. а) $%s$, б) $%s$, в) $%s$; 5. $%s$"% \
(latex(answers[var*10+0]),\
latex(answers[var*10+1]), latex(answers[var*10+2]), latex(answers[var*10+3]), latex(answers[var*10+4]), \
latex(answers[var*10+5]), latex(answers[var*10+6]), latex(answers[var*10+7]), latex(answers[var*10+8]), \
latex(answers[var*10+9]) ))
|
|
Click to the left again to hide and once more to show the dynamic interactive window
|