張志恒
(鄭州財稅金融職業(yè)學(xué)院,鄭州 450048)
不定式的方程是指由多個未知數(shù)組成且未知數(shù)取值為整數(shù)的方程,本研究的主要目標(biāo)是二元不定式,即方程中含有兩個未知數(shù)。定數(shù)方程的定義式為:xn+yn=zn,n≥2。現(xiàn)階段,不定式方程并沒有一個統(tǒng)一的解題方法,需根據(jù)不定式的基本原則對不定式方程進(jìn)行求解,然后再根據(jù)這一原則利用高等數(shù)學(xué)、初等數(shù)學(xué)中所學(xué)的知識進(jìn)行解題。本研究將以二元不定方程整數(shù)解的MATLAB解法為例來介紹如何通過MATLAB軟件求取不等式的解。
形如xn-Dy2=c的方程為二元n(n≥2)次不等式,其中D是一個不等于0的正整數(shù),c是一個不等于0的整數(shù)。需要注意的是,當(dāng)出現(xiàn)n=2,c=±1時,此方程式就為二元一次不定式。
MATLAB軟件是由美國MathWork公司研發(fā)而成的一款數(shù)學(xué)軟件,該軟件主要用于數(shù)據(jù)的可視化、數(shù)據(jù)分析、數(shù)學(xué)運(yùn)算等,是一款高級計算語言軟件。該軟件的產(chǎn)生為科學(xué)研究者、工程設(shè)計者帶來了很多方便,為他們提供了更加全面的問題解決方案,MATLAB軟件的研發(fā)出品具有非常重要的意義。
MATLAB與Mathematica、Maple并稱為三大數(shù)學(xué)軟件,其中MATLAB的基本數(shù)據(jù)單位與Mathematica、Maple的基本數(shù)據(jù)單位截然不同,其基本數(shù)據(jù)單位為矩陣,因此它的數(shù)學(xué)運(yùn)算能力更加突出。①for循環(huán):for循環(huán)是指對循環(huán)的結(jié)果進(jìn)行輸出,for循環(huán)主要包括以下幾個單詞:index、increment、endvalue。它們在for循環(huán)語句中所代表的含義:index是指循環(huán)變量;increment是指增量;endvalue是指對運(yùn)行的循環(huán)進(jìn)行中止判斷。②if與 else或elseif的連用:if與else或elseif的連用是對前面邏輯問題的選擇,如果對前面的邏輯條件選擇認(rèn)同,那么就使用if else語句。如果對前面的邏輯條件選擇否認(rèn),那么就使用if elseif。③函數(shù)floor(x):函數(shù)floor(x)是指x向左進(jìn)行整數(shù)取值。例如:floor(-2.6) =-3,floor(3.7)=3。④函數(shù)sqrt(x):函數(shù)sqrt(x)是指進(jìn)行x平方根的取值。例如:sqrt(16)=4。⑤函數(shù)power(x,1/n):函數(shù)power(x,1/n)是指進(jìn)行x的n次方根的取值。例如:power(9,1/2)=3。⑥“==”表示當(dāng)對兩個式子進(jìn)行計算時,如果兩個式子的值相等,那么程序?qū)⒆詣臃祷氐?進(jìn)行運(yùn)算。如果兩個式子的值不相等,那么程序?qū)⒆詣臃祷氐?進(jìn)行運(yùn)算。
step1:對x0、y0這兩個重要變量進(jìn)行定義,然后對y取值范圍進(jìn)行設(shè)定,本程序?qū)τ趛的取值范圍規(guī)定為y≤50 000。
step2:確定本程序循環(huán)的表達(dá)式以及需要執(zhí)行的次數(shù),并將“s”定義為不定式整數(shù)解的個數(shù)。
step3:確定本程序循環(huán)中for循環(huán)的語句,然后根據(jù)不定式整數(shù)解的算法過程確定for循環(huán)執(zhí)行的次數(shù),并對循環(huán)次數(shù)x、y進(jìn)行定義。
step4:對于不定式的求解過程使用if語句來實現(xiàn),并對整數(shù)解進(jìn)行輸出,完成輸出后結(jié)束整個程序。
利用MATLAB軟件來求取二元不定方程整數(shù)解,本研究針對這個問題進(jìn)行了編程設(shè)計,具體程序如下:
(1)進(jìn)行二元二次不定式方程x2+Dy2=c(y≤50 000)的求解程序為:
x0=?;y0=?;
y=1∶50 000;x1=floor(sqrt(D*50 000^2+c));
x=1∶x1;s=0;
for y=1∶1∶50 000;for x=1∶1∶x1;
if x^2-D*y^2==c;
s=s+1;x0(s)=x;y0(s)=y;
end
end
end
(2)推廣:二元n次不定式方程xn+yn=c(y≤50 000)的求整數(shù)解程序為:
x0=?;y0=?;
y=1∶50 000;x1=floor(sqrt(D*50 000^n+c));
x=1∶x1;s=0;
for y=1∶1∶50 000;for x=1∶1∶x1;
if x^n-D*y^n==c;
s=s+1;x0(s)=x;y0(s)=y;
end
end
end
例1:求以下二元二次不定方程x2-43y2=-3(y≤50 000)的整數(shù)解。
解:將以上二元二次不定式方程所給出的已知條件帶入到以下的MATLAB程序中:
x0=?;y0=?;
y=1∶50 000;x1=floor(sqrt(43*50 000^2+1-3),1/1);
x=1∶x1;s=0;
for y=1∶1∶50 000;for x=1∶1∶x1;
if x^2-43*y^2==-3;
s=s+1;x0(s)=x;y0(s)=y;
end
end
end
通過以上的程序運(yùn)算,得出此二元二次不定式的整數(shù)解為:
x0=[13,400,90 932];y0=[2,61,13 867];S=3
例2:求取下面二元三次不定式x3-26y2=1(y≤50 000)的整數(shù)解。
解:將以上二元三次方程中的已知條件帶入到MATLAB程序中:
x0=?;y0=?;
y=1∶50 000;x1=floor(power(26*50 000^2+1,1/3));
x=1∶x1;s=0;
for y=1∶1∶50 000;for x=1∶1∶x1;
if x^3-26*y^2==1;
s=s+1;x0(s)=x;y0(s)=y;
end
end
end
通過MATLAB程序的運(yùn)算能夠快速求得x3-26y2=1(y≤50 000)的整數(shù)解,即x0=[3,313];y0=[1,1 086];S=2。