3

我想为不同的参数值多次绘制一个函数。

该函数取决于一组参数,例如paramOneparamTwo。我希望能够指定几组这些参数,并为每组参数绘制函数图。

我不希望参数集的数量被硬编码,所以我考虑使用for ... in ... do循环。这是我尝试过的,但它似乎不起作用:

parametersList: [
    [paramOne=valueOne, paramTwo=valueTwo],
    [paramOne=valueThree, paramTwo=valueFour],
    ]$
for parameterSet in parametersList do
    block(
       i++,
       functionList[i] : ev(function(x,paramOne,paramTwo),parameterSet),
       return functionList
       )
 wxplot2d(functionList,[x,0,1])$

有什么建议么?

4

1 回答 1

2

我从 Maxima 邮件列表中得到了一个有效的答案,我想我会在这里发布。(感谢 Jaime 的回答!)

对于一个功能:

f(x,A,w) := A*sin(w*x)$
parametersList: [ [p1=1, p2=2], [p1=3, p2=4] ]$
functionList: makelist( ev(f(x,p1,p2), p), p, parametersList);
plot2d( functionList, [x, 0, 7]);

对于几个函数,每个函数都用一组不同的参数绘制:

f(x,A,w) := A*sin(w*x)$
g(x,A,w) := A*cos(w*x)$
parametersList: [ [p1=1, p2=2], [p1=3, p2=4] ]$
functionList: makelist( ev([f(x,p1,p2),g(x,p1,p2)], p), p, parametersList);
/* functionList looks like : [[f1,g1], [f2,g2],...]  */
/* Use flatten() to get : [f1,g1,f2,g2,...] */
plot2d( flatten(flist), [x, 0, 7]);
于 2012-02-14T10:09:15.230 回答