太原理工大學數(shù)值計算實驗報告材料_第1頁
太原理工大學數(shù)值計算實驗報告材料_第2頁
太原理工大學數(shù)值計算實驗報告材料_第3頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、丟農(nóng)衣壽TAIWAN UNIVERSITV OF TECHNOLOGY本科實驗報告課程名稱:計算機數(shù)值方法實驗項目:方程求根,線性方程組的直接求解,線性方程組的迭代求解,代數(shù)插值和最小二乘法擬合實驗地點:軟件樓208專業(yè)班級:學號:學生姓名:指導教師: 李志崔冬華2015年6月5 日學生姓名實驗成績實驗名稱實驗一方程求根實驗內(nèi)容和要求(必填)目的:數(shù)值計算方法是一門實踐性和實用性都很強的課程,學習的目的在于應(yīng)用已有的理論基礎(chǔ)和技術(shù)方法,實現(xiàn)對實際計算問題的計算機求解。本實驗配合計算數(shù)值方法課堂教學,通過上機實踐實驗環(huán)節(jié),鞏固課堂和書本上所學的知識、力口強實踐能力、提高解決實際計算問題的水平、啟

2、發(fā)創(chuàng)新思想。其基本目的是:(1) 培養(yǎng)理論聯(lián)系實際的思路,訓練綜合運用已經(jīng)學過的理論和實際知識去分析 和解決實際問題的能力。(2) 幫助學生全面消化已學的相關(guān)課程內(nèi)容,深刻理解計算數(shù)值方法課程的內(nèi)涵,培養(yǎng)使用電子計算機進行科學計算和解決問題的能力。(3) 進行基本技能訓練和鞏固。使學生得到選擇算法、編寫程序、分析數(shù)值結(jié)果、寫數(shù)值試驗報告、課堂討論等環(huán)節(jié)的綜合訓練。要求:(1)應(yīng)用結(jié)構(gòu)化程序設(shè)計編出通用程序,源程序要有詳細的注釋和說明;(2)比較計算結(jié)果,分析數(shù)值解誤差的原因;(3)實驗完成,要求提交實驗結(jié)果并寫出報告,分析計算結(jié)果是否符合問題的要求,找出計算成功的原因或計算失敗的教訓。實驗原理

3、(必填)選擇上述方法中的兩種方法求方程:f(x)=x 3+4x2-10=0在1,2內(nèi)的一個實根,且要求滿足精度|x*-xn|<0.5 X10"5主要儀器設(shè)備筆記本計算機 實驗記錄(寫出實驗內(nèi)容中的程序代碼和運行結(jié)果)(可分欄或加頁)迭代法:#in elude "stdafx.h"#i nclude"stdio.h"#i nclude"math.h"#i nclude"iostream" using n amespace std; float mai n()float a;cin> >a;

4、float t, x;x=a;dox=sqrt(10-x*x*x)/4);t=a;a=x;while(fabs(a-t)>0.5*1e-5); prin tf("x=%f",a); system("pause");割線法:#i nclude"stdafx.h"#i nclude"stdio.h"#i nclude"math.h"#i nclude"iostream"using namespace std;floatmai n()float c,a=1.0,b=2.0;c

5、in> >a>>b;while 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;cout«c;實驗結(jié)果和分析實驗結(jié)果:迭代法:- "EfW 匚* 4- 3KlaDebu g33Jd.exe'x=i.3&5231請按任意鍵繼績-割線法:'E: C - -S D ? BlIB eie"1.2&G23Pres5 風ny ke y to continue|_| J| 厶一心得體會

6、(遇到的問題和解決方法)使用不同的方法,可以不同程度的求得方程的解,不同的方法速度不同實驗名稱實驗二線性方程組的直接求解實驗內(nèi)容和要求(1) 了解線性方程組常見的直接解法,如Guass消元法、LU分解法、追趕法。(2)加深對線性方程組求解方法的認識,掌握算法。(3 )會進行誤差分析,并能對不同方法進行比較。LU分解法或追趕法求解下列方程組:合理利用實驗原理123冷14012X28241X3130.3 101559.1431X159.175.2916.13012X246.7811.2952X3112 11X424215X1287210X274836X371261120X4321X17121X25

7、(n=5,10,100121Xn 1512Xn5Gauss消元法、1 、2、3、4、,)主要儀器設(shè)備臺式或筆記本計算機實驗記錄(寫出實驗內(nèi)容中的程序代碼和運行結(jié)果)(可分欄或加頁)Gauss消元法:#i nclude "stdafx.h"#include "stdio.h"#include "iostream"using namespacestd;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;k<2

