Elliptic curves: Difference between revisions

From JSXGraph Wiki
No edit summary
No edit summary
 
(23 intermediate revisions by 2 users not shown)
Line 1: Line 1:
An elliptic curve can be written as a plane algebraic curve defined by an equation of the form
An elliptic curve can be written as a plane algebraic curve defined by an equation of the form
:<math>    y^2=x^3+ax+b\,. </math>
:<math>    y^2=x^3+ax+b\,. </math>
<html>
<link rel="stylesheet" type="text/css" href="http://jsxgraph.uni-bayreuth.de/distrib/jsxgraph.css" />
<script type="text/javascript" src="http://jsxgraph.uni-bayreuth.de/distrib/prototype.js"></script>
<script type="text/javascript" src="http://jsxgraph.uni-bayreuth.de/distrib/jsxgraphcore.js"></script>
<div id="jxgbox" class="jxgbox" style="width:600px; height:400px;"></div>
<script language="JavaScript">
brd = JXG.JSXGraph.initBoard('jxgbox', {originX: 300, originY: 200, unitX: 20, unitY: 20});
brd.suspendUpdate();
brd.createElement('axis', [[0,0], [1,0]], {});
brd.createElement('axis', [[0,0], [0,1]], {});
//
var b = brd.createElement('slider',[[1,-3],[10,-3],[-10,1,10]],{name:'a'});
var a = brd.createElement('slider',[[1,-4],[10,-4],[-10,-8,10]],{name:'b'});


var c1 = brd.createElement('functiongraph', [function(x){ return Math.sqrt(x*x*x+a.Value()*x+b.Value()); }], {strokeWidth:3,strokeColor:'black'});
== Using `implicitcurve` ==
var c2 = brd.createElement('functiongraph', [function(x){ return -Math.sqrt(x*x*x+a.Value()*x+b.Value()); }], {strokeWidth:3,strokeColor:'black'});


brd.unsuspendUpdate();
<jsxgraph width="600" height="400" box="jxgbox">
</script>
(function() {
</html>
    const board = JXG.JSXGraph.initBoard('jxgbox', {boundingbox: [-15, 10, 15, -10], axis:true});
    var b = board.create('slider',[[1,-3], [10,-3], [-10,2.10,10]], {name:'a'});
    var a = board.create('slider',[[1,-4], [10,-4], [-10,-9.52,10]], {name:'b'});


<source lang="html4strict">
    var c = board.create('implicitcurve', [(x, y) => x * x * x + a.Value() * x + b.Value() - y * y],
<link rel="stylesheet" type="text/css" href="http://jsxgraph.uni-bayreuth.de/distrib/jsxgraph.css" />
        {strokeWidth:3, strokeColor:'black'});
<script type="text/javascript" src="http://jsxgraph.uni-bayreuth.de/distrib/prototype.js"></script>
})();
<script type="text/javascript" src="http://jsxgraph.uni-bayreuth.de/distrib/jsxgraphcore.js"></script>
</jsxgraph>  
<div id="jxgbox" class="jxgbox" style="width:600px; height:400px;"></div>
 
 
<source lang="javascript">
    const board = JXG.JSXGraph.initBoard('jxgbox', {boundingbox: [-15, 10, 15, -10], axis:true});
    var b = board.create('slider',[[1,-3], [10,-3], [-10,2.10,10]], {name:'a'});
    var a = board.create('slider',[[1,-4], [10,-4], [-10,-9.52,10]], {name:'b'});
 
    var c = board.create('implicitcurve', [(x, y) => x*x*x + a.Value() * x + b.Value() - y * y],
        {strokeWidth:3,strokeColor:'black'});
