《計(jì)算物理》教案7計(jì)算機(jī)代數(shù)_第1頁
《計(jì)算物理》教案7計(jì)算機(jī)代數(shù)_第2頁
《計(jì)算物理》教案7計(jì)算機(jī)代數(shù)_第3頁
《計(jì)算物理》教案7計(jì)算機(jī)代數(shù)_第4頁
《計(jì)算物理》教案7計(jì)算機(jī)代數(shù)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第七章計(jì)算機(jī)代數(shù)

ComputationalAlgebra

SymbolicManipulation

MachineAlgebra

§7.1引言

數(shù)值計(jì)算系統(tǒng)

Fortran語言

例:??????

x=i

Y=2

Z=X+Y

非數(shù)值計(jì)算系統(tǒng)

Mathematica語言

例:勒讓德多項(xiàng)式定義

(1)LegendreP[n,x]給出勒讓德多項(xiàng)式月(%).

(2)LegendreP[nrm,x]給出伴隨勒讓德多項(xiàng)式

尸"(])=(-1廣(i-9r號(hào)小)

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

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

]

遞推公式

穌(x)=1,6(%)=x,匕(%)=l(2n-1)%耳1T(x)-(w-l)^_2(x)]/n

表面上來看,數(shù)值計(jì)算語言應(yīng)當(dāng)與計(jì)算機(jī)代數(shù)語言是

本質(zhì)上迥然不同的兩種語言。其實(shí),兩者在本質(zhì)上是完

全一致的。這是因?yàn)槟壳拔覀兪褂玫挠?jì)算機(jī)仍然是一種

二進(jìn)制的數(shù)字計(jì)算處理機(jī)。文字、字符或符號(hào)都只能通

過二進(jìn)制編碼才能用計(jì)算機(jī)進(jìn)行處理。

由于這種本質(zhì)聯(lián)系,所有的數(shù)值算法語言經(jīng)過改造加

工以后,都可以發(fā)展為計(jì)算機(jī)代數(shù)語言,或者說可以具

有非數(shù)值處理功能。

所謂計(jì)算機(jī)代數(shù)處理系統(tǒng)實(shí)際上是指硬件和軟件的

綜合。

常用的計(jì)算機(jī)代數(shù)系統(tǒng):

1.MACSYMAo它是用LISP語言的一種功能很強(qiáng)的方言

FranzLisp寫成的。它是一個(gè)通用的計(jì)算機(jī)代數(shù)系統(tǒng)。

(2)REDUCEo它是由赫恩(A.C.Hearn)設(shè)計(jì)的。該

語言是用SLISP(StandardL工SP)寫成的,通用的代

數(shù)處理系統(tǒng),具有相當(dāng)廣泛的基本代數(shù)處理功能,并

能處理高能物理的計(jì)算問題。

(3)Mathematicao該系統(tǒng)是美國(guó)Wolfram公司開發(fā)

的一個(gè)功能強(qiáng)大的計(jì)算機(jī)通用數(shù)學(xué)系統(tǒng)。其基本系統(tǒng)

主要是用C語言開發(fā)的。它是當(dāng)前運(yùn)用十分廣泛的符

號(hào)代數(shù)處理系統(tǒng)。

(4)Maple.這是一個(gè)商業(yè)產(chǎn)品。其優(yōu)點(diǎn)是使用圖形用戶

界面并支持一些復(fù)雜運(yùn)算,如:因式分解,積分或求和。

缺點(diǎn)是Maple不適用于處理大量數(shù)據(jù)。

(5)GiNaC:這是用C+的符號(hào)計(jì)算庫(kù)。它的主要特征是

具備以面向?qū)ο蟮姆绞綄?shí)現(xiàn)用戶自己的算法的能力。它

能處理大量數(shù)據(jù),在基準(zhǔn)測(cè)試下,其運(yùn)算速度可與下面

的FORM相當(dāng)。

