摘要:本文將程序設(shè)計知識運用到求無理數(shù)的近似值、求解方程的近似根、求不規(guī)則圖形面積等與近似值相關(guān)的數(shù)學(xué)問題上,讓讀者從新的角度審視求解與近似值相關(guān)的數(shù)學(xué)問題的新方法,并領(lǐng)悟程序設(shè)計在求解決這些數(shù)學(xué)問題上所顯示出的優(yōu)勢。
關(guān)鍵詞:近似值;精度;泰勒公式;二分法;不規(guī)則圖形面積;SPSS
如今隨著計算機軟件和硬件的飛速發(fā)展,它運算速度快、存儲信息量大、并且有邏輯判斷能力等特點都突顯出來。當計算機執(zhí)行預(yù)先設(shè)定好的程序時,它的高速、準確、生動、不厭其煩常常會令你驚訝!很多實用的數(shù)學(xué)軟件(如MATLAB)也應(yīng)運而生且?guī)椭覀兘鉀Q了越來越多數(shù)學(xué)問題。下面我們選擇近似計算的幾個典型實例通過編寫相應(yīng)的程序設(shè)計內(nèi)核語句來求解該問題,為了讓廣大的讀者能看得懂程序,我們選擇大家比較熟悉的C/C++語言作為程序設(shè)計語言。
1 在計算無理數(shù)近似值上的應(yīng)用
在高等數(shù)學(xué)中,一提到近似計算的問題時人們自然會聯(lián)想到泰勒公式:對于函數(shù)在的某鄰域內(nèi)n+l階可微,則在此鄰域內(nèi)有下面的(1)成立。
其中
這里的稱為拉格朗日余項,該余項值的大小決定了函數(shù)計算的精度。通常我們?yōu)檫_到一定的精度時需要求解關(guān)于的不等式來確定n的范圍,從的不等式可以看出求解這個不等式的難度。然而在程序設(shè)計中我們只要在循環(huán)語句中對循環(huán)條件稍加限制就可以輕松地達到我們的目的。下面我們以求解無理數(shù)的近似值為例,通過程序設(shè)計完成的近似值的計算。由上面的公式(1)很容易推導(dǎo)出的計算公式:
當x=1時就是求解無理數(shù)的公式:
求解過程中當精度被確定時(比如誤差不超過)我們很難通過求解不等式的來確定滿足條件的n的最小值,而我們借助程序設(shè)計中的循環(huán)語句中的循環(huán)條件的設(shè)定將輕松地解決該問題。程序如下:
#include
#include
using namespace std;
#define E 1e-6//用E表示精度為
long fact(long i) //用遞歸調(diào)用求階乘
{if (i==0||i==1) return 1;
return i*fact(i-1);
}
void main()
{double e=0;int n=0;
while(1.0/fact(n)>=E) //把所需精度作為循環(huán)的條件進行設(shè)置即可
{e+=1.0/fact(n);//通過類加求出e的近似值
n++;}
cout< } 運行結(jié)果如下: 通過運行程序我們看到:把原本很復(fù)雜的求不等式來確定滿足條件的最小值n的問題轉(zhuǎn)化為“把所需精度作為循環(huán)的條件進行設(shè)置”,省去了很多因計算帶來的煩惱。而效率卻大有提高。 2 在求解方程近似根上的應(yīng)用 在科學(xué)研究與工程技術(shù)中,常會遇到求解非線性方程的問題。我們知道對于不高4次的代數(shù)方程已有求根公式,而高于4次的代數(shù)方程則無精確的求根公式,至于超越方程就更無法求其精確解了。因此,如何求得滿足一定精度要求的方程的近似根也就成為了廣大科技工作者迫切需要解決的問題。解決此類問題的方法很多包括:二分法、迭代法、牛頓切線法、弦截法等。我們下面用較好理解的二分法來求方程在區(qū)間(0,2)內(nèi)根的近似解,精確度要求:E=0.000001。函數(shù)圖像如圖1所示。 原理:若函數(shù)在區(qū)間兩端點的函數(shù)值異號,則在區(qū)間內(nèi)方程至少有一個根。如果在區(qū)間內(nèi)僅有一個根,則可以取與的中點進行判斷,若與異號,說明有一個根在區(qū)間中,否則在區(qū)間中。然后按上述二分方法逐漸縮小有根區(qū)間,從而逼近方程的根。當有根區(qū)間小到一定程度時,把這個區(qū)間的中點的X值當作方程的近似根。 編寫程序如下: #include #include #include using namespace std; void main() { double x1=0.0,x2=2.0,x3; double Y1,Y3; double E=0.000001; // 確定精度 while(fabs(x2-x1)>E) //把精度作為循環(huán)的條件 { x3=(x1+x2)/2; Y1=x1*x1*x1-x1-1;Y3=x3*x3*x3-x3-1 ; if(Y1*Y3>0) x1=x3; else x2=x3; } cout<<\"在精度是\"< <<\"時的方程的根是:\"< } 運行結(jié)果如下: 我們更改精度的范圍 ~ 列出精度與根的對應(yīng)表,如表1所示 我們利用SPSS分析軟件對精度和近似根的變化繪畫出圖像如圖2所示。 通過圖像我們清晰地看到:當精度在 范圍變化時,近似根以線性方式快速逼近方程的根;當精度值在范圍變化時,近似根仍以線性的方式、更高的速率逼近方程的根,同時在此區(qū)間的方程的近似根和根的精確值接近程度已經(jīng)很高了。 3 在求解不規(guī)則圖形面積上的應(yīng)用 我們知道一個函數(shù)定積分的幾何意義是:表示由 、x=a、x=b和X軸所圍成的曲邊梯形的面積。但若被積函數(shù)的原函數(shù)求不出來時,利用定積分求面積的方法則失去作用。此時我們可以用數(shù)值積分的矩形方法來求解不規(guī)則圖形面積。方法如下: 把對應(yīng)區(qū)間分成n等份,將出現(xiàn)n個等底的矩形,我們用這n個矩形的面積的和來近似地表示不規(guī)則圖形的面積。我們可以通過調(diào)整n的大小來體現(xiàn)近似值與真值的逼近程度。 下面我們以函數(shù) (原函數(shù)可求)為例,求解和X軸所圍成的不規(guī)則圖形的面積。函數(shù) 的圖像如圖3所示。 具體方法:將區(qū)間分成n等份,令則不規(guī)則圖形的面積為S 編寫程序如下: #include void main() {double s=0, x=0, h; long int n; cout<<\" 請輸入?yún)^(qū)間[0,1]被分成的等份數(shù)n \"< cin>>n; h=1.0/n; while(x<1-h)// x的值落在1~(n-1)個矩形框內(nèi)就進入循環(huán)體 {s+=h*(1.0/(1+x*x));//求各個矩形面積的累加和 x+=h; } // 步長為h cout< } 我們通過n的不同的取值得到表2的數(shù)據(jù)。 我們利用SPSS分析軟件對等份數(shù)和近似根的變化繪畫出圖像,如圖4所示。 通過觀察圖像我們可以得到以下結(jié)論: (1)當0<n<600時,近似值將隨著等份數(shù)的增加逐步逼近圖形的真實面積。 (2)當600<n<2200時,近似值將隨著等份數(shù)的增加,近似值將圍繞精確值有較大幅度地波動。 (3)當n>2200時,近似值將圍繞精確值有小幅度地波動,并隨等份數(shù)的增大波動幅度就越小。 4 結(jié)束語 運用計算機程序設(shè)計方法解決數(shù)學(xué)問題,無論在數(shù)學(xué)界還是在計算機應(yīng)用領(lǐng)域都有廣泛的發(fā)展空間,我們期待在不久的將來,許多涉及計算、圖形、文字處理的功能強大、界面友好的漢語軟件將被開發(fā)出來,許多業(yè)內(nèi)人士將從繁瑣的計算和批量的做圖中擺脫出來,投身到更重要、更有意義的工作中。 參考文獻 [1]朱永生,劉莉.基于泰勒公式應(yīng)用的幾個問題[J].長春師范學(xué)院學(xué)報(自然科學(xué)版),2006(8). [2]錢能.C++程序設(shè)計(第二版)[M].北京:清華大學(xué)出版社,2004. [3]同濟大學(xué)數(shù)學(xué)系.高等數(shù)學(xué)(第六版 上冊)[M].北京:高等教育出版社,2007.