momente şi schiţe de informatică şi matematică
To attain knowledge, write. To attain wisdom, rewrite.

Pe deasupra unei anumite familii de curbe plane

R
2026 mar

Considerăm familia de curbe $(\boldsymbol{\Gamma_c})$ definită prin $f(x,y)=0$ cu

$$f(x,y)=\boldsymbol{(x^2+y^2)^4-\dfrac{1}{c^2}(x^2+y^2)^2-2(x^2-y^2)},\,\,c>0\tag{1}$$

În $(\Gamma_c)$ avem — pentru $\boldsymbol{c=\sqrt{3\,}/3}$ — și curba nah_Dürer-folium, introdusă în [1]…

Ceea ce rămâne din (1) dacă am neglija primul termen, evocă un oval Cassini — locul pentru care produsul distanțelor la două puncte fixate este constant; într-adevăr, notând un punct oarecare $\mathrm{P}(x,y)$ și focarele $\mathrm{F_{1,2}}\boldsymbol{(0,\,\pm c)}$, avem:

$$\mathrm{PF_1}^2\cdot\mathrm{PF_2}^2 = \left(x^2+(y+c)^2\right)\cdot\left(x^2+(y-c)^2\right)=(x^2+y^2)^2+2c^2(x^2-y^2) \boldsymbol{+ c^4}$$

Deci pentru punctele $\mathrm{P}\in\Gamma_c$ avem $\boldsymbol{c^2\cdot \mathrm{OP}^8 - \mathrm{PF_1^2}\cdot\mathrm{PF_2^2}=c^4}$, unde $\mathrm{O}(0,0)$ este mijlocul segmentului focarelor și $c=\frac{1}{2}\mathrm{F_1F_2}$; altfel spus, punctele curbelor $\Gamma_c$ satisfac relația metrică (… neortodoxă, departe de așteptările obișnuite):

$$\boldsymbol{\mathrm{OP}^8 - \frac{1}{4}\mathrm{F_1F_2}^2 = 4\frac{\mathrm{PF_1}^2\cdot\mathrm{PF_2}^2}{\mathrm{F_1F_2}^2}}\tag{2}$$

Pentru curba "nah_Dürer", (2) ne dă caracterizarea: $\boldsymbol{\mathrm{OP}^8=3\,\mathrm{PF_1^2\cdot PF_2^2}+\frac{1}{3}}$ (sau, cu $z\in\mathbb{C}$, $\boldsymbol{|z|^8=3\left|z^2-\frac{1}{3}\right|^2+\frac{1}{3}}$).

Să observăm că dacă în (1) creștem $\boldsymbol{c}\,$ (micșorând contribuția termenului $(x^2+y^2)^2$), atunci la limită (când $c\to\infty$), am obține curba de gradul 8 (și de genul 4, cum ne-a încredințat Sage) plotată mai jos cu "blue" — seamănând ca formă cu diverse lemniscate (sau "curbe opt", orizontale) de gradul 4 (care în general au genul 0, având parametrizări raționale; pentru "nah_Dürer" avem în [1], o parametrizare cu radicali):

De observat (făcând $x=y$ în ecuațiile respective) că pentru aceste două curbe "opt", intersecția cu bisectoarele sistemului de axe conține numai originea (care este "nodul" fiecăreia și este "punct multiplu" de câte un anumit ordin).

Printr-un program similar celui din [2], ne putem face o idee asupra variației după parametrul $c$ a formei curbei $\Gamma_c$ (marcată cu "blue"; cele câte două puncte negre marchează "focarele" $\boldsymbol{(0, \pm c)}$. Cu alte culori, am adăugat în fiecare caz câte 4 curbe de nivel 0.25, 0.5, 0.75 și 1, în ordinea apropierii de cea "blue". Am marcat prin câte un punct "blue", intersecția din primul cadran cu bisectoarea întâia, la $x=1/\sqrt{2c\,}$):

Când $\boldsymbol{c}$ ajunge pe la 0.5, $\Gamma_c$ este formată dintr-un oval concav (cu două "adâncituri" simetrice) și în interiorul acestuia, o curbă opt care crescând apoi $\boldsymbol{c}$, tinde spre adâncituri (când $c$ ajunge la valoarea $\sqrt{3\,}/3$, cele două părți, ovalul concav și "lemniscata" se ating sus și jos, rezultând curba "nah_Dürer").
Când $\boldsymbol{c}$ urcă pe la 0.7, lemniscata "dispare" și rezultă un fel de "curbă opt", în care părțile din stânga și dreapta nodului delimitează o clepsidră (care, crescând și mai mult $c$, se aplatizează treptat, tinzând spre curba "opt" arătată în prima dintre cele două figuri redate mai sus, pe care bisectoarele devin tangente curbei).

Obs. Cu formele arătate mai sus, $\Gamma_c$ amintește de curbele lui Watt (dar acestea au gradul 6)… Se află oare vreo teoremă de existență (prin "teoria mecanismelor") care să ne asigure că și $\Gamma_c$ poate fi generată mecanic? (folosind anumite bare și joncțiuni…)

Să vedem cam cum arată $\Gamma_c$ pentru valori $c$ mici (fără a mai lua seamă și la curbele de nivel asociate).
Pentru $c$ cam între 0.1 și 0.5, $\Gamma_c$ constă într-un oval convex (poate chiar "cerc", mai la început) care are în interior, în centru, o "curbă opt" (verticală); mărimea ovalului este invers proporțională cu a lemniscatei interioare lui; pe măsură ce creștem $c$, ovalul se "aplatizează" și lemniscata interioară lui se mărește (micșorând și mai mult $c$, raza "cercului" devine din ce în ce mai mare, iar lemniscata din ce în ce mai mică…):