(6)SCHOONSCHIP。這是很著名的粒子物理研究用的計(jì)算

機(jī)代數(shù)系統(tǒng)。它也能做一般的代數(shù)運(yùn)算,是目前為止運(yùn)

行速度最快的系統(tǒng)。該程序是用CDC型60位計(jì)算機(jī)和

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

它適用的機(jī)型。

(7)FORM:優(yōu)點(diǎn)是運(yùn)算速度高和具有處理大量數(shù)據(jù)的

能力O它被廣泛運(yùn)用于高能物理和涉及大型中間表達(dá)式

的程序。人們普遍認(rèn)為它是SCHOONSCHIP系統(tǒng)的后繼程

計(jì)算機(jī)代數(shù)系統(tǒng)的發(fā)展歷史:

?二十世紀(jì)六十年代最早的計(jì)算機(jī)代數(shù)系統(tǒng)幾乎完全是基于LISP

表處理語言.它是用來處理表鏈的。它對(duì)于早期符號(hào)計(jì)算程序的

重要性,就好比同一時(shí)期處理數(shù)值計(jì)算的程序FORTRAN系統(tǒng)。在

這個(gè)階段,REDUCE程序?qū)Ω吣芪锢硪呀?jīng)表現(xiàn)出一些特殊的用途。

?SCHOONSCHIP是M.Veltman用匯編語言寫的,專門應(yīng)用于粒子物

理領(lǐng)域。匯編代碼的應(yīng)用導(dǎo)致了難以置信的高速計(jì)算程序(相對(duì)

于最初的解釋代碼),從而使計(jì)算更復(fù)雜的高能物理散射過程成

為可能。由于人們逐漸認(rèn)識(shí)到這個(gè)程序的重要性,因而,1998年

M.Veltman因此獲得了諾貝爾物理獎(jiǎng)。

?同時(shí)值得一提的是基于FranzLISP的MACSYMA系統(tǒng),它引發(fā)了

算法的重要發(fā)展。

?從1980年以來,新的計(jì)算機(jī)代數(shù)系統(tǒng)開始采用C語言編寫。這

樣的系統(tǒng)與解釋語言LISP相比,能夠更好的利用計(jì)算機(jī)資源,

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

?這個(gè)時(shí)期還出現(xiàn)了最早的商業(yè)計(jì)算機(jī)代數(shù)系統(tǒng),其中

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

了,J.Vermaseren編寫的FORM就是一個(gè)用于粒子物理研究的程

序。它是可移植的,并認(rèn)為是SCHOONSCH工P系統(tǒng)的后繼程序。

?近幾年,有關(guān)大型程序可維護(hù)性的問題變得越來越重要。全部

的設(shè)計(jì)范例都由過程設(shè)計(jì)變到了面向?qū)ο笤O(shè)計(jì)。反映在編程語

言上從C變到C++。這樣GiNaC庫(kù)隨之發(fā)展起來,它支持C++環(huán)

境下的符號(hào)計(jì)算。

§7.2粒子物理研究中計(jì)算機(jī)代數(shù)的應(yīng)用

?利用計(jì)算機(jī)代數(shù)系統(tǒng)使微擾計(jì)算步驟自動(dòng)化。

?粒子物理是應(yīng)用計(jì)算機(jī)代數(shù)的一個(gè)重要領(lǐng)域,它充分發(fā)

揮了計(jì)算機(jī)代數(shù)系統(tǒng)的潛力。

SCHOONSCHIP,REDUCE,Mathematica,

FORM和GiNaC

?采用計(jì)算機(jī)代數(shù)系統(tǒng)來計(jì)算的復(fù)雜量子場(chǎng)論問題可以

分為兩類:

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

⑵復(fù)雜的計(jì)算方法。既可以采用標(biāo)準(zhǔn)化的非局部操作

也可以采用針對(duì)特定問題的計(jì)算算法,如采用由用戶

發(fā)展起來的專用算法。

