用 Maxima 中的零替换某些矩阵元素

Replace certain matrix elements with zeros in Maxima

我正在尝试将等于 und 的矩阵帽子的元素更改为零。我尝试用矩阵图完成此操作,但没有成功:

und_to_zero(element) := block( [], if ( is( element = und ) then element : 0 ) else (  ) );
Ma : matrix([25,40,0,und,und],[und,und,15,20,20]);
MaCalc : copymatrix(Ma);
MaCalc: matrixmap(und_to_zero, MaCalc);

这会在 Moodle 上引发 check maxima connection 错误。我的猜测是问题出在我在函数定义中的条件构造 und_to_zero,但我不确定我做错了什么。

谁能帮我找出错误?

事实证明你实际上必须在 else 分支中指定你想要完成的事情:

und_to_zero(element) := block( [], if  is( element = und ) then element : 0  else element:element );

我认为实现相同效果的更简洁的方法是 MaCalc: subst(und = 0, Ma)