Blog Μαθηματικών και Εκπαιδευτικών Θεμάτων

Ένας Γεωμετρικός Τόπος: Ισογωνική εικόνα ευθείας

Απόδειξη:

Έστω \(\triangle ABC\) σταθερό τρίγωνο του προβολικού χώρου \(\mathbb{P}_{\mathbb{R}}^2\). Κάθε σημείο \(P\) όχι επί των πλευρών του \(ABC\) έχει ομογενείς βαρυκεντρικές συντεταγμένες \([x:y:z]\) με \(x+y+z\neq 0\) και \(xyz\neq 0\) αν \(P\) δεν ανήκει στις πλευρές. Τα \(A,B,C\) έχουν συντεταγμένες \([1:0:0],\, [0:1:0],\, [0:0:1]\) αντίστοιχα.

Ισογωνική συσχέτιση

Ορίζουμε τη ρητή απεικόνιση $$\tau: \mathbb{P}^2 \dashrightarrow \mathbb{P}^2$$ με τύπο:

$$\tau([x:y:z]) = [a^2yz : b^2zx : c^2xy]$$
όπου \(a=|BC|,\ b=|C A|,\ c=|AB|\). Η \(\tau\) λέγεται ισογωνική συσχέτιση ως προς το \(\triangle ABC\).

Περιγεγραμμένος κύκλος
Ο περιγεγραμμένος κύκλος του \(\triangle ABC\)είναι η κωνική τομή με εξίσωση:

$$\mathscr{O}:\ a^2yz + b^2zx + c^2xy = 0$$

Λήμμα 1
Η απεικόνιση \(\tau\) είναι involution, δηλαδή \(\tau^2 = id\) στο πεδίο ορισμού της. Επιπλέον, \(\tau(A)=BC,\ \tau(B)=C A,\ \tau(C)=AB\).

Απόδειξη. Για \([x:y:z]\) με \(xyz\neq 0\),

$$\begin{array}{lcl}
\tau(\tau([x:y:z])) &= &\tau([a^2yz : b^2zx : c^2xy]) = [a^2 \cdot b^2zx \cdot c^2xy : b^2 \cdot c^2xy \cdot a^2yz : c^2 \cdot a^2yz \cdot b^2zx]\\
&= & [a^2b^2c^2x^2yz : a^2b^2c^2y^2zx : a^2b^2c^2z^2xy] = [x:y:z].
\end{array}\quad \square$$

Λήμμα 2

Για κάθε σημείο \(P=[x:y:z]\) με \(xyz\neq 0\), ισχύει \(P\in\mathscr{O}\) αν και μόνο αν \(\tau(P)\) ανήκει στην ευθεία \(L_\infty: X+Y+Z=0\).

Απόδειξη. Έστω \(\tau(P)=[X:Y:Z]=[a^2yz:b^2zx:c^2xy]\). Τότε

$$X+Y+Z = a^2yz + b^2zx + c^2xy$$
Άρα $$X+Y+Z=0 \Leftrightarrow a^2yz + b^2zx + c^2xy=0 \Leftrightarrow P\in\mathscr{O}. \quad \square$$

Λήμμα 3

Αν η ευθεία \(L: ux+vy+wz=0\) δεν διέρχεται από καμία κορυφή του \(\triangle ABC\), τότε \(uvw\neq 0\).

Απόδειξη. Αν \(u=0\), τότε το \(A=[1:0:0]\) ικανοποιεί την \(L\). Όμοια για \(v,w. \quad \square\)

Θεώρημα

Έστω ευθεία \(L: ux+vy+wz=0\) στο επίπεδο του \(\triangle ABC\) που δεν διέρχεται από καμία κορυφή του. Το σύνολο \(\mathscr{L}={\tau(P) : P\in L,\ xyz\neq 0}\) είναι περιγεγραμμένη κωνική τομή του \(ABC\), η \(\tau\) είναι τετραγωνική απεικόνιση. Επιπλέον:
Αν η \(L\) τέμνει τον \(\mathscr{O}\) σε δύο διακεκριμένα σημεία, η \(\mathscr{L}\) είναι υπερβολή.
Αν η \(L\) εφάπτεται του \(\mathscr{O}\), η \(\mathscr{L}\) είναι παραβολή.
Αν η \(L\) δεν έχει κοινά πραγματικά σημεία με τον \(\mathscr{O}\), η \(\mathscr{L}\) είναι έλλειψη.

