久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

計(jì)算方法與實(shí)習(xí)上機(jī)報告

時間:2019-05-11 23:49:54下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《計(jì)算方法與實(shí)習(xí)上機(jī)報告》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《計(jì)算方法與實(shí)習(xí)上機(jī)報告》。

第一篇:計(jì)算方法與實(shí)習(xí)上機(jī)報告

計(jì)算方法與實(shí)習(xí)

——上機(jī)報告

學(xué)院:電子工程學(xué)院

2015.1.4

學(xué)號:***

姓名: 劉

習(xí)題一: 舍入誤差及穩(wěn)定性

一、實(shí)驗(yàn)?zāi)康?/p>

(1)通過上機(jī)編程,復(fù)習(xí)鞏固以前所學(xué)程序設(shè)計(jì)語言及上機(jī)操作指令;(2)通過上機(jī)計(jì)算,了解舍入誤差所引起的數(shù)值不穩(wěn)定性

二、實(shí)驗(yàn)內(nèi)容

?

21、用兩種不同的順序計(jì)算?n,分析其誤差的變化

n?1100002、已知連分?jǐn)?shù)f?b0?a1,利用下面的算法計(jì)算f:

b1?a2/?b2?a3/(...?an/bn)?ai?

1(i?n?1,n?2,..., 0f?d0 di?1寫一程序,讀入n,b0,b1,...,bn,a1,...,an,計(jì)算并打印f dn?bn,di?bi?

3、給出一個有效的算法和一個無效的算法計(jì)算積分

xnyn??dx

(n?0,1,..., 104x?1N11?311?

4、設(shè)SN??2,已知其精確值為????

2?2NN?1?j?2j?1(1)編制按從大到小的順序計(jì)算SN的程序 1(2)編制按從小到大的順序計(jì)算SN的程序

(3)按兩種順序分別計(jì)算S1000,S10000,S30000,并指出有效位數(shù)

三、實(shí)驗(yàn)步驟、程序設(shè)計(jì)、實(shí)驗(yàn)結(jié)果及分析

?

21、用兩種不同的順序計(jì)算?n,分析其誤差的變化

n?110000(1)實(shí)驗(yàn)步驟:

分別從1~10000和從10000~1兩種順序進(jìn)行計(jì)算,應(yīng)包含的頭文件有stdio.h和math.h(2)程序設(shè)計(jì): a.順序計(jì)算

#include #include void main(){ double sum=0;int n=1;while(1){

sum=sum+(1/pow(n,2));

if(n%1000==0)printf(“sun[%d]=%-30f”,n,sum);

if(n>=10000)break;

n++;} printf(“sum[%d]=%fn”,n,sum);} b.逆序計(jì)算

#include #include void main(){ double sum=0;int n=10000;

while(n!=0){

sum=sum+(1/pow(n,2));

if(n%200==0)

printf(“sum[%d]=%-10f”,n,sum);

if(n<1)break;

n--;} printf(“sum[%d]=%fn”,n,sum);}

(3)實(shí)驗(yàn)結(jié)果及分析: 程序運(yùn)行結(jié)果: a.順序計(jì)算

b.逆序計(jì)算

結(jié)果分析:兩種不同順序計(jì)算結(jié)果是一樣的,順序計(jì)算誤差從一開始就很小,而逆序計(jì)算誤差最開始十分大,后來結(jié)果正確。

2、已知連分?jǐn)?shù)f?b0?(1)實(shí)驗(yàn)步驟: 利用 dn?bn,di?bi?a1,計(jì)算f:

b1?a2/?b2?a3/(...?an/bn)?ai?1,0

(i?n?1,n?2,...,f?d0,計(jì)算f

di?1(2)程序設(shè)計(jì) #include #include void main(){ int i=0,n;float a[100],b[100],c[100];printf(“please input n=”);scanf(“%d”,&n);

printf(“nplease input a[0] to a[n-1]:n”);for(i=1;i

printf(“a[%d]=”,i);

scanf(“%f”,&a[i]);}

printf(“nplease input b[0] to b[n-1]:n”);for(i=0;i

printf(“b[%d]=”,i);

scanf(“%f”,&b[i]);}

d[n]=b[n];for(i=n-1;i>=0;i--)

c[i]=b[i]+a[i+1]/c[i+1];printf(“nf=%fn”,c[0]);}(3)實(shí)驗(yàn)結(jié)果 程序運(yùn)行結(jié)果:

3、給出一個有效的算法和一個無效的算法計(jì)算積分

xnyn??dx

(n?0,1,..., 104x?11(1)實(shí)驗(yàn)步驟

利用C語言編寫程序,分別使用數(shù)值穩(wěn)定的和數(shù)值不穩(wěn)定的計(jì)算公式所建立的遞推公式進(jìn)行計(jì)算。

(2)程序設(shè)計(jì) #include #include main(){ double y_0=(1/4.0)*log(5),y_1;double y_2=(1.0/55.0+1.0/11.0)/2,y_3;int n=1,m=10;printf(“有效算法輸出結(jié)果:n”);printf(“y[0]=%-20f”,y_0);while(1){

y_1=1.0/(4*n)+y_0/(-4.0);

printf(“y[%d]=%-20f”,n,y_1);

if(n>=10)break;

y_0=y_1;

n++;

if(n%3==0)printf(“n”);} printf(“n無效算法的輸出結(jié)果:n”);printf(“y[10]=%-20f”,y_2);while(1){

y_3=1.0/n-4.0*y_2;

printf(“y[%d]=%-20f”,m-1,y_3);

if(m<=1)break;

y_2=y_3;

m--;

if(m%2==0)printf(“n”);} }(3)實(shí)驗(yàn)結(jié)果及分析 程序運(yùn)行結(jié)果:

結(jié)果分析:無效算法數(shù)值不穩(wěn)定,誤差造成的影響特別大

4、設(shè)SN?

?j?2N11?311?,已知其精確值為????

2?2NN?1?j2?1(1)實(shí)驗(yàn)步驟

先編程按從大到小的順序計(jì)算SN的程序,再編程按從小到大的順序計(jì)算SN的程序,然后按兩種順序分別計(jì)算S1000,S10000,S30000。(2)程序設(shè)計(jì) #include main(){

int N;double SN[30000];SN[30000]=(3.0/2.0-1.0/30000.0-1/30001.0)/2.0;

for(N=30000;N>=2;N--)

SN[N-1]=SN[N]-1.0/(N*N-1);printf(“從大到小順序計(jì)算nSN[1000]=%fnSN[10000]=%fnSN[30000]=%fn”,SN[1000],SN[10000],SN[30000]);

SN[2]=(3.0/2-1.0/2.0-1/3.0)/2.0;for(N=3;N<=30000;N++)

SN[N]=SN[N-1]+1.0/(N*N-1);printf(“從小到大順序計(jì)算nSN[1000]=%fnSN[10000]=%fnSN[30000]=%fn”,SN[1000],SN[10000],SN[30000]);}(3)實(shí)驗(yàn)結(jié)果及分析 程序運(yùn)行結(jié)果:

結(jié)果分析:不同順序計(jì)算所得結(jié)果是一樣的。

四、總結(jié)

通過這次上機(jī),學(xué)習(xí)了解了舍入誤差在不同算法時對結(jié)果的影響不同,穩(wěn)定的算法才能獲得正確的結(jié)果。

習(xí)題二:

一、實(shí)驗(yàn)?zāi)康?/p>

(1)通過對二分法與牛頓迭代法做編程練習(xí)和上機(jī)運(yùn)算,進(jìn)一步體會二分法和牛頓法的不同。

(2)編寫割線迭代法的程序,求非線性方程的解,并與牛頓迭代法作比較。

二、實(shí)驗(yàn)內(nèi)容

1、用牛頓法求下列方程的根(1)x?e?0

(2)xe?1?0(3)lgx?x?2?0

2、編寫割線法程序求解第一問的方程

三、實(shí)驗(yàn)步驟、程序設(shè)計(jì)、實(shí)驗(yàn)結(jié)果及分析

1、牛頓法(1)實(shí)驗(yàn)步驟

通過定義牛頓法求方程的子函數(shù),用main函數(shù)調(diào)用子函數(shù)求根(2)程序設(shè)計(jì) #include #include typedef float(*p)(float);

float ff1(float x){

return x*x-exp(x);} x2xfloat ff2(float x){

return x*exp(x)-1;} float ff3(float x){

return log(x)+x-2;} float

answer(float(*p)(float)){

int k=2;

float m=1,n=-1,x2,a,b,c;

if(p==ff3)n=2;

printf(“x[0] = %.4f, x[1] = %.4f, ”,m,n);

while(1)

{

if(fabs(m-n)<1e-4)break;

a=p(n)*(n-m);

b=p(n)-p(m);

c=a/b;

x2=n-c;

m = n;

n = x2;

printf(“x[%d] = %.4f, ”,k,x2);

k++;

if(k%3==0)printf(“n”);

}

if(k%3!=0)printf(“n”);

printf(“iteration times: %d, roots: %.4fn ”,k-2,n);return 0;} main(){ printf(“x*x-exp(x),n”);answer(ff1);printf(“x*exp(x)-1,n”);answer(ff2);printf(“l(fā)g(x)+x-2,n”);answer(ff3);return 0;}(3)實(shí)驗(yàn)結(jié)果及分析

