GeoPy: Estudi de les posicions relatives de rectes en el pla

De la geometria lineal a l’àlgebra lineal en Python!

Tu mateix/a pots programar el Geogebra per estudiar les posicions relatives de rectes en el pla. T’atreveixes?

ATENCIÓ: aquesta activitat en Python va quedar reemplaçada per una en JavaScript (està en preparació) en el moment que l’equip de GeoGebra va descartar el primer llenguatge i es va centrar en el darrer.

Per motius d’arxiu s’ha guardat en aquesta entrada tota la informació que tenia a veure amb el projecte GeoPy que combinava GeoGebra i Python. De forma que ara hi trobareu:

  1. La pàgina d’introducció dedicada als alumnes: GeoPy: Python dins de Geogebra
  2. La pàgina de l’activitat pels alumnes: GeoPy: Estudi de les posicions relatives de rectes en el pla
  3. La pàgina de recursos per a professors: GeoPy: materials docents (Python dins de Geogebra)

GeoPy: Python dins de Geogebra

Breu descripció

Logo Geogebra (font: http://www.geogebra.org/images/logo.png )

És possible iniciar-se a la programació dins del programa de geometria dinàmica Geogebra. La darrera versió d’aquest programa (versió 5 encara en preparació) ja permet afegir-hi programes fets en en Python. Aquest llenguatge de programació és un dels més estesos actualment com a llenguatge d’alt nivell, vàlid per a iniciar-se a la programació.

A continuació trobareu:

  1. Entorn: introducció a l’entorn de desenvolupament.
  2. Accés: instruccions per accedir i executar Python dins del Geogebra.
  3. Exemple de codi: exemple inicial per familiaritzar-se amb l’entorn.
  4. Enllaços interns: recull de recursos dins d’EduLogiX.
  5. Enllaços externs: recull d’enllaços i bibliografia.

1. Entorn

geopy-cercel-3-punts-env

(feu clic a la imatge anterior per ampliar-la; el codi també el teniu en text a la secció 3. Exemple)

  • EN CONSTRUCCIÓ: En breu, aquí hi haurà una descripció de cada element de l’entorn de desenvolupament i execució.

2. Accés

  1. Obrir Geogebra:
    • De moment només funciona al Geogebra v4.9.247.0 que està en fase Beta i el podeu baixar/executar usant aquest enllaç: Geogebra v4.9.247.0 (ATENCIÓ: fixeu-vos bé en la versió, que ha de ser la 247, no pot ser major).
    • caldrà que tingueu el Java instal·lat al vostre sistema.
    • funciona en Linux / Mac / Windows.
    • encara no funciona en Tablets / Navegador (les versions anteriors actuals de Geogebra sí ho fan, però encara no tenen incorporat l’accés a Python)
  2. Obrir la finestra de Python:
    1. Menú / Visualitza / Python : s’obrirà la finestra encastada de Python
      • però des d’aquesta encara no és possible executar scripts sencers, així que cal “desencastar la finestra”
        1. apropeu-vos amb el ratolí (no feu clic) a la icona per tancar la finestra geopy-finestra-encastada-icona-tancar encastada de Python (està a la dreta superior de la finestra encastada, feu una ullada a aquesta imatge).
        2. veureu que a la seva esquerra apareix una icona de finestres geopy-finestra-encastada-icona-finestres (feu una ullada a aquesta imatge).
        3. feu-hi clic geopy-finestra-encastada-icona-finestres i s’obrirà la finestra de l’intèrpret de Python apart (us ha de quedar en dos finestres separades com es veu en aquesta imatge).
  3. Executar el codi:
    1. Des del finestra de Python (la independent que has obert al pas anterior) :
      1. Menú (de la finestra de Python) / Edit / Run script : per executar tot el codi que hi hagi a la pestanya “Script”.
      2. o bé Ctrl+E.
  4. Usar una activitat penjada a GeogebraTube que contingui un programa en Python (exemple les que tenen l’etiqueta GeoPy). Actualment cal descarregar el fitxer de Geogebra i obrir-lo amb el programa al teu ordinador, per tant cal:
    1. Descarregar el fitxer de Geogebra (*.ggb) de l’activitat:
      1. accedir a la vista de professor fent clic a l’enllaç “Creat amb Geogebra” que hi ha al final de la pàgina web (ex. vegeu el final d’aquesta pàgina d’alumne )
      2. descarregar el fitxer fent clic al botó “Descarrega” que hi ha després de la captura de pantalla (ex. vegeu aquesta pàgina de professor)
      3. guardar-lo en alguna localització coneguda del vostre ordinador.
    2. Obrir Geogebra (vegeu la descripció anterior d’Accés).
    3. El codi Python que incorpori l’activitat s’executarà automàticament
      • seguiu la descripció anterior d’Accés per a obrir la finestra Python i veure el codi.
      • si l’activitat ja s’havia guardat amb el codi executat, en tornar-se a executar és possible que dupliqui els elements “visuals” del Geogebra. Tan sols cal que els seleccioneu i els esborreu si voleu veure què fa l’execució des de l’inici.

3. Exemple de codi

EN CONSTRUCCIÓ: De moment aquí hi ha un primer codi d’exemple. En el moment que es publiqui la primera activitat introductòria, aquest exemple tendirà a ser el més minimalista possible, tan sols per a fer-se una idea de que es poden executar comandes. La resta, formarà part de les activitats.

Problema exemple

Enunciat: “Crea un programa en Python (dins de Geogebra) que permeti trobar l’equació d’una circumferència donats tres punts del pla cartesià. Nota: no es pot usar la comanda de construcció de circumferències a partir de tres punts del Geogebra.”

Codi en Python

# geopy-circumf-3-punts.py

# Problema: descripció del problema i dades inicials
class Problema:
"""Enunciat: dibuixa una circumferència donats tres punts"""
def __init__(self, A, B, C):
self.ptA = A
self.ptB = B
self.ptC = C

def __str__(self): return "%s ; %s ; %s" % (self.ptA.geo, self.ptB.geo, self.ptC.geo)

# Solució: tipus de solució desitjada
class Solucio:
"""Solució: l'equació d'una circumferència"""
def __init__(self, circumf):
self.circumf = circumf

def __str__(self): return str(self.circumf.geo)

# algorisme: pla per obtenir la solució a partir de les dades del problema
def algorisme( p ):
$segAB = Segment(p.ptA, p.ptB)
$segBC = Segment(p.ptB, p.ptC)

[$medAB] = command("PerpendicularBisector",$segAB)
[$medBC] = command("PerpendicularBisector",$segBC)

[$centre] = Intersect($medAB, $medBC)

$circumf = Circle($centre, p.ptA)

return Solucio($circumf)

# Execució del pla per un cas concret

# Dades inicials
$A=(1,1)
$B=(3,3)
$C=(2,4)
prob = Problema($A, $B, $C)

# Execució del pla
sol = algorisme( prob )

print u"Problema: ", prob
print u"Solució: ", sol
  • EN CONSTRUCCIÓ: en breu, aquí hi haurà una descripció de cada element del codi anterior.

4. Enllaços interns

5. Enllaços externs

Guió de la sessió presencial: Estudi de les posicions relatives de rectes en el pla

iniAbans de començar

Fitxa Didàctica (general)

Fitxa Didàctica (general)

  • Obre el Geogebra v4.9.247.0 i les finestres necessàries (Python , Full de Càlcul, La Zona Gràfica). Pots veure les instruccions en aquesta pàgina.
  • Conceptes previs:
    • Matrius numèriques
    • Operacions entre matrius
  • Pla de treball:
    • Pas 1: Traduir a llenguatge matricial el sistema d’equacions format per dues rectes.
    • Pas 2: Fer la resolució algèbrica del sistema mitjançant Cramer.
    • Pas 3: Fer que el programa funcioni per a qualsevol parella de rectes.
  • Mira d’assolir els reptes que hi ha a continuació tu sol/a, i si no saps com fer-ho, mira les idees. Si encara et cal una mica més d’ajuda, pots fer una ullada a les pistes.

petjadaPas 1: Traduir a llenguatge matricial el sistema d’equacions format per dues rectes

Partir de dues rectes i veure com es pot treballar amb elles mitjançant un Full de Càlcul.

  • puzzleRepte 1: Dibuixar dues rectes secants al pla cartesià en un full quadriculat.
    • A partir de les dues rectes dibuixades obtingues les seves respectives equacions generals, tal que els coeficients siguin enters.
    • lupaPistes:
      • - Determina dos punts de cadascuna de les rectes i, a partir d'ells, busca la seva direcció.
        - Relaciona els coeficients de l'equació ax+by=c amb el vector trobat i un punt per on passa.
        
  • puzzleRepte 2: Escriure el sistema d’equacions en el full de càlcul de Geogebra
    • Visualitza el Full de càlcul
    • lupaPistes:
      • Entra el coeficient de la ‘x’ a la cel·la A1, el de la ‘y’ a la cel·la B1 i el terme independent a l’altre membre de l’equació a la cel·la C1.
      • Fes el mateix amb la segona recta a la fila següent.
  • puzzleRepte 3: Crear una funció en codi a partir dels coeficients entrats en el full de càlcul de manera que es representin les rectes en la Vista Gràfica de Geogebra.
    • bombetaIdees:
      • Escriu una comanda per  cada recta.
      • Des de Geogebra pots accedir al valor de la cel·la A1 del full de càlcul escrivint A1
      • Per referir-te a una comanda en codi has d’emprar:
         command("y=3x+2")
      • Exemple de definició i crida d’una funció:
        # Definició
        def funcio( num ):
            res = num * 2
            return res
        # Crida
        a = funcio( 5 )
        print "Resultat: ", a
        
        • Les línies que comencen amb # són comentaris (no seran executats).
        • Fixa’t que totes les instruccions de dins d’una funció van indentades (amb uns espais a l’inici, es pot fer amb la barra espaiadora o usant la tecla de tabulació).
        • La definició de la funció s’acaba a la primera línia que no està indentada. Aleshores, és quan es pot usar la nova funció creada.
        • El resultat de la comanda “print” el podràs veure a la pestanya “Interactive”.

petjadaPas 2: Fer la resolució algèbrica del sistema mitjançant Cramer

Després d’haver expressat les rectes com a matriu de coeficients al full de càlcul i haver-les representat a la zona gràfica, ara pots afegir més codi per tal de resoldre el sistema a partir d’aquests coeficients.

  • puzzleRepte 1: Calcular el determinant de la matriu de coeficients.
    • El programa ha d’imprimir el resultat.
    • Posa les instruccions que calculen el determinant dins d’una funció de codi que retorni el valor numèric del determinant.
    • Recorda que pots fer una codificació senzilla que només serveixi per a sistemes de dues equacions i dues incògnites (més endavant miraràs de fer-ho genèric).
    • bombetaIdees:
      • Recorda com es calcula el determinant d’una matriu de 2×2.
      • Exemple de codi que accedeix al valor d’una cel·la del full de càlcul.
         print $['A',1].value + 2
    • lupaPistes:
      • - Determinant de la matriu 2x2: determinant A1·B2-B1·A2
        
    • interrogantPregunta 1: Quina relació trobes entre el càlcul d’un determinant i la direcció de les rectes? (pots provar diferents casos amb el programa que has fet, i treure les teves pròpies conclusions)
  • puzzleRepte 2: Resoldre el sistema d’equacions pel mètode Cramer.
    • El programa ha d’imprimir el resultat per la consola de Python i la seva representació a la Zona Gràfica de Geogebra.
    • Posa les instruccions que resolen el sistema dins d’una funció de codi que retorni la solució. A més, aquesta funció pot rebre el determinant calculat al repte anterior.
    • Recorda que pots fer una codificació senzilla que només serveixi per a sistemes de dues equacions i dues incògnites (més endavant miraràs de fer-ho genèric).
    • bombetaIdees:
      • Recorda com funciona el mètode Cramer per a un sistema de dues equacions i dues incògnites.
      • Exemple de codi que crea un punt a la Zona Gràfica:
         $P=(3,5) #en majúscules és un punt
    • lupaPistes:
      • - Per al valor d'x: et cal calcular el determinant A1·C2-C1·A2
        - Per al valor d'y: et cal calcular el determinant B1·C2-C1·B2
        
    • interrogantPregunta 2: Definit un sistema d’equacions lineals, quantes solucions et retorna el programa? Per què?
    • interrogantPregunta 3: Creus que el programa que has fet pot tenir algun problema si les rectes tenen la mateixa direcció?

petjadaPas 3: Fer que el programa funcioni per a qualsevol parella de rectes

Modificar el programa realitzat de manera que sigui vàlid per a qualsevol parell de rectes, independentment de la seva posició relativa i la quantitat de solucions que tingui.

  • puzzleRepte 1: Millorar el programa perquè funcioni amb rectes coincidents.
    • Crea una funció que entrant la matriu numèrica imprimeixi si es tracta d’un Sistema Compatible Determinat o un Sistema Compatible Indeterminat. En qualsevol cas, el teu programa ha de proporcionar la solució.
    • bombetaIdees:
      • Mètode 1: emprar la proporcionalitat entre els vectors de les rectes i els termes independents. I hauràs superar la dificultat de tenir coeficients nuls.
      • Mètode 2: emprar el mètode d’orlar per obtenir rangs.
      • Exemple de codi que distingeix entre dos casos (se’n diu condicional):
        if num % 2 == 0:
          print "Nombre parell"
        else: # diferent de zero: num % 2 != 0
          print "Nombre senar"
        
    • lupaPistes:
      • - Mètode 1: si A1·C2 != C1·A2 són coincidents.
        - Mètode 2:
        
    • interrogantPregunta 4: Has contemplat totes les posicions relatives possibles entre dues rectes?
  • puzzleRepte 2: Millorar el programa perquè funcioni amb qualsevol parell de rectes.
    • Modifica, en cas que sigui necessari el programa creat per a que pugui classificar i indicar les solucions per a qualsevol parell de rectes.
    • bombetaIdees:
      • Pots emprar els mateixos mètodes del repte 1.
      • Exemple de codi que aniua condicionals:
        if num % 2 == 0:
          if num % 3 == 0:
            print u"Nombre múltiple de 6"
          else:
            print u"Nombre parell no múltiple de 6"
        else:
          print "Nombre senar"
        
  • puzzleRepte 3: Modifica el programa perquè l’assignació inicial de coeficients sigui aleatòria.

mesI després…

Felicitats! Ara pots provar de crear un altre programa que contempli la posició relativa de tres rectes en el pla.

feather Autoria: Manel Martínez i Pascual, i Jordi Campos i Miralles.

GeoPy: materials docents (Python dins de Geogebra)

Idea general

1. Objectius

  1. Fomentar una actitud analítica davant dels problemes: plantejar-se les dades del problema, com serà la solució i el pla per arribar de l’una a l’altra (l’algorisme).
  2. Introduir nocions de programació: conceptes des de seqüències i iteracions bàsiques fins a funcions i classes. Això permetrà, més endavant, reemplaçar fàcilment el Geogebra per llibreries científiques d’alt rendiment com ara la SciPy.
  3. Treballar conceptes matemàtics: donat que es treballa amb Geogebra, es poden abarcar multitud de problemes matemàtics, especialment els basats en geometria i anàlisi de funcions.

2. Estructura d’una activitat

EN CONSTRUCCIÓ

Les activitats han de promoure que els alumnes afrontin un problema matemàtic, reflexionin sobre un pla per a solucionar el problema plantejat i l’acabin plantejant com un algorisme codificat en un llenguatge de programació (en aquest cas el Python).

L’estructura d’una activitat seguirà la metodologia d’EduLogiX en base a la plantilla bàsica com les activitats creades en altres entorns (ex. vegeu aquesta activitat en Scratch).

(S’està en procés d’el·laboració de les primeres activitats.)

3. Activitats

EN CONSTRUCCIÓ

Vegeu un exemple de solució a la pàgina dirigida als alumnes. En breu es publicarà la fitxa d’activitat corresponent, amb l’estructura comentada a la secció anterior.

De moment, estem usant l’etiqueta GeoPy per afegir exemples resolts al GeogebraTube.

(S’està en procés d’el·laboració de les primeres activitats.)

Idees d’activitats

  • Introducció fent dibuix lliure
  • Pla per a problema matemàtiques:
    • com l’exemple llistat anteriorment de trobar centre circumferència a partir de tres punts
  • Jocs:
    • Caça Talps (clic sobre objectes) com ara aquest fet amb AppInventor.
  • Motors físics:
    • simulant gravetat en pes sobre pla inclinat en 3D
    • simulant trajectòria parabòlica

4. Com contribuir

EN CONSTRUCCIÓ

  • Usar l’etiqueta GeoPy per afegir exemples resolts al GeogebraTube.
  • Crear pàgines d’activitat segons la metodologia EduLogiX en base a la plantilla bàsica.
    • podeu usar el resaltat en color de codi incloent els següents tags a la vista HTML de l’entrada a EduLogiX:
      •  #codi en python
         
      • i es poden modificar vàries coses com veureu explicat a l’ajuda de WordPress Posting Source Code (donem les gràcies a Alejandro Daniel per aquesta aportació).
  • Idees generals a incorporar:
    • afegir tests unitaris al final dels programes/enunciats on es provi l’algorisme amb casos trivials (inicialment els pot proposar el docent i posteriorment demanar als alumnes que en creïn ells mateixos).

5. Enllaços

Anuncis

Deixa un comentari

Fill in your details below or click an icon to log in:

WordPress.com Logo

Esteu comentant fent servir el compte WordPress.com. Log Out / Canvia )

Twitter picture

Esteu comentant fent servir el compte Twitter. Log Out / Canvia )

Facebook photo

Esteu comentant fent servir el compte Facebook. Log Out / Canvia )

Google+ photo

Esteu comentant fent servir el compte Google+. Log Out / Canvia )

Connecting to %s