華北電力大學(xué)科技學(xué)院數(shù)值計算方法上機報告_第1頁
華北電力大學(xué)科技學(xué)院數(shù)值計算方法上機報告_第2頁
華北電力大學(xué)科技學(xué)院數(shù)值計算方法上機報告_第3頁
華北電力大學(xué)科技學(xué)院數(shù)值計算方法上機報告_第4頁
華北電力大學(xué)科技學(xué)院數(shù)值計算方法上機報告_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、華北電力大學(xué)科技學(xué)院數(shù)值計算方法上機報告姓名:G&P班級:農(nóng)電12K1學(xué)號: 2014年11月28日 實驗程序為實驗一 #include"stdio.h"#include"math.h"#define N 30void main()int i;float xN,c; scanf( "%f",&c); scanf( "%f",&x0);/初值 printf( " *倒數(shù)表*n");for(i=0;i<N;i+)/牛頓迭代法xi+1=xi*xi*c/(2*c*xi-1)

2、; printf("k=%dtx(%d)=%.5fn",i,i,xi);if(fabs(xi+1-xi)<=0.0005)break;elsecontinue;printf("k=%dtx(%d)=%.5fn",i+1,i+1,xi); printf("n 計算結(jié)果:n1/%f=%.3fnn",c,xi+1); 實驗二#include"stdio.h"#include"math.h"#define N 10void main()int i,j,k,l,n;float bN,aNN,t,d,

3、det=1.0;/*數(shù)據(jù)輸入*/printf("輸入nn" );scanf("%d",&n);printf("輸入Ain" );for(i=0;i<n;i+)for(j=0;j<n;j+) scanf( "%f",&aij);printf("輸入bin" );for(i=0;i<n;i+)scanf("%f",&bi);/*數(shù)據(jù)輸入*/* *高斯消去*/* *消元*/*列選主元函數(shù)*/for(k=0;k<n-1;k+)/從第一次

4、消元到第N-1 次消元d=akk;l=k;for(i=k+1;i<n;i+)/找出絕對值最大的aik和i 行if(fabs(aik)>fabs(d)d=aik;i=l;if(i=n)/判斷是否奇異,不奇異進行行交換if(d=0) printf( "奇異");/如果所有行的"首列"都為0,為奇異elseif(l!=k)/如果第k 行的"首列"并不是最大 det=det*(-1);for(j=k;j<=n;j+)/交換系數(shù)矩陣中的兩行t=alj;alj=akj;akj=t;t=bl;bl=bk;bk=t;/交換右端常向量

5、中的兩行/* *列選主元函數(shù)*/for(i=k+1;i<n;i+)/第(k+1)次消元要得到N-(k+1)個乘數(shù)aik=aik/akk;for(j=k+1;j<n;j+)/第(i+1)行各列向量對應(yīng)該行與第(k+1)行各列向量的減法aij=aij-aik*akj;bi=bi-aik*bk;/右端常向量/* *消元*/*回代*/bn-1=bn-1/an-1n-1;/計算x(N)的解for(i=n-2;i>=0;i-)/從倒數(shù)第二項開始依次回代N-1 次t=0;for(j=i+1;j<n;j+)t=t+aij*bj;bi=(bi-t)/aii;/* *高斯消去*/* *數(shù)據(jù)

6、輸出*/for(i=0;i<n;i+)/輸出方程組的解 printf("x(%d)=%.4fn",i+1,bi);for(i=0;i<n;i+)det=det*aii; printf("detA=%.4fn",det);/輸出系數(shù)矩陣行列式的值 /* *數(shù)據(jù)輸出*/實驗三/例3-10#include"iostream"#include"cmath" #define N 30void main()int i,j,r,k,n;float aNN=0,s;/*數(shù)據(jù)輸入*/ printf("輸入nn&

7、quot;);scanf("%d",&n);printf("輸入矩陣n");for(i=0;i<n;i+)for(j=0;j<n;j+) scanf("%f",&aij);for(i=0;i<n;i+)/輸入單位陣j=i+n;aij=1;/*數(shù)據(jù)輸入*/* * *LU 分解*/for(i=1;i<n;i+)/r=0 時:"1"區(qū)間不變化,"2"區(qū)間變化。ai0=ai0/a00;for(i=1;i<n;i+)/第二行列至末行列進行變化時for(j=i;

8、j<2*n;j+)/第"2(r+1)-1"區(qū)間的變化行 s=0.0;for(k=0;k<i;k+)/對應(yīng)行列元素的乘積進行求和s+=aik*akj;aij=aij-s;for(j=i+1;j<n;j+)/"2(r+1)"區(qū)間的變化列s=0.0;for(k=0;k<i;k+)/對應(yīng)行列元素的乘積進行求和s+=aki*ajk;aji=(aji-s)/aii;/現(xiàn)在已將AI->LUY/* *LU 分解*/* *高斯約當法解Ux=Y*/* * 提取UY 減少計算*/for(i=1;i<n;i+)for(j=0;j<i;j

9、+) aij=0;/* * 提取UY 減少計算*/* *消元*/for(j=0;j<2*n;j+)/首行歸一化a0j=a0j/a00; a00=1;/第一列其余行已為零for(i=1;i<n;i+)/(n-1)次歸一消元for(j=i+1;j<2*n;j+)/第i+1 行的各列進行歸一化aij=aij/aii;aii=1;for(r=0;r<i;r+)/對第一行至第i-1 行的i 列進行置零for(j=r+2;j<2*n;j+)/r 行的各列與第r+1 行的對應(yīng)列進行減法運算arj=arj-aij*arr+1;/第r+1 行歸一后,乘數(shù)即為要置零處的值arr+1=

