東南大學(xué)數(shù)值分析上機(jī)題(上)_第1頁(yè)
東南大學(xué)數(shù)值分析上機(jī)題(上)_第2頁(yè)
東南大學(xué)數(shù)值分析上機(jī)題(上)_第3頁(yè)
東南大學(xué)數(shù)值分析上機(jī)題(上)_第4頁(yè)
東南大學(xué)數(shù)值分析上機(jī)題(上)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(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、 數(shù)值分析上機(jī)報(bào)告 姓名: 學(xué)號(hào): 專業(yè): 2013年10月27日第一章舍入誤差與有效數(shù)設(shè),其精確值為。(1)編制按從大到小的順序,計(jì)算的通用程序。(2)編制按從小到大的順序,計(jì)算的通用程序。(3)按兩種順序分別計(jì)算,并指出有效位數(shù)。(編制程序時(shí)用單精度)(4)通過(guò)本上機(jī)題,你明白了什么?解:(1)#include<stdio.h>void main()float n,i,s;printf("please input n=");scanf("%f",&n);for(i=2,s=0;i<=n;s+=1/(i*i-1),i+);pr

2、intf("s=%fn",s);(2)#include<stdio.h>void main()float n,i,s;printf("please input n=");scanf("%f",&n);for(i=n,s=0;i>=2;s+=1/(i*i-1),i-);printf("s=%fn",s);(3) 按從大到小順序:=0.740049 有效位數(shù)6位 =0.749852 有效位數(shù)3位 =0.749852 有效位數(shù)3位 按從小到大順序:=0.740050 有效位數(shù)5位 =0.7499

3、00 有效位數(shù)6位 =0.749999 有效位數(shù)6位(4) 通過(guò)上述實(shí)驗(yàn)數(shù)據(jù)可以看出此次算法使用從小到大的順序進(jìn)行得到的數(shù)據(jù)相對(duì)而言更精確,可以得到這樣的啟示:在計(jì)算數(shù)值時(shí),要先分析不同算法對(duì)結(jié)果的影響,避免大數(shù)吃小數(shù)的現(xiàn)象,找出能得到更精確的結(jié)果的算法。第二章(上機(jī)題)Newton迭代法(1)給定初值及容許誤差,編制Newton法解方程根的通用程序。(2)給定方程,易知其有三個(gè)根,。1由Newton方法的局部收斂性可知存在,當(dāng)時(shí),Newton迭代序列收斂于根。試確定盡可能大的。2試取若干初始值,觀察當(dāng),時(shí)Newton序列是否收斂以及收斂于哪一個(gè)根。(3)通過(guò)本上機(jī)題,你明白了什么?解:(1)

4、#include<iostream.h>#include<math.h>#define eps 0.000001 float f(float x) float f;f=x*x*x/3-x; return(f);float df(float x) float df;df=x*x-1; return (df);void main(void)float x0,x1,a;int k=0;cout<<"請(qǐng)輸入初值x0:"cin>>x0;doa=-f(x0)/df(x0);x1=x0+a;k+;x0=x1;while(fabs(a)>

5、;eps);cout<<k<<'t'<<x0;(2)1 #include<iostream.h>#include<math.h>void delay(int n) for(n=10000;n>0;n-);#define eps 0.01float f(float x) float f;f=x*x*x/3-x; return(f);float df(float x) float df;df=x*x-1; return (df);int judgement(float z)int count=5;float x0,x

6、1,type,type1;x0=z;while(count->0) x1=x0-f(x0)/df(x0);type=fabs(x1); type1=fabs(x1-x0); cout<<"count="<<count<<'t'<<"type="<<type<<'t'<<"type1="<<type1<<'n'if(fabs(x1-x0)<eps)return 1;x0=

7、x1;delay(30000); return 0; void main(void)float delta=0;int flag=1;while(flag=1)cout<<"方程的根為:"<<'n'delta+=eps;flag=judgement(delta);cout<<"輸出方程根收斂的區(qū)間值:n"cout<<delta-eps; /輸出收斂的區(qū)間值 取esp=0.1,即步長(zhǎng)為0.1時(shí),由程序算出=0.78。所以當(dāng)(-,)時(shí),迭代序列收斂于根。(2)2#include<stdio

8、.h>#include<math.h>#define eps 0.01float f(float x)float f;f=x*x*x/3-x;return f;float df(float x)float df;df=x*x-1;return df;float ddf(float x)float ddf;ddf=2*x;return ddf;main()float x0,x1,a,dt=0;int k=0;dodt=dt+eps;k+;while(f(-dt)*f(dt)<0)&&(df(dt)!=0)&&(2*dt>=-f(-dt

9、)/df(-dt)&&(2*dt>=f(dt)/df(dt); printf("請(qǐng)輸入x0:");scanf("%f",&x0);if(x0<-1) doa=-f(x0)/df(x0);x1=x0+a;k+;x0=x1;while(fabs(a)>eps);else if(x0>-1&&x0<-dt)doa=-f(x0)/df(x0);x1=x0+a;k+;x0=x1;while(fabs(a)>eps);else if(x0>-dt&&x0<dt)d

10、oa=-f(x0)/df(x0);x1=x0+a;k+;x0=x1;while(fabs(a)>eps);else if(x0>dt&&x0<1)doa=-f(x0)/df(x0);x1=x0+a;k+;x0=x1;while(fabs(a)>eps);else if (x0>1)doa=-f(x0)/df(x0);x1=x0+a;k+;x0=x1;while(fabs(a)>eps);printf("收斂域=%f,迭代次數(shù)=%dn",dt,k);printf("根=%fn",x0);-1000-0.9

11、5-0.7500.791.5-100-0.90-0.500.8210-10-0.84-0.100.88100-8-0.81000.90500-2-0.800.300.951000-1.2-0.790.7500.9910000由上表可以看出, 在(-,-1)內(nèi)收斂于,在內(nèi)收斂于,在(1,+)內(nèi)收斂于,但在內(nèi)和均可能收斂于和。(3)在用迭代法進(jìn)行計(jì)算的時(shí)候,初值的選擇很關(guān)鍵,所選擇的初值必須在一定的范圍內(nèi),如果超出這個(gè)范圍,將得不出正確的結(jié)果。第三章39.列主元三角分解法對(duì)于某電路的分析,歸結(jié)為求解線性方程組RI=V,(1)編制解n階線性方程組Ax=b的列主元三角分解法的通用程序;(2)用所編制的

12、程序解線性方程組RI=V,并打印出解向量,保留五位有效數(shù);(3)本編程之中,你提高了哪些編程能力?解:(1)#include<iostream.h>#include<math.h>void main(void)int i,j,n,k,q;float a1011,s10,s110;cout<<"請(qǐng)輸入n的值:"cin>>n;cout<<"輸入數(shù)組a:"<<endl;for(i=1;i<=n;i+)for(j=1;j<=(n+1);j+)cin>>aij; for

13、(i=1;i<=n;i+)for(j=1;j<=(n+1);j+)cout<<aij<<'t'cout<<'n' cout<<"'''''''''''''''''''''''''"<<'n'int t=1;for(i=1;i<=n;i+)si=ai1;f

14、loat max=fabs(s1);for(i=2;i<=n;i+)if(fabs(si)>max)max=fabs(si);t=i;for(j=1;j<=(n+1);j+)float b=a1j;a1j=atj;atj=b; for(i=2;i<=n;i+)ai1=ai1/max; for(i=1;i<=n;i+)for(j=1;j<=(n+1);j+)cout<<aij<<'t'cout<<'n'cout<<"'''''

15、9;'''''''''''''''''''"<<'n'for(k=2;k<=n;k+)for(i=k;i<=n;i+)float sum=0;for(q=1;q<k;q+)sum+=aiq*aqk;s1i=aik-sum;int l=k;float m=fabs(s1k);for(i=k;i<=n;i+)if(fabs(s1i)>m)m=fabs(s1i);l=i; for(j

16、=1;j<=n+1;j+) float s2=akj;akj=alj;alj=s2;for(j=k;j<=n+1;j+)float sum1=0;for(q=1;q<k;q+)sum1+=akq*aqj;akj=akj-sum1;for(i=k+1;i<=n;i+)float sum2=0;for(q=1;q<k;q+)sum2+=aiq*aqk;aik=(aik-sum2)/(akk); for(i=1;i<=n;i+)for(j=1;j<=(n+1);j+)cout<<aij<<'t'cout<<

