計(jì)算方法實(shí)驗(yàn)指導(dǎo)書(shū)(有例程)_第1頁(yè)
計(jì)算方法實(shí)驗(yàn)指導(dǎo)書(shū)(有例程)_第2頁(yè)
計(jì)算方法實(shí)驗(yàn)指導(dǎo)書(shū)(有例程)_第3頁(yè)
計(jì)算方法實(shí)驗(yàn)指導(dǎo)書(shū)(有例程)_第4頁(yè)
計(jì)算方法實(shí)驗(yàn)指導(dǎo)書(shū)(有例程)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算方法實(shí)驗(yàn)指導(dǎo)書(shū)理學(xué)院實(shí)驗(yàn)中心數(shù)學(xué)專業(yè)實(shí)驗(yàn)室編寫實(shí)驗(yàn)一 列主元消去法【實(shí)驗(yàn)類型】 設(shè)計(jì)性【實(shí)驗(yàn)學(xué)時(shí)】 2學(xué)時(shí)【實(shí)驗(yàn)內(nèi)容】1掌握列主元消去法的基本思路和迭代步驟2并能夠利用列主元的高斯消去法解任意階數(shù)的線性方程組;【實(shí)驗(yàn)前的預(yù)備知識(shí)】 1計(jì)算機(jī)基礎(chǔ)知識(shí);2熟悉編程基本思想;3熟悉常見(jiàn)數(shù)學(xué)函數(shù);【實(shí)驗(yàn)方法或步驟】1 列主元消去法基本思路 設(shè)有線性方程組,設(shè)是可逆矩陣。列主元消去法的基本思想就是通過(guò)列主元的選取將初等行變換作用于方程組的增廣矩陣,將其中的變換成一個(gè)上三角矩陣,然后求解這個(gè)三角形方程組。2 列主元高斯消去法算法描述將方程組用增廣矩陣表示。步驟1:消元過(guò)程,對(duì)(1) 選主元,找使得(2

2、) 如果,則矩陣奇異,程序結(jié)束;否則執(zhí)行(3);(3) 如果,則交換第行與第行對(duì)應(yīng)元素位置, ;(4) 消元,對(duì),計(jì)算對(duì),計(jì)算步驟 2:回代過(guò)程:(1) 若則矩陣奇異,程序結(jié)束;否則執(zhí)行(2);(2) 對(duì),計(jì)算 實(shí)驗(yàn)內(nèi)容在課后習(xí)題中選擇一個(gè)求解線性方程組的題編程計(jì)算。交回實(shí)驗(yàn)報(bào)告與計(jì)算結(jié)果實(shí)驗(yàn)程序(由學(xué)生獨(dú)立完成)參考程序: 列主元消去法#include "math.h"void zhuyuan (k,n,a)int k,n;float a56;int t,i,j; float p,q; p=fabs(akk); t=k; for (i=k+1;i<=n;i+) if

3、 (fabs(aik)>p) p=fabs(aik); t=i; for (j=k;j<=n+1;j+) q=akj; akj=atj; atj=q; void shuru(n,a)int n;float a56;int i,j; printf("input aij:n"); for(i=0;i<=n;i+) for(j=0;j<=n+1;j+) scanf("%f,"%aij); printf("%8.5f",aij); printf("n"); void xiaoyuan(n,a)int

4、 n;float a56;int(k=0;k<n;k+) zhuyuan(k,n,a); for (i=k+1;i<=n;i+) for (j=k+1;j<=n+1;j+) aij=aij-aik*akj/akk; void huidai(n,a,x)int n;float a56,x5;int k,j; xn=ann+1/ann; for (k=n-1;k>=0;k-) xk=akn+1; for (j=k+1;j<=n;j+) xk=xk-akj*xj; xk=xk/akk; main()int n,i; float a56,x5; printf("

5、input n:nn="); scanf("%d",&n); printf("%dn",n); n=n-1; shuru(n,a); huidai(n,a,x); for (i=0;i<=n;i+) printf("x%d=%fn",i+1,xi); printf("n"); /*說(shuō)明:本程序只能求解方程個(gè)數(shù)與未知量個(gè)數(shù)相同,且系數(shù)行列式不為零的線形方程組。*/例 求解線形方程組: (書(shū)118頁(yè) 2(1) )此程序運(yùn)行結(jié)果如下:input n:n=4input aij: 1.00000 0.

6、83240 0.76750 0.98310 8.89970 0.83240 0.69300 0.64000 0.81900 7.41440 0.76750 0.64000 0.59110 0.75800 6.85280 0.98310 0.81900 0.75800 0.00550 4.91710x1=1.000094x2=1.999953x3=2.999929x4=4.000000實(shí)驗(yàn)二 最小二乘法【實(shí)驗(yàn)類型】 設(shè)計(jì)性【實(shí)驗(yàn)學(xué)時(shí)】 2學(xué)時(shí)【實(shí)驗(yàn)內(nèi)容】1. 曲線擬合的最小二乘法的基本思路和擬合步驟2. 能根據(jù)給定的函數(shù)值表構(gòu)造出次數(shù)不相同的擬合多項(xiàng)式?!緦?shí)驗(yàn)前的預(yù)備知識(shí)】 1計(jì)算機(jī)基礎(chǔ)知識(shí);2

7、熟悉編程基本思想;3熟悉常見(jiàn)數(shù)學(xué)函數(shù);【實(shí)驗(yàn)方法或步驟】1 最小二乘法的基本思路 已知數(shù)據(jù)對(duì),求多項(xiàng)式使得為最小,這就是一個(gè)最小二乘問(wèn)題。2 最小二乘法算法描述:用線性函數(shù)為例,擬合給定數(shù)據(jù)。步驟1:輸入值,及;步驟2:建立正規(guī)方程組步驟3:解法方程組,求出系數(shù);步驟4:輸出。實(shí)驗(yàn)內(nèi)容在課后習(xí)題中選擇一個(gè)題目編程計(jì)算。交回實(shí)驗(yàn)報(bào)告與計(jì)算結(jié)果實(shí)驗(yàn)程序(由學(xué)生獨(dú)立完成)參考程序:最小二乘擬合 #include "math.h" #include "lzhuyuan.c" /*lzhuyuan.c 為列主元消去法程序*/ void nihe (m,a) int

8、 m; float a56; int n,i,j,k; float x9,y9,b9; printf ("input n:n="); scanf("%d,&n); printf("%dn",n); printf("input xi,yi:n"); for(i=0;i<=n;i+) scanf("%f,%f,",&xi,&yi); printf("%11.6f,%11.6fn",xi,yi); bi=1 printf("n"); for(

9、i=0;i<=m;i+) for(k=0;k<=n;k+) ai0=ai0+bk; aim+1=aim+1+bk*yk; bk=bk*xk; for(j=1;j<=m;j+) for(i=0;i<=m-1;i+) aij=ai+1j-1; for(k=0;k<=n;k+) amj=amj+bk; bk=bk*xk; for(i=0;i<=m;i+) for(j=0;j<=m+1;j+) printf("%11.6f,",aij); printf("n"); main() int m,i; static float

10、 a56,z5; printf("input m:m="); scanf("%d",&m); printf("%dn",m); nihe(m,a); xiaoyuan(m,a); huidai(m,a,z); for(i=i;i<=m;i+) printf("na%d=%-11.6f",i,zi); printf("n"); 用最小二乘法將其擬合一條二次曲線。(書(shū)174頁(yè),例1)程序運(yùn)行結(jié)果如下:Input m:m=2Input n:n=8Input xi,yi: 1.000000

11、, 2.000000 3.000000, 7.000000 4.000000, 8.000000 5.000000, 10.000000 6.000000, 11.000000 7.000000, 11.000000 8.000000, 10.000000 9.000000, 9.000000 10.000000, 8.000000 9.000000, 53.000000,381.000000,76.000000,53.000000,381.000000,3017.000000,489.000000,381.000000,3017.000000,25317.000000,3547.000000

12、, A0=-1.459655 A1=3.605306 A2=-0267570 實(shí)驗(yàn)三 龍貝格方法【實(shí)驗(yàn)類型】 設(shè)計(jì)性【實(shí)驗(yàn)學(xué)時(shí)】 2學(xué)時(shí)【實(shí)驗(yàn)內(nèi)容】1.理解龍貝格方法的基本思路2.用龍貝格方法設(shè)計(jì)算法,編程求解一個(gè)數(shù)值積分的問(wèn)題。【實(shí)驗(yàn)前的預(yù)備知識(shí)】 1計(jì)算機(jī)基礎(chǔ)知識(shí);2熟悉編程基本思想;3熟悉常見(jiàn)數(shù)學(xué)函數(shù);【實(shí)驗(yàn)方法或步驟】實(shí)驗(yàn)方法1 龍貝格方法的基本思路 龍貝格方法是在積分區(qū)間逐次二分的過(guò)程中,通過(guò)對(duì)梯形之值進(jìn)行加速處理,從而獲得高精度的積分值。2 龍貝格方法的算法步驟1 準(zhǔn)備初值 和,用梯形計(jì)算公式計(jì)算出積分近似值 步驟2 按區(qū)間逐次分半計(jì)算梯形公式的積分近似值 令, 計(jì)算,步驟3 按下

