Subversion Repositories wimsdev

Rev

Rev 8670 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. slib_script=var $brd = JXG.JSXGraph.initBoard('$jxgbox', {axis:true, boundingbox:[-4,4,4,-4],showCopyright:false});\
  2.   JXG.JSXGraph.freeBoard($brd);\
  3. var xinit$slib_number = parseFloat('$slib_xinit');\
  4. var yinit$slib_number = parseFloat('$slib_yinit');\
  5. var xmin$slib_number = parseFloat('$slib_xmin');\
  6. var xmax$slib_number = parseFloat('$slib_xmax');\
  7. var xsep$slib_number = parseFloat('$slib_xsep');\
  8. var ymin$slib_number = parseFloat('$slib_ymin');\
  9. var ymax$slib_number = parseFloat('$slib_ymax');\
  10. var ysep$slib_number = parseFloat('$slib_ysep');\
  11. var seglength$slib_number = parseFloat('$slib_seglength');\
  12. var N = 10; var P$slib_number;\
  13.   $brd = JXG.JSXGraph.initBoard('$jxgbox', {axis:true, boundingbox:[xmin$slib_number,ymax$slib_number,xmax$slib_number,ymin$slib_number]});\
  14.     /*CURSOR*/\
  15.   var txt1 = $brd.jc.snippet('$slib_f1',true,'x,y');\
  16.   var txt2 = $brd.jc.snippet('$slib_f2',true,'x,y');\
  17. /*  $brd.update();*/\
  18.   $brd.suspendUpdate();\
  19.   var f1_$slib_number = function (x, yy){ return [txt1(yy[0], yy[1])];}\
  20.   var f2_$slib_number = function (x, yy){ return [txt2(yy[0], yy[1])];}\
  21.   var f_$slib_number  = function (t, yy){ return [txt1(yy[0], yy[1]), txt2(yy[0], yy[1])]}\
  22.   slopefield(f1_$slib_number,f2_$slib_number,xmin$slib_number,xmax$slib_number,xsep$slib_number,ymin$slib_number,ymax$slib_number,ysep$slib_number,seglength$slib_number);\
  23. \
  24.    var P$slib_number = $brd.create('point',[xinit$slib_number,yinit$slib_number], {name:'(x_0,y_0)'});\
  25.    plotFunction$slib_number();\
  26. \
  27.   $brd.unsuspendUpdate();\
  28. \
  29. function slopefield(f1,f2,xmin,xmax,xsep,ymin,ymax,ysep,seglength) {\
  30.    var xval, yval;\
  31.    var xnum = Math.ceil((xmax-xmin)/xsep);\
  32.    var ynum = Math.ceil((ymax-ymin)/ysep);\
  33.    var echelle=(ymax-ymin)/(xmax-xmin);\
  34.    for (var i=0;i<=xnum;i++) {\
  35.      xval = xmin + i*xsep;\
  36.      for (var j=0;j<=ynum;j++) {\
  37.        yval = ymin + j*ysep;\
  38.        var f1val=echelle*f1(0,[xval,yval])[0];\
  39.        var f2val=f2(0,[xval,yval])[0];\
  40.        var norm=Math.sqrt(f1val*f1val+ f2val*f2val);\
  41.        $brd.create('arrow',[\
  42.        [xval-0.5*seglength*f1val/norm, yval-0.5*seglength*f2val/norm],\
  43.        [xval+0.5*seglength*f1val/norm, yval+0.5*seglength*f2val/norm]\
  44.        ],\
  45.        {strokeWidth:1, dash:0, fixed:true, strokeColor:'$(slib_color[1])'});\
  46.      };\
  47.    };\
  48. };\
  49. function solutiondata$slib_number() {\
  50.    return JXG.Math.Numerics.rungeKutta('heun', [P$slib_number.X(),P$slib_number.Y()], [P$slib_number.X(), P$slib_number.Y()+N], 500, f_$slib_number);\
  51. };\
  52. \
  53. function plotFunction$slib_number() {\
  54.     var g$slib_number = $brd.create('curve', [[0],[0]], {strokeColor:'$(slib_color[2])', strokeWidth:'2px'});\
  55.     g$slib_number.updateDataArray = function() {\
  56.         var data = solutiondata$slib_number();\
  57.         var h = N/200;\
  58.         this.dataX = [];\
  59.         this.dataY = [];\
  60.         for(var i=0; i<data.length; i++) {\
  61.             this.dataX[i] = data[i][0];\
  62.             this.dataY[i] = data[i][1];\
  63.         }\
  64.     };\
  65. };\
  66.