2

标题说什么。我正在尝试使用STACK 类型的 Moodle-question为学生构建一个图形化的二变量优化问题,该问题使用 Maxima 作为处理数学的后端。我尝试了以下方法:

/*Constants*/
c1 : rand_with_step(0,15,0.1);
c2 : c1 + 2;
c3 : c1 + 1;
c4 : c1;

/*Solutions*/
OptimiPa : [c3,c1];
za : -1 * OptimiPa[1] + 2 * OptimiPa[2];

OptimiPb : [c3 + 1/2,c3 - 1/2];
zb : 2 * OptimiPb[1] + OptimiPb[2];

OptimiPc : [c1,c1];
zc : OptimiPc[1]  + 3 * OptimiPc[2] 

OptimiPd : [];
zd : inf;

/*Variables for drawing*/
a : 1000000;
b : a - 1;

/*Variables for drawing lines*/
OptimiPa2 : OptimiPa + [1,0.5];

但是,当插入 JSXgraph 时,这不会产生预期的结果:

<jsxgraph style="width=500em;height=500em"; box="uniqueName">(function() {

var board = JXG.JSXGraph.initBoard('uniqueName', {boundingbox:['{#c3-5#}','{#c2+2#}','{#c3+3#}', '{#c1-2#}'], keepaspectratio: true,zoom:false});

/*Axes*/
var axis1 = board.create('axis', [['{#c3-5#}','{#c1#}'], ['{#c3+3#}', '{#c1#}']]);
var axis2 = board.create('axis', [['{#c1#}','{#c1-5#}'], ['{#c1#}', '{#c2+3#}']]);

/*Polygon angles*/
var k1 = board.create('point', ['{#c3#}','{#c1#}'],{visible:false});
var k2 = board.create('point', ['{#c1#}','{#c1#}'],{visible:false});
var k3 = board.create('point', ['{#c1-a#}','{#-(-c1-a)#}'],{visible:false});
var k4 = board.create('point', ['{#c1-b#}','{#2 - (-c1 - b)#}'],{visible:false});
var k5 = board.create('point', ['{#c1+3/2#}','{#(c1 + 3/2) - 1#}'],{visible:false});

/*Optimization area as a polygon*/
var optAl = board.create('polygon',[k1,k2,k3,k4,k5],{borders: {visible: true},vertices: {visible: false}});


/*Points for drawing lines*/
var pa1 = board.create('point', '{#OptimiPa#}',{visible:false});
var pa2 = board.create('point', '{#OptPa2#}',{visible:false});

/*Lines*/
var suoraA = board.create('line',[pa1,pa2]);

})();
</jsxgraph>

我在这里做错了什么?图像的其余部分看起来很好,但线条suoraA没有出现在图中。

编辑:根据@jkiiski 的观点修复了代码,但问题仍然存在。请看下面的部分答案。

4

1 回答 1

2

好的,所以@jkiiski 提出的观点是问题的一部分,但我现在发现了问题可能是什么。该变量OptimiPa2是一个列表,显然 STACK 出于某种原因不喜欢list直接使用'{#variable_name#}'语法访问 -type 变量,即使这应该有效。对我来说解决问题的是手动访问列表元素并将其输入到一个新列表中,然后我将其作为point“构造函数”的参数提供:

/*Pisteitä suoria varten*/
var pa1 = board.create('point', ['{#OptimiPa[1]#}','{#OptimiPa[2]#}'],{visible:true});
var pa2 = board.create('point', ['{#OptmiPa2[1]#}','{#OptmiPa2[2]#}'],{visible:true});

/*Suoria*/
var suoraA = board.create('line',[pa1,pa2]);

这给了我以下图像:

具有所需线条的优化区域。

这就是我想要实现的目标,尽管我希望将列表作为 JSXGraph 的参数输入更容易。再说一次,我可能只是做错了。

编辑:参考列出了@jkiiski 在评论中建议的方式,尽管我发誓我之前尝试过但没有奏效。

于 2018-06-12T15:09:52.320 回答