Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Уравнение на ъглополовяща

Уравнение на ъглополовяща

Мнениеот Гост » 14 Фев 2023, 23:13

В една координатна система са дадени точките A(0;0) , B(10,0) ,C (4;8). Намерете координатите на центъра J на вписаната окръжност
Гост
 

Re: Уравнение на ъглополовяща

Мнениеот peyo » 19 Фев 2023, 14:26

Гост написа:В една координатна система са дадени точките A(0;0) , B(10,0) ,C (4;8). Намерете координатите на центъра J на вписаната окръжност


Ще решим тази задача по един директен и особено труден начин.

По дефиниция центъра на вписаната окръжност (x,y) се намира на равно разстояние от 3-те страни. И това е всичко което ще използваме за решаване на задачата.

За да намерим този център ще започнем от намиране уравненията на правите в параметричен вид:

#-----------------------------------------------------------------------------------------------------------------
# всичко от тук което следва е валидна програма на Python

from sympy import *

var("x_c,y_c") # central circle variables - това което търсим
for i in range(1,4):
var(f"x_{i},y_{i},a_{i},b_{i},c_{i},d_{i},t_{i}") #all other variables

# прави в параметричен вид
L1x = x_1 - a_1*t_1 - b_1
L1y = y_1 - c_1*t_1 - d_1

L2x = x_2 - a_2*t_2 - b_2
L2y = y_2 - c_2*t_2 - d_2

L3x = x_3 - a_3*t_3 - b_3
L3y = y_3 - c_3*t_3 - d_3


# 3-те точки
A=(0,0); B=(10,0); C=(4,8)

# 3 сегмента
S1 = [A,B]
S2 = [B,C]
S3 = [C,A]

# първата система от уравнения
U=[
L1x.subs(x_1,S1[0][0]).subs(t_1,0),
L1x.subs(x_1,S1[1][0]).subs(t_1,1),
L1y.subs(y_1,S1[0][1]).subs(t_1,0),
L1y.subs(y_1,S1[1][1]).subs(t_1,1),

L2x.subs(x_2,S2[0][0]).subs(t_2,0),
L2x.subs(x_2,S2[1][0]).subs(t_2,1),
L2y.subs(y_2,S2[0][1]).subs(t_2,0),
L2y.subs(y_2,S2[1][1]).subs(t_2,1),

L3x.subs(x_3,S3[0][0]).subs(t_3,0),
L3x.subs(x_3,S3[1][0]).subs(t_3,1),
L3y.subs(y_3,S3[0][1]).subs(t_3,0),
L3y.subs(y_3,S3[1][1]).subs(t_3,1),

]
# решаваме я
sol=solve(U)


# заместваме да намерим конкретните прави
x1_t = solve(L1x.subs(sol),x_1)[0]
y1_t = solve(L1y.subs(sol),y_1)[0]
x2_t = solve(L2x.subs(sol),x_2)[0]
y2_t = solve(L2y.subs(sol),y_2)[0]
x3_t = solve(L3x.subs(sol),x_3)[0]
y3_t = solve(L3y.subs(sol),y_3)[0]

# разстояние от търсения център (x,y) до някаква точка от правата

R1 = (x_c-x1_t)**2 + (y_c-y1_t)**2
R2 = (x_c-x2_t)**2 + (y_c-y2_t)**2
R3 = (x_c-x3_t)**2 + (y_c-y3_t)**2


U2=[
R1.diff(t_1), # най-краткото разстояние намираме от производната
R2.diff(t_2),
R3.diff(t_3),
R1-R2, # две разстояния са еднакви
R2-R3, # други две разстояния са еднакви
]

# решаваме системата
r = solve(U2)

# имаме 4 реални резултата
res = [(float(d[x_c]),float(d[y_c])) for d in r]

# това е точка вътре в октъжността
M = [(A[0]+B[0]+C[0])/3,(A[1]+B[1]+C[1])/3]

# сортираме по най-кратко разстояние
res.sort(key= lambda P: (P[0]-M[0])**2 + (P[1]-M[1])**2)

# крайния резултат e това от 4-те решение което е най-близко до централната точка:
res[0]


#-----------------------------------------------------------------------------------------------------------------------------

In [2]: res[0]
Out[2]: (4.47213595499958, 2.76393202250021)
peyo
Математик
 
Мнения: 1767
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 663


Назад към 11 клас



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)
cron