2、割線法(1)程序設(shè)計(jì) #include #include float gexian(float,float);float f(float);main(){

int i,j;

float x1=2.2;

float x2=2,x3;

scanf(“%d”,&i);

if(i==1)printf(“%f”,x1);

else if(i==2)printf(“%f”,x2);

else

{

for(j=3;j<=i;j++)

{

x3=gexian(x1,x2);

x1=x2;

x2=x3;

}

printf(“%f”,gexian(x1,x2));

} } float f(float x){ return(x*x-exp(x));}

float gexian(float x1,float x2){ return(x2-(f(x2)/(f(x2)-f(x1)))*(x2-x1));}(3)實(shí)驗(yàn)結(jié)果及分析

四、總結(jié)

了解和學(xué)習(xí)了二分法和牛頓迭代法的思想以及程序設(shè)計(jì)的方法,比較了迭代法和牛頓法的特點(diǎn):牛頓法收斂速度較快,但對初值選取要求較高;割線法計(jì)算量少。

習(xí)題三: 線性方程組數(shù)值解法

一、實(shí)驗(yàn)?zāi)康?/p>

(1)熟悉求解線性方程組的有關(guān)理論和方法;

(2)會編制列主元消去法,LU分解法,雅可比及高斯-賽德爾迭代法的程序;(3)通過實(shí)際計(jì)算,進(jìn)一步了解各種方法的優(yōu)缺點(diǎn),選擇合適的數(shù)值方法。

二、實(shí)驗(yàn)內(nèi)容

1、用列主元消去法解方程組

2、用LU分解法解方程組

三、實(shí)驗(yàn)步驟、程序設(shè)計(jì)、實(shí)驗(yàn)結(jié)果及分析

1、用列主元消去法解方程組(1)程序設(shè)計(jì) #include #include void ColPivot(float*,int,float[]);void ColPivot(float*c,int n,float x[]){ int i,j,t,k;float p;for(i=0;i<=n-2;i++){

k=i;

for(j=i+1;j<=n-1;j++)

if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))

k=j;

if(k!=i)

for(j=i;j<=n;j++)

{

p=*(c+i*(n+1)+j);

*(c+i*(n+1)+j)=*(c+k*(n+1)+j);

*(c+k*(n+1)+j)=p;

}

for(j=i+1;j<=n-1;j++)

{

p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));

for(t=i;t<=n;t++)

*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));

} } for(i=n-1;i>=0;i--){

for(j=n-1;j>=i+1;j--)

(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));

x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));} } void main(){ int i;float x[4];float c[4][5]={1,1,0,3,4,2,1,-1,1,1,3,-1,-1,3,-3,-1,2,3,-1,4};

ColPivot(c[0],4,x);for(i=0;i<=3;i++)

printf(“x[%d]=%fn”,i,x[i]);}(2)實(shí)驗(yàn)結(jié)果及分析

(1)題

(2)題

2、用LU分解法解方程組(1)程序設(shè)計(jì) #include void main(){ float x[4];int i;float a[4][5]={48,-24,0,-12,4,-24,24,12,12,4,0,6,20,2,-2,-6,6,2,16,-2 };void DirectLU(float*,int,float[]);DirectLU(a[0],4,x);for(i=0;i<=3;i++)printf(“x[%d]=%fn”,i,x[i]);} void DirectLU(float*u,int n,float x[]){ int i,r,k;for(r=0;r<=n-1;r++){

for(i=r;r<=n;i++)

for(k=0;k<=r-1;k++)

*(u+r*(n+1)+i)-=*(u+r*(n+1)+k)*(*(u+k*(n+1)+i));

for(i=r+1;i<=n-1;i++)

{

for(k=0;k<=r-1;k++)

*(u+i*(n+1)+r)-=*(u+i*(n+1)+k)*(*(u+k*(n+1)+r));

*(u+i*(n+1)+r)/=*(u+r*(n+1)+r);

}

} for(i=n-1;i>=0;i--){

for(r=n-1;r>=i+1;r--)

*(u+i*(n+1)+n)-=*(u+i*(n+1)+r)*x[r];

x[i]=*(u+i*(n+1)+n)/(*(u+i*(n+1)+i));} }

四、總結(jié)

掌握了用列主元消去法和LU分解法求解方程組程序編寫的技巧。

習(xí)題四: 插值法

一、實(shí)驗(yàn)?zāi)康?/p>

(1)熟悉拉格朗日插值法多項(xiàng)式和牛頓插值多項(xiàng)式,注意其不同點(diǎn);(2)掌握三次樣條插值解決一些實(shí)際問題。

二、實(shí)驗(yàn)內(nèi)容

1、按所給數(shù)據(jù)做二次插值,并求給定點(diǎn)的函數(shù)值

2、按所給數(shù)據(jù)做五次插值,并求給定點(diǎn)的函數(shù)值

3、牛頓前插公式計(jì)算函數(shù)值

三、實(shí)驗(yàn)步驟、程序設(shè)計(jì)、實(shí)驗(yàn)結(jié)果及分析

1、二次插值(1)程序設(shè)計(jì) #include float Lagrange(float x[],float y[],float xx,int n)

//n為(n+1)次插值; { int i,j;float *a,yy=0;

a=new float[n];for(i=0;i<=n-1;i++){

a[i]=y[i];

for(j=0;j<=n-1;j++)

if(j!=i)a[i]*=(xx-x[j])/(x[i]-x[j]);

yy+=a[i];} delete a;return yy;} void main(){ float x[5]={-3.0,-1.0,1.0,2.0,3.0};float y[5]={1.0,1.5,2.0,2.0,1.0};float xx1=-2,xx2=0,xx3=2.75,yy1,yy2,yy3;yy1=Lagrange(x,y,xx1,3);yy2=Lagrange(x,y,xx2,3);yy3=Lagrange(x,y,xx3,3);printf(“x1=%-20f,y1=%fn”,xx1,yy1);printf(“x2=%-20f,y2=%fn”,xx2,yy2);printf(“x3=%-20f,y3=%fn”,xx3,yy3);}(2)實(shí)驗(yàn)結(jié)果

2、五次插值(1)程序設(shè)計(jì) #include float Lagrange(float x[],float y[],float xx,int n)

//n為(n+1)次插值; { int i,j;float *a,yy=0;

a=new float[n];for(i=0;i<=n-1;i++){

a[i]=y[i];

for(j=0;j<=n-1;j++)

if(j!=i)a[i]*=(xx-x[j])/(x[i]-x[j]);

yy+=a[i];} delete a;return yy;} void main(){ float x[6]={0.30,0.42,0.50,0.58,0.66,0.72};float y[6]={1.04403,1.08462,1.11803,1.15603,1.19817,1.23223};float xx1=0.46,xx2=0.55,xx3=0.60,yy1,yy2,yy3;yy1=Lagrange(x,y,xx1,6);yy2=Lagrange(x,y,xx2,6);

yy3=Lagrange(x,y,xx3,6);printf(“x1=%-20f,y1=%fn”,xx1,yy1);printf(“x2=%-20f,y2=%fn”,xx2,yy2);printf(“x3=%-20f,y3=%fn”,xx3,yy3);}

(2)實(shí)驗(yàn)結(jié)果

3、牛頓前插公式計(jì)算函數(shù)值(1)程序設(shè)計(jì) #include #define N 3 void Difference(float y[],float f[4][4],int n){

int k,i;f[0][0]=y[0];f[1][0]=y[1];f[2][0]=y[2];f[3][0]=y[3];for(k=1;k<=n;k++)

for(i=0;i<=(N-k);i++)

f[i][k]=f[i+1][k-1]-f[i][k-1];return;} void main(){ int i,k=1;float a,b=1,m=21.4,t=1.4,f[4][4]={0};float x[5]={20,21,22,23,24};float y[5]={1.30103,1.32222,1.34242,1.36173,1.38021};Difference(y,f,N);a=f[0][0];for(i=1;i<=N;i++){

k=k*i;

b=b*(t-i+1);

a=a+b*f[0][i]/k;} printf(“x(k)n”);for(i=0;i<=4;i++)

printf(“%-20f”,x[i]);printf(“ny(k)n”);

for(i=0;i<=4;i++)

printf(“%-20f”,y[i]);for(k=1;k<=3;k++){

printf(“nF(%d)n ”,k);

for(i=0;i<=(3-k);i++)

{

printf(“%-20f”,f[i][k]);

} } printf(“n”);printf(“f(%f)=%-20f”,m,a);printf(“n”);}(2)實(shí)驗(yàn)結(jié)果

四、總結(jié)

學(xué)習(xí)了插值法,學(xué)會了利用插值法編程求多項(xiàng)式的解,可以求解很多問題,讓求解多項(xiàng)式解變得非常簡單。

習(xí)題五: 曲線擬合

一、實(shí)驗(yàn)?zāi)康?/p>

