如何按元素对两个 Maxima/LISP-lists 求和,以便在嵌入 Moodle STACK-exam 的 JSXgraph 中使用它们?
How to sum two Maxima/LISP-lists elementwise, in order to use them in a JSXgraph embedded in a Moodle STACK-exam?
标题说的是什么。我正在尝试构建一个图形化的 two-variable 优化问题,供学生使用 STACK-type 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 的观点修复了代码,但问题仍然存在。在下面查看部分答案。
好吧,@jkiiski 提出的观点是问题的一部分,但我现在发现了问题所在。变量 OptimiPa2
是一个列表,显然 STACK 出于某种原因不喜欢直接使用 '{#variable_name#}'
语法访问 list
类型的变量,即使这应该有效。对我来说解决问题的是手动访问列表元素并将其输入到新列表中,然后我将其作为参数提供给 point
"constructor":
/*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 在评论中建议的方法,尽管我发誓我之前尝试过但没有用。
标题说的是什么。我正在尝试构建一个图形化的 two-variable 优化问题,供学生使用 STACK-type 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 的观点修复了代码,但问题仍然存在。在下面查看部分答案。
好吧,@jkiiski 提出的观点是问题的一部分,但我现在发现了问题所在。变量 OptimiPa2
是一个列表,显然 STACK 出于某种原因不喜欢直接使用 '{#variable_name#}'
语法访问 list
类型的变量,即使这应该有效。对我来说解决问题的是手动访问列表元素并将其输入到新列表中,然后我将其作为参数提供给 point
"constructor":
/*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 在评论中建议的方法,尽管我发誓我之前尝试过但没有用。