python-bary

Tutto ciò che dovete sapere per arrivare preparati alle competizioni matematiche.
Rispondi
Delfad0r
Messaggi: 191
Iscritto il: 09/02/2015, 22:19

python-bary

Messaggio da Delfad0r »

python-bary

Cos'è
python-bary è, come suggerisce il nome, una libreria in Python che, come suggerisce il nome, permette di risolvere problemi geometrici per mezzo delle tanto famigerate ed abusate coordinate baricentriche. È stata sviluppata da me medesimo in un arco temporale piuttosto breve, ma ciononostante supporta tutte le operazioni fondamentali, come vedremo più avanti.
Sarei una persona meschina se non menzionassi il fatto che python-bary sfrutta un'altra libreria, sympy, per il calcolo simbolico: la risoluzione di equazioni e la semplificazione di espressioni è (quasi) totalmente merito di essa.

Prerequisiti e installazione
Come suggerisce il buon senso, per utilizzare una libreria Python è necessario Python; in particolare, è necessario Python3.
I più fortunati fra di voi che utilizzano una qualche distribuzione Linux possono installarlo con un semplice

Codice: Seleziona tutto

sudo apt-get install python3
(sostituite apt-get con il vostro gestore pacchetti).
Gli altri possono scaricarlo in qualche modo da qui (Python3, mi raccomando!).
Come accennato prima, python-bary sfrutta sympy, che va quindi installata anch'essa; potete trovare istruzioni per installare sympy qui.
Infine, la libreria vera e propria. Il codice sorgente si trova su GitHub.
Scaricate ed estraete l'archivio https://github.com/Delfad0r/python-bary ... master.zip (o in alternativa, se siete pratici di git, potete clonare il repository). Nella cartella dove avete estratto eseguite

Codice: Seleziona tutto

python3 setup.py install
(servono i permessi di root se siete su Linux).
E niente, se siete fortunati ha funzionato tutto. Ora potete far partire la console di Python e digitare

Codice: Seleziona tutto

from bary.default import *
per avere a disposizione tutta la potenza di python-bary!

