list - wxMaxima - 如何将变量移交给块内的makelist?
问题描述
我想创建一个评估表达式并返回 x 和 y 值的函数(在 wxMaxima 中)。输入是
- expr - 表达式
- var - 应该计算表达式的变量
- a - 间隔的开始
- b - 间隔结束
- n - 步数
目前它看起来像这样:
funvalues(expr,var,a,b,n) := block(
[d,t,f],
d:(b-a)/(n-1),
t:makelist(i,i,a,b,d),
f:makelist(expr,var,t),
[t,f,expr,var,d]
);
使用它应该是这样的:
(%i313) funvalues(x^2,x,0,5,6);
(%o313) [[0,1,2,3,4,5],[0,1,4,9,16,25],x^2,x,1]
相反,会发生这种情况:
(%i313) funvalues(x^2,x,0,5,6);
(%o313) [[0,1,2,3,4,5],[x^2,x^2,x^2,x^2,x^2,x^2],x^2,x,1]
似乎将变量移交给第二个 makelist-command 无法正常工作。我尝试修改一些 evflags,但我不知道它们足够好,不能说它不能以这种方式解决。
将所有内容直接写入 makelist 有效:
(%i362) kill(x,expr,var,t,f)$
t: makelist(i,i,0,5,1);
f: makelist(x^2,x,t);
(t) [0,1,2,3,4,5]
(f) [0,1,4,9,16,25]
我确信我可以以某种方式解决这个问题,但显然我对 Maxima 的工作原理缺乏一些了解。
提前致谢 :)
解决方案
知道了。这样它的工作原理:
funvalues(expr,var,a,b,n) := block(
[d,t,f],
d:(b-a)/(n-1),
t:makelist(i,i,a,b,d),
f:apply(makelist,[expr,var,t]),
[t,f,expr,var,d]
);
我 在发布问题后才发现: stackoverflow.com/questions/42819545/maxima-block-and-variable 。是的,我提前搜索了很多时间。(事实上太长了。)所以......对不起。希望这对某人有用。:)
推荐阅读
- botframework - 自适应卡片 - DateInput 和 SubmitAction
- javascript - dispatch 不是函数如何解决?
- javascript - postMessage 不发送数据
- mysql - 从nodejs mysql连接函数返回数据
- android - SwitchPreferenceCompat 选择/点击的颜色
- javascript - 在表单输入中使用按钮更改文本粗体
- python - 如何将绘图添加到 Matplotlib 中的动画图像列表?
- angular - Angular 4中app模块和延迟加载模块之间的通信
- aws-sdk - 如何从 aws-iot-device-sdk 获取连接状态
- java - 反思疑惑