0

次のコードは、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)));
4

1 に答える 1

0

これは役に立ちますか?つまり、期待どおりの結果が得られますか?被積分関数を演算子 (ブラック ボックス) として提供することにより、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

もう1つの(一般的にあまり有用ではない可能性が高い)可能性があるのは、

> 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
于 2013-02-27T22:18:18.087 に答える