有關(guān)粒子物理研究中微擾計(jì)算的計(jì)算機(jī)代數(shù)算法:

一、圖形產(chǎn)生

ThomasHahn,FeynArts

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

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

一旦用戶給定初、末態(tài)粒子,微擾計(jì)算的階數(shù),適當(dāng)?shù)哪?/p>

型,利用FeynArts就可以得到非零貢獻(xiàn)的費(fèi)曼圖。用如下

函數(shù)的操作指令就可以得到費(fèi)曼圖.

(1)CreateTopoiogies[l,e]產(chǎn)生/圈e個(gè)外腿的拓?fù)洹?/p>

(2)InsertFields[top,ext,Model->{mod1,mod2,...}]將mod1,mod2f...型

中的場(chǎng)加到外腿數(shù)為ext的拓?fù)鋞op中去。

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

費(fèi)曼圖形。

二、費(fèi)曼幅度和指標(biāo)收縮計(jì)算

FeynArts程序包中,采用函數(shù)

CreateFeynAmp[expr]

將InsertFields函數(shù)輸出expr的一組費(fèi)曼圖產(chǎn)生對(duì)應(yīng)

的解析幅度。

圖形與幅度的轉(zhuǎn)換過程是按照費(fèi)曼圖圖形技術(shù)中

所對(duì)應(yīng)的規(guī)則進(jìn)行的:

外線對(duì)應(yīng)自由波函數(shù),內(nèi)線對(duì)應(yīng)著傳播函數(shù),頂點(diǎn)

對(duì)應(yīng)相互作用頂點(diǎn)。

例:協(xié)變規(guī)范中的膠子傳播函數(shù)的規(guī)則和夸克-膠

子作用頂點(diǎn)的規(guī)則:

由上面的費(fèi)曼規(guī)則得到的不變振幅的表達(dá)式中將包

含了重復(fù)指標(biāo)求和。

例如:洛侖茲指標(biāo)的收縮可以通過不斷運(yùn)用以下幾個(gè)

規(guī)則來實(shí)現(xiàn):

gig"=g/,g“p''=p〃,=

P4=PQ,P〃"=p,"=D

如果要對(duì)一串狄拉克(Dirac)矩陣乘積的重復(fù)指標(biāo)收

縮,例如〃“",我們可以先用狄拉克矩陣的反對(duì)易關(guān)

系心九}"2g"?,使兩個(gè)狄拉克矩陣用同一個(gè)指標(biāo),然后再

用上面公式化簡(jiǎn)。

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

算。由于結(jié)果是相對(duì)論性不變量,所以人們很少有必

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

的標(biāo)積。這樣計(jì)算就沒有原來那么復(fù)雜了。原則上這

個(gè)計(jì)算方法是很明確的:

?奇數(shù)個(gè)狄拉克矩陣的陣跡是零;

?Trl=4;

?偶數(shù)(2n)個(gè)7矩陣的乘積的陣跡計(jì)算可以用公

式:

11'j「‘混”?。,二口—Okz)/I???十g,j.a2n[「

將(2n)個(gè)/矩陣的乘積的陣跡計(jì)算轉(zhuǎn)變?yōu)閷?duì)(2n-2)的

7矩陣的乘積求陣跡。理論上反復(fù)運(yùn)用上式,(2n)個(gè)

狄拉克矩陣的陣跡會(huì)產(chǎn)生(2n-l)(2n-3)-

3?l=(2n-l)!!項(xiàng)。這個(gè)數(shù)目隨n增加而指數(shù)增長(zhǎng)。如

果在指標(biāo)外,…,出之間沒有別的關(guān)系,則這實(shí)際上就是

(2n)個(gè)/矩陣的乘積的陣跡最后結(jié)果的項(xiàng)數(shù)。

FORM程序是處理費(fèi)曼幅度化簡(jiǎn)、洛侖茲指標(biāo)收縮

和/矩陣陣跡的最好工具之一。運(yùn)用飛Hooft-

