Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

All published worksheets from http://sagenb.org

Views: 168742
Image: ubuntu2004

La utilización de software libre matemático
en docencia e investigación
El caso de SAGE.

Jesús Escribano Martínez,
Dep. Sistemas Informáticos y Computación
Universidad Complutense de Madrid.

  1. Cómo hemos llegado hasta aquí? Interconexión entre DGS y CAS.

    • Problemas técnicos: opacidad de los sistemas propietarios (gramáticas?)

    • Problemas prácticos: Dificultad de acceso, precio de licencias, ...

  2. Giramos la mirada hacia el Software Libre: el caso de Geogebra

  3. La pieza que nos faltaba: SAGE

    • Historia

    • Cómo obtenerlo?

    • Características básicas




Cómo hemos llegado hasta aquí? Interconexión entre DGS y CAS.



(M. A. Abánades, F. Botana, E.): Interconexión entre DGS y CAS.

CAS = Computer Algebra System

  • Aplicaciones informáticas que combinan capacidades de cálculo simbólico, numérico y gráfico.

  • Ejemplos: Mathematica, Maple.

DGS = Dynamic Geometry System

  • Programa informático que permite crear una construcción geométrica y manipularla de manera interactiva.

  • Al mover los elementos, toda la construcción se mueve consecuentemente.

  • Ejemplos: Cabri (Cabri II Plus), Cinderella, Geometer's Sketchpad, GeoGebra

Por qué la conexión?

  • Búsqueda de resultados completos y algebraicamente fiables (ecuaciones, gráficas)

  • Tratamiento de problemas que pueden ser descritos por un DGS, pero cuyas soluciones no pueden ser representadas (lugares geométricos)



Tomemos un triángulo ABC y un punto P. Dibujemos las proyecciones de P sobre los lados del triángulo, Q1, Q2, Q3. ¿Están Q1, Q2 y Q3 alineados?
Desde luego, en general no. ¿Cuál es el lugar geométrico de los puntos P tales que Q1, Q2 y Q3 están alineados?





Software utilizado:

  • Cabri, Cinderella, Geometer's Sketchpad

  • Mathematica, CoCoA

PROBLEMAS TÉCNICOS:

  • Cuál es la estructura interna de un fichero DGS? Gramáticas?

  • Poca colaboración



PROBLEMAS PRÁCTICOS: Dificultad de acceso (licencias) tanto para los autores como para los usuarios.



Giramos la mirada hacia el Software Libre: el caso de Geogebra

www.geogebra.org

Sistema de geometría dinámica que permite además la manipulación directa de elementos algebraicos (ventana algebraica)

Creado en 2001 por Markus Hohenwarter.

Super-rápida extensión

  • Usuarios en 190 países (la ONU tiene 192 miembros).

  • Versiones en 44 idiomas.

  • 500.000 visitas mensuales a su web

Parte importante del proyecto Intergeo : Interoperable Interactive Geometry for Europe.

<IMG SRC="intergeo4.png" NAME="gráficos1" ALT="intergeo"


La pieza que nos faltaba: SAGE

sage

SAGE ( Software for Algebra and Geometry Experimentation) es un software matemático libre que combina la capacidad de numerosos paquetes matemáticos de código abierto con una interface común basada en Python.

  • Una gran distribución de software matemático open source, fácil de instalar (o incluso de compilar desde las fuentes originales).

  • Un conjunto de interfaces para la mayoría del software matemático.

  • Una nueva librería de Python que cubre alguno de los huecos en otro software matemático libre, unifica todo ofreciendo una cómoda experiencia de usuario, y proporciona una interface gráfica (notebook), basada en la web que permite la escritura de contenidos matemáticos y gráficas 2D y 3D integradas.

  • Una cantidad creciente de código propio.



ENLACE: http://www.sagemath.org/

SAGE logo

Misión: Crear una alternativa viable de código abierto a Magma, Maple, Mathematica y Matlab .

Sage CAR

No re-inventamos la rueda: construimos un coche.

PAQUETES INCLUIDOS

  • Algebra and calculus: Maxima, SymPy

  • High precision arithmetic: GMP, MPFR, MPFI, quaddouble, Givaro

  • Commutative algebra: Singular

  • Number theory: PARI, NTL, mwrank, ECM, FLINTQS, GMP-ECM

  • Exact linear algebra: LinBox, IML

  • Group theory: GAP

  • Scientific computation: GSL, SciPy, NumPy, cvxopt

  • Statistical computation: R

  • Graphics (2d and 3d): Matplotlib, Tachyon3d, Jmol

VENTAJAS

  • Fácil instalación (al menos en modo local).

  • Acceso libre (tanto al programa compilado como al código).

  • Amplia documentación.

  • Posibilidad de instalación de servidores: no hace falta instalar nada, solo conectarse a la web.

  • Interacción con Python

DESVENTAJAS

  • No hay instalación nativa en MS-Windows

  • Aplicación en constante desarrollo.

  • No se puede comprar: No se puede incorporar a aplicaciones que no sean de código abierto.


EJEMPLOS