Απόδειξη.
Έστω \(P=[x:y:z]\in L\) με \(xyz\neq 0\). Τότε \(ux+vy+wz=0\).
Έστω \([X:Y:Z]=\tau(P)=[a^2yz:b^2zx:c^2xy]\). Επειδή \(xyz\neq 0\), έχουμε \(X,Y,Z\neq 0\), άρα:

$$x = \frac{b^2c^2YZ}{a^2b^2c^2xyz} \cdot a^2yz = \lambda a^2yz,\ \text{κ.ο.κ.}$$
Ακριβέστερα, από \(X=a^2yz,\ Y=b^2zx,\ Z=c^2xy\) παίρνουμε:

$$x = \frac{YZ}{b^2c^2x},\ \text{άρα}\ x^2 = \frac{Y Z}{b^2c^2} $$ %\Rightarrow x = \frac{k}{a^2}YZ$$

για κάποιο \(k\). Απαλείφοντας, καταλήγουμε στη σχέση:

$$\mathscr{L}:\ x : y : z = \frac{a^2}{X} : \frac{b^2}{Y} : \frac{c^2}{Z}$$
Αντικαθιστώντας στην \(ux+vy+wz=0\):

$$u\frac{a^2}{X} + v\frac{b^2}{Y} + w\frac{c^2}{Z} = 0 \ \Rightarrow\ ua^2YZ + vb^2ZX + wc^2XY = 0$$
Αυτή είναι ομογενής εξίσωση 2ου βαθμού. Άρα η \(\mathscr{L}\) είναι κωνική τομή. Για \(Y=Z=0\) η εξίσωση ικανοποιείται, άρα \(A=[1:0:0]\in\mathscr{L}\). Όμοια \(B,C\in\mathscr{L}\). Άρα η \(\mathscr{L}\) είναι περιγεγραμμένη.

Για το είδος της κωνικής, εξετάζουμε τα σημεία τομής της \(\mathscr{L}\) με την ευθεία στο άπειρο \(L_\infty: X+Y+Z=0\). Λόγω του Λήμματος 2, ένα σημείο \(\tau(P)\in\mathscr{L}\cap L_\infty\) αν και μόνο αν \(P\in L\cap\mathscr{O}\).

Συνεπώς το πλήθος των πραγματικών σημείων στο άπειρο της \(\mathscr{L} \) ισούται με \(|L\cap\mathscr{O}|\).

Το σύστημα \(ux+vy+wz=0,\ a^2yz+b^2zx+c^2xy=0\) έχει 0, 1 ή 2 πραγματικές λύσεις, ανάλογα αν η \(L\) δεν τέμνει, εφάπτεται ή τέμνει τον \(\mathscr{O}\). Αυτό καθορίζει αν η \(\mathscr{L}\) έχει \(0, 1\) ή \(2\) σημεία στο άπειρο, δηλαδή αν είναι έλλειψη, παραβολή ή υπερβολή αντίστοιχα. \(\blacksquare\)

Παρακάτω δίνουμε ένα κώδικα στη Python ο οποίος μπορεί να δεχθεί στην είσοδο παραμέτρους \(a,b,c,p,q\), οι οποίες αντιπροσωπεύουν τις κορυφές του τριγώνου \(A(0,0)\), \(B(a,0)\), \(C(b,c)\) και την ευθεία \(y=px+q\).

