廖克順
(南寧職業技術學院,廣西 南寧 5300088)
在設計計算機算法過程中,不管在解題思路上,還是編寫程序,都離不開數學方法的應用,數學方法在計算機算法中得到了廣泛應用。
數學方法具有3個基本特點:一是高度的抽象性和概括性,數學方法的抽象性表現為僅保留事物間數量的關系和空間形式;二是精確性,即邏輯的嚴密性及結論的確定性;三是應用的普遍性和可靠性,不受任何具體內容限制。
計算機算法中如何實現n個數遞乘變量求和?如果進行單項的計算,明顯過于麻煩。因為數據呈現出遞乘的規律,即Tn與Tn-1之間是:Tn=n×Tn-1。從第2個數據開始,后面每一個數據都可以用前一個數據與n相乘得到。在計算機程序中,可以設置簡單的語句,就可以實現對這種遞推關系數據的處理。計算機算法利用了遞推、數列概念,正是對數學方法的有機整合[1]。
用數學歸納法證明對于任意正整數n,1+2+3+……+n=n(n+1)/2成立。證明思路是:檢驗式子對n取初值時成立,假設對于正整數n=k式子也成立,進一步證明對于n=k+1時也成立。顯然,式子對于n=1時是成立的,假定對于n=k時式子成立,即1+2+3+……+k=k(k+1)/2,在這個假設前提下,證明式子對于n=k+1也成立,即有1+2+3+……+k+(k+1)=(k+1)(k+2)/2。只要式子對于n=k+1成立,就證明了式子對于所有的正整數都成立[2]。這一證明過程可以通過如下程序段來實現://自然數列前項求和公式
public static long s(int n)
{
If (n≡≡1)
return 1;
Else
returns(n-1)+n
}
由此看出,函數s是在調用自身的副本實現求和的計算,這就是數學方法中的遞歸思想。通過以上例子,我們可以看出,計算機算法中,廣泛地運用了數學方法。
計算機擅長機械重復地處理數據,表現出循環思想,如果不對數據進行循環處理,計算機就沒有什么現實作用。數學方法中的數列求和、輾轉相除法,判定素數、二分法、秦九韶算法等,在計算機程序中得到應用。例如:使用輾轉相除法求兩個正整數m、n的最大公約數和最小公倍數。
代碼如下:include<stdio.h>
int main(intargc,int*argv[])
{
int num1,num2,temp;
printf("please input 2 number:");
scanf("%d,%d",&num1,&num2);
if(num1<num2)//the result is num1>num2
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1;
b=num2;
while(b)
{
temp=a%b;
a=b;
b=temp;
}
printf("thezuidagongyuehsu:%d,thezuixiaogongbeishu:%d ",a,num1*num2/a);
system("pause");
return0;
}
計算機編程通過編譯不同的計算機語言而達到不同的實際操作的目的。以C語言為例,C語言在進行編程的過程中遇到最多的問題就是重復編譯,在編寫程序時C語言比較重視代碼邏輯運行的過程,所以C語言在程序語言方面受到自身語言的局限性比較大。因而,在實際的編寫程序過程中要充分發揮數學算法對計算機編程的優化作用。在編寫程序時融入數學算法的思想,在C語言進行編寫程序時,通過不斷地簡化編寫語言的流程,使計算機編程得到優化。
進行程序設計時,計算機專家必須要使用眾多數學方法。只有以科學的數學方法做基礎,才能尋找出數據的共性,設計出的計算機程序在運行上節省時間、占用較少空間。下面我們分析一個定積分計算案例。計算定積分:In=1/e∫01xnexdx i=0,1,2,L,7
解:遞推公式:In=1-nIn-1先計算I0,再計算I1,I2,…,I7
假設計算出的近似值為I0*,誤差為E(I0*)=δ
則I1的近似值I1*的誤差為E(I1*)=δ
則I2的近似值I2*的誤差為E(I2*)=2!δ
則I3的近似值I3*的誤差為E(I3*)=3!δ… …
則I7的近似值I7*的誤差為E(I7*)=7!δ=5040δ誤差放大5 000倍!遞推公式計算:In-1=(1-In)/n先計算I7,I0的誤差只有I7的誤差的五千分之一!
通過上面兩種計算,我們看到,數據計算順序不同,計算出的結果卻相差遙遠。就是因為轉變一下計算的次序,就解決了類似數據計算穩定的難題,制造出一套更好的計算方法。
計算結果的穩定性,就是對原始數據的微小變動,沒有令數據失真,可以提高算法穩定性,完善計算機算法的程序設計,這就是數學方法對計算機算法優化。
設計出的每一個算法,都需要進行算法分析。堅持一定的計算理念,討論計算機算法時間、空間的復雜度,分析計算機算法具體應用在哪類問題,或者根據某類問題選擇對應的計算機算法。
試驗分析就是將兩個計算機算法進行綜合比較。數學方法可以細致地對算法進行分析,利用嚴密邏輯推理判斷算法的優劣。但是在實施實際項目時,通常情況下,是不能進行有效論證和科學數據推斷。專家們在設計計算機算法程序中,為了展示計算機算法某個性能的指標,就會配置一個能近似性表達性能的方法。怎樣實現在處理同類數據時,運行時間縮短、復雜度簡化是計算機算法性能的重要分析依據。
數學方法在計算機算法中的應用,無疑帶給計算機算法思想、設計、分析等多個環節的幫助和優化,同時也增強了計算機算法的嚴密性、可靠性。現在計算機技術不斷朝著智能方向發展,但是我們仍應該堅持計算機算法與數學算法整合的思路,謀求計算機技術的進步。
[1]崔守梅,郝玲.計算機算法中的數學方法研究[J].淄博師專學報,2006(2):11-14.
[2]張鄰.淺談計算機算法中的數學方法研究[J].網絡技術安全與應用,2014(12):45-47.