Come si usa
Qualche conoscenza basilare di Python può aiutare ma non è strettamente necessaria: gli esempi sottostanti dovrebbero chiarire come usufruire delle funzioni principali di python-bary.
Come ogni libreria che si rispetti, python-bary avrebbe bisogno di documentazione, che però al momento non ho alcuna voglia di scrivere. Ancora una volta, spero che gli esempi sotto, che mostrano molte (ma non tutte!) funzionalità fondamentali della libreria, siano sufficienti.
Sentitevi comunque liberi di scrivermi, in questo thread oppure in privato, se non riuscite a fare qualcosa (il che comprende anche l'installazione) o necessitate di chiarimenti.
Il feedback è ovviamente apprezzato. Se riscontrate malfunzionamenti, o avete in mente funzionalità che migliorerebbero la libreria, non esitate a contattarmi.
Ma ora...

Enough words!
Vediamo ora all'opera python-bary mentre macina senza troppi problemi alcuni esercizi.
  • BMO 2015/2
    Sia $\triangle{ABC}$ un triangolo scaleno acutangolo con incentro $I$ e circumcerchio $\omega$. Le rette $AI,BI,CI$ intersecano $\omega$ in $D,E,F$ rispettivamente. Le parallele ai lati $BC,CA,AB$ passanti per $I$ intersecano le rette $EF, FD, DE$ in $K, L, M$. Dimostrare che $K, L, M$ sono allineati.
    Testo nascosto:
    Immagine
  • BMO 2013/1
    In un triangolo $\triangle{ABC}$, l'ex-cerchio $\omega_a$ opposto ad $A$ tange $AB$ in $P$ e $AC$ in Q, mentre l'ex-cerchio $\omega_b$ opposto a B tange $BA$ in $M$ e $BC$ in $N$. Sia $K$ la proiezione di $C$ su $MN$, e $L$ la proiezione di $C$ su $PQ$. Dimostrare che il quadrilatero $MKLP$ è ciclico.
    Testo nascosto:
    Immagine
  • IMO 2012/1
    In un triangolo $\triangle{ABC}$, $J$ è il centro dell'ex-cerchio opposto ad $A$; l'ex-cerchio tange $BC, AB, AC$ in $M, K, L$. Le rette $LM,BJ$ si intersecano in $F$, e le rette $KM, CJ$ in $G$. Sia $S$ il punto di intersezione delle rette $AF, BC$, e sia $T$ il punto di intersezione delle rette $AG, BC$. Dimostrare che $M$ è il punto medio di $ST$.
    Testo nascosto:
    Immagine
  • BST 2015/5
    Sia $ABCD$ un quadrilatero ciclico. Sia $M$ un punto sul segmento $CD$, e sia $N$ il punto sul segmento $BA$ tale che
    $$
    \frac{CM}{CD}=\frac{BM}{BA}
    $$
    Sia $Q$ il secondo punto di intersezione tra le circonferenze circoscritte ai triangoli $\triangle{AMD}$ e $\triangle{BMC}$. Dimostrare che la circonferenza circoscritta al triangolo $\triangle{NQB}$ è tangente alla retta BC.
    Testo nascosto:
    Immagine
    Alcune note su quest'ultimo problema.
    Innanzitutto abbiamo preso come triangolo di riferimento $\triangle{ADK}$, dove $K$ è l'intersezione fra $AB$ e $CD$. Poi abbiamo definito due simboli di sympy, ovvero $l$ e $m$; $l$ è il fattore dell'omotetia di centro $K$ che manda $D$ in $C$; $m$ invece è quel numero reale tale che $(m+1)\vec{M}=m\vec{C}+\vec{D}$ (e ovviamente $(m+1)\vec{N}=m\vec{B}+\vec{A}$). Il problema finisce quando troviamo che la circonferenza circoscritta a $\triangle{BNQ}$ ha una sola intersezione con $BC$, dunque è tangente ad essa (ne approfitto per far notare che `intersect` ritorna sempre una lista, anche se l'intersezione è un solo punto).
    E infine, un applauso a lucaboss che ha fatto tutti questi conti in gara :) .
  • IMO SL 2003/5
    Sia $\triangle{ABC}$ un triangolo isoscele con base $AB$, $I$ l'incentro. Si scelga un punto sulla circonferenza circoscritta ad $\triangle{AIB}$ interno al triangolo $\triangle{ABC}$. Sia $D$ il punto di intersezione tra $AB$ e la parallela di $AC$ passante per $P$, $E$ il punto di intersezione tra $AB$ e la parallela di $BC$ passante per $P$, $F$ il punto di intersezione tra $AC$ e la parallela di $AB$ passante per $P$, $G$ il punto di intersezione tra $BC$ e la parallela di $AB$ passante per $P$. Sia $X$ l'intersezione tra $DF$ e $EG$. Mostrare che $X$ sta sulla circonferenza circoscritta ad $\triangle{ABC}$.
    Testo nascosto:
    Immagine
    In questo problema usiamo `oggetto.subs(b, a)`, che rimpiazza $b$ con $a$ nell'espressione di `oggetto`: in questo modo possiamo imporre che il triangolo sia isoscele.
    Compare inoltre la funzione `hsolve`: è una funzione che risolve equazioni restituendo una $n$-upla omogenea, che qui usiamo per imporre il passaggio di $P$ per $\omega$.
Ultima modifica di Delfad0r il 27/09/2015, 14:58, modificato 1 volta in totale.
lucaboss98
Messaggi: 981
Iscritto il: 27/11/2013, 20:03

Re: python-bary

Messaggio da lucaboss98 »

Beh dai, i miei conti erano fatti in modo un po' più intelligente, in modo da avere tipo una tangenza su un lato del triangolo ed ho fatto il problema al contrario, ma vabbè.., grande!!! :lol:
Lasker
Messaggi: 834
Iscritto il: 17/03/2013, 16:00

Re: python-bary

Messaggio da Lasker »

Con questa libreria forse si combina anche a fare i problemi di Sala senza essere un matematico del '600!
Cur enim scribere tre numeri quando se ne abbisogna di due? Sensibilizzazione all'uso delle potenti Coordinate Cartesiane, possano seppellire per sempre le orride baricentriche corruttrici dei giovani.

PRIMA FILA TUTTI SBIRRI!

#FREELEPORI
cip999
Messaggi: 584
Iscritto il: 26/02/2014, 16:47

Re: python-bary

Messaggio da cip999 »

Delfad0r ha scritto:I più fortunati fra di voi che utilizzano una qualche distribuzione Linux possono installarlo con un semplice

Codice: Seleziona tutto

sudo apt-get install python3
(sostituite apt-get con il vostro gestore pacchetti).
Gli altri possono scaricarlo in qualche modo da qui (Python3, mi raccomando!).
Esiste poi una terza categoria di persone, quelle per le quali il buon Delfad0r mette a disposizione il suo server personale in seguito alle lamentele di Windows che si rifiuta di installare Python.
Comunque davvero un bel lavoro!
Lasker ha scritto:Con questa libreria forse si combina anche a fare i problemi di Sala senza essere un matematico del '600!
Rido.
Non so con quali armi si combatterà la Terza Guerra Mondiale, ma la Quarta sì: con bastoni e pietre.
Albert Einstein
afullo
Messaggi: 2035
Iscritto il: 13/03/2013, 22:06
Contatta:

Re: python-bary

Messaggio da afullo »

Bello, complimenti per il lavoro! A quando l'integrazione in Sage? :D
Delfad0r
Messaggi: 191
Iscritto il: 09/02/2015, 22:19

Re: python-bary

Messaggio da Delfad0r »

afullo ha scritto:Bello, complimenti per il lavoro!
Ti ringrazio :D
Lasker ha scritto:Con questa libreria forse si combina anche a fare i problemi di Sala senza essere un matematico del '600!
Ci puoi scommettere.
afullo
Messaggi: 2035
Iscritto il: 13/03/2013, 22:06
Contatta:

Re: python-bary

Messaggio da afullo »

Delfad0r ha scritto:
afullo ha scritto:Bello, complimenti per il lavoro!
Ti ringrazio :D
Figurati! :mrgreen: Comunque, per la seconda parte del messaggio: :)

