2014級碩士研究生數(shù)值分析上機實習(xí)報告(答案)_第1頁
2014級碩士研究生數(shù)值分析上機實習(xí)報告(答案)_第2頁
2014級碩士研究生數(shù)值分析上機實習(xí)報告(答案)_第3頁
2014級碩士研究生數(shù)值分析上機實習(xí)報告(答案)_第4頁
2014級碩士研究生數(shù)值分析上機實習(xí)報告(答案)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

哈爾濱工業(yè)大學(xué)(威海)實驗報告紙PAGE10-2014級碩士研究生數(shù)值分析上機實習(xí)(第一次)姓名:學(xué)號:學(xué)院:實習(xí)題目:分別用二分法和Newton迭代法求方程的根.實習(xí)目的:掌握兩種解法,體會兩種解法的收斂速度.實習(xí)要求:用C程序語言編程上機進行計算,精確到8位有效數(shù)字.報告內(nèi)容:1.確定實根的個數(shù)以及所在區(qū)間.2.將最后兩次計算結(jié)果填入下表(保留8位數(shù)字):方法二分法Newton法3.實習(xí)過程中遇到哪些問題?如何解決?有何心得體會?4.兩種解法的計算程序(此頁寫不下時可以加頁):【二分法】#include<stdio.h>#include<math.h>floatgetvalue(floatx){returnx*x*x+2*x*x+10*x-20;}voidmain(){floata=0,b=2,c;c=(a+b)/2;while(fabs(getvalue(c))>0.00001&&fabs(a-b)>0.00001){if(getvalue(c)*getvalue(b)<0)a=c;if(getvalue(a)*getvalue(c)<0)b=c;c=(a+b)/2;}printf("%0.7f\n",c);}【牛頓迭代法】#include"stdio.h"#include"math.h"main(){floatx,f,f1;x=8;//x的初值可為任意值do{f=x*x*x+2*x*x+10*x-20;f1=3*x*x+4*x+10;x=x-f/f1;}while(fabs(f)>0.000001);printf("x=%f,f=%f\n",x,f);}2014級碩士研究生數(shù)值分析上機實習(xí)(第二次)姓名:學(xué)號:學(xué)院:實習(xí)題目:計算8階三對角矩陣的行列式.實習(xí)目的:掌握計算行列式的方法.實習(xí)要求:首先選擇一種算法,然后用C程序語言編程上機進行計算.報告內(nèi)容:1.簡單描述所采用的算法:2.計算結(jié)果:3.實習(xí)過程中遇到哪些問題?如何解決?有何心得體會?4.寫出C語言計算程序(此頁寫不下時可以加頁):#include<stdio.h>#include<math.h>intmain(){intn,i,j,k,m,l,SwarpNum=0;doublea[10][10],b,temp,result=1;printf("輸入行列式階數(shù):");scanf("%d",&n);printf("輸入各值:\n");for(i=0;i<n;i++){for(j=0;j<n;j++)scanf("%lf",&a[i][j]);}for(k=0;k<n-1;k++){if(a[k][k]==0){for(m=n-1;m>k;m--){if(a[m][k]!=0){for(l=0;l<n;l++){temp=a[k][l];a[k][l]=a[m][l];a[m][l]=temp;}SwarpNum++;break;}}}for(i=k+1;i<n;i++){b=-a[i][k]/a[k][k];for(j=k;j<n;j++)a[i][j]=a[k][j]*b+a[i][j];}printf("\n");}for(i=0;i<n;i++)for(j=0;j<n;j++){if(i==j)result*=a[i][j];}result=pow(-1,SwarpNum)*result;printf("result=%f\n\n",result);return0;}2014級碩士研究生數(shù)值分析上機實習(xí)(第三次)姓名:學(xué)號:學(xué)院:實習(xí)題目:分別用Jacobi迭代法和Gauss-Seidel迭代法求解線性方程組實習(xí)目的:感受兩種迭代法的收斂速度.實習(xí)要求:首先構(gòu)造收斂的Jacobi迭代法和Gauss-Seidel迭代法,然后用C程序語言編程上機進行求解,初始值均取為0,精確到4位小數(shù).報告內(nèi)容:1.寫出收斂的Jacobi迭代法和Gauss-Seidel迭代法:2.將最后一次迭代次數(shù)與相應(yīng)的迭代結(jié)果填入下表迭代法JacobiGauss-Seidel3.實習(xí)過程中遇到哪些問題?如何解決?有何心得體會?4.C語言計算程序:Jacobi迭代法#include<stdio.h>#include<math.h>intfunction(floaty[3],floatx[3]);/*判斷是否收斂滿足精度函數(shù)申明*/floatx[3]={0,0,0},z;/*定義初始向量x*/inti,j,k,n=3;main(){floata[3][3]={{8.6,1.5,3.4},{2.1,9.8,3.4},{2.7,1.8,7.2}},b[3]={1.9,6.7,2.4};floaty[3],sum;intflag;for(k=0;k<100;k++)/*迭代的次數(shù)*/{for(i=0;i<n;i++){sum=0;for(j=0;j<n;j++){if(j!=i)sum=sum+a[i][j]*x[j];}y[i]=(b[i]-sum)/a[i][i];/*算出該迭代時的y[i]*/}for(i=0;i<n;i++){printf("x%d=%-10.6f",i+1,y[i]);}printf("\n");flag=function(y,x);/*調(diào)用函數(shù)function*/if(flag==1)/*結(jié)束循環(huán)*/break;}}intfunction(floaty[3],floatx[3])/*判斷是否收斂滿足精度函數(shù)的定義*/{intflag=0;/*標(biāo)志主函數(shù)中的循環(huán)是否要結(jié)束*/z=fabs(y[0]-x[0]);for(i=0;i<n;i++)if(z<fabs(y[i]-x[i]))z=fabs(y[i]-x[i]);if(z<10e-6){flag=1;printf("diedaidecishushik=%d\n",k+1);/*輸出得到最后結(jié)果迭代的次數(shù)*/printf("zuihoudejieguoshi:\n");for(i=0;i<n;i++)printf("x%d=%-10.6f",i+1,y[i]);/*輸出方程組的解*/printf("\n");}elsefor(i=0;i<n;i++)/*將y[i]的值賦給x[i]進行下一步的迭代*/x[i]=y[i];return(flag);}}Gauss-Seidel迭代法#include<stdio.h>#include<math.h>#include<iostream.h>#defineN3doubleCompare(doublea[N],doubleb[N]){doublec=0;inti;for(i=0;i<=N-1;i++)c+=fabs(a[i]-b[i]);returnc;}voidGauss_seidel(doubleA[N][N],doublex[N],doubleb[N],doubleprecesion){inti,j,k;doublex2[N],x3[N],sum;for(i=0;i<=N-1;i++){x2[i]=x[i];x3[i]=x[i];}k=1;//k為迭代次數(shù)while(1){for(i=0;i<=N-1;i++){sum=0;for(j=0;j<=N-1;j++){if(j!=i)sum+=A[i][j]*x2[j];}x[i]=(b[i]-sum)/A[i][i];x2[i]=x[i];}//輸出每一次迭代的結(jié)果printf("第%d次迭代:\n",k);printf("x3=");for(i=0;i<=N-1;i++)printf("%lf",x3[i]);printf("\n");printf("x=");for(i=0;i<=N-1;i++)printf("%lf",x[i]);printf("\n");//判斷是否達到度迭代精if(Compare(x3,x)<=precesion){printf("達到迭代精度的方程組的解為:\n");printf("x=");for(i=0;i<=N-1;i++)printf("%lf",x[i]);printf("\n");break;}else{for(i=0;i<=N-1;i++)x3[i]=x[i];k++;continue;}}}voidmain(){doubleA[N][N]={{8.6,1.5,3.4},{2.1,9.8,3.4},{2.7,1.8,7.2}},x[N]={0},b[N]={1.9,6.7,2.4};Gauss_seidel(A,x,b,1e-10);}2014級碩士研究生數(shù)值分析上機實習(xí)(第四次)姓名:學(xué)號:學(xué)院:實習(xí)題目:分別

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論