(1)了解最小二乘法的基本原理,通過計(jì)算機(jī)解決實(shí)際問題;(2)了解超定方程組的最小二乘解法。

二、實(shí)驗(yàn)內(nèi)容

1、分別用拋物線y?a?bx?cx2和指數(shù)曲線y?aebx擬合所給數(shù)據(jù),并比較這兩個擬合函數(shù)的優(yōu)劣。

2、按所給實(shí)驗(yàn)數(shù)據(jù),用形如y?a?bx的拋物線進(jìn)行最小二乘擬合。

三、程序設(shè)計(jì)、結(jié)果分析

1、分別用拋物線y?a?bx?cx和指數(shù)曲線y?ae擬合所給數(shù)據(jù) a.拋物線

(1)程序設(shè)計(jì): #include #include void main(){ int i;float a[3];float x[15]={1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8};

2bx2 float y[15]={33.4,79.50,122.65,159.05,189.15,214.15,238.65,252.50,267.55,280.50,296.65,301.40,310.40,318.15,325.15};void Approx(float[],float[],int,int,float[]);Approx(x,y,15,2,a);for(i=0;i<=2;i++)

printf(“a[%d]=%fn”,i,a[i]);} void Approx(float x[],float y[],int m,int n,float a[]){ int i,j,t;float *c=new float[(n+1)*(n+2)];float power(int,float);void ColPivot(float *,int,float[]);for(i=0;i<=n;i++){

for(j=0;j<=n;j++)

{

*(c+i*(n+2)+j)=0;

for(t=0;t<=m-1;t++)

*(c+i*(n+2)+j)+=power(i+j,x[t]);

}

*(c+i*(n+2)+n+1)=0;

for(j=0;j<=m-1;j++)

*(c+i*(n+2)+n+1)+=y[j]*power(i,x[j]);} ColPivot(c,n+1,a);delete c;}

void ColPivot(float *c,int n,float x[]){ int i,j,t,k;float p;for(i=0;i<=n-2;i++){

k=i;

for(j=i+1;j<=n-1;j++)

if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))

k=j;

if(k!=i)

for(j=i;j<=n;j++)

{

p=*(c+i*(n+1)+j);

*(c+i*(n+1)+j)=*(c+k*(n+1)+j);

*(c+k*(n+1)+j)=p;

}

for(j=i+1;j<=n-1;j++)

{

p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));

for(t=i;t<=n;t++)*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));

} } for(i=n-1;i>=0;i--){

for(j=n-1;j>=i+1;j--)

(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));

x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));} }

float power(int i,float v){ float a=1;while(i--)a*=v;return a;}(2)實(shí)驗(yàn)結(jié)果

2、最小二乘擬合(1)程序設(shè)計(jì) #include #include void main(){ int i,n;float a[2];float x[15]={1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8},z[15];float y[15]={33.4,79.50,122.65,159.05,189.15,214.15,238.65,252.50,267.55,280.50,296.65,301.40,310.40,318.15,325.15};for(n=0;n<=14;n++)

//增加了數(shù)組z;

{z[n]=log(y[n]/x[n]);} void Approx(float[],float[],int,int,float[]);Approx(x,z,15,1,a);

//變成一次擬合;

//for(i=0;i<=1;i++)

//printf(“a[%d]=%fn”,i,a[i]);printf(“a=exp(a[0])=%fn”,exp(a[0]));printf(“b=-a[1]=%fn”,-a[1]);} void Approx(float x[],float y[],int m,int n,float a[]){ int i,j,t;float *c=new float[(n+1)*(n+2)];float power(int,float);void ColPivot(float *,int,float[]);for(i=0;i<=n;i++){

for(j=0;j<=n;j++)

{

*(c+i*(n+2)+j)=0;

for(t=0;t<=m-1;t++)

*(c+i*(n+2)+j)+=power(i+j,x[t]);

}

*(c+i*(n+2)+n+1)=0;

for(j=0;j<=m-1;j++)

*(c+i*(n+2)+n+1)+=y[j]*power(i,x[j]);} ColPivot(c,n+1,a);delete c;}

void ColPivot(float *c,int n,float x[]){ int i,j,t,k;float p;for(i=0;i<=n-2;i++){

k=i;

for(j=i+1;j<=n-1;j++)

if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))

k=j;

if(k!=i)

for(j=i;j<=n;j++)

{

p=*(c+i*(n+1)+j);

*(c+i*(n+1)+j)=*(c+k*(n+1)+j);

*(c+k*(n+1)+j)=p;

}

for(j=i+1;j<=n-1;j++)

{

p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));

for(t=i;t<=n;t++)*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));

} } for(i=n-1;i>=0;i--){

for(j=n-1;j>=i+1;j--)

(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));

x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));} }

float power(int i,float v){ float a=1;while(i--)a*=v;return a;}(2)實(shí)驗(yàn)結(jié)果

四、總結(jié)

通過曲線擬合,最小二乘法的基本原理的學(xué)習(xí),我學(xué)會了利用計(jì)算機(jī)解決現(xiàn)實(shí)實(shí)際問題中的曲線擬合。

習(xí)題六: 數(shù)值積分

一、實(shí)驗(yàn)?zāi)康?/p>

(1)通過實(shí)際計(jì)算體會各種方法的精確度;(2)會編寫用龍貝格算法求定積分的程序。

二、實(shí)驗(yàn)內(nèi)容

編寫復(fù)化柯特斯求積分公式,并計(jì)算例題1例題2,觀察n為多少時有6位有效數(shù)字。

三、程序設(shè)計(jì)、實(shí)驗(yàn)結(jié)果及分析(1)程序設(shè)計(jì) #include #include float Cotes(float(*f)(float),float a,float b,int n){ int k;float c,c1=0,c2,c3,c4;float h=(b-a)/n;c2=(*f)(a+h/4);c3=(*f)(a+h/2);c4=(*f)(a+3*h/4);for(k=1;k<=n-1;k++){

c1+=(*f)(a+k*h);

c2+=(*f)(a+k*h+h/4);

c3+=(*f)(a+k*h+h/2);

c4+=(*f)(a+k*h+3*h/4);} c=h/90*(7*((*f)(a)+(*f)(b))+14*c1+32*c2+12*c3+32*c4);return c;} float f(float x){ return 1/sqrt(1+x*x*x);} void main(){ int i,n=4;float c;for(i=0;i<=4;i++){

c=Cotes(f,0,1,n);

printf(“C(%d)=%fn”,n,c);

n*=2;} } #include #include float Cotes(float(*f)(float),float a,float b,int n){ int k;float c,c1=0,c2,c3,c4;float h=(b-a)/n;c2=(*f)(a+h/4);c3=(*f)(a+h/2);c4=(*f)(a+3*h/4);for(k=1;k<=n-1;k++){

c1+=(*f)(a+k*h);

c2+=(*f)(a+k*h+h/4);

c3+=(*f)(a+k*h+h/2);

c4+=(*f)(a+k*h+3*h/4);} c=h/90*(7*((*f)(a)+(*f)(b))+14*c1+32*c2+12*c3+32*c4);return c;} float f(float x){ // return 1/sqrt(1+x*x*x);

if(x==0)return 1;

else return sin(x)/x;} void main(){ int i,n=4;float c;for(i=0;i<=4;i++){ // c=Cotes(f,0,1,n);

c=Cotes(f,0,5,n);

printf(“C(%d)=%fn”,n,c);

n*=2;} }

(2)實(shí)驗(yàn)結(jié)果及分析

四、總結(jié)

學(xué)習(xí)了復(fù)化辛卜生公式,自適應(yīng)梯形公式,龍貝格算法,運(yùn)用求解定積分并控制精度的方法。

習(xí)題七: 常微分方程數(shù)值解法

一、實(shí)驗(yàn)?zāi)康?/p>

(1)熟悉求解常微分方程初值問題的有關(guān)方法和理論,主要是改進(jìn)歐拉公式,四階龍格-庫塔法和阿當(dāng)姆斯方法;

(2)編制上述方法計(jì)算機(jī)程序,包括求解微分方程組的計(jì)算程序;(3)針對實(shí)習(xí)題編制程序,并上機(jī)計(jì)算其所需要的結(jié)果;

(4)體會各種解法的功能,優(yōu)缺點(diǎn)及適用場合,會選取適當(dāng)?shù)那蠼夥椒ā?/p>

二、實(shí)驗(yàn)內(nèi)容

1、分別用改進(jìn)歐拉法與四階龍格-庫塔公式(取h?0.1)求解下列微分方程初值問題

2、用四階龍格-庫塔公式(取h?0.1)解下列微分方程組初值問題

三、實(shí)驗(yàn)步驟、程序設(shè)計(jì)、實(shí)驗(yàn)結(jié)果及分析

1、分別用改進(jìn)歐拉法與四階龍格-庫塔公式(取h?0.1)求解下列微分方程初值問題 a.改進(jìn)歐拉法(1)程序設(shè)計(jì) #include void ModEuler(float(*f)(float,float),float x0,float y0,float xn,int n){ int i;float yp,yc,x=x0,y=y0,h=(xn-x0)/n;printf(“x[0]=%fty[0]=%fn”,x,y);for(i=1;i<=n;i++){

