Difference between revisions of "Lagrange interpolation"

From JSXGraph Wiki
Jump to navigationJump to search
Line 17: Line 17:
 
         p[0] = board.createElement('point', [-1,2], {style:6});
 
         p[0] = board.createElement('point', [-1,2], {style:6});
 
         p[1] = board.createElement('point', [3,-1], {style:6});
 
         p[1] = board.createElement('point', [3,-1], {style:6});
         var f = function(x) {
+
         var f = board.lagrangePolynomial(p);
                var i;
 
                var y = 0.0;
 
                var xc = [];
 
                for (i=0;i<p.length;i++) {
 
                  xc[i] = p[i].X();
 
                }
 
                for (i=0;i<p.length;i++) {
 
                  var t = p[i].Y();
 
                  for (var k=0;k<p.length;k++) {
 
                    if (k!=i) {
 
                      t *= (x-xc[k])/(xc[i]-xc[k]);
 
                    }
 
                  }
 
                  y += t;
 
                }
 
                return y;
 
            };
 
 
         graph = board.createElement('curve', ['x', f, 'x', -10, 10], {curveType:'graph', strokeWidth:3});
 
         graph = board.createElement('curve', ['x', f, 'x', -10, 10], {curveType:'graph', strokeWidth:3});
 
         d1 = board.createElement('curve', ['x', board.D(f), 'x', -10, 10], {curveType:'graph',dash:1});
 
         d1 = board.createElement('curve', ['x', board.D(f), 'x', -10, 10], {curveType:'graph',dash:1});
Line 67: Line 50:
 
         p[1] = board.createElement('point', [3,-1], {style:6});
 
         p[1] = board.createElement('point', [3,-1], {style:6});
 
          
 
          
         var f = function(x) {
+
         var f = board.lagrangePolynomial(p);
                var i;
 
                var y = 0.0;
 
                var xc = [];
 
                for (i=0;i<p.length;i++) {
 
                  xc[i] = p[i].X();
 
                }
 
                for (i=0;i<p.length;i++) {
 
                  var t = p[i].Y();
 
                  for (var k=0;k<p.length;k++) {
 
                    if (k!=i) {
 
                      t *= (x-xc[k])/(xc[i]-xc[k]);
 
                    }
 
                  }
 
                  y += t;
 
                }
 
                return y;
 
            };
 
 
         graph = board.createElement('curve', ['x', f, 'x', -10, 10], {curveType:'graph'});
 
         graph = board.createElement('curve', ['x', f, 'x', -10, 10], {curveType:'graph'});
 
         d1 = board.createElement('curve', ['x', board.D(f), 'x', -10, 10], {curveType:'graph',dash:1});
 
         d1 = board.createElement('curve', ['x', board.D(f), 'x', -10, 10], {curveType:'graph',dash:1});

Revision as of 20:04, 4 February 2009

Constructs a polynomial of degree [math]n[/math] through [math]n+1[/math] given points. Points can be added by clicking on "Add point". The dotted line is the graph of the first derivative, the dashed line is the graph of the second derivative.

References

The underlying JavaScript code

<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="box" class="jxgbox" style="width:600px; height:400px;"></div>
        board = JXG.JSXGraph.initBoard('box', {originX: 250, originY: 250, unitX: 50, unitY: 25});
        // Axes
        b1axisx = board.createElement('axis', [[0,0], [1,0]], {});
        b1axisy = board.createElement('axis', [[0,0], [0,1]], {});

        var p = [];
        p[0] = board.createElement('point', [-1,2], {style:6});
        p[1] = board.createElement('point', [3,-1], {style:6});
        
        var f = board.lagrangePolynomial(p);
        graph = board.createElement('curve', ['x', f, 'x', -10, 10], {curveType:'graph'});
        d1 = board.createElement('curve', ['x', board.D(f), 'x', -10, 10], {curveType:'graph',dash:1});
        d2 = board.createElement('curve', ['x', board.D(board.D(f)), 'x', -10, 10], {curveType:'graph',dash:2});

        function addPoint() {
          p.push(board.createElement('point',[(Math.random()-0.5)*10,(Math.random()-0.5)*3],{style:6}));
          board.update();
        }