问题在于\[Tau][x[t]]因为x已经定义,会变成\[Tau][x0 Sin[2 Pi f t]],因而无法与\[Tau][\[Gamma]_[t_]]匹配
解决方法是用HoldFirst,完整代码如下
Remove["Global`*"] // Quiet
a = 160; b = 160; \[Epsilon] = 1600; G = 46/100; d = 800; \[Mu] =
17/10;
\[Tau]cs = 260; \[Tau]cd = 200;
x0 = 349; f = 8;
SetAttributes[\[Tau], HoldFirst]
x[t_] := x0 Sin[2 Pi f t];
\[Tau]cu[\[Gamma]_] := \[Tau]cs (1 + (\[Tau]cd/\[Tau]cs) Exp[-a (\
\[Gamma]^2)^(1/2)]) Tanh[\[Epsilon] \[Gamma]];
\[Tau]cl[\[Gamma]_] := \[Tau]cd (1 -
Exp[-b (\[Gamma]^2)^(1/2)]) Tanh[\[Epsilon] \[Gamma]];
\[Tau]k[\[Gamma]_] := G Tanh[d \[Gamma]];
\[Tau]u[\[Gamma]_] := \[Tau]cu[\[Gamma]] + \[Tau]k[\[Gamma]] + \[Mu] \
\[Gamma];
\[Tau]l[\[Gamma]_] := \[Tau]cl[\[Gamma]] + \[Tau]k[\[Gamma]] + \[Mu] \
\[Gamma];
\[Tau][\[Gamma]_[t_]] :=
Module[{d\[Gamma], z}, d\[Gamma] = \[Gamma]'[t];
Piecewise[{{\[Tau]u[\[Gamma][t]],
d\[Gamma] \[Gamma][t] >= 0}, {\[Tau]l[\[Gamma][t]],
d\[Gamma] \[Gamma][t] < 0}}]]
\[Tau][z[t]](*这个结果如预期*)
(*但怎么才能画出\[Tau][x[t]呢*)
Plot[\[Tau][x[t]], {t, 0, 20/f}, PlotRange -> All,
PlotTheme -> "Detailed"]
效果如图

(需要注意的是这个图在版本11里由于未知的bug画不出来,版本9和10都没有问题