yp=y+h*(*f)(x,y);

x=x0+i*h;

yc=y+h*(*f)(x,yp);

y=(yp+yc)/2;

printf(“x[%d]=%fty[%d]=%fn”,i,x,i,y);} } float f(float x,float y){ //return x*x+y*y;

//題(1)

//return 1/(1+y*y);

//題(2)

return y-2*x/y;

//題(3)} void main(){ float xn=1.0,x0=0,y0=1;

ModEuler(f,x0,y0,xn,10);}

(2)實(shí)驗(yàn)結(jié)果及分析(1)

(2)

(3)

b.四階龍格-庫塔公式(1)程序設(shè)計(jì) #include void Runge_Kutta(float(*f)(float x,float y),float a,float b,float y0,int N){ float x=a,y=y0,K1,K2,K3,K4;float h=(b-a)/N;int i;printf(“x[0]=%fty[0]=%fn”,x,y);for(i=1;i<=N;i++){

K1=(*f)(x,y);

K2=(*f)(x+h/2,y+h*K1/2);

K3=(*f)(x+h/2,y+h*K2/2);

K4=(*f)(x+h,y+h*K3);

y=y+h*(K1+2*K2+2*K3+K4)/6;

x=a+i*h;

printf(“x[%d]=%fty[%d]=%fn”,i,x,i,y);} } float f(float x,float y){ //return x*x+y*y;

//題(1)

//return 1/(1+y*y);

//題(2)

return y-2*x/y;

//題(3)} void main(){ float a=0,b=1.0,y0=1;Runge_Kutta(f,a,b,y0,10);}(2)實(shí)驗(yàn)結(jié)果(1)

(2)

(3)

2、四階龍格-庫塔公式解微分方程組初值問題(1)程序設(shè)計(jì) #include void Runge_Kutta(float(*f)(float x,float y,float z),float(*g)(float x,float y,float z),float a,float b,float y0,float g0,int N){ float x=a,y=y0,z=g0,K1,K2,K3,K4,l1,l2,l3,l4;float h=(b-a)/N;int i;printf(“x[0]=%fty1[0]=%fty2[0]=%fn”,x,y,z);for(i=1;i<=N;i++){

K1=(*f)(x,y,z);l1=(*g)(x,y,z);

K2=(*f)(x+h/2,y+h*K1/2,z+h*l1/2);l2=(*g)(x+h/2,y+h*K1/2,z+h*l1/2);

K3=(*f)(x+h/2,y+h*K2/2,z+h*l2/2);l3=(*g)(x+h/2,y+h*K2/2,z+h*l2/2);

K4=(*f)(x+h,y+h*K3,z+h*l3);l4=(*g)(x+h,y+h*K3,z+h*l3);

y=y+h*(K1+2*K2+2*K3+K4)/6;

z=z+h*(l1+2*l2+2*l3+l4)/6;

x=a+i*h;

printf(“x[%d]=%fty[%d]=%ftz[%d]=%fn”,i,x,i,y,i,z);} } float f(float x,float y,float z){

return 120-2*y+2*z;

} float g(float x,float y,float z){

return 2*y-5*z;

} void main(){ float a=0,b=1.0,y0=0,g0=0;Runge_Kutta(f,g,a,b,y0,g0,10);}

(2)實(shí)驗(yàn)結(jié)果

四、總結(jié)

通過這次學(xué)習(xí),我掌握了根據(jù)不同場合選擇不同方法計(jì)算求解問題的方法,主要學(xué)習(xí)了改進(jìn)歐拉法和四階龍格-庫塔法求解微分方程的求解問題方法。

計(jì)算方法上機(jī)匯總:

通過對這門課的學(xué)習(xí),我們學(xué)習(xí)了很多計(jì)算方程、曲線擬合、求解微分方程的方法。而實(shí)習(xí)

課讓我們將所學(xué)的原理應(yīng)用到實(shí)踐中去,上機(jī)編寫程序的過程中我們不斷的運(yùn)用已學(xué)知識,掌握了求解各種實(shí)際問題的方法,并且體會了不同的方法的不同結(jié)果,從而在不同的場合,要用合適的計(jì)算方法來求解問題。我們求解的問題包括誤差分析,線性方程組的求解,微分方程的求解等問題。在選擇合適的計(jì)算方法的時候要考慮方法的收斂性,穩(wěn)定性,以及哪種方法計(jì)算速度快,最終結(jié)果誤差小。這門課與計(jì)算機(jī)密切結(jié)合并且實(shí)用性極強(qiáng),能夠?qū)⑺鶎W(xué)的知識在實(shí)踐中得到應(yīng)用,加強(qiáng)了我對專業(yè)學(xué)習(xí)的信心。

參考文獻(xiàn):

【1】孫志忠.計(jì)算方法典型例題分析.第二版.北京:科學(xué)出版社,2005 【2】孫志忠,袁慰平,計(jì)算方法與實(shí)習(xí).第二版.南京:東南大學(xué)出版社,2011 【3】譚浩強(qiáng).C程序設(shè)計(jì).第四版.北京:清華大學(xué)出版社,2010 ◆ 《數(shù)值計(jì)算方法》 合肥工業(yè)大學(xué)數(shù)學(xué)與信息科學(xué)系 編 合肥工業(yè)大學(xué)出版社 ◆ 《計(jì)算方法》 鄧建中等編,西安交大出版社,1985。

◆ 《數(shù)值計(jì)算和C程序集》蔣長錦編著,中國科學(xué)技術(shù)大學(xué)出版社,1998。◆ 《計(jì)算方法引論》徐萃薇編,高等教育出版社,1999。

◆ 黃友謙,程詩杰,陳浙鵬,《數(shù)值試驗(yàn)》,北京:高等教育出版社,1989

◆ 蔡大用,《數(shù)值分析與實(shí)驗(yàn)學(xué)習(xí)指導(dǎo)》,北京:清華大學(xué)出版社與施普林格出版社,2001 ◆ 肖筱南,《值計(jì)算方法與上機(jī)實(shí)習(xí)指導(dǎo)》,北京:北京大學(xué)出版社,2004

A.Quarteroni, R.Sacco, F.Saleri,《Numerical Mathematics》, New York:Springer-Verlag, 2000

第二篇:計(jì)算方法上機(jī)實(shí)驗(yàn)

龍格-庫塔

#include

#include

float function(float x,float y)