17、'n'float x10;for(i=n-1;i>=1;i-)xn=ann+1/ann;float sum3=0;for(j=i+1;j<=n;j+)sum3+=aij*xj;xi=(ain+1-sum3)/aii; for(i=1;i<=n;i+)cout<<'x'<<i<<'='<<xi<<endl; (2)方程的解為:x1= -0.28923,x2= 0.34544,x3= -0.71281,x4= -0.22061,x5= -0.43040,x6= 0.1543

18、1,x7= -0.057823,x8= 0.20105,x9= 0.29023。(3) 在此次編程過(guò)程中,用到了多次for循環(huán)結(jié)構(gòu),有多層嵌套,程序較為復(fù)雜。此外在解方程組過(guò)程中,數(shù)組起了很大的作用,可以更加方面的寫(xiě)出程序。我提高了分步解決問(wèn)題的能力,并且更加熟悉循環(huán)語(yǔ)句的運(yùn)用,40逐次超松弛迭代法(1)編制解n階線性方程組Ax=b的SOR方法的通用程序(要求);(2)對(duì)于39題中所給的線性方程組,取松弛因子,容許誤差,打印松弛因子、迭代次數(shù)、最佳松弛因子及解向量。解:#include<iostream.h>#include<math.h>#define eps 0.5

19、e-5 void main(void)int i,j,l;float w,t;float m9;float sum;float a99=31,-13,0,0,0,-10,0,0,0,-13,35,-9,0,-11,0,0,0,0,0,-9,31,-10,0,0,0,0,0,0,0,-10,79,-30,0,0,0,-9,0,0,0,-30,57,-7,0,-5,0,0,0,0,0,-7,47,-30,0,0,0,0,0,0,0,-30,41,0,0,0,0,0,0,-5,0,0,27,-2,0,0,0,-9,0,0,0,-2,29;float b9=-15,27,-23,0,-20,12,-7

20、,7,10;float max(float m9);for(t=1;t<=99;t+)l=0;float x09=1,1,1,1,1,1,1,1,1;float x19=1,1,1,1,1,1,1,1,1;w=t/50;dofor(i=0;i<9;i+)x0i=x1i;for(i=0;i<9;i+)sum=0;for(j=0;j<i;j+)sum=sum+aij*x1j;for(j=i+1;j<9;j+)sum=sum+aij*x0j;x1i=(1-w)*x0i+w*(bi-sum)/aii;for(i=0;i<9;i+)mi=x1i-x0i;l+;whil

21、e(max(m)>=eps);if(max(m)<=eps)cout<<"迭代次數(shù)="<<l<<'t'<<"w="<<w<<'n'for(i=0;i<9;i+)cout<<"x1"<<""<<i<<""<<'='<<x1i<<'t'cout<<"-"<<'n'float max(float m9)float k;k=(fabs(m0);for(int i=1;i<9;i+)if(fabs(mi)>k)k=fabs(mi);return k; 迭代次數(shù) 迭代次數(shù) 迭代次數(shù) 迭代次數(shù)0.02 12910.04 7000.06 4860.08 3730.10 3030.12 2550.14 2210.16 1940.18 1730.20 1560.22 1420.24 1300.26 1200.28 1110.30 1030.32 960.34 900.36 850.38 800

溫馨提示

  • 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)論