以下代码在 Maple 中需要永远计算。基本上,我试图在以原点为中心的圆上找到复值函数的均方模。代码应该如何更正,或者有没有在线计算器可以做到这一点?
evalf(subs(subs([n=3, p=1.2451, z=exp(x*I)/2], subs(s=(p/2)*(1+1/(4*z)^n), subs(t=s+sqrt(s^2-1/(4*z)^n), w=z*t^(2/n)))), Int(abs(w)^2, x=0..2*Pi)/(2*Pi)));
以下代码在 Maple 中需要永远计算。基本上,我试图在以原点为中心的圆上找到复值函数的均方模。代码应该如何更正,或者有没有在线计算器可以做到这一点?
evalf(subs(subs([n=3, p=1.2451, z=exp(x*I)/2], subs(s=(p/2)*(1+1/(4*z)^n), subs(t=s+sqrt(s^2-1/(4*z)^n), w=z*t^(2/n)))), Int(abs(w)^2, x=0..2*Pi)/(2*Pi)));
这有什么用吗?我的意思是它给出了预期的结果吗?通过提供被积函数作为操作符(黑匣子),可以防止 evalf/Int 引擎过于昂贵地戳它。这可以节省时间,尽管存在风险,因为它可能会错过某些问题的关键不连续性。
> U:=subs(subs([n=3, p=1.2451, z=exp(x*I)/2],
> subs(s=(p/2)*(1+1/(4*z)^n),
> subs(t=s+sqrt(s^2-1/(4*z)^n),
> w=z*t^(2/n)))),
> Int(X->eval(abs(w)^2,x=X), 0..2*Pi)/(2*Pi)):
> st:=time():
> evalf(U);
0.3351666815
> time()-st;
0.109
另一个(可能不太普遍有用的可能性)可能是,
> restart:
> U:=subs(subs([n=3, p=1.2451, z=exp(x*I)/2],
> subs(s=(p/2)*(1+1/(4*z)^n),
> subs(t=s+sqrt(s^2-1/(4*z)^n),
> w=z*t^(2/n)))),
> Int(abs(w)^2, x=0..2*Pi)/(2*Pi)):
> st:=time():
> simplify(U);
-20
0.3351666815 - 0.5131390209 10 I
> time()-st;
3.150