13、面的公式積分(為便于編程,寫下列形式)梯形公式: 辛普生公式: 龍貝格公式: 步驟4 精度控制 當(dāng),(為精度)時(shí),終止計(jì)算,并取為近似值,否則,將步長(zhǎng)折半,轉(zhuǎn)步驟2。實(shí)驗(yàn)內(nèi)容在課后習(xí)題中選擇一個(gè)題目編程計(jì)算。交回實(shí)驗(yàn)報(bào)告與計(jì)算結(jié)果實(shí)驗(yàn)程序(由學(xué)生獨(dú)立完成)參考程序:龍貝格方法#include“math.h”Float f(x)Float x;float y;Y=exp(-x*x);Return(y);Main() float a,b,h,x,R,eps,S,T20;Int i,j,m=2,g;Printf(“ninput a,b,esp:n”)Scanf(“%f,%f,%f”,&a,&

14、amp;b,&eps);Printf(“a=%f,b=%f,eps=%fn”,a,b,eps);h=b-a;t1=h*(f(a)+f(b)/2;t2=(T1+h*f(a+h/2)/2;t1=(4*T2-T1)/3;for(i=2;i<=3;i+)S=0;for (j=I;j<=2*m-1;j=j+2) x=a+j*h/m/2; S=s+f(x); Ti+1=(Ti+h*s/m)/2;G=1;For (j=I;j>=1;j-)g=4*g;Tj=(Tj+1*g-Tj)/(g-1);M=2*m;R=T1;for(i=4;i+)s=0;for (j=I;j<=2*m-1

15、;j=j+2)x=a+j*h/m/2; S=s+f(x); Ti+1=(Ti+h*s/m)/2;G=1;For (j=I;j>=i-2;j-)g=4*g;Tj=(Tj+1*g-Tj)/(g-1);if(fabs(Ti-2-R)<eps)break;m=2*m;R=Ti-2;printf("I=%fn",Ti-2;此程序運(yùn)行結(jié)果如下:input a,b,esp:a=0.000000b=1.000000,ep=0.00001I=0.746824實(shí)驗(yàn)四 龍格-庫(kù)塔法【實(shí)驗(yàn)類型】 設(shè)計(jì)性【實(shí)驗(yàn)學(xué)時(shí)】 2學(xué)時(shí)【實(shí)驗(yàn)內(nèi)容】1用標(biāo)準(zhǔn)四階龍格庫(kù)塔方法設(shè)計(jì)算法2. 編程解微分方程

16、初值問(wèn)題;【實(shí)驗(yàn)前的預(yù)備知識(shí)】 1計(jì)算機(jī)基礎(chǔ)知識(shí);2熟悉編程基本思想;3熟悉常見(jiàn)數(shù)學(xué)函數(shù);【實(shí)驗(yàn)方法或步驟】1 龍格庫(kù)塔方法的基本思路 設(shè)法計(jì)算在某些點(diǎn)上的函數(shù)值,然后對(duì)這些函數(shù)值做線性組合,構(gòu)造近似計(jì)算公式;再把近似公式和解的泰勒展開(kāi)式相比較,使前面的若干項(xiàng)吻合,從而達(dá)到較高的精度。2 四階龍格庫(kù)塔方法的計(jì)算步驟求解 對(duì)上述給定的,用四階龍格-庫(kù)塔法求解常微分方程初值問(wèn)題實(shí)驗(yàn)內(nèi)容在課后習(xí)題中選擇一個(gè)題目編程計(jì)算。交回實(shí)驗(yàn)報(bào)告與計(jì)算結(jié)果實(shí)驗(yàn)程序(由學(xué)生獨(dú)立完成)參考程序:標(biāo)準(zhǔn)的四階R-K法/*用標(biāo)準(zhǔn)的R-K方法求解書(shū)241頁(yè) 例1 */#include "math.h"fl

17、oat f(x,y);float x,y;float z; z=y-2*x/y;return(z);main()int i,n;float a,b,h,y0,x,y,k1,k2,k3,k4,y120;printf("input a,b,h,y0:n");scanf("%f,%f,%f,%f",&a,&b,&h,&y0);printf("a=%fnb=%fny0=%fn",a,b,h,y0);printf("y(%f)=%fn",a,y0);n=floor(b-a)/h);y10=y0;for(i=0;i<=n;i+)x=a+i*h;y=y1i;k1=h*f(x,y);x=x+h/2;y=y1i+k2/2;k3=h*f(x,y);x=x+h/2;y=y1i+k3;k4=h*f(x,y);y1i+1=y1i+(k1+2*k2+2*k3+k4)/6;printf("y(%f)=%fn",x,y1i+1);/*說(shuō)明書(shū)上例題所給區(qū)間為0,0.6,步長(zhǎng)與初值也已給定,而本程序中區(qū)間為

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論