2013-02-27 65 views
0

以下代碼需要永久性地在Maple中進行計算。基本上,我試圖在以原點爲中心的圓上找到復值函數的均方根模數。應該如何糾正代碼,還是有一個在線計算器可以實現這一目標?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))); 

回答

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 

另一個(可能更少通常是有用的可能性)可能是,

> 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 
+0

謝謝你,你的第一個建議的工作。第二個結果給出了一個不正確的結果,因爲積極函數的積分應該是積極的。 – Grandfather 2013-02-28 00:02:45

+0

第二個結果與第一個結果具有相同的實部。不同之處在於由於數值舍入而產生的可忽略的假想僞像,可以使用'fnormal'命令明顯地將其刪除。但我更多的是好奇心 - 第一種方式更好,而不僅僅是速度。 – acer 2013-02-28 00:28:30