Линейная алгебра МКР2 ХТ-01-10

597 days ago by semerikov

#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