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

该函数取决于一组参数,例如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])$

有什么建议么?

最佳答案

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

对于一个功能:

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]);

10-06 11:23