Veltman方案對(duì)狄拉克代數(shù)的計(jì)算在TRACER程序中得

以實(shí)現(xiàn)。

三、單圈積分函數(shù)計(jì)算和Passarino—Veltman化簡(jiǎn)

Passarino和Veltman已經(jīng)首先給出了一*圈標(biāo)量

和張量積分函數(shù)系統(tǒng)的算法。其計(jì)算的基本思想就是

將張量積分計(jì)算化解為標(biāo)量積分函數(shù)的計(jì)算,而標(biāo)量

積分函數(shù)最終化為Spence函數(shù)的計(jì)算。

例:介紹張量圈積分化簡(jiǎn)到一個(gè)標(biāo)量圈積分的集

合。以下面的三點(diǎn)積分計(jì)算為例,

_rdDkk"v

3='W

其中Pi和P2表示外線動(dòng)量。Passarino和Veltman米用

將《寫成最一般的形式,即用形狀因子乘以外部動(dòng)量

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

我們將該張量積分寫為

這里{p,,p;}=pfpl+PHO然后通過方程兩邊與外部動(dòng)量

pfp;,p;pf,加",p;}和度規(guī)張量〃收縮,來解出形狀因子

4,金,金和C24O左邊的結(jié)果是按照傳播子重寫成圈動(dòng)量

上與和外部動(dòng)量之間的標(biāo)量乘積的形式,例如:

2Pl,k=k?一?—pi》+p:.

右邊的前兩項(xiàng)消去了傳播子,而最后一項(xiàng)根本與圈動(dòng)

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

我們會(huì)遇到計(jì)算Gram行列式

A3=4”2

P\'PiPi,

這個(gè)算法的缺點(diǎn)就在出現(xiàn)在對(duì)這個(gè)行列式的計(jì)算上

面。如果在一個(gè)Pi和P2共線的相空間域中,Gram行列

式趨向與零,這時(shí)穩(wěn)定的數(shù)值計(jì)算程序就變得十分困

難。目前已經(jīng)有對(duì)Passarino-Veltman算法的改進(jìn)

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

近年來出現(xiàn)了解析或數(shù)值計(jì)算一圈圖的一點(diǎn)、二點(diǎn)、

三點(diǎn)、四點(diǎn),甚至五點(diǎn)積分函數(shù)的程序包。LoopTools

就是這樣一個(gè)計(jì)算標(biāo)量和張量單圈積分的程序包。由

于多點(diǎn)單圈圖的動(dòng)量積分具有可以最終歸結(jié)為

Spence函數(shù)計(jì)算的共性,因而這樣的積分是可以用計(jì)

算機(jī)代數(shù)系統(tǒng)來解決復(fù)雜計(jì)算的困難。然而二圈以上

的動(dòng)量積分計(jì)算就不再具有這一共性,不具備統(tǒng)一的

算法,因此用計(jì)算機(jī)代數(shù)系統(tǒng)來解決復(fù)雜計(jì)算還存在

困難。

四、高階量子修正計(jì)算的計(jì)算機(jī)代數(shù)程序

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

基于計(jì)算機(jī)代數(shù)的程序包有以下四組。每組中的不同程

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

(1)FeynArts,FeynCalc,FormCalc,LoopTools,

TwoCalc和s21seo

(2)GEFICOM,QGRAF,MATAD和MINCERo

(3)DIANA,QGRAF和ON-SHELL2,

(4)xloops和GiNaCo

如前面所列舉的高階精確計(jì)算程序包表明:計(jì)算機(jī)代數(shù)

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

程序可能是數(shù)值計(jì)算,文字處理,數(shù)據(jù)庫(kù),專家?guī)祛愋偷?/p>

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

代數(shù)系統(tǒng)。將來人們會(huì)更多地強(qiáng)調(diào)對(duì)程序集成的某種程度