{

return(0-(y*y));//f(x,y)μ?±í′?ê? }

int main()

{

float x0,x1,y0,y1,k1,k2,k3,k4,a,b,c,n,h;int i;

scanf(“%f %f %f %f”,&a,&b,&c,&n);x0=a;

y0=c;

h=(b-a)/n;

for(i=1;i<=n;i++)

{

k1=h*function(x0,y0);

k2=h*function(x0+h/2,y0+k1/2);k3=h*function(x0+h/2,y0+k2/2);k4=h*function(x0+h,y0+k3);x1=x0+h;

y1=y0+(k1+2*k2+2*k3+k4)/6;

printf(“x%d=%f,y%d=%fn”,i,x1,i,y1);x0=x1;

y0=y1;

}

return 0;

}

拉格朗日

#include

#include

#include

#define maxlength 500

#define pi 3.14***

floata[maxlength],f[maxlength];

float n;

floatlagrange(floata[],floatf[],float x,int n)

{

int k=0,j;

floaty=0.0,l;

while(k<=n)

{

l=1.0;

// printf(“%lfn”,y);

for(j=0;j<=n;j++)

{

if(j!=k)

{

l=l*(x-a[j])/(a[k]-a[j]);// printf(“%lfn”,l);

}

}

//printf(“%lfn”,f[k]);

// printf(“%lfn”,l);

y=y+l*f[k];

k++;

}

printf(“x=%f,y=%fn”,x,y);

return y;

}

float fx1(floatx)

{

return(1/(1+x*x));

}

floatfx2(floatx)

{

return exp(x);

}

floatfx3(float x)

{

return sqrt(x);

}

void math1(float c,float n)

{

int i=0;

float h;

h=2*c/n;

while(i<=n)

{

a[i]=i*h-5;

i++;

}

}

void math2()

{

int i=0;

while(i<=n)

{

a[i]=cos((2*i+1)*pi/2/(n+1));

i++;

}

}

int main()

{

n=20;

int i;

math1(5,n);

for(i=0;i<=n;i++)

{

f[i]=fx1(a[i])

}

lagrange(a,f,0.75,n);

return 0;

}

龍貝格

#include

#include

#include

double t[1000],r[1000];

double f(double x)

{

return(x*x*exp(x));

}

int main()

{

double h,a,b,e;

int i,N,m;

scanf(“%lf,%lf,%d,%lf”,&a,&b,&N,&e);

h=b-a;

m=0;

t[1]=0.5*h*(f(a)+f(b));

printf(“%lf”,t[1]);

r[0]=t[0];

while(1)

{

printf(“n”);

for(i=0;i<((m<4)?m:4);i++)

t[i]=r[i];

m++;

h=h/2;

r[0]=t[0]/2;

for(i=1;i<=pow(2,m);i++)

r[0]+=h*f(a+(i-0.5)*h)/2;

printf(“%lf”,r[0]);

r[1]=(4*r[0]-t[0])/3;

printf(“ %lf”,r[1]);

if(m==1)

continue;

r[2]=(16*r[1]-t[1])/15;

printf(“ %lf”,r[2]);

if(m==2)

continue;

r[3]=(64*r[2]-t[2])/63;

printf(“ %lf”,r[3]);

if(m==3)

continue;

if((fabs(r[3]-t[3])<=e)||(m==N))

break;

}

printf(“nthe current time is :%dn”,m);

return 0;

}

牛頓

#include

#include

#include

double function(double point)

{

return(point*point-2*point*exp(-point)+exp(-2*point));

}

double d_function(double point)

{

return(2*point+2*point*exp(-point)-2*exp(-point)-2*exp(-2*point));}

int main()

{

double beginner,error1,error2;

int max_times=0;

beginner=error1=error2=0;

scanf(“%lf %lf %lf %d”,&beginner,&error1,&error2,&max_times);int current_times=0;

while(current_times<=max_times)

{

if(fabs(function(beginner))

{

printf(“%lfn”,beginner);

return 0;

}

if(fabs(d_function(beginner))

{

printf(“failuren”);

return 0;

}

beginner=beginner-function(beginner)/d_function(beginner);if(fabs(function(beginner)/d_function(beginner))

printf(“%lfn”,beginner);

return 0;

}

current_times++;

}

printf(“failuren”);

return 0;

}

第三篇:計(jì)算方法上機(jī)實(shí)驗(yàn)報告

《計(jì)算方法》 上機(jī) 實(shí)驗(yàn)報告

級:XXXXXX

小組成員: :XXXXXXX

XXXXXXX

XXXXXXX XXXXXXX

任課教 師:XXX 二〇一八年五月二十五日 前言

通過進(jìn)行多次得上機(jī)實(shí)驗(yàn),我們結(jié)合課本上得內(nèi)容以及老師對我們得指導(dǎo),能夠較為熟練地掌握Newton 迭代法、Jacobi 迭代法、Gauss-Seidel 迭代法、Newton 插值法、Lagrange 插值法與Gauss 求積公式等六種算法得原理與使用方法,并參考課本例題進(jìn)行了 MATLAB 程序得編寫。

以下為本次上機(jī)實(shí)驗(yàn)報告,按照實(shí)驗(yàn)內(nèi)容共分為六部分.實(shí)驗(yàn) 一:

一、實(shí)驗(yàn) 名稱 及題目: :

New tn on 迭代法

例 2、7(P38):應(yīng)用 Newton 迭代法求 在 附近得數(shù)值解,并使其滿足、二、解題 思路:

設(shè)就是得根,選取作為初始近似值,過點(diǎn)做曲線得切線,得方程為,求出與軸交點(diǎn)得橫坐標(biāo),稱為得一次近似值,過點(diǎn)做曲線得切線,求該切線與軸得橫坐標(biāo)稱為得二次近似值,重復(fù)以上過程,得得近似值序列,把稱為得次近似值,這種求解方法就就是牛頓迭代法。

三、b Matlab 程序 代碼:

f f u nc t ion

newt o n_it er r at io n(x 0 ,tol)

syms z % % 定義自變量

f f o rma t

l l on n g

%定義精度

f= = z *z *z z--z z - 1;

f1=diff(f); %求導(dǎo)

y=su b s(f,z ,x0);

y1=s u bs(f 1, , z,x0);% % 向函數(shù)中代值

x1=x0 - y/y1;k=1 ;

w w h il e

abs((x1 1 — x0)〉= = t ol

x x 0 =x1;

y=sub s(f,z, x 0);

y1=sub s((f 1, z, , x 0);

x1 = x0--y /y1 ; k=k+1;

e nd

x =dou b le(x x 1))

四、運(yùn)行 結(jié)果:

實(shí)驗(yàn)二: :

一、實(shí)驗(yàn)名稱 及題目:

Jac ob b i迭代法

例3、7(P74):試?yán)?Jacobi 迭代公式求解方程組

要求數(shù)值解 為方程組得精確解、二、解題思路 :

首先將方程組中得系數(shù)矩陣分解成三部分,即:,為對角陣,為下三角矩陣,為上三角矩陣。之后確定迭代格式,(, 即迭代次數(shù)),稱為迭代矩陣。最后選取初始迭代向量,開始逐次迭代。最后驗(yàn)證精度。(迭代陣:。)雅克比迭代法得優(yōu)點(diǎn)明顯,計(jì)算公式簡單,每迭代一次只需計(jì)算一次矩陣與向量得乘法,且計(jì)算過程中原始矩陣 A 始終不變,比較容易并行計(jì)算.然而這種迭代方式收斂速度較慢,而且占據(jù)得存儲空間較大。

三、Mb atlab 程序代碼: :

functio n

jacob i(A A,b,x0,ep s,x1))

= =

diag(diag(A));% % 求A得對角矩陣

L = —t t ril l(A,--1);% %求 求 A A 得下三角矩陣

U U

=--tr r iu((A, , 1);%求 A A 得上三角矩陣

B = D(L+ U));

f =

D\b;

x = B*x x 0 +f ;

n = 1;% % 迭代次數(shù)

wh ile

no o rm((x — x1)> =eps s

x = B * x+f ;

n =

n+1;

end

format lo ng g

n n

jingdu= n orm(x — x 1)

四、運(yùn)行 結(jié)果:

實(shí)驗(yàn)三: :

一、實(shí)驗(yàn) 名稱及題目: :

Gauss — Seide l

迭代法

例3、8(P75):試?yán)?Gauss-Seidel 迭代公式求解方程 組,并 使 其 數(shù) 值 解為方程組得精確解、二、解題思路: :

Gauss-Seidel迭代法與 Jacobi 迭代法思路相近,首先將方程組中得系數(shù)矩陣分解成三部分,即:,為對角陣,為下三角矩陣,為上三角矩陣.之后確定迭代格式,,(, 即迭代次數(shù)),稱為迭代矩陣。最后選取初始迭代向量,開始逐次迭代。最后驗(yàn)證精度。(迭代陣:.)Gauss—Seidel迭代法與 Jacobi 迭代法相比速度更快,但不全如此。有例子表明:Gauss-Seidel 迭代法收斂時,Jacobi迭代法可能不收斂;而Jacobi迭代法收斂時,Gauss—Seidel 迭代法也可能不收斂。

三、Ma a tl l ab程序代碼:

fu n ctio n

g g a uss_ se e i del(A,b, x0 0,eps,x1)

D = di ag(d iag((A)));% %求 求 A A 得對角矩陣

L L

= =

-t ri l((A,— 1);;%求 A A 得下三角矩陣

U U

= — triu(A,1);%求 A A 得上三角矩陣

B =(D -L))U;

f f

=(D D — L))b;

= =

B B * x0+ f;;

n = 1;% % 迭代次數(shù)

w hil e

norm(x1--x)>=eps

x = B*x+f;

n = n+1;

e nd

format lon g

n n

x x

j j i ngdu=norm(x1 — x)

四、運(yùn)行 結(jié)果: :

實(shí)驗(yàn) 四: :

一、實(shí)驗(yàn) 名稱及題目: :

Lagra n ge

插值法

例 4、1(P88): 給 定 函 數(shù) 及 插 值 節(jié) 點(diǎn)、試構(gòu)造 Lagrange 插值多項(xiàng)式,給出其誤差估計(jì),并由此計(jì)算 及其誤差、二、解題思路: :

一般來說,如果我們有個點(diǎn),各互不相同。那么應(yīng)用拉格朗日插值公式所得到得拉格朗日插值多項(xiàng)式為:,其中每個為拉格朗日基本多項(xiàng)式(或稱插值基函數(shù)),其表達(dá)式為:。

三、Matl ab b 程序代碼: :

f f u nctio n

y y = lagrange(x 0,x)

n=lengt h(x0);% % 向量長度

s= 0;

f or

k=1:nk %k 從 從 1 1 到 到 n n 得循環(huán)

p=1 1、0;

for

j= 1 :n

if

j j ~ =k %“ ~= ”不等于得意思

p =p*(x x — x 0(j))/(x0(k)--x0(j));

e nd

en d

y 0= x0((k)*(1+cos(x x 0(k)));;

s= p*y 0+ s;;

end

format lon g

wu ch a =a b s(x*((1 +c o s(x)))--s)

四、運(yùn)行結(jié)果 :、五、Lagran ge e插值圖像繪制

%Lagrange插值圖像算法

x=linspace(0,1002,200);

s=linspace(0,1000,200);

x0=[0;pi/8;pi/4;3*pi/8;pi/2];

n=length(x0);

s=0;

for k=1:n

p=1、0;

for j=1:n

if j~=k

p=p、*(x-x0(j))/(x0(k)—x0(j));

end

end

y0=x0(k)*(1+cos(x0(k)));

s=p*y0+s;

end

plot(x,s,’r“);

grid on;

title(”Lagrange2??μí???’)

xlabel(’X’),ylabel(“Y”);

axis normal;

實(shí)驗(yàn) 五: :

一、實(shí)驗(yàn) 名稱及題目: :

Ne wt on 插值法

例 4、3(P 96):

已 知 , 試 取 插 值 節(jié) 點(diǎn),構(gòu)造 4 次 Newton 插值多項(xiàng)式,由此計(jì)算 得逼近值,并指出其絕對誤差、二、解題思路: :

將 拉 格 朗 日 插 值 公 式 中 得 改 寫成:))...((...))(()()(1 0 1 0 2 0 1 0 ?? ? ? ? ? ? ? ? ? ?n n nx x x x a x x x x a x x a a x N ,其中,為待 定 定 系 數(shù).又 。

將 帶 入 可得:))...()(](,..., , [...)](, [)()(1 1 0 1 0 0 1 0 0 ?? ? ? ? ? ? ? ?n nx x x x x x x x x f x x x x f x f x f.三、Matl ab b 程序代碼: :

function

newt on _interpol a tion(x 0,x))

f f orm m at(yī) t

lo ng g

n n =l l en gt h((x 0);

syms

f =sq rt t(1+c os h(z)^ 2);

a(1)= sub s(f,z,x 0(1));;

f or

k=1 :n — 1

y0=subs(f,z z,x x 0(k)));

y 1=subs(f, z,x0(k+ 1)));;