</source>
</source>
== Using two function graphs ==
Use
:<math>    y^2=x^3+ax+b \quad\Longrightarrow\quad y=\pm\sqrt{x^3+ax+b} </math>
This approach is somewhat outdated.
<jsxgraph width="600" height="400" box="jxgbox1">
(function() {
    const board = JXG.JSXGraph.initBoard('jxgbox1', {boundingbox: [-15, 10, 15, -10], axis:true});
    var b = board.create('slider',[[1,-3], [10,-3], [-10,2.10,10]],{name:'a'});
    var a = board.create('slider',[[1,-4], [10,-4], [-10,-9.52,10]],{name:'b'});
    var c1 = board.create('functiongraph', [function(x){ return Math.sqrt(x*x*x+a.Value()*x+b.Value()); }],
                      {strokeWidth:3, strokeColor:'black'});
    var c2 = board.create('functiongraph', [function(x){ return -Math.sqrt(x*x*x+a.Value()*x+b.Value()); }],
                      {strokeWidth:3, strokeColor:'black'});
})();
</jsxgraph>
<source lang="javascript">
<source lang="javascript">
brd = JXG.JSXGraph.initBoard('jxgbox', {originX: 300, originY: 200, unitX: 20, unitY: 20});
    const board = JXG.JSXGraph.initBoard('jxgbox1', {boundingbox: [-15, 10, 15, -10], axis:true});
brd.suspendUpdate();
    var b = board.create('slider',[[1,-3], [10,-3], [-10,2.10,10]], {name:'a'});
brd.createElement('axis', [[0,0], [1,0]], {});
    var a = board.create('slider',[[1,-4], [10,-4], [-10,-9.52,10]], {name:'b'});
brd.createElement('axis', [[0,0], [0,1]], {});
//
var b = brd.createElement('slider',[[1,-3],[10,-3],[-10,1,10]],{name:'a'});
var a = brd.createElement('slider',[[1,-4],[10,-4],[-10,-8,10]],{name:'b'});
 
var c1 = brd.createElement('functiongraph', [function(x){ return Math.sqrt(x*x*x+a.Value()*x+b.Value()); }], {strokeWidth:3,strokeColor:'black'});
var c2 = brd.createElement('functiongraph', [function(x){ return -Math.sqrt(x*x*x+a.Value()*x+b.Value()); }], {strokeWidth:3,strokeColor:'black'});


brd.unsuspendUpdate();
    var c1 = board.create('functiongraph', [function(x){ return Math.sqrt(x*x*x+a.Value()*x+b.Value()); }],
                      {strokeWidth:3, strokeColor:'black'});
    var c2 = board.create('functiongraph', [function(x){ return -Math.sqrt(x*x*x+a.Value()*x+b.Value()); }],
                      {strokeWidth:3, strokeColor:'black'});
</source>
</source>



Latest revision as of 10:10, 8 July 2026

An elliptic curve can be written as a plane algebraic curve defined by an equation of the form

[math]\displaystyle{ y^2=x^3+ax+b\,. }[/math]

Using `implicitcurve`


    const board = JXG.JSXGraph.initBoard('jxgbox', {boundingbox: [-15, 10, 15, -10], axis:true});
    var b = board.create('slider',[[1,-3], [10,-3], [-10,2.10,10]], {name:'a'});
    var a = board.create('slider',[[1,-4], [10,-4], [-10,-9.52,10]], {name:'b'});

    var c = board.create('implicitcurve', [(x, y) => x*x*x + a.Value() * x + b.Value() - y * y],
        {strokeWidth:3,strokeColor:'black'});

Using two function graphs

Use

[math]\displaystyle{ y^2=x^3+ax+b \quad\Longrightarrow\quad y=\pm\sqrt{x^3+ax+b} }[/math]

This approach is somewhat outdated.

    const board = JXG.JSXGraph.initBoard('jxgbox1', {boundingbox: [-15, 10, 15, -10], axis:true});
    var b = board.create('slider',[[1,-3], [10,-3], [-10,2.10,10]], {name:'a'});
    var a = board.create('slider',[[1,-4], [10,-4], [-10,-9.52,10]], {name:'b'});

    var c1 = board.create('functiongraph', [function(x){ return Math.sqrt(x*x*x+a.Value()*x+b.Value()); }],
                       {strokeWidth:3, strokeColor:'black'});
    var c2 = board.create('functiongraph', [function(x){ return -Math.sqrt(x*x*x+a.Value()*x+b.Value()); }], 
                       {strokeWidth:3, strokeColor:'black'});

References