automatic calculation of plane loci using gr obner bases
play

Automatic calculation of plane loci using Gr obner bases and - PowerPoint PPT Presentation

Automatic calculation of plane loci using Gr obner bases and integration into a Dynamic Geometry System Michael Gerh auser, Alfred Wassermann July 24, 2010 Overview JSXGraph - A short overview Computing plane loci using Gr obner


  1. Automatic calculation of plane loci using Gr¨ obner bases and integration into a Dynamic Geometry System Michael Gerh¨ auser, Alfred Wassermann July 24, 2010

  2. Overview JSXGraph - A short overview Computing plane loci using Gr¨ obner bases Implementing this algorithm in JSXGraph Optimizations

  3. JSXGraph

  4. JSXGraph What is JSXGraph? ◮ A library implemented in JavaScript ◮ Runs in recent versions of all major browsers ◮ No plugins required ◮ LGPL-Licensed Main features ◮ Dynamic Geometry ◮ Interactive function plotting ◮ Turtle Graphics ◮ Charts

  5. JSXGraph Supported Hardware ◮ PC (Windows, Linux, Mac) ◮ ”Touchpads” like the Apple iPad ◮ Mobile phones, iPod ◮ Basically every device which runs at least one of the supported browsers

  6. JSXGraph Supported Browsers ◮ Firefox ◮ Chrome/Chromium ◮ Safari ◮ Internet Explorer ◮ Opera

  7. JSXGraph Example/Input < l i n k r e l =” s t y l e s h e e t ” type=”t e x t / c s s ” h r e f=”c s s / j s x g r a p h . c s s ” / > < s c r i p t type=”t e x t / j a v a s c r i p t ” s r c=” j s / j s x g r a p h c o r e . j s ” < / s c r i p t > > . . . < d i v i d=”jxgbox ” c l a s s =”jxgbox ” s t y l e =”width :500 px ; h e i g h t :500 px ;” > < / d i v > < s c r i p t type=”t e x t / j a v a s c r i p t ” > board = JXG . JSXGraph . i n i t B o a r d ( ’ jxgbox ’ , { boundingbox : [ − 2, 20 , 20 , − 2], a x i s : true , g r i d : f a l s e , k e e p a s p e c t r a t i o : true } ) ; A = board . c r e a t e ( ’ p o i n t ’ , [ 8 , 3 ] ) ; B = board . c r e a t e ( ’ p o i n t ’ , [ 8 , 8 ] ) ; c1 = board . c r e a t e ( ’ c i r c l e ’ , [B, 4 ] ) ; D = board . c r e a t e ( ’ g l i d e r ’ , [ 0 , 0 , c1 ] , { name : ’D ’ } ) ; g = board . c r e a t e ( ’ l i n e ’ , [A, D] ) ; c2 = board . c r e a t e ( ’ c i r c l e ’ , [D, 3 ] ) ; T = board . c r e a t e ( ’ i n t e r s e c t i o n ’ , [ c2 , g , 0 ] , { name : ’T ’ } ) ; < / s c r i p t >

  8. JSXGraph Example/Output

  9. JSXGraph Supported file formats ◮ GEONEx T ◮ GeoGebra ◮ Intergeo ◮ Cinderella (small feature subset)

  10. JSXGraph Example/Input < l i n k r e l =” s t y l e s h e e t ” type=”t e x t / c s s ” h r e f=”c s s / j s x g r a p h . c s s ” / > < s c r i p t type=”t e x t / j a v a s c r i p t ” s r c=” j s / j s x g r a p h c o r e . j s ” > < / s c r i p t > < s c r i p t type=”t e x t / j a v a s c r i p t ” s r c=” j s / C i n d e r e l l a R e a d e r . j s ” > < / s c r i p t > . . . < d i v i d=”jxgbox ” c l a s s =”jxgbox ” s t y l e =”width :500 px ; h e i g h t :500 px ;” > < / d i v > < s c r i p t type=”t e x t / j a v a s c r i p t ” > board = JXG . JSXGraph . loadBoardFromFile ( ’ jxgbox ’ , ’ watt . cdy ’ , ’ c i n d e r e l l a ’ ) ; f u n c t i o n computeLocus () { board . c r e a t e ( ’ l o c u s ’ , [ JXG . getRef ( ’E ’ ) ] ) ; } < / s c r i p t >

  11. JSXGraph Example/Output

  12. obner bases 1 (in a nutshell) Computing plane loci using Gr¨ 1 Recio & V´ elez 1999 Botana & Valcarce 2002 Botana, Ab´ anades & Escribano 2007

  13. Computing plane loci using Gr¨ obner bases ◮ Given a set of free and dependent points,

  14. Computing plane loci using Gr¨ obner bases ◮ we first choose a coordinate system,

  15. Computing plane loci using Gr¨ obner bases ◮ translate geometric constraints into an algebraic form, ◮ ( u [1] − 8) 2 + ( u [2] − 8) 2 − 16 = 0 ◮ ( x − u [1]) 2 + ( y − u [2]) 2 − 9 = 0 ◮ 3 x − 3 u [1] + yu [1] − 8 y + 8 u [2] − xu [2] = 0

  16. Computing plane loci using Gr¨ obner bases ◮ calculate the elimination ideal using the Gr¨ obner basis of the given ideal, ◮ x 6 + 3 x 4 y 2 + 3 x 2 y 4 + y 6 − 48 x 5 − 38 x 4 y − 96 x 3 y 2 − 76 x 2 y 3 − 48 xy 4 − 38 y 5 + 1047 x 4 + 1216 x 3 y + 1774 x 2 y 2 + 1216 xy 3 + 727 y 4 − 13024 x 3 − 16596 x 2 y − 16096 xy 2 − 8404 y 3 +97395 x 2 + 109888 xy + 63535 y 2 − 415536 x − 300806 y + 790009 = 0

  17. Computing plane loci using Gr¨ obner bases ◮ and finally plot the variety generated by the ideal.

  18. Implementing this algorithm in JSXGraph

  19. Implementation Problems ◮ No JavaScript implementation of any Gr¨ obner basis algorithm ◮ Can’t use C-libraries directly in JavaScript ◮ No implicit plotting in JSXGraph by now

  20. Implementation AJAX ◮ Transfer data (a)synchronously via HTTP with JavaScript This enables us to ◮ use a computer algebra system on a (web) server for the expensive Gr¨ obner basis calculations ◮ use a plotting tool/library for implicit plotting

  21. Implementation

  22. Implementation Example/Input < l i n k r e l =” s t y l e s h e e t ” type=”t e x t / c s s ” h r e f=”c s s / j s x g r a p h . c s s ” / > < s c r i p t type=”t e x t / j a v a s c r i p t ” s r c=” j s / j s x g r a p h c o r e . j s ” < / s c r i p t > > . . . < d i v i d=”jxgbox ” c l a s s =”jxgbox ” s t y l e =”width :500 px ; h e i g h t :500 px ;” > < / d i v > < s c r i p t type=”t e x t / j a v a s c r i p t ” > board = JXG . JSXGraph . i n i t B o a r d ( ’ jxgbox ’ , { boundingbox : [ − 2, 20 , 20 , − 2], a x i s : true , g r i d : f a l s e , k e e p a s p e c t r a t i o : true } ) ; A = board . c r e a t e ( ’ p o i n t ’ , [ 8 , 3 ] ) ; B = board . c r e a t e ( ’ p o i n t ’ , [ 8 , 8 ] ) ; c1 = board . c r e a t e ( ’ c i r c l e ’ , [B, 4 ] ) ; D = board . c r e a t e ( ’ g l i d e r ’ , [ 0 , 0 , c1 ] , { name : ’D ’ } ) ; g = board . c r e a t e ( ’ l i n e ’ , [A, D] ) ; c2 = board . c r e a t e ( ’ c i r c l e ’ , [D, 3 ] ) ; T = board . c r e a t e ( ’ i n t e r s e c t i o n ’ , [ c2 , g , 0 ] , { name : ’T ’ } ) ; l o c u s = board . c r e a t e ( ’ l o c u s ’ , [T] ) ; < / s c r i p t >

  23. Implementation Example/Output

  24. Implementation Ready-to-use elements ◮ Glider on circle and line ◮ Intersection points (circle/circle, circle/line, line/line) ◮ Midpoint ◮ Parallel line and point ◮ Perpendicular line and point ◮ Circumcircle and circumcenter

  25. Implementation Easy to extend

  26. Implementation < l i n k r e l =” s t y l e s h e e t ” type=”t e x t / c s s ” h r e f=”c s s / j s x g r a p h . c s s ” / > < s c r i p t type=”t e x t / j a v a s c r i p t ” s r c=” j s / j s x g r a p h c o r e . j s ” < / s c r i p t > > . . . < d i v i d=”jxgbox ” c l a s s =”jxgbox ” s t y l e =”width :500 px ; h e i g h t :500 px ;” > < / d i v > < s c r i p t type=”t e x t / j a v a s c r i p t ” > board = JXG . JSXGraph . i n i t B o a r d ( ’ jxgbox ’ , { boundingbox :[ − 4 , 6 , 8 , − 4], a x i s : true , g r i d : f a l s e , k e e p a s p e c t r a t i o : true } ) ; A = board . c r e a t e ( ’ p o i n t ’ , [ 2 , 0 ] ) ; k1 = board . c r e a t e ( ’ c i r c l e ’ , [A, 5 ] ) ; c = board . c r e a t e ( ’ f u n c t i o n g r a p h ’ , [ f u n c t i o n ( x ) { return x ∗ x ∗ x ; } ] ) ; c . generatePolynomial = f u n c t i o n ( p ) { return [ ’ ( ’+p . symbolic . x+’ ) ˆ3 − ’+p . symbolic . y ] ; } ; D = board . c r e a t e ( ’ g l i d e r ’ , [ 0 , 0 , c ] , { name : ’D ’ } ) ; k2 = board . c r e a t e ( ’ c i r c l e ’ , [D, 4 ] ) ; I = board . c r e a t e ( ’ i n t e r s e c t i o n ’ , [ k1 , k2 , 0 ] ) ; C = board . c r e a t e ( ’ midpoint ’ , [ I , D] ) ; l o c u s = board . c r e a t e ( ’ l o c u s ’ , [C ] ) ; < / s c r i p t >

  27. Implementation Easy to extend

  28. Implementation < l i n k r e l =” s t y l e s h e e t ” type=”t e x t / c s s ” h r e f=”c s s / j s x g r a p h . c s s ” / > < s c r i p t type=”t e x t / j a v a s c r i p t ” s r c=” j s / j s x g r a p h c o r e . j s ” < / s c r i p t > > < s c r i p t type=”t e x t / j a v a s c r i p t ” s r c=” j s / T r i a n g l e . j s ” < / s c r i p t > > . . . < d i v i d=”jxgbox ” c l a s s =”jxgbox ” s t y l e =”width :500 px ; h e i g h t :500 px ;” > < / d i v > < s c r i p t type=”t e x t / j a v a s c r i p t ” > board = JXG . JSXGraph . i n i t B o a r d ( ’ jxgbox ’ , { boundingbox :[ − 4 , 6 , 8 , − 4], a x i s : true , g r i d : f a l s e , k e e p a s p e c t r a t i o : true } ) ; A = board . c r e a t e ( ’ p o i n t ’ , [ 0 , 0 ] ) ; B = board . c r e a t e ( ’ p o i n t ’ , [ 6 , 0 ] ) ; C = board . c r e a t e ( ’ p o i n t ’ , [ 4 , 4 ] ) ; t1 = board . c r e a t e ( ’ t r i a n g l e ’ , [A, B, C] , { strokeWidth : ’ 1px ’ } ) ; X = board . c r e a t e ( ’ p o i n t ’ , [ 4 , 1 . 5 ] , { name : ”X” } ) ; L = board . c r e a t e ( ’ p e r p e n d i c u l a r p o i n t ’ , [X, t1 . c ] ) ; M = board . c r e a t e ( ’ p e r p e n d i c u l a r p o i n t ’ , [X, t1 . a ] ) ; N = board . c r e a t e ( ’ p e r p e n d i c u l a r p o i n t ’ , [X, t1 . b ] ) ; t2 = board . c r e a t e ( ’ t r i a n g l e ’ , [ L , M, N] , { strokeWidth : ’ 1px ’ } ) ;

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend