數(shù)學(xué)建模由雞兔同籠問題抽象出的一類線性方程組的解法并用代碼進(jìn)行實(shí)現(xiàn)_第1頁
數(shù)學(xué)建模由雞兔同籠問題抽象出的一類線性方程組的解法并用代碼進(jìn)行實(shí)現(xiàn)_第2頁
數(shù)學(xué)建模由雞兔同籠問題抽象出的一類線性方程組的解法并用代碼進(jìn)行實(shí)現(xiàn)_第3頁
數(shù)學(xué)建模由雞兔同籠問題抽象出的一類線性方程組的解法并用代碼進(jìn)行實(shí)現(xiàn)_第4頁
數(shù)學(xué)建模由雞兔同籠問題抽象出的一類線性方程組的解法并用代碼進(jìn)行實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

由雞兔同籠問題抽象出的一類線性方程組的解法并用代碼進(jìn)行實(shí)現(xiàn)摘要:線性方程組的解法,早在中國(guó)古代的數(shù)學(xué)著作《九章算術(shù)方程》章中已作了比較完整的論述。其中所述方法實(shí)質(zhì)上相當(dāng)于現(xiàn)代的對(duì)方程組的增廣矩陣施行初等行變換從而消去未知量的方法,即高斯消元法。在西方,線性方程組的研究是在17世紀(jì)后期由萊布尼茨開創(chuàng)的。他曾研究含兩個(gè)未知量的三個(gè)線性方程組組成的方程組。麥克勞林在18世紀(jì)上半葉研究了具有二、三、四個(gè)未知量的線性方程組,得到了現(xiàn)在稱為克萊姆法則的結(jié)果。克萊姆不久也發(fā)表了這個(gè)法則。18世紀(jì)下半葉,法國(guó)數(shù)學(xué)家貝祖對(duì)線性方程組理論進(jìn)行了一系列研究,證明了n元齊次線性方程組有非零解的條件是系數(shù)行列式等于零。大量的科學(xué)技術(shù)問題,最終往往歸結(jié)為解線性方程組。因此線性方程組的數(shù)值解法在計(jì)算數(shù)學(xué)中占有重要地位。本文將對(duì)一般線性方程組的解法進(jìn)行探究。關(guān)鍵字:線性方程組、高斯消元、矩陣相關(guān)知識(shí):高斯消元法:基本思想:用逐次消去未知數(shù)的方法把原方程組化為上三角形方程組進(jìn)行求解。求解分為兩步:消元過程:用初等行變換把原方程組的系數(shù)矩陣化為上三角形矩陣?;卮^程:對(duì)上三角方程組的最后一個(gè)方程求解,將求得的解逐步往上一個(gè)方程代入求解。一、問題的提出大約在1500年前,我國(guó)古代數(shù)學(xué)名著《孫子算經(jīng)》中記載了一個(gè)有趣的問題。書中是這樣敘述的:“今有雉兔同籠,上有三十五頭,下有九十四足,問雉兔各幾何?”這四句話的意思是:有若干只雞兔同在一個(gè)籠子里,從上面數(shù),有35個(gè)頭;從下面數(shù),有94只腳。問籠中各有幾只雞和兔?古人在《孫子算經(jīng)》中是這樣解決這個(gè)問題的:假設(shè)讓雞抬起一只腳,兔抬起兩只腳,還有94÷2=47只腳;這時(shí)每只雞一只腳,每只兔兩只腳,籠子里只要有一只兔,則腳的總數(shù)就比頭的總數(shù)多1;這時(shí)腳的總數(shù)與頭的總數(shù)之差47-35=12,就是兔的只數(shù)。這個(gè)問題雖然很容易就得到了解決,但是在繼續(xù)進(jìn)行“龜鶴同游”和“人狗同行”問題的研究時(shí),我們發(fā)現(xiàn)“雞兔同籠”不只是代表著雞、兔同籠的問題,有很多類似的問題都可以看成是“雞兔同籠”問題,如牛雞問題、汽車和自行車的輪子問題等等。所以,我們對(duì)這類問題進(jìn)行抽象,以找出這一類問題的解法。問題分析對(duì)于“雞兔同籠”問題不用方程的思想可以這樣認(rèn)為:假設(shè)全是雞:2×35=70(只),比總腳數(shù)少的:94-70=24(只)兔:24÷(4-2)=12(只)雞:35-12=23(只)將“雞兔同籠”問題中的“雞”和“兔”分別抽象為“x”和“y”,于是上述問題轉(zhuǎn)化為求解二元一次方程組:針對(duì)“雞兔同籠”的實(shí)際問題,其中假設(shè)的“x”和“y”都必須是非負(fù)整數(shù),實(shí)際生活中的問題的解并不都是這樣整齊的,于是我們繼續(xù)將這個(gè)問題一般化,這一類的所有問題都可以歸結(jié)為解方程組:即Ax=b其中,A=QUOTE,b=QUOTEQUOTE對(duì)比看:這樣,就將與“雞兔同籠”同類問題抽象為求二元一次方程組的解的問題。利用以前所學(xué)習(xí)過的知識(shí),上述問題很容易求得答案。于是這一類問題很容易的得到解決。而在實(shí)際生活中,只存在兩個(gè)變量的問題是很少的,例如下面的問題:營(yíng)養(yǎng)減肥食譜劍橋減肥食譜——用33種食物精確提供31種營(yíng)養(yǎng)現(xiàn)僅考慮三種食品三種營(yíng)養(yǎng)成分如下表:營(yíng)養(yǎng)每100克成分所含的營(yíng)養(yǎng)(g)劍橋食譜一天所提供的營(yíng)養(yǎng)脫脂牛奶大豆粉乳清蛋白質(zhì)36511333碳水化合物52347445脂肪073同樣將變量抽象為數(shù)學(xué)符號(hào),設(shè)這三種食物的量分別為,,??闪蟹匠探M:其增廣矩陣B為:用高斯消元法對(duì)矩陣化簡(jiǎn):回代得解:=0.277,=0.392,=0.233.為了提供所需要的蛋白質(zhì)、碳水化合物和脂肪總量,食譜中需要包含0.277單位的脫脂牛奶,0.392單位的大豆粉,0.233單位的乳清.由上面問題可以看出,將問題抽象為數(shù)學(xué)符號(hào)并用二元一次方程組和三元一次方程組的方法求解會(huì)使問題更加清晰,把事物符號(hào)化也更容易向別人解釋闡述。三、問題的推廣在實(shí)現(xiàn)了三元一次方程組求解之后,我們希望找到更復(fù)雜問題的解,于是將方程推廣為n元其中的以及等等是已知的常數(shù),而等等則是要求的未知數(shù)。如果用?o???§??£??°"\o"線性代數(shù)"線性代數(shù)中的概念來表達(dá),則線性方程組可以寫成:其中,由于方程與未知數(shù)較多,計(jì)算較為復(fù)雜,為了更高效的求解,我們利用高斯消元法的思想用c語言編寫程序,實(shí)現(xiàn)對(duì)n元線性方程組的求解。四、程序代碼#include<math.h>#include<stdio.h>#defineMAX10floata[MAX][MAX+1],ark;intr,n;jiaohuan(intr,intk){ floatb; inti,j; for(i=1;i<=n+1;i++) { b=a[r][i]; a[r][i]=a[k][i]; a[k][i]=b; } for(i=1;i<=n;i++) { for(j=1;j<=n+1;j++) { printf("%fl",a[i][j]); } printf("\n"); } printf("\n");}floatmaxr(intk){ inti; doublezhu=0; for(i=k;i<=n;i++) { if(fabs(a[i][k])>zhu) { zhu=fabs(a[i][k]); r=i; } } returnzhu; }main(){floatx[MAX];intk,i,j;printf("\n高斯列主元消元法解線性方程組");printf("\n請(qǐng)輸入方程組的維數(shù):n=");scanf("%d",&n);printf("\n\n請(qǐng)輸入系數(shù)矩陣a:\n");for(i=1;i<=n;i++){ for(j=1;j<=n;j++) {printf("請(qǐng)輸入a[%d][%d]=",i,j); scanf("%f",&a[i][j]); }}for(i=1;i<=n;i++){printf("\n請(qǐng)輸入b[%i]=",i); scanf("%f",&a[i][n+1]);}for(k=1;k<=n-1;k++){ark=maxr(k); if(ark==0) {printf("\n系數(shù)為零錯(cuò)誤,即將退出!"); } elseif(r!=k) jiaohuan(r,k); for(i=k+1;i<=n;i++) {for(j=k+1;j<=n+1;j++) {a[i][j]=a[i][j]-a[k][j]*a[i][k]/a[k][k]; } } for(i=k+1;i<=n;i++) {a[i][k]=0; } for(i=1;i<=n;i++) {for(j=1;j<=n+1;j++) {printf("%fl",a[i][j]); } printf("\n"); } printf("\n");}x[n]=a[n][n+1]/a[n][n];for(k=n-1;k>=1;k--){floatme=0; for(j=k+1;j<=n;j++) {me=me+a[k][j]*x[j]; }x[k]=(a[k][n+1]-me)/a[k][k];}printf("\n回代求得:\n");for(i=1;i<=n;i++){printf("\tx%d=%f",i,x[i]);}printf("\n");}在VC++6.0上運(yùn)行程序,試解一個(gè)四元一次方程組得到結(jié)果如下:優(yōu)缺點(diǎn)及改進(jì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)論