d(k,1)

=(y1--y y 0)/(x 0(k +1 1)-x x 0(k k));;%一階差商

e nd

f f or r

j=2: n--1 1

fo r

k k =1 1 :n n —j j

d(k, j)

=(d(k+1,j j — 1))— d(k, j- 1))/(x0((k +j)-x x 0((k));% % 二階差商及以上

en d

end d

d d o uble(d))

for

j =2: n

a(j)=d(1,j — 1);

end

b b(1 1)

=1 ;c c(1)= a(1);

f f or r

j=2 :n n

b b(j)

=(x--x0(j j--1))、*b(j j — 1);;

c(j)=a(j)、*b(j);

e e nd d

n n p =dou b le(su m(c c))

w w u cha=d ou bl e(abs(np--su bs(f ,z,x)))))

四、運(yùn)行結(jié)果: 五、Newton插值 圖 像繪制

實(shí)驗(yàn) 六: :

一、實(shí)驗(yàn) 名稱及題目:

Gauss

求積公式

例 5、7(P140):試構(gòu)造 Gauss 型求積公式,并由此計(jì)算積分、二、解題思路: :

設(shè)高斯-勒讓德求積公式就是:,依次代入,解得.利用換元公式變換原式得積分上下限,在套用高斯—勒讓德求積公式求得積分.三、b Matlab 程序代碼: :

fu u n ct io o n

g aus s(a,b)

sy m s t t

f=sqrt(t t)/(1 + t)^2;

P P =[--s s q rt(3/5)0 sqrt(3 /5)];

A=[ 5/ 9 8/9 5 /9 9 ];

s= 0;

f or

i i = 1:3;

x=P(i);

y=s u bs(f,t,(b--a)* x /2+(a+b b)

/2);;

s=s + A(i)*y;

end

form a t l ong

S= d oub l e((a a — b)/2* s)

四、運(yùn)行結(jié)果: :

結(jié)束語

在本學(xué)期得《計(jì)算方法》課程學(xué)習(xí)中,我們感受到了巧妙得數(shù)學(xué)計(jì)算方法在解決實(shí)際問題中帶來得便利與高效,借助計(jì)算機(jī)解決科學(xué)計(jì)算問題也就是我們當(dāng)代大學(xué)生應(yīng)當(dāng)掌握得必要技能。

在本課程得上機(jī)實(shí)驗(yàn)過程中,我們親自體驗(yàn)了課本中所學(xué)到得算法在計(jì)算機(jī)上得使用,使用計(jì)算機(jī)語言,如MATLAB 與 C 語言等進(jìn)行編程,加深了我們對各類算法及其理論得理解,并進(jìn)一步激發(fā)了我們對《計(jì)算方法》這門課程進(jìn)行持續(xù)學(xué)習(xí)得學(xué)習(xí)興趣。

第四篇:上機(jī)實(shí)習(xí)報告格式

文獻(xiàn)檢索實(shí)習(xí)報告(參考格式)

課程名稱:文獻(xiàn)檢索日期:

學(xué)院:班號:姓名:學(xué)號:

實(shí)驗(yàn)名稱:電子圖書等資源檢索。

實(shí)驗(yàn)?zāi)康模赫莆請D書資源如何檢索和利用,熟悉人名錄或機(jī)構(gòu)名錄的檢索。實(shí)驗(yàn)內(nèi)容:

1、用CALIS檢索你們自己任課教師的編著發(fā)表情況。

2、用超星檢索自己所在專業(yè)的某一方面的圖書出版情況,并采集某一本書的一段文字,一個圖。(以超星為例)

(1).登陸四川理工學(xué)院圖書館主頁。

(2).找到電子資源,點(diǎn)擊進(jìn)入圖書館電子資源界面。

(3).找到熱門資源中的“超星數(shù)字圖書館”,并點(diǎn)擊“本地”,進(jìn)

入超星數(shù)字圖書館。

(4).找到“瀏覽器”,點(diǎn)擊并下載超星星瀏覽器。

(5).下載好“超星星瀏覽器”后就可以瀏覽圖書了。

(6).例如查

3、利用物競化學(xué)品數(shù)據(jù)庫檢索某一具體化學(xué)物質(zhì)的相關(guān)數(shù)據(jù)。

4、用萬方數(shù)據(jù)庫檢索我國某一位院士/科學(xué)家/某學(xué)科領(lǐng)域著名學(xué)者的名錄。

實(shí)習(xí)報告要求:用自己姓名作為文件名稱,將作業(yè)發(fā)送給各班指定的同學(xué)。

第五篇:計(jì)算機(jī)上機(jī)實(shí)習(xí)報告

計(jì)算機(jī)上機(jī)實(shí)習(xí)報告

姓名:張陸浩 班級:高材11001 學(xué)號:201001978 老師:張老師 熊老師 時間:2011年12月24日

一.實(shí)驗(yàn)?zāi)康? 1.熟悉VB 6.0的開發(fā)環(huán)境,掌握基本的編程方法,熟悉用VB語言完成一個應(yīng)用程序的設(shè)計(jì)過程,掌握有關(guān)編輯和調(diào)試程序的方法和技巧;2.主要掌握VB語言中的標(biāo)準(zhǔn)模塊的建立﹑數(shù)據(jù)文件的讀出與寫入、數(shù)組與選擇結(jié)構(gòu)的運(yùn)用,圖形操作等內(nèi)容

3.了解開發(fā)簡單應(yīng)用程序的全過程,包括:分析﹑設(shè)計(jì)﹑編程﹑調(diào)試和編寫報告.二.實(shí)習(xí)要求:

(一)。用記事本新建一個文本文件,將本班M名學(xué)生N門考試課的成績輸入到這個文件中,建議按如下形式存放(注:20=M<=50,5<=N<=8,下文以M=4,N=3為例): 學(xué)號

姓名

英語

數(shù)學(xué)

物理

化學(xué)

VB 1

張陸浩

2

林丹

3

李宗偉

4

李永波

(二)。將N門考試課以及其分?jǐn)?shù)輸入到另一個數(shù)據(jù)文件(文件類型同上題)中,建議以下列形式存放: 編號 課程名稱 課程學(xué)分 1 英語 5.0 2 數(shù)學(xué) 4.5 3 物理 5.0 4 化學(xué) 4.5 5 VB 4.5

(三)。請編寫一個簡單的學(xué)生成績管理程序,以完成以下功能: 1.根據(jù)以上兩文件內(nèi)容分別計(jì)算每個學(xué)生N門課程的加權(quán)平均分(保留兩位小數(shù),四舍五入),按平均分排列名次,平均分相同則名

次并列。用VB創(chuàng)建一個數(shù)據(jù)文件,存放班級的成績表。

2.分別統(tǒng)計(jì)全班每門課的平均分,并計(jì)算各分?jǐn)?shù)段(90分以上;80~89;70~79;60~69;60分以下)的學(xué)生數(shù)。.3.打印每名學(xué)生成績條(并將結(jié)果存放到用VB創(chuàng)建的一個新的數(shù)據(jù)文件中)。

4.顯示所有存在不及格課程的學(xué)生的名單(含學(xué)號,不及格課程名稱,課程的學(xué)分及成績)。

5.屏幕顯示優(yōu)等生名單及打印每門課程成績分布圖。優(yōu)等生條件(只要滿足三個中任一個就可以): a)平均分>=90分

b)名次在本班位于前四名

c)平均分>=85分,并且至少有一門課的成績>=95分

三、實(shí)習(xí)步驟

1、用記事本新建一個學(xué)生成績文本文件(其中包括學(xué)生學(xué)號,成績,姓名,課程及成績)。

2、用記事本新建一個課程學(xué)分文本文件。

3、編輯菜單編輯器:編輯四個可拉式菜單,包括學(xué)生成績、成績處理、成績編輯、畫圖。