Python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
import sympy as sp
def isogonal_locus(a, b, c, d, e, save_name='locus_output.png'):
"""
A(0,0), B(a,0), C(b,c)
Ευθεία: y = d*x + e
"""
if abs(c) < 1e-12:
raise ValueError("Το C δεν μπορεί να είναι στην ευθεία AB, δηλαδή c≠0")
# 1. Πλευρές στο τετράγωνο
a2 = (a - b)**2 + c**2 # BC^2
b2 = b**2 + c**2 # CA^2
c2 = a**2 # AB^2
# 2. Ευθεία y = d*x + e σε βαρυκεντρικές lx + my + nz = 0
# x = a*Y + b*Z, y = c*Z, X+Y+Z=1
# d*(aY + bZ) + e = cZ => e*X + (d*a + e)*Y + (d*b - c + e)*Z = 0
l = e
m = d*a + e
n = d*b - c + e
# 3. Κωνική σε βαρυκεντρικές: l*a2*Y*Z + m*b2*Z*X + n*c2*X*Y = 0
# Μετατροπή σε καρτεσιανές: X = 1-Y-Z, Y = (c*x - b*y)/(a*c), Z = y/c
xs, ys = sp.symbols('x y')
Zs = ys / c
Ys = (c*xs - b*ys) / (a*c)
Xs = 1 - Ys - Zs
conic_eq = sp.expand(l*a2*Ys*Zs + m*b2*Zs*Xs + n*c2*Xs*Ys)
conic_eq = sp.Eq(conic_eq, 0)
# 4. Σχεδίαση
def conic_xy(x, y):
Z = y / c
Y = (c*x - b*y) / (a*c)
X = 1 - Y - Z
return l*a2*Y*Z + m*b2*Z*X + n*c2*X*Y
x_min = min(0, a, b) - 0.5*abs(a)
x_max = max(0, a, b) + 0.5*abs(a)
y_min = min(0, c) - 0.5*abs(c)
y_max = max(0, c) + 0.5*abs(c)
x_vals = np.linspace(x_min, x_max, 600)
y_vals = np.linspace(y_min, y_max, 600)
Xg, Yg = np.meshgrid(x_vals, y_vals)
F = conic_xy(Xg, Yg)
# Περιγεγραμμένος κύκλος
D = 2 * (a*c)
if abs(D) > 1e-10:
ux = (a**2 * c) / D
uy = (a * (b**2 + c**2 - a*b)) / D
circ_center = (ux, uy)
circ_R = np.hypot(ux, uy)
else:
circ_center, circ_R = (0, 0), 0
plt.figure(figsize=(8, 8))
plt.contour(Xg, Yg, F, levels=[0], colors='blue', linewidths=2, label='Ισογωνικός τόπος')
plt.plot(x_vals, d*x_vals + e, 'r--', label=f'Ευθεία: y = {d}x + {e}')
plt.plot([0, a, b, 0], [0, 0, c, 0], 'k-', lw=2, label='Τρίγωνο ABC')
plt.scatter([0, a, b], [0, 0, c], c='k', zorder=5)
for pt, name in [((0, 0), 'A'), ((a, 0), 'B'), ((b, c), 'C')]:
plt.text(pt[0] + 0.1, pt[1] + 0.1, name, fontsize=12)
if circ_R > 0:
circ = Circle(circ_center, circ_R, fill=False, color='green',
ls=':', lw=1.5, label='Περιγεγραμμένος κύκλος')
plt.gca().add_patch(circ)
plt.gca().set_aspect('equal')
plt.grid(True, alpha=0.3)
plt.legend()
plt.title(f'A(0,0), B({a},0), C({b},{c}) | y={d}x+{e}')
plt.tight_layout()
plt.savefig(save_name, dpi=150) # Τοπικό path
plt.show()
return conic_eq
if __name__ == "__main__":
print("Δώσε τα a,b,c για A(0,0), B(a,0), C(b,c)")
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
print("Δώσε τα d,e για ευθεία y = dx + e")
d = float(input("d = "))
e = float(input("e = "))
eq = isogonal_locus(a, b, c, d, e)
print("\nΕξίσωση κωνικής:")
sp.pprint(eq)
print("\nΤο σχήμα αποθηκεύτηκε ως 'locus_output.png'")

Αν \(a=5,\ b=4,\ c=7,\ p=-1.5,\ q=-3\) τότε ο αλγόριθμος δίνει την εξίσωση της έλλειψης: $$16.0x^2 + 8.35714285714286xy – 80.0x + 3.92857142857143y^2 – 51.7857142857143y = 0$$
και το Σχήμα

To γράφημα της έλλειψης στη Python.

Αν \(a=5,\ b=4,\ c=7,\ p=-0.5,\ q=3\) τότε ο αλγόριθμος δίνει την εξίσωση της έλλειψης: $$6.0x^2 + 0.785714285714285xy – 30.0x – 3.07142857142857y^2 + 21.7857142857143y = 0$$

Το γράφημα της υπερβολής στη Python.

Αν \(a=10,\ b=1,\ c=6,\ p=2.2222,\ q=4.5\), ( η ευθεία εφάπτεται του περιγεγραμμένου κύκλου στο \(\triangle ABC\) ) τότε ο αλγόριθμος δίνει την εξίσωση της παραβολής: $$-0.7222x^2 – 8.6665xy + 7.222x – 25.9998y^2 + 163.582y = 0$$

Το γράφημα της παραβολής στη Python

Fediverse reactions

Discover more from Blog Μαθηματικών και Εκπαιδευτικών Θεμάτων

Subscribe now to keep reading and get access to the full archive.

Continue reading