RESOLUCIÓN DE ECUACIONES LINEALES

x, y = var('x, y') solve([x + y == 5, x - y == 4], x, y)
[[x == (9/2), y == (1/2)]]
x, y, z, t = var('x, y, z, t') solve([x + y + 4*z == 11, 2*x + 3*z - t == 11, 4*x + 2*y + 6*z - 2*t == 1, x -y + 5*z -2*t == 0], x, y, z, t)
[[x == (217/22), y == (-21/2), z == (32/11), t == (192/11)]]
M1 = Matrix([[1.0, 1.0, 4.0, 0.0],[2, 0, 0, -1], [0, 2, 6, -2], [1, -1, 5, -2]]) v1 = vector([1, 11, 1, 0]) X2 = M1.solve_right(v1) X2
(4.29310344827586, 2.22413793103448, -1.37931034482759, -2.41379310344828)
a = var('a') S = solve(x^2 + 2*x == 3+a,x); S
[x == -sqrt(a + 4) - 1, x == sqrt(a + 4) - 1]
#Generación automática de matrices grandes a = random_matrix(ZZ,200,x=-2^127,y=2^127) time d = a.determinant() d
Time: CPU 9.69 s, Wall: 73.27 s -7603940867690999521585186444096123436131641409194789136224564514134180493572413041388506248875208851701327916738222313794962830305683215946096009493925949835858634853429258604224780737304049566908051556079798652734837474970739255010212748359987170893545121661086832066137803579634526840765035934213068903589682075509311242170951365154713291829219979668482947945474448894228728266706605741437411910486740999762005681014316058011201485043400944793997575975483855901708745802474900856898082016330266269759252959565914517754330963333182117307542582644425729204821569309344488419636908077829745891846950162687522443955484799884951724442654321540670369696146909054683174922332097080603585283229944935180695126914170141781874389643740044706358848991808093497913047020650644831953377243682977052425212080938925765428845030530207088021964328458200103426931221571823474739124188306653804608745903973048608385107753351473621410430531802647258464019344452573813151637800512928345238160940306229620488060883669597017272252460920728229426862144832201460655059039491444305660768313162434217866120570124135725482022931077550877203564155665774412899708927522429587495808008029281364011311477189065016647034424981371590440784934069083356742420383050372342552534828737667396898273110532905090533891200560179050170430735304690462957333490642242846124841130399471350835850621793259598217502029487421685596705333248670055799414211551452648751487819479218988494024340489681768627457902993003942291922298252057454409925946689195271887435337083847947581882546490183957168071754227109948902865070947125290776598982908509734668669721956721368884722956282288478798642283960243976493827365804869331313880570200698254803005672724437415698008686035412862695454670464972061122869685951623786168861841065182574057837892744068389579772466106396124158716617401908864602130424993176191716789334523462409632832530352251724362857046974601704887866356647980479394114865067543660064900334762258174504072826823165373512925553222980510204829164913079839447787209719683070543633036848481597672512642997439263253783157416369493633459562737809273585321779526630806952946176181820193238782708460381447374053071479520024602539764260889573775374407207546671506533124286607813642508351465838355105695197789731659455207099860379175559694214317801061311299699649893796799864003243621304880330262642598733868703692116906727852490962653723204325397206507667140022232526521517975845260826020230378330682159395803624205781288339360944062228683642886781849581533980944178752762802226445525959792993800259235121843661458766652833726999418537863915373859737100763451945055072541889488794326174164354643871209910188975691655305392724084865279224559866012862961786713430213339953170920103347246305777323380209723377736147454675028152341541396104212185777106491110357592951017078653726598645684060604815844357326560313263630300341544121453793764561399091439694278881110813005574896567009348422831156945926465147968489120332941770266448839581531565432609938941063421657915285237554837557429582842262141929137804163653838480586651740789277887625327395084418145213642511730574331616516854751622921570084264087641813021250369755416975865844924656285023518460383879830495804167443778227253269891161046243082761257008685821996101532601542875088580857193677360394955987492507167698336102118683796060239648450342875476980508116848634661079143107640441821162052707712449290102193220312187598559290105336842826911557594693184212074415519409127953717583955401639231371975699803156189035691342230912091818821657305516496236665882066864034711620373732938805186277307623030060381457324093356457600845588320900117625817756033030251688793583621469898296365659103567924577030848408116856660903403182188378919478943195039458444072426772682008474988515027664366811240426464778002396946202332883857679775916919443954011710215055882872183435653435419872182691230894128389534983201057855175129073120989582352691624181107947232758350531974822240795628979737412773865798057871315954470738973501598728926960701588126144009130501447607089548487619663829785879527789154142041499063791088649236774985060801003366872368347656926885044661408561741461824896672814963916066557083553786657530326423795637963348110409141122837530874116663780227578154282116120385397281766949513884972464461544203341047321778714864410076827699123671042412515721071773867498547401191355796492885061053243705039618890904391084572647894998635157492697530743484546854614459923316260366085482749016376601172201596173243628105395014228837444027090892820560319393909989503704108820930278908735081246622032945714026583291525241241811761085524547022169756584150752734198341215661827016662480790710788870396512079952026168360615491890145056590136306795282490974057309091348920702742972435803091819098661866855448152742247967432423089010683915264171084270216274490602021405892672197772091168147580919799423465856449239164983071122047755523464395609860389044647780751340555297312583714508887245277775022268104174117644694106718191560646585461386825329742462866619715484357905908794981052191614057208936359048848046506697625572070490297586454606559399376132388795525204205539306681431421758354864807963389142881365986606558922691039181586563256583666752369489617171918805005050985562958583047346726146196732066096781137513369268695807234471658142985343349920986780141025741393491819363788981208408563898336941744703691759300119762162865306795307247018385878009371853609038207320022526867890962270840727275203806242328644788065506785086991203862379850918565949610845948365743624310899611009477099228915165409283261539945725461087964052186545165932433839575145934300939481502985932442093199963669498857183217705102504045299337930519643814316625842423771231915491168019186960079788283833449779250978468141738010692897207170068349423038830927497185076462832301591032975559549476966426847607523915797510821129452140392067931528640350593835062723922478370747216529627295873918316843340062813674412568914406479620594709693867713703105812559675423865237371363315520222270424901224725626479716894519759026833391222354878627641005230825080781048635704038841396593980513667947507820596949262086043742681206115592797396041529187631449075985013310104023329158343621760828717732311194817143250342877566680522355805820918819621132804286951595868294097629895824364056504638806409032798823157661223559993419423228756677523566197807611871584135828735993116000527630977174388601972693368349855559251385703004721248530168508526353805216569998016798292932416792676092110464495938755927111375893868294096070268935019783171288696189023292030053455142315866610981066183106876157078182613110300723697405869563064754585509699083716231183516592537525522984762196416352445685471844572104510351024429779713293481454719257206126508036206133218499720318672804838605355667519272454265841445632977648030758520926720679732675869855828176620688349671027157960280350750073564000920461292331135168958018931488846538973123748264323621087114449769451571973040022979141946015230181687883453331009624012757840402407565372528117470452124164786514001902051361970485783817544453924700876586116920162443435952600703907504192784067121257896175928616139142175982266882116194738901872114567722586890524589695977081651340858004891351437766997757128851193153198499892707817295488608832004058709670677102595969435270689465125561453156919190054037313326421305920582166981190201712422601315798900108956979405848372112770458772127978420541617777614911533427595898864879443364007243438189709274965575500743167392451461728053310020610830590297594997338036357975969812108549466424297900225398926770767693460311879830676614330516246705927636942565280971692058444150829634805719625657131424265580753867440889247844142496130762013043542777273450991690874246636910679694102
#más numeros grandes factorial(100)
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
#digitos de pi N(pi, digits=150)
3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940813
FACTORIZACIÓN DE POLINOMIOS
R.<x,y> = QQ[] F = factor(x^99 + y^99) F
(x + y) * (x^2 - x*y + y^2) * (x^6 - x^3*y^3 + y^6) * (x^10 - x^9*y + x^8*y^2 - x^7*y^3 + x^6*y^4 - x^5*y^5 + x^4*y^6 - x^3*y^7 + x^2*y^8 - x*y^9 + y^10) * (x^20 + x^19*y - x^17*y^3 - x^16*y^4 + x^14*y^6 + x^13*y^7 - x^11*y^9 - x^10*y^10 - x^9*y^11 + x^7*y^13 + x^6*y^14 - x^4*y^16 - x^3*y^17 + x*y^19 + y^20) * (x^60 + x^57*y^3 - x^51*y^9 - x^48*y^12 + x^42*y^18 + x^39*y^21 - x^33*y^27 - x^30*y^30 - x^27*y^33 + x^21*y^39 + x^18*y^42 - x^12*y^48 - x^9*y^51 + x^3*y^57 + y^60)
F.expand()
x^99 + y^99
EXPRESIONES SIMBÓLICAS
x = var('x') f = sin(3*x)*x+log(x) + 1/(x+1)^2 show(f)
x \sin\left(3 \, x\right) + \frac{1}{{(x + 1)}^{2}} + \log\left(x\right)
plot(f,(0.01,2))
GRÁFICOS
x=var('x') parametric_plot((x,1/x),(0.1,10))
#gráficos y programación lista = [] for k in range(-20, 20): f = sin(k*x**2 - k*x) lista.append(f) plot(lista)
t=var('t') parametric_plot((t*cos(t),t*sin(t)),0,16*pi)
#graficos 3D r=var('r') parametric_plot3d([r,cos(r),sin(r)],(r,0,16*pi))
u,v=var('u,v') fx=(3+sin(v)+cos(u))*cos(2*v) fy=(3+sin(v)+cos(u))*sin(2*v) fz=sin(u)+2*cos(v) parametric_plot3d([fx,fy,fz],(u,0,4*pi),(v,0,4*pi),color="red")
#Poliedros sphere((0,0,0)) + sphere((0,1,0),color='red', opacity=0.5) + icosahedron((1,1,0), color='orange')