的標(biāo)準(zhǔn)化,以及要求具備不同系統(tǒng)間數(shù)據(jù)傳遞功能。隨著

將來硬件和軟件的發(fā)展,計(jì)算機(jī)代數(shù)系統(tǒng)功能的擴(kuò)展會(huì)向

兩個(gè)不同方向發(fā)展:一方面,計(jì)算機(jī)代數(shù)系統(tǒng)可以進(jìn)行遠(yuǎn)

遠(yuǎn)超出現(xiàn)在水平的非常復(fù)雜的計(jì)算,另一方面計(jì)算機(jī)代數(shù)

系統(tǒng)越來越成為解決常規(guī)問題的軟件環(huán)境中的一部份。

§7.3Mathematica語言編程

單詞,詞匯-一少語句,文章

1.過程

一般形式為:

Module[{〈局部變量名表〉},表達(dá)式1;表達(dá)式2;…表達(dá)式n]

例如:

AAA

unit[x_ry_,z_]:=Module[{len},len=Sqrt[x2+y2+z2];

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

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

式n]

2.控制選擇

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

(ii)條件控制

工f語占結(jié)構(gòu)。

工f[邏輯表達(dá)式,表達(dá)式]

工口邏輯表達(dá)式,表達(dá)式1,表達(dá)式2]

工f[邏輯表達(dá)式,表達(dá)式L表達(dá)式2,表達(dá)式3]

例如:

66

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

Print[66xisnotnumerical.n]

Which語句結(jié)構(gòu)。

Which[條件L表達(dá)式L條件2,表達(dá)式2,…,條件

n,表達(dá)式n]

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

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

件3==3的結(jié)果為True.

Switch語句結(jié)構(gòu)。

Switch[判別表達(dá)式,模式L表達(dá)式L模式2,表達(dá)

式2,…,模式n,表達(dá)式n]

例:i=l

Switch[i人2,0,x,l,y,2,z]

最后結(jié)果為y。

(iii)循環(huán)控制

Do語句結(jié)構(gòu)

Do[表達(dá)式,{循環(huán)描述}]

例:Do[Print[2Ai]Ji,l/5}]

該指令的結(jié)果是循環(huán)打印出入(i=l,2,3,4,5)的值2,

4,8,16,32o

For語句結(jié)構(gòu)

For[初始表達(dá)式,條件,步進(jìn)表達(dá)式,循環(huán)表達(dá)式]

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

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

While語句結(jié)構(gòu)

While[條件,循環(huán)表達(dá)式]

例如:

i=0

While[i<=10APrint[i];i++]

3.程序包結(jié)構(gòu)

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

BeginPackage[”程序包名稱,”]

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

的函數(shù)、變量等的名字和使用說明

Begin[“Private

程序包主體.(包括外部可用的函數(shù)及變量,一些內(nèi)部

函數(shù)變量的定義.)

End[]

EndPackage[]

7.3Mathematica語言編程

1.過程

一般形式為:

Module[{<局部變量名表〉},表達(dá)式1;表達(dá)式2;...表達(dá)式n]

例如:

unit[x_,y_,z_]:=Module[{len},len=Sqrt[xA2+yA2+zA2];

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

Block[{<局部變量名表〉},表達(dá)式1;表達(dá)式2;…表達(dá)式n]

2.控制選擇

(i)順序控制分號(hào)

(ii)條件控制

if語言結(jié)構(gòu)。

if[邏輯表達(dá)式,表達(dá)式]

If[邏輯表達(dá)式,表達(dá)式1,表達(dá)式2]

If[邏輯表達(dá)式,表達(dá)式1,表達(dá)式2,表達(dá)式3]

例如:

f[x_]:=If[(x>0)II(x=0),N[Sqrt[x]],Print["xisnegative0,

Print["xisnotnumerical."]

Which語句結(jié)構(gòu)。

Which[條件1,表達(dá)式1,條件2,表達(dá)式2,…,條件n,表達(dá)式n]

例:

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論