You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

wxMaxima如何对符号变量列表构成的表达式进行赋值求值?

你之前的写法ev(bar, foo:vals)不生效的原因是,bar表达式中不存在foo这个变量,仅包含f[1]、f[2]、f[3]三个下标符号变量,给foo赋值并不会触发这三个变量的替换。

下面是更简洁的实现方法:

方法1:构造替换规则列表传给ev

直接把变量列表和值列表两两配对成变量=值的规则列表,传给ev即可:

ev(bar, map("=", foo, vals));

运行后直接返回计算结果6,不需要编写循环赋值的lambda表达式,逻辑更直观。

方法2:用subst直接做表达式替换

不需要调用ev,直接用subst传入规则列表完成替换求值:

subst(map("=", foo, vals), bar);

和方法1效果一致,同样直接得到计算结果。

方法3:直接构造独立符号变量(无下标)

如果你不需要用到数组下标的特性,也可以生成不带下标的独立符号变量,后续替换逻辑完全一致:

/* 生成不带下标的符号列表 */
foo: makelist(concat('f, i), i, 3);
bar: lreduce("*", foo);
vals: [1,2,3];
/* 替换求值 */
subst(map("=", foo, vals), bar);

内容的提问来源于stack exchange,提问作者Rax Adaam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:36:06