




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、標準文檔計算數值方法實驗報告學院:軟件學院專業:軟件工程班級:軟件 1012 班學號: 2010004719 姓名:喬婧峰計算數值方法實驗報告2 太原理工大學學生實驗報告學院名稱軟件學院專業班級軟件 1012 班學號2010004719 學生姓名喬婧峰實驗日期20124 成績課程名稱數值計算方法實驗題目實驗一二分法一、課題名稱方程求根:熟悉使用、迭代法、牛頓法、割線法等方法對給定的方程進行根的求解。選擇上述方法中的兩種方法求方程:二分法 f(x)=x3+4x2-10=0 在1,2 內的一個實根, 且要求滿足精度 |x*-xn|0.5 10-5 迭代法:用迭代公式x=f(x) 進行迭代計算,直到
2、滿足|x*-xn|0.5 10-5為止 。割線法: x=x-f(x)/g(x),其中 f(x) 為給定的函數, g(x) 為給定函數的導數,直到滿足|x*-xn|0.5 10-5為止 。二、目的和意義(1)了解非線性方程求根的常見方法,如二分法、牛頓法、割線法。(2)加深對方程求根方法的認識,掌握算法。(3)會進行誤差分析,并能對不同方法進行比較。三、計算公式f(x)在區間( x,y)上連續先找到 a、b 屬于區間( x, y) ,使 f(a),f(b) 異號,說明在區間(a,b) 內一定有零點,然后求f(a+b)/2, 現在假設f(a)0,ab 如果 f(a+b)/2=0,該點就是零點,如果
3、 f(a+b)/2a,從開始繼續使用中點函數值判斷。如果 f(a+b)/20,則在區間 (a,(a+b)/2)內有零點, (a+b)/2a; float t, x; x=a; do x=sqrt(10-x*x*x)/4); t=a; a=x; while (fabs(a-t)0.5*1e-5); printf(x=%f ,a); system(pause ); 割線法 :#includestdafx.h #include stdio.h #include math.h #include iostream usingnamespace std; float main() float c,a=1.
4、0,b=2.0; /cinab; while (1) c=b-(b*b*b+4*b*b-10)*(b-a)/(b*b*b+4*b*b-(a*a*a+4*a*a); if (fabs(b-c)0.5*0.000001) break ; b=c; 計算數值方法實驗報告4 coutc; 六、結果討論和分析割線法 :迭代法 : 分析:使用不同的方法,可以不同程度的求得方程的解,不同的方法速度不同。實驗地點zsa401 指導教師李志計算數值方法實驗報告5 學院名稱軟件學院專業班級軟件 1012 班學號2010004719 學生姓名喬婧峰實驗日期2012.4 成績課程名稱數值計算方法實驗題目實驗二線性方程
5、組的直接解法一、課題名稱線性方程組的直接解法合理利用 gauss消元法、 lu分解法、追趕法求解下列方程組:13814142210321321xxx2178.4617.5911212592.1121130.6291.51314.593.04321xxxx3772201161263841027851244321xxxx55572112112112121nnxxxx(n=5,10,100 )二、目的和意義(1)了解線性方程組常見的直接解法,如guass消元法、 lu分解法、追趕法。(2)加深對線性方程組求解方法的認識,掌握算法。(3)會進行誤差分析,并能對不同方法進行比較。三、計算公式高斯分解法:
6、將原方程組化為三角形方陣的方程組:lik=aik/akk aij= aij- lik* akj k=1,2, ,n-1 i=k+1,k+2, ,n j=k+1,k+2, ,n+1 計算數值方法實驗報告6 由回代過程求得原方程組的解: xn= ann+1/ ann xk=( akn+1-akj xj)/ akk (k=n-1,n-2, ,2,1) lu 分解法:將系數矩陣 a轉化為 a=l*u, l 為單位下三角矩陣, u為普通上三角矩陣,然后通過解方程組 l*y=b,u*x=y,來求解 x. 追趕法 : 用來求對角方程組;將系數矩陣a轉化為 a=l*u, l 為普通下 n-1 對角矩陣, u為
7、單位上 n-1 對角矩陣,然后通過解方程組l*y=b,u*x=y,來求解 x. 四、主要儀器設備vc2008,hp五、結構程序設計gauss消元法:#includestdafx.h #include stdio.h #include iostream usingnamespace std; float main() float a34=1,2,3,14,0,1,2,8,2,4,1,13; float x3; float sum=0; int k,i,j; for (k=0;k2;k+) for (i=k+1;i3;i+) for (j=k+1;j4;j+) aij=aij-aik/akk*ak
8、j; for (i=0;i3;i+) for (j=0;j4;j+) printf(a%d%d=%f,i,j,aij); cout=0;k-) 計算數值方法實驗報告7 sum=0; for (j=k+1;j3;j+) sum+=akj*xj; xk=(ak3-sum)/akk; for (i=0;i3;i+) printf (x%d=%f,i+1,xi); lu分解法:#includestdafx.h#include #include#define l 30 double a l l , b l , l l l , u l l , x l , y l ; int main() int n, i
9、, j, k, r; scanf( %d, &n ); for ( i = 1; i = n; +i ) for ( j = 1; j = n; +j ) scanf( %lf , &a i j ); for ( i = 1; i = n; +i ) scanf( %lf , &b i ); for ( i = 1; i = n; +i ) for ( j = 1; j = n; +j ) l i j =0; u i j = 0.0; for ( k = 1; k = n; +k ) for ( j = k; j = n; +j ) u k j = a k j ; fo
10、r ( r = 1; r k; +r ) u k j -= l k r * u r j ; 計算數值方法實驗報告8 for ( i = k + 1; i = n; +i ) l i k = a i k ; for ( r = 1; r k; +r ) l i k -= l i r * u r k ; l i k /= u k k ; l k k = 1.0; for ( i = 1; i = n; +i ) y i = b i ; for ( j = 1; j 0; -i ) x i = y i ; for ( j = i + 1; j = n; +j ) x i -= u i j * x j
11、 ; x i /= u i i ; for ( i = 1; i = n; +i ) printf( %0.2lfn, x i ); return 0; 追趕法:#includestdafx.h #includestdio.h void main() file *f; double a15,b15,c15,d15; double t; int i,n; f=fopen(zgf.txt, r ); fscanf(f,%d,&n); fscanf(f,%lf%lf%lf,&b1,&c1,&d1); for (i=2;i=n-1;i+) fscanf(f,%lf%lf
12、%lf%lf,&ai,&bi,&ci,&di); 計算數值方法實驗報告9 fscanf(f,%lf%lf%lf,&an,&bn,&dn); fclose(f); c1=c1/b1; d1=d1/b1; for(i=2;i=1;i-) di=di-ci*di+1; printf(n*n); for (i=1;i=n;i+) printf(d%2d=%lfn,i,di); zgf.txt文件中的內容是:5 2 1 -7 1 2 1 -5 1 2 1 -5 1 2 1 -5 1 2 -5 六、結果討論和分析gauss消元法:計算數值方法實驗報告
13、10 lu分解法:追趕法:分析從消元過程可以看出,對于n 階線性方程組,只要各步主元素不為零,經過n-1 步消元,就可以得到一個等價的系數矩陣為上三角形陣的方程組,然后再利用回代過程可求得原方程組的解. 消元過程相當于分解 a 為單位下三角陣 l 與上三角陣 u的乘積,解方程組ly=b 回代過程就是解方程組ux=y。其中的 l 為 n 階單位下三角陣、 u為上三角陣 . 在 a 的 lu 分解中 , l 取下三角陣 , u 取單位上三角陣 , 這樣求解方程組ax=d 的方法稱為追趕法 . 實驗地點zsa401 指導教師李志計算數值方法實驗報告11 學院名稱軟件學院專業班級軟件 1012 學號2
14、010004719 學生姓名喬婧峰實驗日期20114 成績課程名稱數值計算方法實驗題目實驗三 線性方程組的迭代解法一、課題名稱線性方程組的迭代解法使用雅可比迭代法或高斯 - 賽德爾迭代法對下列方程組進行求解。二、目的和意義學習使用雅可比迭代法或高斯- 賽德爾迭代法三、計算公式雅克比迭代法:設線性方程組ax=b 的系數矩陣 a可逆且主對角元素a11,a22, ,ann均不為零,令d=diag(a11,a22, ,ann) 并將 a分解成a=(a-d)+d 從而線性方程組可寫成dx=(d-a) x+b則有迭代公式x(k+1)=b1x(k)+f1其中,b1=i-d-1a,f1=d-1b。四、主要儀器
15、設備vc2008,hp2.453.82102.7210321321321xxxxxxxxx計算數值方法實驗報告12 五、結構程序設計高斯 - 賽德爾迭代法:#includestdafx.h #include #include void main() float a33=10,-1,-2,-1,10,-2,-1,-1,5,b3=7.2,8.3,4.2; float x3=0,0,0,sum1,sum2; int i,j,k,n=3; for (k=0;k10;k+) for (i=0;in;i+) sum1=0; sum2=0; for (j=0;ji;j+) sum1=sum1+aij*xj;
16、 for (j=i+1;j3;j+) sum2=sum2+aij*xj; xi=(bi-sum1-sum2)/aii; for (i=0;in;i+) printf(x%d=%f,i+1,xi); printf(n ); 雅克比迭代:#includestdafx.h #include #include void main() float a33=10,-1,-2,-1,10,-2,-1,-1,5,b3=7.2,8.3,4.2; float x3=0,0,0,sum1; int i,j,k,n=3; for (k=0;k10;k+) for (i=0;i3;i+) 計算數值方法實驗報告13 su
17、m1=0; for (j=0;jn;j+) if (i=j) continue ; sum1=sum1+aij*xj; xi=(bi-sum1)/aii; for (i=0;in;i+) printf(x%d=%f,i+1,xi); printf(n ); 六、實驗結果與分析:高斯 -賽德爾迭代法:雅克比迭代:計算數值方法實驗報告14 分析:使用高斯 - 賽德爾和雅克比迭代都可以求出方程組的解,但是利用高斯- 賽德爾迭代法所需的迭代次數比雅克比迭代少,能夠更早的達到精度要求。實驗地點zsa401 指導教師李志計算數值方法實驗報告15 學院名稱軟件學院專業班級軟件 1012 班學號2010004
18、719 學生姓名喬婧峰實驗日期20114 成績課程名稱數值計算方法實驗題目實驗四 最小二乘法擬合多項式一、課題名稱(1)了解矩陣特征值與特征向量問題解法,掌握冪法。(2)加深對矩陣特征值與特征向量問題求解方法的認識,掌握算法。(3)會進行誤差分析。二、目的和意義學習使用最小二乘法擬合多項式三、計算公式冪法:由已知的非零向量x0 和矩陣 a的乘冪構造向量序列 xn 以計算矩陣a的按模最大特征值及其特征向量的方法,稱為冪法。迭代公式:1max(),1, 2,.kkkkkkkyaxmykyxm結果可取111kkkmyx或四、主要儀器設備vc2008,hp五、結構程序設計計算數值方法實驗報告16 五、
19、結果討論和分析分析:冪法是一種求任意矩陣a 的按模最大特征值及其對應特征向量的迭代算法。該方法的最大優點是計算簡單,容易在計算機上實現,對稀疏矩陣較為適合,但有時收斂速度很慢。計算數值方法實驗報告17 實驗地點綜合樓六層606 室指導教師王崢學院名稱計算機科學與技術專業班級計算機學號1111111111 學生姓名某某實驗日期2011-6-20 成績課程名稱數值計算方法實驗題目實驗五 代數插值一、課題名稱使用拉格朗日插值法或牛頓插值法求解:已知f(x) 在 6 個點的函數值如下表所示,運用插值方法,求 f(0.596)的近似值。x 0.40 0.55 0.65 0.80 0.90 1.05 f(
20、x) 0.41075 0.57815 0.69675 0.88811 1.02652 1.25386 二、目的和意義學習使用拉格朗日插值法或牛頓插值法求解三、計算公式設函數在區間 a,b 上 n+1 互異節點x0,x1, ,xn上的函數值分別為y0,y1, ,yn,求 n次插值多項式pn(x), 滿足條件pn(xj)=yj, j=0,1,n 令ln(x)=y0l0(x)+y1l1(x)+ +ynln(x)= yili(x) 其中l0(x),l1(x), , ln(x)為以x0,x1, ,xn為節點的 n 次插值基函數,則 ln(x) 是一次數不超過 n 的多項式,且滿足ln(xj)=yj, l
21、=0,1,n 再由插值多項式的唯一性,得pn(x) ln(x)計算數值方法實驗報告18 四、結構程序設計#include #include #include typedef struct data float x; float y; data; /變量 x 和函數值 y 的結構data d20; /最多二十組數據float f(int s,int t) /牛頓插值法,用以返回插商 if(t=s+1) return (dt.y-ds.y)/(dt.x-ds.x); else return (f(s+1,t)-f(s,t-1)/(dt.x-ds.x); float newton(float x,i
22、nt count) int n; while(1) coutn; if(n=count-1)/ 插值次數不得大于count 1 次 break; else system(cls); float t=1.0; float y=d0.y; float yt=0.0; for(int j=1;j=n;j+) 計算數值方法實驗報告19 t=(x-dj-1.x)*t; yt=f(0,j)*t; y=y+yt; return y; float lagrange(float x,int count) float y=0.0; for(int k=0;kcount;k+)/這兒默認為 count 1 次插值
23、float p=1.0;/初始化 p for(int j=0;jcount;j+) /計算 p的值 if(k=j)continue;/判定是否為同一個數 p=p*(x-dj.x)/(dk.x-dj.x); y=y+p*dk.y;/求和 return y;/返回 y 的值 void main() float x,y; int count; while(1) coutcount; if(count=20) break;/檢查輸入的是否合法 system(cls); / 獲得各組數據 for(int i=0;icount;i+) cout請輸入第 i+1di.x; cout請輸入第 i+1di.y;
24、 system(cls); 計算數值方法實驗報告20 coutx; while(1) int choice=3; cout請您選擇使用哪種插值法計算:endl; cout (0):退出endl; cout (1):lagrangeendl; cout (2):newtonendl; coutchoice;/取得用戶的選擇項 if(choice=2) cout你選擇了牛頓插值計算方法,其結果為:; y=newton(x,count);break;/調用相應的處理函數 if(choice=1) cout你選擇了拉格朗日插值計算方法,其結果為:; y=lagrange(x,count);break;
25、/調用相應的處理函數 if(choice=0) break; system(cls); cout輸入錯誤 !endl; coutx , yendl;/輸出最終結果 五、結果討論和分析分析:拉格朗日插值的優點是插值多項式特別容易建立,缺點是增加節點是原有多項式不能利用,必須重新建立,即所有基函數都要重新計算,這就造成計算量的浪費。計算數值方法實驗報告21 實驗地點綜合樓六層606 室指導教師王崢學院名稱計算機科學與技術專業班級計算機學號1111111111 學生姓名某某實驗日期2011-6-20 成績課程名稱數值計算方法實驗題目實驗六 最小二乘法擬合多項式一、課題名稱給定數據點( xi , yi
26、) ,用最小二乘法擬合數據的多項式,并求平方誤差。xi0 0.5 0.6 0.7 0.8 0.9 1.0 yi1 1.75 1.96 2.19 2.44 2.71 3.00 二、目的和意義1熟練運用已學計算方法求解方程組2加深對計算方法技巧,選擇正確的計算方法來求解各種方程組3培養使用電子計算機進行科學計算和解決問題的能力三、計算公式建立正規方程組:(xij+k)ak=xijyi ,j=0,1,n 平方誤差:i=(akxik-yi)2 四、結構程序設計#include #include #define n 15 double power(double &a,int n) double b=1; for(int i=0;in;i+) b*=a; 計算數值方法實驗報告22 return b; void gauss(); double xn,yn,sumxn,sumyn,ann,bn,lnn,xn; void main() ofstream outdata; ifstream indata; double s; int i,j,k,n,index; coutn; coutendl; cout 請輸入 x和 y:endl; /輸入給定數據for(i=0;in;i+) coutxixi; sumx1+=xi; co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 彈簧工程師崗位面試問題及答案
- 危機響應指揮官崗位面試問題及答案
- 2025屆寧夏銀川市興慶區長慶高級中學高二化學第二學期期末調研試題含解析
- 華為集團干部管理辦法
- 園區轉租房屋管理辦法
- 公務接待管理辦法清遠
- 國企車輛購置管理辦法
- 團體標準管理辦法釋義
- 古典美學在現代小說中的體現
- 公司本部薪酬管理辦法
- 安徽青碩建設有限公司招聘筆試真題2024
- 中藥學電子版教材
- 第五版-FMEA-新版FMEA【第五版】
- 火龍罐綜合灸技術課件
- 退役軍人事務系統公考綜合基礎知識考試能力測試(含答案)
- LS/T 3244-2015全麥粉
- GB/T 6414-2017鑄件尺寸公差、幾何公差與機械加工余量
- GB/T 20957.4-2007精密加工中心檢驗條件第4部分:線性和回轉軸線的定位精度和重復定位精度檢驗
- 電纜橋架施工圖集
- 信念的力量課件
- 接力初三贏在暑假-八年級下學期期末家長會課件
評論
0/150
提交評論