2
$\begingroup$

Quadrilateral $ABCE$ is a parallelogram. Point $D$ lies on segment $AE$. The diagonals of quadrilateral $ABCD$ intersect at point P. If $△ABP∼△CBD$ and $AB<BC$, find the ratio $\frac{AB}{BC}$.

The code I wrote is as follows:

AA = {x, y}; BB = {0, 0}; CC = {c, 0}; EE = {c + x, y}; DD = t*AA + (1 - t)*EE; PP = k*AA + (1 - k)*CC; Solve[{ans == Norm[AA - BB]/Norm[BB - CC], PP == h*BB + (1 - h)* DD, (AA - BB) . (DD - BB)/(Norm[AA - BB] Norm[DD - BB]) == (CC - BB) . (DD - BB)/(Norm[CC - BB] Norm[DD - BB]), (AA - PP) . (AA - BB)/(Norm[AA - PP] Norm[AA - BB]) == (CC - DD) . (CC - BB)/(Norm[CC - DD] Norm[CC - BB])}, ans, {k, h, t, x, y, c}] 

But my computation has been running for a long time without producing any result.

An excellent answer @cvgmt noticed that the similarity conditions of triangles here can be converted into proportional relationships between sides, so he provided the following code — and this code runs extremely fast:

Clear["Global`*"]; AA = {x, y}; BB = {0, 0}; CC = {c, 0}; EE = {c + x, y}; DD = t*AA + (1 - t)*EE; PP = k*AA + (1 - k)*CC; assumptions = y > 0 && c > 0 && 0 < t < 1 && 0 < k < 1 && 0 < h < 1; Solve[{ans == Norm[AA - BB]/Norm[BB - CC], PP == h*BB + (1 - h)*DD, EuclideanDistance[AA, BB]/EuclideanDistance[CC, BB] == EuclideanDistance[BB, PP]/EuclideanDistance[BB, DD] == EuclideanDistance[PP, AA]/EuclideanDistance[DD, CC], assumptions}, ans, {k, h, t, x, y, c}] 

The detailed answer and discussion process can be found on this webpage:enter link description here

But In mathematical geometry problems, it's inevitable to encounter angle-related constraints—for example, $∠ABC = ∠CDF$, $∠ABC = 2∠PQR$, or $∠PKL = 75°$. Such conditions are often difficult to translate into relationships among side lengths. Given this, how should we formulate these constraints in Mathematica to help the solving system work more efficiently and speed up the solution process?

ex1: In $\mathrm{Rt}\triangle ABC$, $\angle C = 90^\circ$, $AC = BC = 4$. Point $D$ is the midpoint of $AB$. Point $E $ is a moving point on$ BC$. Point $F$ is on $AE$. $\angle EDF = \angle EAD$. Find the minimum value of DF.

ex2:In $\triangle ABC$, $AB > AC$, $AD$ is the median. If $\angle DAC = 2\angle BAD$ and $CF \perp AD$ at point $F$, then what is the value of $\frac{DF}{AC}$?

ex3:The side length of rhombus$ABCD$ is $8$. Point $E$ moves along side $BC$. Connect $AE$ and $ED$.If~$\angle ABC = 60^\circ$, extend~$DE$~and~$AB$~to meet at point~$F$. Connect~$AE$~and extend it to meet~$CF$~at point~$P$. Find the angle $\angle APC$

ex4:In quadrilateral $ABCD$, $\angle BCD = 90^\circ$, and the diagonals $AC$ and $BD$ intersect at point $O$. Given that $AB = AC = 5$, $BC = 6$, and $\angle ADB = 2\angle CBD$, find the length of $AD$.

ex5:In Rt$\triangle ABC$, $\angle ACB = 90^\circ$, $AC = BC$. Draw $BD \parallel AC$ through point $B$. Point $D$ is on the right side of point $B$. Connect $AD$. Point $F$ is the midpoint of $AD$, and $AF = AC$. Point $P$ is a moving point on the straight line $AC$. Connect $FP$, and rotate $FP$ counterclockwise around point $F$ by $60^\circ$ to get $FQ$. Connect $BQ$. Point $R$ is a moving point on the straight line $AD$. Connect $BR$ and $QR$. During the movement of point $P$, when $BQ$ attains its minimum value, fold $\triangle BQR$ along the straight line $QR$ in the plane to get $\triangle TQR$ (This means that $\triangle BQR$ and $\triangle TQR$ are symmetric with respect to $QR$.). Connect $FT$. During the movement of point $R$, directly write the maximum value of $\dfrac{FT}{CP}$. Answer:$\frac{\sqrt{6}+\sqrt{2}+2\sqrt{3}}{2}$ enter image description here

