我定义了带有下标的变量,用于表示对称多项式:
nvars=4;
(Array[Subscript[\[Sigma], #] &, nvars] // Evaluate) =
SymmetricPolynomial[#, Array[Subscript[x, #] &, nvars]] & /@
Range[nvars];
在我想清除定义或者相关值的时候没有效果
Clear[Subscript[\[Sigma], 1]]
整体清除也是没效果
Clear[Subscript[\[Sigma], #] & /@ Range[nvars]] (* 估计是因为这些表达式在内部的时候已经执行了,造成里面就是对称多项式,而不是sigma? 但我用SymbolName也不行,因为符号不允许有下标,用Hold,Defer,Unevaluated将Clear里面的参数强制不执行,但这样得到的就只是一串代码表达式了,也不行*)
最后想到用Unset,虽然显示失败,但是能有效,不知为什么
Unset[Subscript[\[Sigma], #] & /@ Range[4]]
Unset[Subscript[\[Sigma], #]] & /@ Range[4]
上面两种方法都可以,但是为什么用在Clear上就不行。
nvars=4;
(Array[Subscript[\[Sigma], #] &, nvars] // Evaluate) =
SymmetricPolynomial[#, Array[Subscript[x, #] &, nvars]] & /@
Range[nvars];
在我想清除定义或者相关值的时候没有效果
Clear[Subscript[\[Sigma], 1]]
整体清除也是没效果
Clear[Subscript[\[Sigma], #] & /@ Range[nvars]] (* 估计是因为这些表达式在内部的时候已经执行了,造成里面就是对称多项式,而不是sigma? 但我用SymbolName也不行,因为符号不允许有下标,用Hold,Defer,Unevaluated将Clear里面的参数强制不执行,但这样得到的就只是一串代码表达式了,也不行*)
最后想到用Unset,虽然显示失败,但是能有效,不知为什么
Unset[Subscript[\[Sigma], #] & /@ Range[4]]
Unset[Subscript[\[Sigma], #]] & /@ Range[4]
上面两种方法都可以,但是为什么用在Clear上就不行。