10、0;/乘數(shù)用完之后置零即可/*消元*/* * *高斯約當法解Ux=Y*/*數(shù)據(jù)輸出*/printf("A 的逆矩陣為n");for(i=0;i<n;i+)printf("| ");for(j=0;j<n;j+) printf("%.4f ",aij+n); printf("|n"); /*數(shù)據(jù)輸出*/實驗四/例4-6 #include"stdio.h"#include"math.h"#define N 50int n,i,j,k;float xx=0.0,yy=0

11、.0,t,xN,yN,cN,AN; void main()printf( "輸入n n"); scanf( "%d",&n);/n=4 printf( " 輸入xn");for(i=0;i<n;i+) scanf( "%f,%f",&xi); printf( " 輸入f(x)n");for(i=0;i<n;i+) scanf( "%f,%f",&yi); printf( " 輸入待求數(shù)n"); scanf( "

12、%f",&xx);/要計算的值for(k=0;k<n;k+)/拉格朗日插值t=1.0;for(j=0;j<k;j+)t=(xx-xj)*t/(xk-xj);for(j=k+1;j<n;j+)t=(xx-xj)*t/(xk-xj);yy=yy+t*yk; printf( "nx=%.7f 處的函數(shù)值為:y=%.7fn",xx,yy); 實驗五/習(xí)題5-2 #include "stdio.h"#include "math.h"#define N 30void main()int i,n,k,j,l;fl

13、oat xN,yN,zN;/定義輸入變量float AT3N;/定義A 的轉(zhuǎn)置float X33,Y3;/定義中間變量ATA 和ATyfloat s,t,d; /*數(shù)據(jù)輸入*/ printf( "輸入n:n"); scanf("%d",&n); printf( "依次輸入X n");for(i=0;i<n;i+) scanf( "%f",&xi); printf( "依次輸入Y n");for(i=0;i<n;i+) scanf( "%f",&am

14、p;yi); printf( "依次輸入Z n");for(i=0;i<n;i+) scanf( "%f",&zi); /*數(shù)據(jù)輸入*/for(i=0;i<n;i+)/為AT 賦值;AT0i=1;AT1i=xi; AT2i=yi;for(k=0;k<3;k+)/中間變量ATAfor(j=0;j<3;j+)s=0.0;for(i=0;i<n;i+)s+=ATki*ATji;Xkj=s;for(k=0;k<3;k+)/中間變量ATys=0.0;for(i=0;i<n;i+)s+=ATki*zi;Yk=s;/*

15、計算/* *高斯消去*/*消元*/*列選主元函數(shù)*/n=3;for(k=0;k<n-1;k+)/從第一次消元到第N-1 次消元d=Xkk;l=k;for(i=k+1;i<n;i+)/找出絕對值最大的Xik和i 行if(fabs(Xik)>fabs(d)d=Xik;i=l; if(i=n)/判斷是否奇異,不奇異進行行交換if(d=0) printf( "奇異");/如果所有行的"首列"都為0,為奇異elsefor(j=k;j<=n;j+)/交換系數(shù)矩陣中的兩行t=Xlj;Xlj=Xkj;Xkj=t;t=Yl;Yl=Yk;Yk=t;/交換右端常向量中的兩行/*列選主元函數(shù)*/for(i=k+1;i<n;i+)/第(k+1)次消元要得到N-(k+1)個乘數(shù)Xik=Xik/Xkk;for(j=k+1;j<n;j+)/第(i+1)行各列向量對應(yīng)該行與第(k+

溫馨提示

  • 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

提交評論