$\endgroup$
2
  • $\begingroup$ Please post a full example about the angle geometry. $\endgroup$ Commented Nov 1 at 9:18
  • $\begingroup$ I just gave some examples, the four problems above.@cvgmt $\endgroup$ Commented Nov 1 at 14:53

2 Answers 2

4
$\begingroup$
  • For the last question, we set PlanarAngle[{a, d, b}] == 2 PlanarAngle[{c, b, d}]
Clear["Global`*"]; scene = GeometricScene[{a, b, c, d, o}, {GeometricAssertion[ {o ∈ Line[{a, c}], o ∈ Line[{b, d}], PlanarAngle[{a, d, b}] == 2 PlanarAngle[{c, b, d}], PlanarAngle[{b, c, d}] == 90 Degree}], EuclideanDistance[a, c] == 5, EuclideanDistance[a, b] == 5, EuclideanDistance[b, c] == 6} ]; GeometricSolveValues[scene, EuclideanDistance[a, d]] RandomInstance[scene] 

enter image description here

  • For the second question.
Clear["Global`*"]; scene = GeometricScene[{a, b, c, d, f}, {GeometricAssertion[{d == Midpoint[{b, c}], EuclideanDistance[a, b] > EuclideanDistance[a, c], f ∈ Line[{a, d}]}], GeometricAssertion[{Line[{a, d}], Line[{c, f}]}, "Perpendicular"], GeometricAssertion[ PlanarAngle[{c, a, d}] == 2 PlanarAngle[{b, a, d}]]}]; GeometricSolveValues[scene, EuclideanDistance[d, f]/EuclideanDistance[a, c]] RandomInstance[scene] 

enter image description here

  • For the third question.
Clear["Global`*"]; scene = GeometricScene[{a, b, c, d, e, f, p}, {GeometricAssertion[{EuclideanDistance[a, b] == EuclideanDistance[b, c] == EuclideanDistance[c, d] == EuclideanDistance[d, a]}], PlanarAngle[{a, b, c}] == 60 Degree, e ∈ Line[{b, c}], f ∈ HalfLine[{d, e}], f ∈ HalfLine[{a, b}], p ∈ HalfLine[{a, e}], p ∈ Line[{c, f}]}]; GeometricSolveValues[scene, PlanarAngle[{a, p, c}]] RandomInstance[scene] 

enter image description here

$\endgroup$
1
  • $\begingroup$ Your method is direct and effective! but for conditional extremum problems in geometry—such as Exercise 1 and Exercise 5—are there any good solutions? $\endgroup$ Commented Nov 4 at 1:27
3
$\begingroup$

example 1:

geometrie

length of a-c and b-c doesn't matter

a = {1, 0}; b = {0, 1}; c = {0, 0}; d = (a + b)/2; e = u b; (* 0<u<1 *) f = a + v (e - a); (* 0<v<1 *) 

angle condition

cond = VectorAngle[e - d, f - d] == VectorAngle[ d - a, e - a] // Simplify[#, {Element[{u, v}, Reals]}] & 

Minimize d-f

solv = Solve[cond , { v}][[1]] // Simplify[#, 0 < u < 1] & mini=Minimize[Sqrt[(d - f) . (d - f) ]/. solv // Simplify, u] minDF=FullSimplify[mini[[1]]] 

enter image description here

$\endgroup$
7
  • $\begingroup$ I'm glad to receive your solution again! This piece of code is effective for solving the problem, but as a beginner, I find it quite difficult and wouldn't easily come up with this approach. I wonder if there's a more straightforward method. $\endgroup$ Commented Nov 4 at 1:04
  • 1
    $\begingroup$ @King.Max I think it's a direct application of elementary vector calculus, pretty straightforward. $\endgroup$ Commented Nov 4 at 7:59
  • $\begingroup$ Indeed, thank you for your answer! As a beginner, I'm still not very familiar with this notation“solv = Solve[cond , { v}][[1]] // Simplify[#, 0 < u < 1] &”, but I'll keep studying. Thanks again for your kind and clear explanation!@UlrichNeumann $\endgroup$ Commented Nov 4 at 9:17
  • 1
    $\begingroup$ @King.Max Solve[cond , { v}] gives two solutions. Only the first[[1]] fullfills 0<v<1. // Simplify[..,0<u1]& simplifies this result with additional constraint 0<u<1 $\endgroup$ Commented Nov 4 at 21:26
  • $\begingroup$ Thank you for your detailed explanation! $\endgroup$ Commented Nov 5 at 2:02

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.