4、編輯代碼:分別編輯打印學(xué)生成績和學(xué)分代碼,編輯加權(quán)平均分、各科平均分、分?jǐn)?shù)段、成績條、排名、優(yōu)等生、差等生的代碼,還有畫各科目成績?nèi)藬?shù)圖的代碼。

5、調(diào)試程序代碼并保存。

6、打印代碼。

三.相關(guān)數(shù)據(jù)列表:

(一)。源文件

(1)成績

學(xué)號 姓名 英語 數(shù)學(xué) 物理 化學(xué) VB 1 張陸浩 97 98 97 97 98 2 林丹 92 87 79 91 84 3 李宗偉 75 96 83 75 73 4 李永波 89 93 83 86 82 5 王儀涵 92 79 89 86 80 6 汪鑫 93 65 86 68 84 7 付海峰 94 91 89 92 80 8 湛龍 86 83 88 80 92 9 蓋德 68 79 54 72 71 10 陶菲克 69 76 59 81 75 11 佐佐木 85 83 68 57 71 12 李娜 94 63 62 65 53 13 陳金 86 79 89 94 83 14 蘭洋 91 93 92 89 75 15 小志 95 89 93 86 87 16 棃一名 92 86 83 67 59 17 吳凱飛 67 75 57 82 62 18 江方 93 80 73 76 84 19 胡艷 74 68 58 63 71 20 張繼原 68 95 68 84 93(2).學(xué)分

編號 課程名稱 課程學(xué)分 1 英語 5.0 2 數(shù)學(xué) 4.5 3 物理 5.0 4 化學(xué) 4.5 5 VB 4.5 四.運(yùn)行效果:

(一).學(xué)生管理

(1)打開課程成績及學(xué)分

(2)打開計(jì)算的加權(quán)平均分﹑排名及各科平均分

(三).編輯

(1)打開計(jì)算的各科人數(shù)分布

(2)打開按學(xué)號查找每個學(xué)生的成績 a)輸入要查找學(xué)生的學(xué)號

b)得到該生的成績條

(3)打開查找到的優(yōu)等生信息

(4)打開不及格學(xué)生的分布

(四).成績分布圖

五.實(shí)習(xí)小結(jié)

通過兩個星期的上機(jī)實(shí)習(xí),我體會頗深,不僅表現(xiàn)在VB語言程序設(shè)計(jì)中,而且表現(xiàn)在與人交流和獨(dú)立自主完成任務(wù)的決心中。

本次上機(jī)在VB程序設(shè)計(jì)中我學(xué)會了很多以前不會或根本一點(diǎn)都不懂的東西。比如,在程序設(shè)計(jì)過程中,剛開始我弄不清楚怎樣把編輯的文件讀到VB中,但是通過詢問老師和同學(xué)討論,終于弄清了思路,即先將文件打開,再將數(shù)據(jù)分別放入若干個數(shù)組中,最后再將它讀出來。除此之外,我還明白了變量的作用域?qū)幊痰闹匾院妥舆^程,函數(shù)過程數(shù)據(jù)處理的幫助。而對以前學(xué)的,像選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)等也進(jìn)行了鞏固和運(yùn)用。在數(shù)據(jù)處理和打印的時候進(jìn)行了大量運(yùn)用。為了使程序更人性化化,我還運(yùn)用了msgbox,inputbox等方法,使我對所學(xué)的知識進(jìn)行了綜合的運(yùn)用。

我相信通過這次實(shí)習(xí),我對VB和計(jì)算機(jī)語言都有了更深刻的認(rèn)識。雖然在實(shí)習(xí)的過程中,我發(fā)現(xiàn)了自己在編寫程序中的不足,像思維不夠嚴(yán)密等,但我相信,只要認(rèn)真、努力就一定會有收獲

六.程序代碼

(一).創(chuàng)建標(biāo)準(zhǔn)模塊

Type student “定義變量:student” number As String * 9 name As String * 3 score(1 To 5)As Single average As Single rank As Integer End Type Type class “定義變量:class” num As String * 9 nam As String * 3 scor As Single End Type Public stu()As student, cla()As class, sumscor As Integer, subj()As class Public q(5)As Integer, t(5)As Integer, x(5)As Integer, y(5)As Integer, h(5)As Integer “定義刪除空格函數(shù)” Public Function deletespace(str As String)As String Dim i% i = InStr(str, “ ”)Do While i <> o str = Replace(str, “ ”, “ ”)i = InStr(str, “ ”)Loop deletespace = str End Function Public Sub addave(stu()As student, cou()As course)“定義計(jì)算加 For i = 1 To UBound(stu)權(quán)平均分 Dim jqpj!, x!, y!的子過

x = 0 y = 0 For j = 1 To 5 x = x + cou(j).score y = y + stu(i).score(j)* cou(j).score Next j stu(i).jqpj = y / x Next i End Sub Public Sub mc(stu()As student)“定義計(jì)算排名的子過程” For i = 1 To UBound(stu)stu(i).rank = 0 For j = 1 To UBound(stu)If stu(i).jqpj <= stu(j).jqpj Then stu(i).rank = stu(i).rank + 1 End If Next j Next i End Sub(二).讀取考試成績和課程學(xué)分(1).打開文件

Private Sub studentscore_Click()CommonDialog1.Filter = “文本文件|*.txt” CommonDialog1.ShowOpen Open CommonDialog1.FileName For Input As #1 Line Input #1, str1 Print str1 Do While Not EOF(1)Line Input #1, str str = deletespace(Trim(str))a = Split(str, “ ”)n = n + 1 ReDim Preserve stu(n)stu(n).number = a(0)stu(n).name = a(1)For i = 1 To 5 stu(n).score(i)= a(i + 1)Next i Loop For i = 1 To n Print stu(i).number;Spc(1);stu(i).name;Spc(3);For j = 1 To 5 Print stu(i).score(j);Spc(3);Next j Print Next i Close #1 End Sub Private Sub classrank_Click()CommonDialog2.Filter = “文本文件|*.txt” CommonDialog2.ShowOpen Open CommonDialog2.FileName For Input As #2 Line Input #2, str2 Print str2 sumscor = 0 Do While Not EOF(2)Line Input #2, str3 str3 = deletespace(Trim(str3))b = Split(str3, “ ”)m = m + 1 ReDim Preserve cla(m)cla(m).num = b(0)cla(m).nam = b(1)cla(m).scor = b(2)sumscor = sumscor + Val(cla(m).scor)Loop For k = 1 To m Print cla(k).num;Spc(2);cla(k).nam;Spc(3);cla(k).scor;Spc(3)Next k End Sub(2).分?jǐn)?shù)處理

Private Sub ran_Click()“加權(quán)平均分及名次” Form1.Cls For n = 1 To 20 sum = 0 For i = 1 To 5 sum = sum + stu(n).score(i)* cla(i).scor Next i stu(n).average = Format(sum / sumscor, “##.##”)Next n For n = 1 To 20 stu(n).rank = 1 For j = 1 To 20 If stu(n).average < stu(j).average Then stu(n).rank = stu(n).rank + 1 End If Next j Next n Print “學(xué)號”;Spc(6);“姓名”;Spc(4);“英 語”;Spc(2);“數(shù) 學(xué)”;Spc(2);“ 物 理”;Spc(3);“化 學(xué)”;Spc(2);“V B”;Spc(2);“加權(quán)平均分”;Spc(2);“名次” For n = 1 To 20 Print stu(n).number;Spc(1);stu(n).name;Spc(3);For i = 1 To 5 Print stu(n).score(i);Spc(3);Next i Print stu(n).average;Spc(3);stu(n).rank Next n End Sub Private Sub eaverage_Click()“ 課程平均分”

Print Spc(7);“英 語”;Spc(1);“數(shù) 學(xué)”;Spc(1);“ 物 理”;Spc(1);“化 學(xué)”;Spc(1);“V B” Print “平均分”;For i = 1 To 5 sum = 0 For n = 1 To 20 sum = sum + stu(n).score(i)Next n j = Format(sum / 20, “00.00”)Print Spc(2);j;Next i End Sub(3).編輯 Private Sub scor_Click()“計(jì)算打印個分?jǐn)?shù)段人數(shù)” Form1.Cls Print “范圍”;“英 語”;Spc(3);“數(shù) 學(xué)”;Spc(3);“ 物 理”;Spc(3);“化 學(xué)”;Spc(3);“V B” For i = 1 To 5 For n = 1 To 20 Select Case stu(n).score(i)Case 90 To 100 q(i)= q(i)+ 1 Case 80 To 89 x(i)= x(i)+ 1 Case 70 To 79 t(i)= t(i)+ 1 Case 60 To 69 h(i)= h(i)+ 1 Case Else y(i)= y(i)+ 1 End Select Next n Next i Print “>90”;For i = 1 To 5 Print Spc(4);q(i);Next i Print Print “80_89”;For i = 1 To 5 Print Spc(4);x(i);Next i Print Print “70_79”;For i = 1 To 5 Print Spc(4);t(i);Next i Print Print “60_69”;For i = 1 To 5 Print Spc(4);h(i);Next i Print Print “<60”;For i = 1 To 5 Print Spc(4);y(i);Next i End Sub Private Sub stuscolist_Click()“打印成績條” Form1.Cls n = InputBox(“請輸入學(xué)號”)Print “學(xué)號”;Spc(5);“姓名”;Spc(3);“英 語”;Spc(3);“數(shù) 學(xué)”;Spc(3);“ 物 理”;Spc(3);“化 學(xué)”;Spc(3);“V B” Print stu(n).number;Spc(1);stu(n).name;Spc(3);For i = 1 To 5 Print stu(n).score(i);Spc(3);Next i End Sub Private Sub excellent_Click()“打印優(yōu)等生” Form1.Cls Dim t As Integer Print “姓名”;Spc(4);“學(xué)號”;Spc(8);“英 語”;Spc(4);“數(shù) 學(xué)”;Spc(3);“ 物 理”;Spc(3);“化 學(xué)”;Spc(4);“V B”;Spc(6);“平均分”;Spc(4);“名次” For i = 1 To 20 t = 0 For j = 1 To 5 If stu(i).score(j)>= 95 Then t = t + 1 End If Next j If stu(i).average >= 85 And t >= 2 Or stu(i).average >= 90 Or stu(i).rank <= 3 Then Print stu(i).name;Spc(2);stu(i).number;Spc(3);For j = 1 To 5 Print stu(i).score(j);Spc(5);Next j Print stu(i).average;Spc(5);stu(i).rank End If Next i End Sub Private Sub ugstulist_Click()“打印不及格學(xué)生” Form1.Cls For n = 1 To 20 For i = 1 To 5 If stu(n).score(i)< 60 Then Print stu(n).number;stu(n).name;stu(n).score(i);cla(i).nam;cla(i).scor End If Next i Next n End Sub(5).成績分布圖

