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

下載本文檔

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

文檔簡介

華北電力大學科技學院農(nóng)電12K1G&P華北電力大學科技學院數(shù)值計算方法上機報告姓名:G&P班級:農(nóng)電12K1學號:2014年11月28日實驗程序為實驗一#include"stdio.h"#include"math.h"#defineN30voidmain(){inti;floatx[N],c;scanf("%f",&c);scanf("%f",&x[0]);//初值printf("****倒數(shù)表****\n");for(i=0;i<N;i++)//牛頓迭代法{x[i+1]=x[i]*x[i]*c/(2*c*x[i]-1);printf("k=%d\tx(%d)=%.5f\n",i,i,x[i]);if(fabs(x[i+1]-x[i])<=0.0005)break;elsecontinue;printf("k=%d\tx(%d)=%.5f\n",i+1,i+1,x[i]);printf("\n計算結(jié)果:\n1/%f=%.3f\n\n",c,x[i+1]);}}實驗二#include"stdio.h"#include"math.h"#defineN10voidmain(){inti,j,k,l,n;floatb[N],a[N][N],t,d,det=1.0;//***數(shù)據(jù)輸入*/printf("輸入n\n");scanf("%d",&n);printf("輸入Ai\n");for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%f",&a[i][j]);printf("輸入bi\n");for(i=0;i<n;i++)scanf("%f",&b[i]);//***數(shù)據(jù)輸入*///***************************高斯消去*///************************消元*///****************************列選主元函數(shù)*/for(k=0;k<n-1;k++)//從第一次消元到第N-1次消元{d=a[k][k];l=k;for(i=k+1;i<n;i++)//找出絕對值最大的a[i][k]和i行{if(fabs(a[i][k])>fabs(d)){d=a[i][k];i=l;}}if(i==n)//判斷是否奇異,不奇異進行行交換{if(d==0)printf("奇異");//如果所有行的"首列"都為0,為奇異else{if(l!=k)//如果第k行的"首列"并不是最大{det=det*(-1);for(j=k;j<=n;j++)//交換系數(shù)矩陣中的兩行{t=a[l][j];a[l][j]=a[k][j];a[k][j]=t;}t=b[l];b[l]=b[k];b[k]=t;//交換右端常向量中的兩行}}}//************列選主元函數(shù)*/for(i=k+1;i<n;i++)//第(k+1)次消元要得到N-(k+1)個乘數(shù){a[i][k]=a[i][k]/a[k][k];for(j=k+1;j<n;j++)//第(i+1)行各列向量對應該行與第(k+1)行各列向量的減法{a[i][j]=a[i][j]-a[i][k]*a[k][j];}b[i]=b[i]-a[i][k]*b[k];//右端常向量}}//*****************消元*///*回代*/b[n-1]=b[n-1]/a[n-1][n-1];//計算x(N)的解for(i=n-2;i>=0;i--)//從倒數(shù)第二項開始依次回代N-1次{t=0;for(j=i+1;j<n;j++){t=t+a[i][j]*b[j];}b[i]=(b[i]-t)/a[i][i];}//*************高斯消去*///*******************數(shù)據(jù)輸出*/for(i=0;i<n;i++)//輸出方程組的解printf("x(%d)=%.4f\n",i+1,b[i]);for(i=0;i<n;i++)det=det*a[i][i];printf("detA=%.4f\n",det);//輸出系數(shù)矩陣行列式的值//**********************數(shù)據(jù)輸出*/}實驗三//例3-10#include"iostream"#include"cmath"#defineN30voidmain(){inti,j,r,k,n;floata[N][N]={0},s;//***數(shù)據(jù)輸入*/printf("輸入n\n");scanf("%d",&n);printf("輸入矩陣\n");for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%f",&a[i][j]);for(i=0;i<n;i++)//輸入單位陣{j=i+n;a[i][j]=1;}//***數(shù)據(jù)輸入*///***************************LU分解*/for(i=1;i<n;i++)//r=0時:"1"區(qū)間不變化,"2"區(qū)間變化。a[i][0]=a[i][0]/a[0][0];for(i=1;i<n;i++)//第二行列至末行列進行變化時{for(j=i;j<2*n;j++)//第"2(r+1)-1"區(qū)間的變化行{s=0.0;for(k=0;k<i;k++)//對應行列元素的乘積進行求和s+=a[i][k]*a[k][j];a[i][j]=a[i][j]-s;}for(j=i+1;j<n;j++)//"2(r+1)"區(qū)間的變化列{s=0.0;for(k=0;k<i;k++)//對應行列元素的乘積進行求和s+=a[k][i]*a[j][k];a[j][i]=(a[j][i]-s)/a[i][i];}}//現(xiàn)在已將AI--->LUY//**************************************LU分解*///************************************高斯約當法解Ux=Y*///********************提取UY減少計算*/for(i=1;i<n;i++)for(j=0;j<i;j++)a[i][j]=0;//*************************提取UY減少計算*///***************消元*/for(j=0;j<2*n;j++)//首行歸一化{a[0][j]=a[0][j]/a[0][0];}a[0][0]=1;//第一列其余行已為零for(i=1;i<n;i++)//(n-1)次歸一消元{for(j=i+1;j<2*n;j++)//第i+1行的各列進行歸一化a[i][j]=a[i][j]/a[i][i];a[i][i]=1;for(r=0;r<i;r++)//對第一行至第i-1行的i列進行置零{for(j=r+2;j<2*n;j++)//r行的各列與第r+1行的對應列進行減法運算a[r][j]=a[r][j]-a[i][j]*a[r][r+1];//第r+1行歸一后,乘數(shù)即為要置零處的值a[r][r+1]=0;//乘數(shù)用完之后置零即可}}//*****************************************消元*///********************高斯約當法解Ux=Y*///************************************數(shù)據(jù)輸出*/printf("A的逆矩陣為\n");for(i=0;i<n;i++){printf("|");for(j=0;j<n;j++)printf("%.4f",a[i][j+n]);printf("|\n");}//************************************數(shù)據(jù)輸出*/}實驗四//例4-6#include"stdio.h"#include"math.h"#defineN50intn,i,j,k;floatxx=0.0,yy=0.0,t,x[N],y[N],c[N],A[N];voidmain(){printf("輸入n\n");scanf("%d",&n);//n=4printf("輸入x\n");for(i=0;i<n;i++)scanf("%f,%f",&x[i]);printf("輸入f(x)\n");for(i=0;i<n;i++)scanf("%f,%f",&y[i]);printf("輸入待求數(shù)\n");scanf("%f",&xx);//要計算的值for(k=0;k<n;k++)//拉格朗日插值{t=1.0;for(j=0;j<k;j++)t=(xx-x[j])*t/(x[k]-x[j]);for(j=k+1;j<n;j++)t=(xx-x[j])*t/(x[k]-x[j]);yy=yy+t*y[k];}printf("\nx=%.7f處的函數(shù)值為:y=%.7f\n",xx,yy);}實驗五//習題5-2#include"stdio.h"#include"math.h"#defineN30voidmain(){inti,n,k,j,l;floatx[N],y[N],z[N];//定義輸入變量floatAT[3][N];//定義A的轉(zhuǎn)置floatX[3][3],Y[3];//定義中間變量ATA和ATyfloats,t,d;//***數(shù)據(jù)輸入*/printf("輸入n:\n");scanf("%d",&n);printf("依次輸入X\n");for(i=0;i<n;i++)scanf("%f",&x[i]);printf("依次輸入Y\n");for(i=0;i<n;i++)scanf("%f",&y[i]);printf("依次輸入Z\n");for(i=0;i<n;i++)scanf("%f",&z[i]);//***數(shù)據(jù)輸入*///for(i=0;i<n;i++)//為AT賦值;{AT[0][i]=1;AT[1][i]=x[i];AT[2][i]=y[i];}for(k=0;k<3;k++)//中間變量ATAfor(j=0;j<3;j++){s=0.0;for(i=0;i<n;i++)s+=AT[k][i]*AT[j][i];X[k][j]=s;}for(k=0;k<3;k++)//中間變量ATy{s=0.0;for(i=0;i<n;i++){s+=AT[k][i]*z[i];}Y[k]=s;}//****************************計算//*****************************************高斯消去*///*****************************************消元*///****************************列選主元函數(shù)*/n=3;for(k=0;k<n-1;k++)//從第一次消元到第N-1次消元{d=X[k][k];l=k;for(i=k+1;i<n;i++)//找出絕對值最大的X[i][k]和i行{if(fabs(X[i][k])>fabs(d)){d=X[i][k];i=l;}}if(i==n)//判斷是否奇異,不奇異進行行交換{if(d==0)printf("奇異");//如果所有行的"首列"都為0,為奇異else{for(j=k;j<=n;j++)//交換系數(shù)矩陣中的兩行{t=X[l][j];X[l][j]=X[k][j];X[k][j]=t;}t=Y[l];Y[l]=Y[k];Y[k]=t;//交換右端常向量中的兩行}}//****************************列選主元函數(shù)*/for(i=k+1;i<n;i++)//第(k+1)次消元要得到N-(k+1)個乘數(shù){X[i][k]=X[i][k]/X[k][k];for(j=k+1;j<n;j++)//第(i+1)行各列向量對應該行與第(k+1)行各列向量的減法{X[i][j]=X[i][j]-X[i][k]*X[k][j];}Y[i]=Y[i]-X[i][k]*Y[k];//右端常向量}}//*****************************************消元*/

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論