中科大《計算物理》教案7計算機代數_第1頁
中科大《計算物理》教案7計算機代數_第2頁
中科大《計算物理》教案7計算機代數_第3頁
中科大《計算物理》教案7計算機代數_第4頁
中科大《計算物理》教案7計算機代數_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第七章計算機代數

ComputationalAlgebra

SymbolicManipulation

MachineAlgebra

§7.1引言

數值計算系統

Fortran語言

例:.....

x=i

Y二2

Z=X+Y

非數值計算系統

Mathematica語言

例:勒讓德多項式定義

(1)LegendreP[72,x\給出勒讓彳惠多項式匕(x).

(2)LegendreP[77,m,x]給出伴隨勒讓德多項式

P”"'(x)=(-1)7,(1-X2Cr)

也可以由用戶采用遞推公式定義:

P[n_,x_]:=

module[{temp},temp=O;

If[n==0,temp=l,

If[n==l,temp=x,

If[n>1,

temp=((2n-l)xP[n-1,x]-(n-l)P[n-2,x])/n,Null

],Null],Null

];temp

]

遞推公式

P()G)=1,P|(x)=x,尸〃(x)=[(2n-j(x)-(n-l)Pn_2(x)]In

表面上來看,數值計算語言應當與計算機代數語言是

本質上迥然不同的兩種語言。其實,兩者在本質上是完

全一致的。這是因為目前我們使用的計算機仍然是一種

二進制的數字計算處理機。文字、字符或符號都只能通

過二進制編碼才能用計算機進行處理。

由于這種本質聯系,所有的數值算法語言經過改造加

工以后,都可以發展為計算機代數語言,或者說可以具

有非數值處理功能。

所謂計算機代數處理系統實際上是指硬件和軟件的

綜合。

常用的計算機代數系統:

1.MACSYMAo它是用LISP語言的一種功能很強的方言

FranzLisp寫成的。它是一個通用的計算機代數系統。

(2)REDUCEo它是由赫電(A.C.Hearn)設計的。該

語言是用SUSP(StandardLISP)寫成的,通用的代

數處理系統,具有相當廣泛的基本代數處理功能,并

能處理高能物理的計算問題。

(3)Mathematicao該系統是美國Wolfram公司開發

的一個功能強大的計算機通用數學系統。其基本系統

主要是用C語言開發的。它是當前運用十分廣泛的符

號代數處理系統。

(4)Maple.這是一個商業產品。其優點是使用圖形用戶

界面并支持一些復雜運算,如:因式分解,積分或求和。

缺點是Maple不適用于處理大量數據。

(5)GiNaC:這是用C+T的符號計算庫。它的主要特征是

具備以面向對象的方式實現用戶自己的算法的能力。它

能處理大量數據,在基準測試下,其運算速度可與下面

的FORM相當。

(6)SCHOONSCHIPo這是很著名的粒子物理研究用的計算

機代數系統。它也能做一般的代數運算,是目前為止運

行速度最快的系統。該程序是用CDC型60位計算機和

6800系列計算機的匯編語言寫成的,因而大大限制了

它適用的機型。

(7)FORM:優點是運算速度高和具有處理大量數據的

能力。它被廣泛運用于高能物理和涉及大型中間表達式

的程序。人們普遍認為它是SCH00NSCHIP系統的后繼程

計算機代數系統的發展歷史:

由二十世紀六十年代最早的計算機代數系統幾乎完全是基于LISP

表處理語言.它是用來處理表鏈的。它對于早期符號計算程序的

重要性,就好比同一時期處理數值計算的程序FORTRAN系統。在

這個階段,REDUCE程序對高能物理巳經表現出一些特殊的用途。

RJSCHOONSCHIP是M.Veltman用匯編語言寫的,專門應用于粒子物

理領域。匯編代碼的應用導致了難以置信的高速計算程序(相對

于最初的解釋代碼),從而使計算更復雜的高能物理放射過程成

為可能。由于人們逐漸認識到這個程序的重要性,因而,1998年

M.Veltman因此獲得了諾貝爾物理獎。

田同時值得一提的是基于FranzLISP的MACSYMA系統,它引發了

算法的重要發展。

出從1980年以來,新的計算機代數系統開始采用C語言編寫。這

樣的系統與解釋語言LISP相比,能婚更好的利用計算機資源,

并能保持程序的可移植性,而這正是解釋語言所做不到的。

出這個時期還出現了最早的商業計算機代數系統,其中

Mathematica和Maple最為著名。另外,少量的專用程序也出現

了,J.Vermaseren編寫的FORM獄是一個用于粒子物理研究的程

序。它是可移植的,并認為是SCHOONSCHIP系統的后繼程序。

由近幾年,有關大型程序可維護性的問題變得越來越重要。全部

的設計范例都由過程設計變到了面向對象設計。反映在編程語

言上從C變到C++。這樣GiNaC庫隨之發展起來.它支持C++環境

下的符號計算。

§7.2粒子物理研究中計算機代數的應用

由利用計算機代數系統使微擾計算步驟自動化。

由粒子物理是應用計算機代數的一個重要領域,它充分發

揮了計算機代數系統的潛力。

SCHOONSCHIP,REDUCE,Mathematica,

FORM和GiNaC

RJ采用計算機代數系統來計算的復雜量子場論問題可以

分為兩類:

(1)第一類問題是僅僅只需要系統的基本支持的計算。

(2)復雜的計算方法。既可以采用標準化的非局部操作

也可以采用針對特定問題的計算算法,如采用由用戶

發展起來的專用算法。

有關粒子物理研究中微擾計算的計算機代數算法:

一、圖形產生

ThomasHahn,FeynArts

以FeynArts程序包為例:使用時,首先加載該程序包:

?FeynArts.m(或init.m文件)

一旦用戶給定初、末態粒子,微擾計算的階數,適當的模

型,利用FeynArts就可以得到非零貢獻的費曼圖。用如下

函數的操作指令就可以得到費曼圖.

(1)CreateTopo\ogies[/,e]產生l圈e個夕卜腿的拓撲。

(2)InsertFields[top,ext,Model->{mod1,mod^-mod1,mod2,??

中的場加到外腿數為ext的拓撲top中去。

(3)Paint[expr]在屏幕上畫出InsertFields輸出expr的

費曼圖形。

二、費曼幅度和指標收縮計算

FeynArts程序包中,采用函數

CreateFeynAmp[expr]

將InsertFields函數輸出expr的一組費曼圖產生對應

的解析幅度。

圖形與幅度的轉換過程是按照費曼圖圖形技術中

所對應的規則進行的:

外線對應自由波函數,內線對應著傳播函數,頂點

對應相互作用頂點。

例:協變規范中的膠子傳播函數的規則和夸克一膠

子作用頂點的規則:

由上面的費曼規則得到的不變振幅的表達式中將包

含了重復指標求和。

例如:洛侖茲指標的收縮可以通過不斷運用以下幾個

規則來實現:

v

g/p=g],gPvP=Pp,g〃』"=y〃,g)=D,

P

〃〃夕〃二〃夕,〃"“=〃/,Y,Y=D

如果要對一串狄拉克(Dirac)矩陣乘積的重復指標收

縮,例如力"、我們可以先用狄拉克矩陣的反對易關

系{九,九}二2g吟使兩個狄拉克矩陣用同一個指標,然后再

用上面公式化商。

在振幅平方的計算中,一般有狄拉克矩陣的求陣跡計

算。由于結果是相對論性不變量,所以人們很少有必

要去研究公式中各個矢量的分量,而只研究這些矢量

的標積。這樣計算就沒有原來那么復雜了。原則上這

個計算方法是很明確的:

由奇數個狄拉克矩陣的陣跡是零;

RjTrl=4;

由偶數(2n)個V矩陣的乘積的陣跡計算可以用公

式:

1)乂叱…二心11=U八的卜,—gagX

將(2n)個V矩陣的乘積的陣跡計算轉變為對(2n-2)的

V矩陣的乘積求陣跡。理論上反復運用上式,(2n)個

狄拉克矩陣的陣跡會產生(2n-l)(2n-3)…3-

l=(2nT)!!項。這個數目甌n加而指數增長。如

果在指標〃……出”之間沒有別的關系,則這實際上就是

(2n)個V矩陣的乘積的陣跡最后結果的項數。

FORM程序是處理費曼幅度化簡、洛侖茲指標收縮

和V矩陣陣跡的最好工具之一。運用'tHooft-

Veitman方案對狄拉克代數的計算在TRACER程序中得

以實現。

三、單圈積分函數計算和Passarino—Veltman化簡

Passarino和Veitman已經首先給出了一圈標量

和張量積分函數系統的算法。其計算的基本甩想就是

將張量積分計算化解為標量積分函數的計算,而標量

積分函數最終化為Spence函數的計算。

例:介紹張量圈積分化簡到一個標量圈積分的集

合。以下面的三點積分計算為例,

.d°kk"_____

3Jj/〃」二(A_pJ(〃_pLpJ

其中Pi和Pi表示外線動量。Passarino和Veltman采用

將Ir寫成最一般的形式,即用形狀因子乘以外部動量

和(或)度規張量表示的形式。在以上我們的例子里,

我們將該張量積分寫為

療二。2:』+即;。22+{/m,;}金+8七24.

這里加,〃;}二P,P;+。然后通過方程兩邊與外部動量

和度規張量g””收縮,來解出形狀因子

。21,。22,023和^24o左邊的結果是按照傳播子重寫成圈動量

女〃與和外部動量之間的標量乘積的形式,例如:

2〃1-k=k2-(k-p>+p;.

右邊的前兩項消去了傳播子,而最后一項根本與圈動

量無關。接著得到線性方程求解形狀因子。在這一步,

我們會遇到計算Gram行列式

八二4〃/Pi

力〃2〃2?

這個算法的缺點就在出現在對這個行列式的計算上

面。如果在一個pi和P2共線的相空間域中,Gram行列

式趨向與零,這時穩定的數值計算程序就變得十分困

難。目前已經有對Passarino-Veltman算法的改進

的方法,這在很大程度上避免了Gram行列式出現。

近年來出現了解析或數值計算一圈圖的一點、二點、

三點、四點,甚至五點積分函數的程序包。LoopTools

就是這樣一個計算標量和張量單圈積分的程序包。由

于多點單圈圖的動量積分具有可以最終歸結為

Spence函數計算的共性,因而這樣的積分是可以用計

算機代數系統來解決復雜計算的困難。然而二圈以上

的動量積分計算就不再具有這一共性,不具備統一的

算法,因此用計算機代數系統來解決復雜計算還存在

困難。

四、高階量子修正計算的計算機代數程序

目前比較著名的,用于高階電弱和QCD理論微擾計算,

基于計算機代數的程序包有以下四組。每組中的不同程

序包大都有相同的語法,它們還可以K接起來使用。

(1)FeynArts,FeynCalc,FormCalc,LoopTools,

TwoCalc和s21seo

⑵GEFICOM,QGRAF,MATAD和MINCERO

(3)DIANA,QGRAF和0N-SHELL2,

(4)xloops和GiNaC。

如前面所列舉的高階精確計算程序包表明:計算機代數

系統與其余程序部份間的有效交流是極為重要。這些外部

程序可黃巨是數值計算,文字處理,數據庫,專家庫類型的

程序包,也可能是特別適合問題的某一部份計算的計算機

代數系統。將來人們會更多地強調對程序集成的某種程度

的標準化,以及要求具備不同系統間數據傳遞功能。斷著

將來硬件和軟件的發展,計算機代數系統功能的擴展會向

兩個不同方向發展:一方面,計算機代數系統可以進行遠

遠超出現在水平的非常復雜的計算,另一方面計算機代數

系統越來越成為解決常規問題的軟件環境中的一部份。

§7.3Mathematica語言編程

單詞,詞匯——@語句,文章

1.過程

一般形式為:

Module[{<局部變量名表〉},表達式1;表達式2;…表達式n]

例如:

unit[x_,y_,z_]:=Module[{len},len=Sqrt[x^2+y^2+z^2];

N[{x/len,y/len,z/len}]]

Block[{〈局部變量名表〉},表達式1;表達式2;…表達

式n]

2.控制選擇

(i)順序控制分號“;”

(ii)條件控制

If語言結構。

If[邏輯表達式,表達式]

If[邏輯表達式,表達式1,表達式2]

If[邏輯表達式,表達式1,表達式2,表達式3]

例如:

u

f[x_]:=If[(x>0)||(x=0),N[Sqrt[x]],Print[xisnegativeo

Print[uxisnotnumerical.55]

Which語句結構。

Which[條件1,表達式1,條件2,表達式2,…,條件

n,表達式n]

例:Which[2==3,x,3==3,y'

其結果為y。這是由于條件2=3的結果為False,而條

件3=3的結果為True.

Switch語句結構。

Switch[判別表達式,模式1,表達式1,模式2,表達

式2,…,模式n,表達式n]

例:i二1

Switch[i^2,0,x,1,y,2,z

最后結果為y。

(iii)循環控制

Do語句結構

Do[表達式,{循環描述}]

例:Do[Print[2^i],{i,1,5}'

該指令的結果是循環打印出2,(i=l,2,3,4,5)的值2,

4,8,16,32O

For語句結構

For[初始表達式,條件,步進表達式,循環表達式]

例如:For[i=0,i<=10,++1,Print[i]]

值為0,1,2,3,4,5,6,7,8,9,10o

While語句結構

While[條件,循環表達式]

例如:

i=0

While[i<=10,Print[i];i++]

3.程序包結構

一般的程序包具有如下的基本框架:

BeginPackage[“程序包名稱,叫

名稱::usage="字符串,程序包中定義在包外可以使用

的函數、變量等的名字和使用說明。”

BeginPrivate'

程序包主體.(包括外部可用的函數及變量,一些內部

函數變量的定義.)

End[]

EndPackage[

7.3Mathematica語言編程

1.過程

一般形式為:

Module[{v局部變量名表〉},表達式1;表達式2;…表達式n]

例如:

unit[x_,y_,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論