我想针对不同的参数值多次绘制一个函数。
该函数取决于一组参数,例如paramOne
和paramTwo
。
我希望能够指定几组这些参数,并为每组参数绘制函数。
我不希望对参数集的数量进行硬编码,因此我考虑使用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]);