https://it.wikipedia.org/wiki/Sage_%28software%29
Avatar utente
enigma
Messaggi: 124
Iscritto il: 19/03/2013, 20:11

Re: python-bary

Messaggio da enigma »

Ci si poteva accorgere che il punto del problema di Sala è l'ortocentro anche così: costruisco a manina il punto $R$ a partire dal triangolo $ABC$ e poi dò in pasto a GeoGebra il comando

Codice: Seleziona tutto

IndexOf(R,Sequence[TriangleCenter(A,B,C,i),i,1,3000])
E niente, volevo solo consegnare alla posterità questo simpatico hack che trovai tempo fa.
Delfad0r
Messaggi: 191
Iscritto il: 09/02/2015, 22:19

Re: python-bary

Messaggio da Delfad0r »

afullo ha scritto:Comunque, per la seconda parte del messaggio: :)

https://it.wikipedia.org/wiki/Sage_%28software%29
Sono a conoscenza dell'esistenza di Sage, ma sinceramente non ho idea di cosa io debba fare per rendere la libreria compatibile con esso.
enigma ha scritto:Ci si poteva accorgere che il punto del problema di Sala è l'ortocentro anche così: costruisco a manina il punto R a partire dal triangolo ABC e poi dò in pasto a GeoGebra il comando

Codice: Seleziona tutto

IndexOf(R,Sequence[TriangleCenter(A,B,C,i),i,1,3000])
E niente, volevo solo consegnare alla posterità questo simpatico hack che trovai tempo fa.
Le magie O.o
afullo
Messaggi: 2035
Iscritto il: 13/03/2013, 22:06
Contatta:

Re: python-bary

Messaggio da afullo »

Delfad0r ha scritto:
afullo ha scritto:Comunque, per la seconda parte del messaggio: :)

https://it.wikipedia.org/wiki/Sage_%28software%29
Sono a conoscenza dell'esistenza di Sage, ma sinceramente non ho idea di cosa io debba fare per rendere la libreria compatibile con esso.
Prova a buttare un occhio qui: http://doc.sagemath.org/html/en/faq/faq ... ad-of-sage ;)
Rispondi