Private Sub Command1_Click()“新建窗體form2” For i = 0 To 4 Picture1(i).Scale(0, 14)-(100, 0)Picture1(i).Line(10, 2)-(92, 2), vbRed Picture1(i).Print “分?jǐn)?shù)段” Picture1(i).Line(10, 2)-(10, 14), vbRed Picture1(i).Print “人數(shù)” For j = 2 To 10 Step 2 Picture1(i).CurrentY = j + 2 Picture1(i).CurrentX = 4 Picture1(i).Print j Next j Picture1(i).CurrentX = 10 Picture1(i).CurrentY = 2 Picture1(i).Line(10, 2)-(26, 2 + q(1 + i)), vbGreen, BF Picture1(i).CurrentX = 26 Picture1(i).CurrentY = 2 Picture1(i).Line(26, 2)-(42, 2 + x(i + 1)), vbRed, BF Picture1(i).CurrentX = 42 Picture1(i).CurrentY = 2 Picture1(i).Line(42, 2)-(58, 2 + t(i + 1)), vbGreen, BF Picture1(i).CurrentX = 58 Picture1(i).CurrentY = 2 Picture1(i).Line(58, 2)-(74, 2 + h(i + 1)), vbRed, BF Picture1(i).CurrentX = 74 Picture1(i).CurrentY = 2 Picture1(i).Line(74, 2)-(90, 2 + y(i + 1)), vbGreen, BF Picture1(i).Line(10, 2)-(26, 2), vbGreen Picture1(i).Line(26, 2)-(42, 2), vbRed Picture1(i).Line(42, 2)-(58, 2), vbGreen Picture1(i).Line(58, 2)-(74, 2), vbRed Picture1(i).Line(74, 2)-(90, 2), vbGreen Picture1(i).CurrentX = 10 Picture1(i).CurrentY = 2 Picture1(i).Print “ >=90 80-89 70-79 60-69 <=60” Next i End Sub

下載計(jì)算方法與實(shí)習(xí)上機(jī)報告word格式文檔
下載計(jì)算方法與實(shí)習(xí)上機(jī)報告.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    CAD上機(jī)實(shí)習(xí)報告(合集)

    CAD班級:電子質(zhì)檢1101班 姓名:郭利智 學(xué)號:2011110902 指導(dǎo)老師:潘慶杰 上機(jī)實(shí)習(xí)報告 CAD上機(jī)實(shí)習(xí)報告 1.實(shí)習(xí)任務(wù) 用一周的時間對AUTOCAD軟件練習(xí)的同時,完成機(jī)自教研室發(fā)的二維......

    arcgis上機(jī)實(shí)習(xí)報告

    課程實(shí)習(xí)報告 實(shí)習(xí)課程:《ArcGIS專業(yè)技能訓(xùn)練實(shí)習(xí)報告》 姓名: 學(xué)號:專業(yè): 班級:2012年 6月 20日 ArcGIS專業(yè)技能訓(xùn)練實(shí)習(xí)報告 實(shí)習(xí)目的: 通過學(xué)習(xí)Arcgis這款Gis應(yīng)用軟件熟練......

    上機(jī)實(shí)習(xí)實(shí)踐報告大全

    時代在進(jìn)步,社會在發(fā)展,而隨之而來的競爭也非常嚴(yán)峻的擺在了我們的面前,現(xiàn)代社會所需要的已經(jīng)不再是單純的知識型人才。時代賦予人才新的定義:不僅能夠駕馭新科技,具有創(chuàng)新意識,更......

    2011上機(jī)實(shí)習(xí)報告2

    數(shù)值分析上機(jī)實(shí)習(xí)報告要求 1.應(yīng)提交一份完整的實(shí)習(xí)報告。具體要求如下: (1)要有封面,封面上要標(biāo)明姓名、學(xué)號、專業(yè)和聯(lián)系電話; (2)要有序言,說明所用語言及簡要優(yōu)、特點(diǎn),說明選用的考......

    大地測量上機(jī)實(shí)習(xí)報告

    題目: 大地測量學(xué)上機(jī)實(shí)習(xí) 學(xué) 號: 姓 名: 班 級: 專 業(yè): 測繪工程 課程名稱: 大地測量學(xué)基礎(chǔ) 課程老師: 大地測量學(xué)上機(jī)實(shí)習(xí)報告 一、實(shí)習(xí)目的: 了解大地測量學(xué)的定義以......

    linux上機(jī)實(shí)習(xí)報告

    目 錄 Linux 第一次上機(jī)(運(yùn)行環(huán)境RedHat) ................................................................................ 1 調(diào)試運(yùn)行CD唱片應(yīng)用程序 .....................

    計(jì)算方法上機(jī)1舍入誤差與數(shù)值穩(wěn)定性[精選五篇]

    計(jì)算方法與實(shí)習(xí)實(shí)驗(yàn)報告 實(shí)驗(yàn)報告名稱 舍入誤差和數(shù)值穩(wěn)定性 班級:學(xué)號:姓名: 成績: 1實(shí)驗(yàn)?zāi)康?1)通過上機(jī)編程,復(fù)習(xí)鞏固以前所學(xué)程序設(shè)計(jì)語言及上機(jī)操作指令; 2)通過上機(jī)計(jì)算,了解......

    C語言上機(jī)實(shí)習(xí)報告

    一、實(shí)驗(yàn)?zāi)康?1.能夠描述VC++6.0開發(fā)平臺的使用過程,學(xué)會運(yùn)行一個C程序的基本步驟,包括編輯、編譯、鏈接和運(yùn)行。 2.能夠使用算術(shù)表達(dá)式和賦值表達(dá)式書寫正確的語句。 3.能夠使用......

主站蜘蛛池模板: 狠狠色丁香婷婷久久综合五月| 亚洲婷婷综合色香五月| 秋霞鲁丝片av无码少妇| 免费 黄 色 人成 视频 在 线| 成在人线av无码免费高潮求绕| 国产一区二区三区不卡av| 国产精品免费久久久久影院| 久爱无码精品免费视频在线观看| 精品久久久久久国产牛牛| 久久精品黄aa片一区二区三区| 国产乱人伦偷精品视频免下载| 春药玩弄少妇高潮吼叫| 亚洲国产美女精品久久久| 800av凹凸视频在线观看| 亚洲情xo亚洲色xo无码| 天堂网在线最新版www中文网| 国产成年无码久久久久下载| 日韩亚洲制服丝袜中文字幕| 婷婷六月亚洲中文字幕| 亚洲精品tv久久久久久久久久| 特级婬片国产高清视频| 国产又a又黄又潮娇喘视频| 精品一卡2卡三卡4卡乱码精品视频| 夜夜天天噜狠狠爱2019| 国产福利视频在线观看| 国产成人精品三上悠亚| 成年女人爽到高潮喷视频| 99无码人妻一区二区三区免费| 亚洲色精品三区二区一区| 国产在线观看无码的免费网站| 精品国产一卡2卡3卡4卡新区| 亚洲另类成人小说综合网| 2021国产精品视频网站| 老熟妻内射精品一区| 真人男女做爰无遮挡免费视频| 亚洲av成本人无码网站| 人人妻人人澡av天堂香蕉| 成人中文乱幕日产无线码| 99久久e免费热视频百度| 久久精品人人做人人爽老司机| 色偷一区国产精品|