我有代码:
C(s):=E(s)*G(s);
B(s):=C(s)*H(s);
openLoopTransferFunction:=B(s)/E(s)
为什么Mupad作为输出e(s)? Mupad输出:
G(s)* exp(1)(s)(或以蓝色书写G(s)* e(s))
如何保持我的E(s)不被Mupad自动更改......说实话,这是迟钝的...... 奖金:(
...跆拳道
E(S):= R(S)-B(S) 错误:标识符' E'受到保护。 [_Assign]
答案 0 :(得分:0)
MuPAD中有一些受保护的标识符。通常,它们使用大写字母。例如,I
表示虚数单位,E
表示欧拉数。查看输入E
(正确的字母' e')和e
(倾斜的字母' e')之间的区别。
如果您想以自己的方式使用这些标识符,可以unprotect
:
unprotect E
结果:
ProtectLevelError
这不是错误消息,而是您刚刚更改的前保护级别。通过再次输入相同的命令来检查成功的更改。这一次,你会得到:
ProtectLevelNone
现在,您可以像对待任何其他标识符一样分配给E
:
E(s) := R(s) - B(s);
将给出预期的结果。
如果您不想明确定义E
,则应在解除保护后将其删除:
delete(E)
然后它将像任何其他符号一样可用。
在任何情况下,如果您以后需要使用欧拉数字,则必须使用exp(1)
代替E
。
要获取所有长度为一的标识符的列表,请键入:
select(op(map(op(anames(All)), expr2text)), x -> bool(length(x) = 1))
,并提供:
"E", "I", "O", "D"
同样,对于长度为2,这给出了:
"N_", "Re", "R_", "Si", "C_", "is", "Z_", "op", "id", "Li", "ln", "Im", "Ax",
"Q_", "fp", "Ci", "Ei"