……NumericQ在这里确实导致了问题,对于用这个方法造出的黑箱,Derivative(也就是 ' )会使用一个不那么精确的方法来计算导数,参看:
mathematica.stackexchange.com/q/29329/1871
但是,直接去掉?NumericQ也是不行的,那样就彻底错了:
f[t][[1]]
(*
Out[24]= t
*)
这个问题的一个可能解法是:
x[t_?NumericQ] := f[t][[1]]
y[t_?NumericQ] := f[t][[2]]
Derivative[n_][x][t_?NumericQ] := Derivative[n][f][t][[1]]
Plot[{y[t], x[t], x'[t]}, {t, 0, 1}]
或者干脆就别引入中间函数:
Plot[{f[t][[1]], f[t][[2]], f'[t][[1]]}, {t, 0, 1}]