Obs. Pentru figura de mai sus, ca și în [2], am setat la fel (pentru toate cele 4 panouri) secvențele de abscise și ordonate (între -3.2 și 3.2, câte 8000 de pași; notăm că alegând 3 în loc de 3.2, obținem o atenționare rar semnalată, de la contourLines() (v. [2]): "circular/long seglist -- set options("max.contour.segments") > 25000?"…).

Însă pentru valori $\boldsymbol{c}$ foarte mici (ca 0.001)… trebuie să plotăm separat (și am ales divizările X și Y tot cu câte 8000 de pași, dar de la -0.002 la 0.002):

La scara considerată, n-a putut fi trasat și "cercul" care are în interior lemniscata arătată pe figură — dar $\Gamma_{\boldsymbol{0.001}}$ conține cu siguranță și un cerc (sau "cerc")… Nu prea îl putem evidenția grafic, pe de o parte fiindcă raza lui este foarte mare (față de mărimea lemniscatei), iar pe de altă parte (dar esențială) fiindcă în calculul coordonatelor punctelor lui $\Gamma_{\boldsymbol{0.001}}$ intervin acum numere prea mari ($10^6$), față de posibilitățile obișnuite în R (dacă nu includem vreun pachet de calcul numeric).

De data aceasta (la $c=0.001$) nici Sage nu ne ajută… Abia cu WolframAlpha, am constatat (doar…) că ecuația $\boldsymbol{y^6-10^6y^2 +2=0}$ — la care se reduce (1) pentru $\boldsymbol{x=0}$ și $y\ne 0$ — are patru rădăcini reale, dintre care două aproape se confundă în origine ($\approx \pm 0.0014)$, iar celelalte două sunt $\pm \approx 31.623$. Cu alte cuvinte pe $\Gamma_{\boldsymbol{0.001}}$ avem și puncte exterioare lemniscatei redate mai sus (de exemplu punctele $(0, \pm\approx31.623)$); alte puncte se pot evidenția probabil similar: fixând câte un $y$ în intervalul $(0, 31)$, rezolvăm pentru $x$ ecuația $f(x,y)=0$. Și probabil, punctele respective se află pe un cerc (sau oval convex) a cărui rază — dacă nu greșim — este $\approx31.623$ (și care împrejmuiește lemniscata arătată separat mai sus).
Obs. De fapt, eventual indicând coeficienți în "format floating-point", puteam rezolva și în R ecuația de mai sus: polyroot(c(2, 0, -1e6, 0, 0, 0, 1))

De sesizat încă, acest aspect: pe desen, cele trei puncte cu $x=0$ (anume $(0,0)$ — care este punct comun, eventual izolat, al curbelor $\Gamma_c$ — și $(0, \pm \approx 0.0014)$) sunt confundate în origine…; deci se prea poate ca pe adevărata curbă $\Gamma_{0.001}$ (pe care n-o putem reprezenta grafic decât foarte aproximativ), cele două ochiuri ale "lemniscatei" să fie totuși disjuncte (?).
Această supoziție este sprijinită și observând curba de nivel 0.25, trasată anterior pentru cazul $\boldsymbol{c}=0.575$ (cea mai apropiată de curba "blue", formată din două mici ovale disjuncte și un oval convex mare care le conține în interior).
Desigur, asemenea "sprijin" de natură vizuală ține de "pe deasupra" (cum și zice titlul), nu de știință… Nu este continuă, funcția polinomială $f(x,y)$ din (1)? păi dacă este continuă… cum să aibă "punct izolat" în origine?
Probabil că în realitate, cele două "ochiuri" nu sunt disjuncte, iar "contradicția", într-un caz ca $\Gamma_{\boldsymbol{0.001}}$, apare din cauza faptului că nu putem "vedea" (sau trasa) decât o secvență finită și aproximativă a punctelor din vecinătatea originii.

Anterior (mai sus) "constatasem" pripit, cică: "nici Sage nu ne ajută"…
Următorul mic program "2603s1.sage" (executat prin sage 2603s1.sage) produce valorile $y$ (pozitive) pentru care $(x,y)\in\Gamma_{\boldsymbol{0.001}}$ pentru $x$ întreg între 1 și 31:

P.<x,y> = AffineSpace(QQ, 2)  # pentru polinoame f(x,y)
f = (x^2+y^2)^4 - 1e6*(x^2+y^2)^2 - 2*(x^2-y^2)  # pentru c = 0.001
for h in range(1, 32):
    print(f.
        subs(x = h).  # instanțiem x, apoi exploatăm polinomul (de y) rezultat 
        univariate_polynomial().
        roots(multiplicities = False)[1]  # rădăcina pozitivă a polinomului
    ) 
# 31.6069612427706  # punctul (1, ≈31.607) este pe curbă 
# 31.5594676604026  # punctul (2, ≈31.56) este pe curbă 
# 31.4801524617973
# 31.3687742672869
# ...
# 12.6095202399616  # curba trece prin punctul (29, ≈12.61) 
# 10.0000000400000  # curba trece prin punctul (30, ≈10)
# 6.24499807221748

Iar plotând cele 31 de puncte rezultate — altele pot fi obținute la fel și stocate într-o listă, în vederea plotării — vedem că acestea sunt așezate pe un cerc, confirmând faptul că $\Gamma_{\boldsymbol{0.001}}$ conține un "cerc" (sau un oval convex) mare, având în interior, pe scara miimilor, "lemniscata" arătată în figura de mai sus (bineînțeles… putem formula un program R similar acestuia, implicând funcția polyroot()).

vezi Cărţile mele (de programare)

docerpro | Prev |