




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)值分析上機(jī)作業(yè)程序由C編寫:l 習(xí)題一20.(上機(jī)題)舍入誤差與有效數(shù)設(shè),其精確值為。(1)編制按從大到小的順序,計(jì)算的通用程序。(2)編制按從小到大的順序,計(jì)算的通用程序。(3)按兩種順序分別計(jì)算, ,并指出其有效位數(shù)。(編制程序時(shí)用單精度)(4)通過本上機(jī)題,你明白了什么?解:# include<iostream.h># include<math.h>int _tmain(int argc, _TCHAR* argv) float Sn=0.0,i; int n; cout<<"輸入N的值:" cin>>n; for(i
2、=2;i<=n;i+) Sn=Sn+1.0/(i*i-1); cout<<"從大到小求和的值為:"<<Sn<<'n' Sn=0.0; for(i=n;i>=2;i-) Sn=Sn+1.0/(i*i-1); cout<<"從小到大求和的值為:"<<Sn<<'n' Sn=0.5*(1.5-1.0/n-1.0/(n+1); cout<<"其精確值為 :"<<Sn<<'n're
3、turn 0;實(shí)驗(yàn)結(jié)果如下:精確值從大到小求和的值有效位數(shù)從小到大的求和的值有效位數(shù)S0.7400490.74004960.7400505S0.7499000.74985240.7499006S0.7499990.74985230.7499996本上機(jī)題說明計(jì)算順序?qū)Y(jié)果有影響,按從大到小計(jì)算會(huì)產(chǎn)生“大數(shù)吃小數(shù)”的現(xiàn)象,增大計(jì)算誤差。若干同號(hào)數(shù)相加,采用絕對(duì)值較小者先加的算法,其結(jié)果的相對(duì)誤差較小。l 習(xí)題二20.(上機(jī)題)Newton迭代法(1)給定初值及容許誤差,編制Newton法解方程根的通用程序。(2)給定方程,易知其有三個(gè)根,。由Newton方法的局部收斂性可知存在,當(dāng)時(shí),Newto
4、n迭代序列收斂于根。試確定盡可能大的。試取若干初始值,觀察當(dāng)時(shí)Newton序列是否收斂,以及收斂于哪一個(gè)根。(3)通過本上機(jī)題,你明白了什么?解:參數(shù)中x0 表示初值,e表示容許誤差。# include<iostream.h># include<math.h>int _tmain(int argc, _TCHAR* argv)double x0,e;void Newton(double ,double); / 主體程序cout<<"輸入初值x0="cin>>x0;cout<<"輸入容許誤差e="
5、cin>>e; Newton(x0,e);return 0;void Newton(double a,double e)int n=0;double x0,x1,temp;x0=a;double f(double); / 原函數(shù)double df(double); / 一次導(dǎo)函數(shù)don+;x1=x0-f(x0)/df(x0);temp=x1;x1=x0;x0=temp;while(fabs(x1-x0)>e&&n<100);cout<<"Newton迭代法的結(jié)果為:"<<x0<<'n'
6、;if(n>=100)cout<<"不收斂"<<'n'cout<<"迭代的次數(shù)為:"<<n<<'n'double f(double x)return(pow(x,3)/3-x);double df(double x)return(pow(x,2)-1);(1) 上述程序中Newton(double a,double e)為Newton法解方程根的通用程序。(2) 確定的最大為0.7745966當(dāng)時(shí),Newton序列收斂于 當(dāng)時(shí),Newton序列收斂于或 當(dāng)時(shí)
7、,Newton序列收斂于 當(dāng)時(shí),Newton序列收斂于或當(dāng)時(shí),Newton序列收斂于上述容許誤差取值為0.00000001。(3) 通過本上機(jī)題,我明白了Newton法是局部收斂的,是否收斂以及收斂到哪一個(gè)根與選取的初值有關(guān)。l 習(xí)題三35.(上機(jī)題)列主元三角分解法對(duì)于某電路的分析,歸結(jié)于求解線性方程組。其中(1)編制解n階線性方程組的列主元三角分解法的通用程序;(2)用所編程序階線性方程組,并打印出解向量,保留5位有效數(shù);(3)本題編程之中,你提高了哪些編程能力?解:(1)# include <iostream.h># include <math.h>int _tm
8、ain(int argc, _TCHAR* argv)void RowMainElement(float *Ab, int m, int n,float *result);int n; cout<<"輸入方程矩陣階數(shù)n="cin>>n;float *matrix=new floatn*(n+1);float *result=new floatn;cout<<"輸入"<<n<<"*"<<n+1<<"階的增廣矩陣:"<<
9、39;n'for(int i=0;i<n;i+) for(int j=0;j<n+1;j+) cout<<"輸入第"<<i<<"行第"<<j<<"列的數(shù)據(jù):" cin>>matrixi*n+j; cout<<"輸入完畢!n"RowMainElement(matrix,nn,nn+1,result);/ 顯示結(jié)果for(int r=0;r<nn;r+)cout<<"x"<
10、<r+1<<"="<<resultr<<'n' delete matrix;delete result;return 0;/(i,j)元素前面行和列的點(diǎn)積float dotsum(float *Ab,int n, int i, int j)float result=0.0f;int s,t;for(s=0,t=0; (s<i)&&(t<j); s+,t+)result += (Abs*n+j * Abi*n+t);return result;/交換Ab的第i行和第j行,n為Ab的列數(shù)voi
11、d Exchange(float *Ab, int i, int j, int n)float temp = 0.0f;for(int k = 0; k< n; k+)temp = Abi*n+k;Abi*n+k = Abj*n+k;Abj*n+k = temp;/列主元解方程,Ab-增廣矩陣,m行數(shù),n列數(shù),result解向量void RowMainElement(float *Ab, int m, int n,float *result)int i=0,j=0,k=0,t=0;for(i=0; i<m; i+)/選主元int itemp=i;float temp=0.0f,st
12、=0.0f;for(t=i; t<m; t+)st = Abt*n+i - dotsum(Ab,n,t,i);if(fabsf(st)>temp)itemp = t;temp = fabsf(st);if(itemp != i)Exchange(Ab, itemp, i, n); /交換第itemp行和第i行/計(jì)算行的數(shù)值for(j=i; j<n; j+)Abi*n+j -= dotsum(Ab,n,i,j);/計(jì)算列的數(shù)值for(k=i+1; k<m; k+)Abk*n+i -= dotsum(Ab,n,k,i);Abk*n+i /= Abi*n+i;/計(jì)算方程的根f
13、or(i=m-1; i>=0; i-)float temp = Abi*n+n-1;for(j=n-2; j>i; j-)temp -= resultj*Abi*n+j;resulti = temp / Abi*n+i;(2)計(jì)算結(jié)果如下:保留5位有效數(shù):x1 = -0.28923;x2 = 0.34544;x3 = -0.71281;x4 = -0.22061;x5 = -0.43040;x6 = 0.15431;x7 = -0.057823;x8 = 0.20105;x9 = 0.29023;(3)在本題的編程之中,在充分掌握列主元三角分解法的同時(shí),提高了運(yùn)用數(shù)組和指針編程的能
14、力,同時(shí)提高了靈活運(yùn)用循環(huán)語句的能力。36.(上機(jī)題)逐次超松弛迭代法(1)編制解n階線性方程組的SOR方法的通用程序(要求);(2)對(duì)于35題中所給的線性方程組,取松弛因子,容許誤差,打印松弛因子、迭代次數(shù)、最佳松弛因子及解向量。解:(1)# include <iostream.h># include <math.h>static int count = 0; /迭代次數(shù)float matrix910=31,-13,0,0,0,-10,0,0,0,-15,-13,35,-9,0,-11,0,0,0,0,27,0,-9,31,-10,0,0,0,0,0,-23,0,0,
15、-10,79,-30,0,0,0,-9,0,0,0,0,-30,57,-7,0,-5,0,-20,0,0,0,0,-7,47,-30,0,0,12,0,0,0,0,0,-30,41,0,0,-7,0,0,0,0,-5,0,0,27,-2,7,0,0,0,-9,0,0,0,-2,29,10;void SOR(float *Ab, int m, int n, float w, float e, float *result);int _tmain(int argc, _TCHAR* argv)float e=0.000005f;for(float p=1.0f;p<100.0;p+) floa
16、t res9=0,0,0,0,0,0,0,0,0;count=0;float w=p/50;SOR(float *)matrix, 9, 10, w , e, (float *)res);cout<<"松弛因子為:"<<w<<'t'<<"迭代次數(shù)為:"<<count<<'n'cout<<'n'<<'n'<<"最佳松弛因子為:"<<"1.2&qu
17、ot;<<"解向量為:"<<'n'float res9=0,0,0,0,0,0,0,0,0;SOR(float *)matrix, 9, 10, 1.2 , e, (float *)res);for(int t=0;t<9;t+)cout<<rest<<'n'return 0;/超松弛迭代法,Ab增廣矩陣,mAb的行數(shù),nAb的列數(shù),w松弛因子,e允許誤差,result解向量void SOR(float *Ab, int m, int n, float w, float e, float
18、*result)count+; /迭代次數(shù)增加int i=0,j=0;/保存上一次的迭代結(jié)果float * temp = new floatm;for(i=0; i<m; i+)tempi = resulti;/迭代一次for(i=0; i<m; i+)float sum=0.0f;for(j=0; j<n-1; j+)if(j!=i)sum += (Abi*n+j*resultj);resulti = (1-w)*resulti + w*(Abi*n+n-1 - sum)/Abi*n+i;float errortemp=0.0f;for(i=0; i<m; i+)fl
19、oat ierror = fabsf(tempi-resulti);if(ierror>errortemp) errortemp = ierror;delete temp;/迭代if(errortemp<e)return;elseSOR(Ab,m,n,w,e,result);(2) 根據(jù)以上計(jì)算可知,最佳松弛因子為1.2,迭代次數(shù)為10。解向量為:x1 = -0.28923;x2 = 0.34544;x3 = -0.71281;x4 = -0.22061;x5 = -0.43040;x6 = 0.15431;x7 = -0.057823;x8 = 0.20105;x9 = 0.29
20、023;l 習(xí)題四38(上機(jī)題)3次樣條插值函數(shù)、編制求第一型3次樣條插值函數(shù)的通用程序;、已知汽車門曲線型值點(diǎn)的數(shù)據(jù)如下:xi012345678910yi2.513.304.044.705.225.545.785.405.575.705.80端點(diǎn)條件為。用所編程序求車門的3次樣條插值函數(shù)S(x),并打印出。解:(1)3次樣條插值的函數(shù)的程序如下:/求3次樣條函數(shù)的M值/xx數(shù)組指針,y函數(shù)值數(shù)組指針,n數(shù)組長(zhǎng)度,deri_x0x0處的導(dǎo)數(shù)值,deri_xnxn處的導(dǎo)數(shù)值/M求出的M值,計(jì)算結(jié)果儲(chǔ)存在該數(shù)組中,空間在傳入之前分配void M_Result(float *x, float *y,
21、 int n, float deri_x0, float deri_xn, float *M)int i;float *h = new floatn-1; /給h數(shù)組賦值for(i=0;i<n-1;i+)hi = xi+1-xi;float *U = new floatn-1;float *N = new floatn-1;/給U數(shù)組和N數(shù)組賦值Un-2 = 1;N0 = 1;for(i=0;i<n-2;i+)Ui = hi/(hi+hi+1);Ni+1 = 1.0f - Ui;float *d = new floatn;/求二階差商,給d數(shù)組賦值d0 = 6.0f*(y1-y0)
22、/h0-deri_x0)/h0;dn-1 = 6.0f*(deri_xn-(yn-1-yn-2)/hn-2)/hn-2;for(i=1; i<n-1; i+)di = 6.0f*(yi+1-yi)/hi-(yi-yi-1)/hi-1)/(xi+1-xi-1);/用追趕法解方程組,求數(shù)組M值float *B = new floatn;float *Y = new floatn;B0 = 2;Y0 = d0;float li;for(i=1; i<n; i+)li = Ui-1/Bi-1;Bi = 2 - li*Ni-1;Yi = di - li*Yi-1;Mn-1 = Yn-1/Bn-1;for(i=n-2;i>=0;i-)Mi = (Yi - Ni*Mi+1)/B
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療手術(shù)合同范本
- 合開店合同范本
- 衛(wèi)生間裝修工人合同范本
- 進(jìn)廠入職合同范本
- 合伙投資合同范本范本
- 個(gè)人之間擔(dān)保合同范本
- 合法會(huì)員合同范例
- 運(yùn)行總工績(jī)效合同范本
- 2025年常溫遠(yuǎn)紅外陶瓷及制品項(xiàng)目建議書
- 廚房人員用工合同范本
- 交通法律與交通事故處理培訓(xùn)課程與法律解析
- 廣西版四年級(jí)下冊(cè)美術(shù)教案
- 《換熱器及換熱原理》課件
- 兒童權(quán)利公約演示文稿課件
- UPVC排水管技術(shù)標(biāo)準(zhǔn)
- MSA-測(cè)量系統(tǒng)分析模板
- 血透室公休座談水腫的護(hù)理
- 急診預(yù)檢分診專家共識(shí)課件
- 廣州市海珠區(qū)事業(yè)單位考試歷年真題
- 2023年山西省太原市迎澤區(qū)校園招考聘用教師筆試題庫(kù)含答案詳解
- 2023中職27 嬰幼兒保育 賽題 模塊三 嬰幼兒早期學(xué)習(xí)支持(賽項(xiàng)賽題)
評(píng)論
0/150
提交評(píng)論