8、;k+)for (i=k+1;i<3;i+)for (j=k+1;j<4;j+)aij=aij-aik/akk*akj;for (i=0;i<3;i+)for (j=0;j<4;j+)printf( "a%d%d=%f,",i,j,aij);cout<<e ndl;x2=a23/a22;for (k=1;k>=0;k-) sum=0;for (j=k+1;j<3;j+)sum+=akj*xj;xk=(ak3-sum)/akk;for (i=0;i<3;i+)printf ( "x%d=%f,",i+1

9、,xi);LU分解法:#i nclude"stdafx.h"#i nclude<stdio.h>#i nclude<math.h>#defi neL 30double a L L , b L , l L L , u L L , x L , y L ; int mai n()int n, i, j, k, r;scanf( "%d" , &n );for ( i = 1; i <= n; +i ) for ( j = 1; j <= n; +j ) scanf( "%lf" , &a

10、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 ;for ( r = 1; r < k; +r )u k j -= l k r * u r j ;for ( i = k + 1; i <= n; +i

11、 ) 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 < i; +j) y i -= l i j * y j ;for ( i = n; i > 0; -i ) x i = y i ;for ( j = i + 1; j <= n; +j ) x i -= u i j * x j ;x i /= u i i ;for ( i =

12、 1; i <= n; +i ) printf( "%0.2lfn" , x i );return 0;追趕法:#i nclude "stdafx.h"#i nclude "stdio.h"void mai n()FILE *f;double a15,b15,c15,d15;double t;int i,n;f=fope n("zgf.txt","r");fsca nf(f,"%d",&n);fsca nf(f,"%lf%lf%lf",&am

13、p;b1,&c1, &d1);for(i=2;i<=n _1;i+)fsca nf(f,"%lf%lf%lf%lf",&ai, &bi,&ci, &di);fscan f(f,"%lf%lf%lf", &a n,&b n, &dn); fclose(f);c1=c1/b1;d1=d1/b1;for(i=2;i<=n _1;i+)t=bi-ci-1*ai;ci=ci/t;di=(di-di-1*ai)/t;dn =(d n-d n-1*a n)/(b n-c n-1*a n

14、);for(i=n-1;i>=1;i-) di=di-ci*di+1;prin tf("n*for(i=1;i<=n ;i+)prin tf("d%2d=%lfn",i,di);Zgf.txt文件中的內(nèi)容是:52 1-71 2 1-51 2 1-51 2 1 -51 2 -5實驗結(jié)果和分析Gauss消元法:<i0(e-1.000S09CBl J-Z.000O00D1 2)-3.0800000 )-14, irn=i .0Rf)RnarAn 1"】-2.。口胴恥*初1 n3i=H.B030n«rair0i=2.ftH»

15、PflRr2in1 =0. BINKWe ,a2215.000801 E21E3115.00BBM,xtl 1=1 *000080,xf2 J =2,00060x01=3.000000,Press any key to continue E;VC>+邀值 D e b u g35dS 心才44 2 158 7 2 104 8 3 &12 6 11 23卜2 -7 -7 -31.60kl.001-0S-1 .00Press any kev to continueD:' Microsoft Visull StudioMyFrojectshhiDebug' 5hlzhi.

16、e)ce'dl 1J4.166667dr 21=1.333333d 3=-3.5B00B9d 410.666667 d 5=-2-833333Pi*«ss antj key to &&ntinue心得體會(遇到的問題和解決方法)在調(diào)試過程中發(fā)現(xiàn)自己還是很粗心,容易犯簡單錯誤,在今后應(yīng)該多編寫程序。實驗名稱實驗三線性方程組的迭代求解實驗內(nèi)容和要求學習使用雅可比迭代法或高斯-賽德爾迭代法實驗原理10xix2 2x3 7.2x-i 10x2 2x38.3x-ix2 5x3 4.2主要儀器設(shè)備臺式或筆記本計算機實驗記錄(寫出實驗內(nèi)容中的程序代碼和運行結(jié)果)(可分欄或加

17、頁)咼斯-賽德爾迭代法:#include "stdafx.h"#include "stdio.h"#include "math.h"void main()float a【3【3=10,-1,-2,-1,10,-2,-1,-1,5,b【3=7.2,8.3,4.2;float x3=0,0,0,sum1,sum2;int i,j,k,n=3;for (k=0;k<10;k+)for(i=0;i<n;i+)sum1=0;sum2=0;for(j=0;j<i;j+)sum1= sum1+aij*xj; for(j=i+1;j

