2013-07-31 34 views
0

我想計算(形式上)一些積分,它們只是有理分數而且依賴於3個參數。它可以工作,如果我設置兩個參數爲平凡的價值,否則我必須在5分鐘後停止計算。有沒有人可以幫助我做到這一點?與楓樹參數的積分

這是我的工作表:

restart; 
omega(x,y):= 1/(1+x^(2)+y^(2))*<2*x,2*y,x^(2)+y^(2)-1>: 

Omega(x,y, a,b, l):= simplify(omega(evalc(Re((l*(x+I*y)+a+Ib)/(1-(a-I*b)*(x+I*y)))),evalc(`&Im;`((l*(x+I*y)+a+I*b)/(1-(a-I*b)*(x+I*y)))))): 
assume(0 < l); 
simplify(int(int(Omega(x, y, a, b, l)[1]*(diff(Omega(x, y, a, b, l)[1], x)), x = -infinity .. infinity), y = -infinity .. infinity)); 

Warning, computation interrupted 
simplify(int(int(Omega(x, y, 0, 1, l)[3]*(diff(Omega(x, y, 0, 1, l)[1], x)), x = -infinity .. infinity), y = -infinity .. infinity)); 
Warning, computation interrupted 
simplify(int(int(Omega(x, y, 0, 0, l)[3]*(diff(Omega(x, y, 0, 0, l)[1], x)), x = -infinity .. infinity), y = -infinity .. infinity)); 
          2 Pi 
         - ---- 
          l 

回答

0

你有Ib,你可能打算I*b

你有&Im你可能打算Im

您對l作了假設,但對ab沒有提供有用的假設。是否將ab視爲純粹真實?我已經在下面使用了這些假設。

下面我利用assuming而不是assume,因爲我覺得它更方便,並且不會導致混合不明實例的不假實名和假設名的混合,這些實例在表面上看起來是平等的。

用於分配omegaOmega的語法在用於2D數學輸入時可以生成操作符(表觀意圖),儘管通過跳號彈出。但是在這裏我們有純文本來源,並且這種用作1D Maple Notation代碼的語法可以記憶表格分配而不是操作符。在下面,我使用一種在1D和2D模式下都有效的語法來爲這兩個名稱分配運算符。

在英特爾i5上運行Maple 17的64位Linux上,以下結果每個都花費幾秒鐘到一分鐘的時間。

restart; 

omega:=(x,y)->1/(1+x^(2)+y^(2))*<2*x,2*y,x^(2)+y^(2)-1>: 

Omega:=(x,y,a,b,l)->simplify(omega(evalc(Re((l*(x+I*y)+a+I*b)/ 
              (1-(a-I*b)*(x+I*y)))), 
            evalc(Im((l*(x+I*y)+a+I*b)/ 
              (1-(a-I*b)*(x+I*y)))))): 

T31:=simplify(Int(Int(Omega(x,y,a,b,l)[3] 
         *(diff(Omega(x,y,a,b,l)[1],x)), 
         x=-infinity..infinity),y=-infinity..infinity), 
       size) assuming real, l>0: 

simplify(value(subs(b=0,T31))) assuming real, l>0; 

            2 
           2 Pi (a + l) 
          - ------------- 
            2 2 
           a + l 

simplify(value(T31)) assuming real, l>0; 

       4 2 2 4 2 2 2  2  3 
      2 (a + a l - b + b l + a l - b l + l) Pi 
      - ------------------------------------------------- 
       4  2 2  2 2 4  2 2 4 
       a + 2 a b + 2 a l + b + 2 b l + l 

T11:=simplify(Int(Int(Omega(x,y,a,b,l)[1] 
         *(diff(Omega(x,y,a,b,l)[1],x)), 
         x=-infinity..infinity),y=-infinity..infinity), 
       size) assuming real, l>0: 

simplify(value(subs(b=0,T11))) assuming real, l>0; 

            0 

simplify(value(T11)) assuming real, l>0; 

            0 
+0

謝謝,它看起來不錯。但我仍然不明白爲什麼要計算一個理性分數的原始時間太長。 – Paul

+0

使用您的原始代碼作爲一維楓葉符號(即使在操作員工作的情況下),由於我的答案的前兩段提到的錯誤,所生成的被積函數也不像您所描述的那樣。默認情況下,Maple會將未知數'a'和'b'視爲複雜的,這可能會使計算更加困難。 – acer