9. Расчет характеристик треугольника на плоскости
Треугольник ABC задан координатами его вершин на плоскости. Найти:
а) длины всех его сторон;
б) уравнения всех его сторон;
в) уравнения его высот AH1, BH2, CH3;
г) координаты точки пересечения его высот K;
д) уравнение медианы AM;
е) уравнение биссектрисы AN;
ж) площадь треугольника ABC;
з) длину высоты CH3.
Сделать чертеж.
Исходные данные:
> restart:
> with(linalg):
> A:=[-3,5]; B:=[-8,-1]; C:=[6,5];
[pic]
[pic]
[pic]
Решение примера производим по правилам и формулам, известным из курса аналитической геометрии.
Находим векторы.
> AB:=B-A; AC:=C-A; BC:=C-B;
[pic]
[pic]
[pic]
Находим длины векторов.
> ab:=sqrt(AB[1]^2+AB[2]^2); evalf(ab,5);
[pic]
[pic]
> ac:=sqrt(AC[1]^2+AC[2]^2); evalf(ac,5);
[pic]
[pic]
> bc:=sqrt(BC[1]^2+BC[2]^2); evalf(bc,5);
[pic]
[pic]
Составляем уравнения сторон. Насколько это возможно, в каждом уравнении алгебраически выражаем y через x, а если это невозможно – то x через y; здесь требуется смотреть по контексту (при затруднениях см. ниже уравнение одной из высот).
> EQAB:=matrix([[x,y,1],[A[1],A[2],1],[B[1],B[2],1]]);
[pic]
> eqab:=det(EQAB)=0;
[pic]
> eqab1:=y=solve(eqab,y);
[pic]
> EQAC:=matrix([[x,y,1],[A[1],A[2],1],[C[1],C[2],1]]);
[pic]
> eqac:=det(EQAC)=0;
[pic]
> eqac1:=y=solve(eqac,y);
[pic]
> EQBC:=matrix([[x,y,1],[B[1],B[2],1],[C[1],C[2],1]]);
[pic]
> eqbc:=det(EQBC)=0;
[pic]
> eqbc1:=y=solve(eqbc,y);
[pic]
Составляем уравнения высот. Насколько это возможно, в каждом уравнении алгебраически выражаем y через x, а если это невозможно – то x через y; здесь требуется смотреть по контексту (например, в данном случае по уравнению высоты из точки B нем находим явное значение x).
> bcx:=coeff(lhs(eqbc),x); bcy:=coeff(lhs(eqbc),y);
[pic]
[pic]
> eqah:=bcx*(y-A[2])-bcy*(x-A[1])=0;
[pic]
> eqah1:=y=solve(eqah,y);
[pic]
> acx:=coeff(lhs(eqac),x); acy:=coeff(lhs(eqac),y);
[pic]
[pic]
> eqbh:=acx*(y-B[2])-acy*(x-B[1])=0;
[pic]
> eqbh2:=x=solve(eqbh,x);
[pic]
> abx:=coeff(lhs(eqab),x); aby:=coeff(lhs(eqab),y);
[pic]
[pic]
> eqch:=abx*(y-C[2])-aby*(x-C[1])=0;
[pic]
> eqch3:=y=solve(eqch,y);
[pic]
Находим координаты точки пересечения высот. Для этого решаем систему из каких-нибудь двух уравнений высот.
> sys:={eqah,eqbh};
[pic]
> tpv:=solve(sys,{x,y});
[pic]
К сожалению, при каждом пересчете документа порядок следования переменных в решении системы произвольный, поэтому и нужна приведенная ниже конструкция.
> tpv1:=op(1,tpv); tpv2:=op(2,tpv);
[pic]
[pic]
> if lhs(tpv1)=y then K[1]:=rhs(tpv2); K[2]:=rhs(tpv1); else K[1]:=rhs(tpv1); K[2]:=rhs(tpv2); fi;
[pic]
[pic]
Делаем проверку: подставляем найденные координаты точки пересечения высот в уравнение третьей высоты.
> subs(x=K[1],y=K[2],eqch); evalb(%);
[pic]
[pic]
Находим координаты точки M и уравнение медианы AM.
> M[1]:=(B[1]+C[1])/2; M[2]:=(B[2]+C[2])/2;
[pic]
[pic]
> EQAM:=matrix([[x,y,1],[A[1],A[2],1],[M[1],M[2],1]]);
[pic]
> eqam:=det(EQAM)=0;
[pic]
> eqam1:=y=solve(eqam,y);
[pic]
Находим координаты точки N и уравнение биссектрисы AN.
> N[1]:=(ab*C[1]+ac*B[1])/(ab+ac); evalf(N[1],5);
[pic]
[pic]
> N[2]:=(ab*C[2]+ac*B[2])/(ab+ac); evalf(N[2],5);
[pic]
[pic]
> EQAN:=matrix([[x,y,1],[A[1],A[2],1],[N[1],N[2],1]]);
[pic]
> eqan:=det(EQAN)=0;
[pic]
Уравнение биссектрисы представляем в виде уравнения прямой с угловым коэффициентом в виде двух слагаемых – первое содержит x.
> reqan1:=collect(solve(eqan,y),x): y=reqan1;
[pic]
> kan1:=coeff(reqan1,x); evalf(kan1,5);
[pic]
[pic]
Функция op возвращает не только элемент множества, но и слагаемое с указанным порядковым номером в указанном алгебраическом выражении.
> ban1:=op(2,reqan1); evalf(ban1,5);
[pic]
[pic]
Находим площади параллелограмма и треугольника, построенных на векторах AC и BC, затем длину высоты, проведенной из точки C.
> Spar:=abs(BC[1]*AC[2]-AC[1]*BC[2]); Str:=Spar/2;
[pic]
[pic]
> ch1:=Spar/ab; evalf(ch1,5);
[pic]
[pic]
Строим чертеж треугольника, показанный ниже на рис. 9.1, для чего предварительно определяем массив координат точек A, B, C и A (чтобы линия имела вид замкнутого многоугольника).
> pts:=[A,B,C,A];
[pic]
> plot(pts,axes=normal,style=line,color=black);
[pic]
Рис. 9.1
Результаты расчётов сводятся в таблицу командой Insert Spreadsheet. Такая таблица заполняется, как показано на рис. 9.2.
[pic]
Рис. 9.2
Как показано на рис. 9.2, в ряд ячеек записывается поясняющий текст в кавычках – при выводе он так в кавычках и останется. Для отображения результатов расчётов в ряд ячеек вставляются формулы. Завершает ввод формулы клавиша Enter.
B2: B C2: C
A4: ab
B4: ac
C4: bc
A6: eqab1
B6: eqac1
C6: eqbc1
A8: eqah1
B8: eqbh2
C8: eqch3
B9: convert(K,list)
B10: convert(M,list)
B11: eqam1
B12: convert(N,list)
B13: y=reqan1
B14: Str
B15: ch1