




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上計算數(shù)值方法實驗報告學院:軟件學院專業(yè):軟件工程班級:軟件1012班學號:姓名:喬婧峰太原理工大學學生實驗報告學院名稱軟件學院專業(yè)班級軟件1012班學號學生姓名喬婧峰實驗日期20124成績課程名稱數(shù)值計算方法實驗題目實驗一 二分法一、課題名稱方程求根:熟悉使用、迭代法、牛頓法、割線法等方法對給定的方程進行根的求解。選擇上述方法中的兩種方法求方程:二分法f(x)=x3+4x2-10=0在1,2內(nèi)的一個實根,且要求滿足精度|x*-xn|<0.5×10-5迭代法:用迭代公式x=f(x)進行迭代計算,直到滿足|x*-xn|<0.5×10-5 為
2、止 。割線法:x=x-f(x)/g(x),其中f(x)為給定的函數(shù),g(x)為給定函數(shù)的導數(shù),直到滿足|x*-xn|<0.5×10-5 為止 。二、目的和意義(1)了解非線性方程求根的常見方法,如二分法、牛頓法、割線法。(2)加深對方程求根方法的認識,掌握算法。(3)會進行誤差分析,并能對不同方法進行比較。三、計算公式f(x)在區(qū)間(x,y)上連續(xù) 先找到a、b屬于區(qū)間(x,y),使f(a),f(b)異號,說明在區(qū)間(a,b)內(nèi)一定有零點,然后求f(a+b)/2, 現(xiàn)在假設f(a)<0,f(b)>0,a<b 如果f(a+b)/2=0,該點就是零點, 如果f(a
3、+b)/2<0,則在區(qū)間((a+b)/2,b)內(nèi)有零點,(a+b)/2=>a,從開始繼續(xù)使用 中點函數(shù)值判斷。 如果f(a+b)/2>0,則在區(qū)間(a,(a+b)/2)內(nèi)有零點,(a+b)/2<=b,從開始繼續(xù)使用 中點函數(shù)值判斷。 這樣就可以不斷接近零點。 通過每次把f(x)的零點所在小區(qū)間收縮一半的方法,使區(qū)間的兩個端點逐步迫近函數(shù)的零點,以求得零點的近似值四、主要儀器設備Vc2008,hp五、結(jié)構(gòu)程序設計迭代法: #include "stdafx.h"#include"stdio.h"#include"math.h
4、"#include"iostream"using namespace std;float main() float a; cin>>a; 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");割線法: #include "stdafx.h"#include"stdio.h"#include"
5、math.h"#include"iostream"using namespace std;float main() float c,a=1.0,b=2.0; /cin>>a>>b; 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.) break; b=c; cout<<c;六、結(jié)果討論和分析割線法: 迭代法:分析:使用不同的方法,可以不同程度的求得方程的解,不同的方法速度不同。實驗地點ZSA401指導教師李
6、志學院名稱軟件學院專業(yè)班級軟件1012班學號學生姓名喬婧峰實驗日期2012.4成績課程名稱數(shù)值計算方法實驗題目實驗二 線性方程組的直接解法一、課題名稱線性方程組的直接解法合理利用Gauss消元法、LU分解法、追趕法求解下列方程組: (n=5,10,100)二、目的和意義(1)了解線性方程組常見的直接解法,如Guass消元法、LU分解法、追趕法。(2)加深對線性方程組求解方法的認識,掌握算法。(3)會進行誤差分析,并能對不同方法進行比較。三、計算公式 高斯分解法:將原方程組化為三角形方陣的方程組:lik=aik/akk aij= aij- lik* akj k=1,2,n-1 i=k+1,k+2
7、, ,n j=k+1,k+2, ,n+1由回代過程求得原方程組的解: xn= ann+1/ ann xk=( akn+1-akj xj)/ akk (k=n-1,n-2, ,2,1) LU分解法:將系數(shù)矩陣A轉(zhuǎn)化為A=L*U, L為單位下三角矩陣,U為普通上三角矩陣,然后通過解方程組l*y=b,u*x=y,來求解x.追趕法:用來求對角方程組;將系數(shù)矩陣A轉(zhuǎn)化為A=L*U, L為普通下n-1對角矩陣,U為單位上n-1對角矩陣,然后通過解方程組l*y=b,u*x=y,來求解x.四、主要儀器設備Vc2008,hp五、結(jié)構(gòu)程序設計 Gauss消元法:#include "stdafx.h&qu
8、ot;#include"stdio.h"#include"iostream"using namespace 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;k<2;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
9、=%f,",i,j,aij); cout<<endl; 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,xi); LU分解法:#include "stdafx.h"#include <stdio.h>#include <math.h> #define L 30 double a L L , b L
10、, l L L , u L L , x L , y L ; int main() int n, i, 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 &l
11、t;= 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 ) 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 (
12、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 = 1; i <= n; +i ) printf( "%0.2lfn", x i ); return 0;追趕法:#include "stdafx.h"
13、#include "stdio.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%lf%lf",&ai,&bi,&a
14、mp;ci,&di); fscanf(f,"%lf%lf%lf",&an,&bn,&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=(dn-dn-1*an)/(bn-cn-1*an); for(i=n-1;i>=1;i-) di=di-ci*di+1; printf("n*n"); for(i=1;i<=n;i+) printf("d%2d=%l
15、fn",i,di);Zgf.txt文件中的內(nèi)容是:52 1 -71 2 1 -5 1 2 1 -5 1 2 1 -5 1 2 -5六、結(jié)果討論和分析Gauss消元法:LU分解法:追趕法:分析從消元過程可以看出,對于n階線性方程組,只要各步主元素不為零,經(jīng)過n-1步消元,就可以得到一個等價的系數(shù)矩陣為上三角形陣的方程組,然后再利用回代過程可求得原方程組的解.消元過程相當于分解 A為單位下三角陣L與上三角陣U的乘積,解方程組Ly=b回代過程就是解方程組Ux=y。其中的L為n階單位下三角陣、U為上三角陣. 在 A 的LU 分解中, L取下三角陣, U 取單位上三角陣,這樣求解方程組Ax=d
16、 的方法稱為追趕法.實驗地點ZSA401指導教師李志學院名稱軟件學院專業(yè)班級軟件1012學號學生姓名喬婧峰實驗日期20114成績課程名稱數(shù)值計算方法實驗題目實驗三 線性方程組的迭代解法一、課題名稱線性方程組的迭代解法使用雅可比迭代法或高斯-賽德爾迭代法對下列方程組進行求解。 二、目的和意義學習使用雅可比迭代法或高斯-賽德爾迭代法三、計算公式雅克比迭代法:設線性方程組Ax=b的系數(shù)矩陣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其中,B
17、1=I-D-1A,f1=D-1b。四、主要儀器設備Vc2008,hp五、結(jié)構(gòu)程序設計高斯-賽德爾迭代法:#include "stdafx.h"#include <stdio.h>#include <math.h>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;k<10;k+) for(i=0;i<n;i+) sum1=0; sum2=0;for(j=0;j<i;
18、j+) sum1=sum1+aij*xj; for(j=i+1;j<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 a33=10,-1,-2,-1,10,-2,-1,-1,5,b3=7.2,8
19、.3,4.2;float x3=0,0,0,sum1;int i,j,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; sum1=sum1+aij*xj; xi=(bi-sum1)/aii; for(i=0;i<n;i+) printf("x%d=%f,",i+1,xi);printf("n"); 六、實驗結(jié)果與分析:高斯-賽德爾迭代法:雅克比迭代:分析:使用高斯-賽德爾和雅克比迭代都可以求出方程組的解,但是利用高斯-
20、賽德爾迭代法所需的迭代次數(shù)比雅克比迭代少,能夠更早的達到精度要求。實驗地點ZSA401指導教師李志學院名稱軟件學院專業(yè)班級軟件1012班學號學生姓名喬婧峰實驗日期20114成績課程名稱數(shù)值計算方法實驗題目實驗四 最小二乘法擬合多項式一、課題名稱(1)了解矩陣特征值與特征向量問題解法,掌握冪法。(2)加深對矩陣特征值與特征向量問題求解方法的認識,掌握算法。(3)會進行誤差分析。二、目的和意義 學習使用最小二乘法擬合多項式三、計算公式冪法:由已知的非零向量x0和矩陣A的乘冪構(gòu)造向量序列xn以計算矩陣A的按模最大特征值及其特征向量的方法,稱為冪法。迭代公式:結(jié)果可取 四、主要儀器設備Vc2008,h
21、p五、結(jié)構(gòu)程序設計 五、結(jié)果討論和分析分析: 冪法是一種求任意矩陣A的按模最大特征值及其對應特征向量的迭代算法。該方法的最大優(yōu)點是計算簡單,容易在計算機上實現(xiàn),對稀疏矩陣較為適合,但有時收斂速度很慢。實驗地點綜合樓六層606室指導教師王崢學院名稱計算機科學與技術(shù)專業(yè)班級計算機學號學生姓名某某實驗日期2011-6-20成績課程名稱數(shù)值計算方法實驗題目實驗五 代數(shù)插值一、 課題名稱使用拉格朗日插值法或牛頓插值法求解:已知f(x)在6個點的函數(shù)值如下表所示,運用插值方法,求f(0.596)的近似值。x0.400.550.650.800.901.05f(x)0.410750.578150.696750
22、.888111.026521.25386二、 目的和意義學習使用拉格朗日插值法或牛頓插值法求解三、 計算公式設函數(shù)在區(qū)間a,b上n+1互異節(jié)點x0,x1,xn上的函數(shù)值分別為y0,y1,yn,求n次插值多項式Pn(x),滿足條件Pn(xj)=yj, j=0,1,n令Ln(x)=y0l0(x)+y1l1(x)+ynln(x)= yili(x)其中l(wèi)0(x),l1(x), ln(x) 為以x0,x1,xn為節(jié)點的n次插值基函數(shù),則Ln(x)是一次數(shù)不超過n的多項式,且滿足Ln(xj)=yj, L=0,1,n再由插值多項式的唯一性,得Pn(x)Ln(x)四、 結(jié)構(gòu)程序設計#include<st
23、dio.h>#include<stdlib.h>#include<iostream.h>typedef struct data float x; float y;Data; /變量x和函數(shù)值y的結(jié)構(gòu)Data d20; /最多二十組數(shù)據(jù)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,int count) int n; while(1)
24、 cout<<"請輸入n值(即n次插值):"/獲得插值次數(shù) cin>>n; if(n<=count-1)/ 插值次數(shù)不得大于count1次 break; else system("cls"); float t=1.0; float y=d0.y; float yt=0.0; for(int j=1;j<=n;j+) 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=
25、0;k<count;k+)/這兒默認為count1次插值 float p=1.0;/初始化p for(int j=0;j<count;j+) /計算p的值 if(k=j)continue;/判定是否為同一個數(shù) 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) cout<<"請輸入xi,yi的組數(shù),不得超過20組:"/要求用戶輸入數(shù)據(jù)組數(shù) cin>>count; if(count<=20)
26、 break;/檢查輸入的是否合法 system("cls"); /獲得各組數(shù)據(jù) for(int i=0;i<count;i+) cout<<"請輸入第"<<i+1<<"組x的值:" cin>>di.x; cout<<"請輸入第"<<i+1<<"組y的值:" cin>>di.y; system("cls"); cout<<"請輸入x的值:"/獲
27、得變量x的值 cin>>x; while(1) int choice=3; cout<<"請您選擇使用哪種插值法計算:"<<endl; cout<<" (0):退出"<<endl; cout<<" (1):Lagrange"<<endl; cout<<" (2):Newton"<<endl; cout<<"輸入你的選擇:" cin>>choice;/取得用戶的選擇項
28、 if(choice=2) cout<<"你選擇了牛頓插值計算方法,其結(jié)果為:" y=Newton(x,count);break;/調(diào)用相應的處理函數(shù) if(choice=1) cout<<"你選擇了拉格朗日插值計算方法,其結(jié)果為:" y=lagrange(x,count);break;/調(diào)用相應的處理函數(shù) if(choice=0) break; system("cls"); cout<<"輸入錯誤!"<<endl; cout<<x<<&quo
29、t; , "<<y<<endl;/輸出最終結(jié)果 五、結(jié)果討論和分析分析:拉格朗日插值的優(yōu)點是插值多項式特別容易建立,缺點是增加節(jié)點是原有多項式不能利用,必須重新建立,即所有基函數(shù)都要重新計算,這就造成計算量的浪費。實驗地點綜合樓六層606室指導教師王崢學院名稱計算機科學與技術(shù)專業(yè)班級計算機學號學生姓名某某實驗日期2011-6-20成績課程名稱數(shù)值計算方法實驗題目實驗六 最小二乘法擬合多項式一、課題名稱給定數(shù)據(jù)點(xi ,yi),用最小二乘法擬合數(shù)據(jù)的多項式,并求平方誤差。xi00.50.60.70.80.91.0yi11.751.962.192.442.713
30、.00二、目的和意義1熟練運用已學計算方法求解方程組2加深對計算方法技巧,選擇正確的計算方法來求解各種方程組3培養(yǎng)使用電子計算機進行科學計算和解決問題的能力三、計算公式建立正規(guī)方程組:(xij+k)ak=xijyi ,j=0,1,n 平方誤差:I=(akxik-yi)2四、結(jié)構(gòu)程序設計#include<iostream.h>#include<fstream.h>#define N 15double power(double &a,int n)double b=1;for(int i=0;i<n;i+)b*=a;return b;void Gauss();d
31、ouble XN,YN,sumXN,sumYN,aNN,bN,lNN,xN;void main()ofstream outdata;ifstream indata;double s;int i,j,k,n,index;cout<<"請輸入已知點的個數(shù)n="cin>>n;cout<<endl;cout<<"請輸入X和Y:"<<endl; /輸入給定數(shù)據(jù)for(i=0;i<n;i+)cout<<"X"<<i<<"="c
32、in>>Xi;sumX1+=Xi;cout<<"Y"<<i<<"="cin>>Yi;sumY1+=Yi;cout<<endl;cout<<"sumX1="<<sumX1<<"t"<<"sumY1="<<sumY1<<endl;cout<<"請輸入擬合次數(shù)index="cin>>index;cout<<endl;i=n;sumX0=i;for(i=2;i<=2*index;i+)sumXi=0;for(j=0;j<n;j+)sumXi+=power(Xj,i);cout<<"sumX"<<i<<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學節(jié)目比賽活動方案
- 少年閱讀活動方案
- 工會拓印活動策劃方案
- 山西消費扶貧活動方案
- 小班野戰(zhàn)活動方案
- 小店飲料促銷活動方案
- 岳陽五一活動方案
- 崇明區(qū)公益保潔活動方案
- 小貸公司周年慶活動方案
- 工會勞動活動方案
- 《椎動脈型頸椎病》課件
- 巨量云圖(中級)認證考試題庫(附答案)
- 2024年垂直升降貨柜項目可行性研究報告
- 2023年貴州貴州貴安發(fā)展集團有限公司招聘考試真題
- 人文英語4-008-國開機考復習資料
- 公司責任與權(quán)力分配管理制度
- 甘肅電投集團筆試試題
- 部編版四年級語文閱讀訓練20篇專項專題訓練帶答案解析
- 《中歐國際工商學院》課件
- 環(huán)境水利學-001-國開機考復習資料
- 大講堂之 第五講 大一統(tǒng)與中華民族的初步形成秦漢時期《中華民族共同體概論》
評論
0/150
提交評論