18、<3;j+)sum2=sum2+aij*xj;xi=(bi-sum1-sum2)/aii;for(i=0;i<n;i+) printf("x%d=%f,",i+1,xi);printf("n");雅克比迭代:#include "stdafx.h"#include <stdio.h>#include <math.h>void main()float a【3【3=10,-1,-2,-1,10,-2,-1,-1,5,b【3=7.2,8.3,4.2; float x3=0,0,0,sum1;int i,j,

19、k,n=3;for (k=0;k<10;k+)for (i=0;i<3;i+)sum1=0;for (j=0;j<n;j+) if (i=j) continue ;sum仁 sum1+aij*xj;xi=(bi-sum1)/aii;for (i=0;i<n;i+) printf( "x%d=%f,",i+1,xi);printf( "n");實驗結(jié)果和分析結(jié)果:高斯-賽德爾迭代法:P: Microsoft Visual Sludic'1- MyProject&sh jzhiDebugshuzhi.exe1 J=0.

20、723000, 菱-03盹込 lx 3 J =0. 808 800. 11=0/729800. c2 =0.308080.XE1J=0.720900. >c 2 J =0. 900080 , x31=H.030900«1J=0.720000, x2=0.900900.k11=0.720000, x2=0.800000.<31-0.000300.Kll=0.729080, k21=0.000080. k3-0.000000.x11-0.720000, L2 J =0.B0HB03, L21=0.O0300B. Ll =0.720080. L:2 1-0.000300. L3

21、 J =0. 800903j. L11=0.720000,雅克比迭代: E:VC4- *shozh iDebu gVshuzhLe xeb<El J=C.720000,x2 l=3.?020aOF3=l -l&440Qr 卜【1 】=!043080.x 12 】=1 >16718S,xL3 21 282B54. Ltll =1.093130,xL2J=l.195724,x31=1.297771, xtl =1.09126,x21=1.1994&7,xC31=1-299719, xll 1=1 -099890, m 2 1=1 .19?933,xC31=l_2999&

22、amp;5, xl=l.OT998&,x2J=1.19?9?2.x3J=1.29999G. xfl-l.099998>xC2J=1.1999?.xE31-1.299999, 敦【1 =1-100000,x2J=l. 200000,st31=l_3B0000, xtl J=11=1 _2U9Baa,xl:31=l-380M0B,xti=i. i 陋何思邑,m 21=1.2 aaaas fkL3j=i - 3 麗呂叫 Tress any <ey to continue分析:使用高斯-賽德爾和雅克比迭代都可以求出方程組的解,但是利用高斯-賽德爾迭代法所需的迭代次數(shù)比雅克比迭代少,

23、能夠更早的達到精度要求。心得體會(遇到的問題和解決方法)高斯迭代法比雅克比迭代迭代速度快,所以在編程時選擇了高斯迭代法nLn(x)yolo(x) yih(x)yJn(x)yih(x)i 0主要儀器設(shè)備臺式或筆記本計算機實驗記錄(寫出實驗內(nèi)容中的程序代碼和運行結(jié)果)(可分欄或加頁)#in clude<stdio.h>#i nclude<stdlib.h>#in clude<iostream.h>typedef struct datafloat x;float y;Data;Data d20;float f(int s,i nt t)if(t=s+1)retur

24、n (dt.y-ds.y)/(dt.x-ds.x);elsereturn (f(s+1,t)-f(s,t-1)/(dt.x-ds.x);float Newt on( float x,i nt count)int n;while(1)coutvv"請輸入n值(即n次插值):"cin>>n;if(n<=cou nt-1)break;elsesystem("cls");float t=1.0;float y=d0.y;float yt=0.0;for(i nt j=1;j<=n ;j+)t=(x-dj-1.x)*t;yt=f(0,j)*

25、t;y=y+yt;return y;float lagra nge(float x,i nt count)float y=0.0;for(i nt k=0;k<co un t;k+)float p=1.0;for(i nt j=0;j<co un t;j+)if(k=j)c on ti nue;p=p*(x-dj.x)/(dk.x-dj.x);y=y+p*dk.y;return y;void mai n()float x,y;int count;while(1)cout«"請輸入xi,yi的組數(shù),不得超過20組:"cin> >co unt;if(cou nt<=20)break;system("cls"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論