浙大-计算方法作业

浙大-计算方法作业
浙大-计算方法作业

来自14级机械专业的《计算方法》课程课本为黄皮小书只有当年作业布置的部分题目2.4.7.8.10.13.17

第2题

二分法

#include

#include

double calculate_y(double n)

{

using namespace std;

return exp(n)+10*n-2;

}

int main()

{

using namespace std;

int k;

double a,b,c1;

double y1,y2,x,y;

cout<<"请依次输入a(左端点),b(右端点),c(控制精度),中间用enter隔开"<

cin>>a>>b>>c1;

y1 = calculate_y(a);

y2 = calculate_y(b);

if(y1*y2<=0);

else{

do{

cout<<"["<

cout<<"实根不再此范围内,请重新输入!" <

cin>>a>>b>>c1;

y1 = calculate_y(a);

y2 = calculate_y(b);

}while(y1*y2>0);

}

k=0;

k=k+1;

x=(a+b)/2;

y=calculate_y(x);

if(y1*y<0) b=x;

else {a=x;y1=y;}

}while(b-a>=c1);

cout<<"k="<

cin.get();

cin.get();

}

迭代法

#include

#include

int main()

{

using namespace std;

int k=1,N;

double x0,c,x1;

cout<<"请依次输入N,x0,c"<

cin>>N>>x0>>c;

do{

k=k+1;

x1=(2-exp(x0))/10;

if(fabs(x1-x0)

{cout<<"k="<

cin.get();

cin.get();

return 0;

}

牛顿法

#include

#include

double fx(double n1)

{

using namespace std;

return exp(n1)+10*n1-2;

}

double f1x(double n2)

{

using namespace std;

return exp(n2)+10;

}

int main()

{

using namespace std;

int N,k=0,I;

double x0,x1,c,f_x0,f1_x0;

cout<<"请依次输入x0(迭代初值),c(精度),N(最大允许迭代次数)"<

cin>>x0>>c>>N;

do{

k++;

f_x0=fx(x0);

f1_x0=f1x(x0);

if(f1_x0==0){I=-1;break;}

else

x1=x0-f_x0/f1_x0;

}

if(fabs(x1-x0)

}

cout<

}

for(i=0;i

cout<

double t=0.0;

x[N-1]=b[N-1]/a[N-1][N-1];

for(i=N-2;i>=0;i--)

{

x[i]=b[i];

for(j=i+1;j

{

x[i]-=a[i][j]*x[j];

}

x[i]/=a[i][i];

}

cout<<"方程的解依次为"<

for(i=0;i

{

cout<<"x["<

}

}

列主元消元法

#include

#include

using namespace std;

#define N 4

void display(double (*a)[N],double *b)

{

for(int i=0;i

{

for(int j=0;j

{

cout<

}

cout<

}

}

int main()

{

double a[N][N]={{1.1348,3.8326,1.1651,3.4017}, {0.5301,1.7875,2.5330,1.5435},

{3.4129,4.9317,8.7643,1.3142},

{1.2371,4.9998,10.6721,0.0147}};

double b[N]={9.5342,6.3941,18.4231,16.9237};

double m[N][N];

double x[N];

int k,i,j,l;

double max;

double p;

for(k=0;k

{

max=a[k][k];

l=k;

for(i=k+1;i

{

if(fabs(a[i][k])>fabs(max))

{

max=a[i][k];

l=i;

}

}

if(fabs(max)*100000<1)

cout<<"det A=0"<

else{

if(l!=k)

{

p=b[l];b[l]=b[k];b[k]=p;

for(j=0;j

{

p=a[l][j];

a[l][j]=a[k][j];

a[k][j]=p;

}

display(a,b);

cout<

}

for(i=k+1;i

{

m[i][k]=a[i][k]/a[k][k];

for(j=k+1;j

{

a[i][j]-=m[i][k]*a[k][j];

}

b[i]-=m[i][k]*b[k];

}

display(a,b);

cout<

}

}

if(fabs(a[N-1][N-1])*100000<1)

cout<<"det A=0"<

else{

x[N-1]=b[N-1]/a[N-1][N-1];

for(i=N-2;i>=0;i--)

{

x[i]=b[i];

for(j=i+1;j

{

x[i]-=a[i][j]*x[j];

}

x[i]/=a[i][i];

}

}

cout<<"方程的解依次为"<

for(i=0;i

{

cout<<"x["<

}

第7题

雅可比迭代法

#include

#include

#include

using namespace std;

int main()

{

double s=0;

double max(double array[6]);

double a[6][6]={

{4,-1,0,-1,0,0},{-1,4,-1,0,-1,0},

{0,-1,4,-1,0,-1},{-1,0,-1,4,-1,0},

{0,-1,0,-1,4,-1},{0,0,-1,0,-1,4,},

};

double b[6]={0,5,-2,5,-2,6};

double c[6]={0,0,0,0,0,0};

double x[6]={0,0,0,0,0,0};

double x0[6]={0,0,0,0,0,0};

int i,k,j;

double r,sum=0;

cout<<"输入精度:"<

cin>>s;

for(k=1;;k++)

{

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

{

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

{

sum=a[i][j]*x0[j]+sum;

}

x[i]=x0[i]+((b[i]-sum)/a[i][i]);

c[i]=fabs(x[i]-x0[i]);

sum=0;

}

r=max(c);

if(r

{for(i=0;i<6;i++)

cout<<"x"<

return 0;

}

else

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

x0[i]=x[i];

}

}

double max(double array[6])

{

double a=array[0];

int i;

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

{

if(a

a=array[i];

}

return a;

}

高斯-赛德尔迭代法

#include

#include

#include

using namespace std;

int main()

{

double s=0;

double max(double array[3]);

double a[6][6]={

{4,-1,0,-1,0,0},{-1,4,-1,0,-1,0},

{0,-1,4,-1,0,-1},{-1,0,-1,4,-1,0},

{0,-1,0,-1,4,-1},{0,0,-1,0,-1,4},

};

double b[6]={0,5,-2,5,-2,6};

double c[6]={0,0,0,0,0,0};

double x[6]={0,0,0,0,0,0};

double x0[10]={0,0,0,0,0,0};

int i,k,j;

double r,sum=0;

cout<<"输入精度:"<

cin>>s;

for(k=1;;k++)

{

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

{

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

{

sum=a[i][j]*x0[j]+sum;

}

x[i]=x0[i]+((b[i]-sum)/a[i][i]);

c[i]=x[i]-x0[i];

if(c[i]<0)

c[i]=-c[i];

x0[i]=x[i];

sum=0;

}

r=max(c);

if(r

{for(i=0;i<6;i++)

cout<<"x"<

return 0;

}

}

}

double max(double array[6])

{

double a=array[0];

int i;

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

{

if(a

a=array[i];

}

return a;

}

SOR迭代法

#include

#include

#include

using namespace std;

int main()

{

double s=0,w=0;

double max(double array[3]);

double a[6][6]={

{4,-1,0,-1,0,0},{-1,4,-1,0,-1,0},

{0,-1,4,-1,0,-1},{-1,0,-1,4,-1,0},

{0,-1,0,-1,4,-1},{0,0,-1,0,-1,4}

};

double b[6]={0,5,-2,5,-2,6};

double c[6]={0,0,0};

double x[6]={0,0,0,0,0,0};

double x0[6]={0,0,0,0,0,0};

int i,k,j;

double r,sum=0;

cout<<"输入精度:"<

cin>>s;

cout<<"松弛因子:"<

cin>>w;

for(k=1;;k++)

{

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

{

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

{

sum=a[i][j]*x0[j]+sum;

}

x[i]=x0[i]+(w*(b[i]-sum)/a[i][i]);

c[i]=x[i]-x0[i];

if(c[i]<0)

c[i]=-c[i];

x0[i]=x[i];

sum=0;

}

r=max(c);

if(r

{for(i=0;i<6;i++)

cout<<"x"<

cout<<"迭代次数:"<

return 0;

}

}

}

double max(double array[6])

{

double a=array[0];

int i;

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

{

if(a

a=array[i];

}

return a;

}

第8题

分段线性插值

#include

int main(void)

{

int i,j;

double a[6],b[6],x,y;

printf("Enter x:");

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

scanf("%lf",&a[i]);

printf("Enter f(x):");

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

scanf("%lf",&b[i]);

for(j=0;j<3;j++){

printf("Enter x:");

scanf("%lf",&x);

for(i=0;x>a[i];i++);

y=b[i-1]*(x-a[i])/(a[i-1]-a[i])+b[i]*(x-a[i-1])/(a[i]-a[i-1]); printf("x=%lf , ",x);

printf("y=%lf\n",y);

}

return 0;

}

分段二次插值

#include

int main(void)

{

int i,j;

double a[6],b[6],x,y;

printf("Enter x:");

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

scanf("%lf",&a[i]);

printf("Enter f(x):");

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

scanf("%lf",&b[i]);

for(j=0;j<3;j++){

printf("Enter x:");

scanf("%lf",&x);

for(i=0;x>a[i];i++);

if((a[i+1]-x)<(x-a[i-2]))

{

y=b[i-1]*(x-a[i])/(a[i-1]-a[i])*(x-a[i+1])/(a[i-1]-a[i+1]);

y=y+b[i]*(x-a[i-1])/(a[i]-a[i-1])*(x-a[i+1])/(a[i]-a[i+1]);

y=y+b[i+1]*(x-a[i-1])/(a[i+1]-a[i-1])*(x-a[i])/(a[i+1]-a[i]);

printf("x=%lf , ",x); printf("y=%lf\n",y);

}

else{

y=b[i-2]*(x-a[i-1])/(a[i-2]-a[i-1])*(x-a[i])/(a[i-2]-a[i]);

y=y+b[i-1]*(x-a[i-2])/(a[i-1]-a[i-2])*(x-a[i])/(a[i-1]-a[i]);

y=y+b[i]*(x-a[i-2])/(a[i]-a[i-2])*(x-a[i-1])/(a[i]-a[i-1]);

printf("x=%lf , ",x); printf("y=%lf\n",y);

}

}

return 0;

}

全区间上拉格朗日插值

#include

int main(void)

{

int i,j,k;

double a[6],b[6],x,y,p;

printf("Enter x:");

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

scanf("%lf",&a[i]);

printf("Enter f(x):");

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

scanf("%lf",&b[i]);

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

{

y=0;

printf("Enter x:");

scanf("%lf",&x);

for(i=0;i<6;i++){

p=1;

for(k=0;k<6;k++){

if(k!=i)

p=p*(x-a[k])/(a[i]-a[k]);}

y=y+p*b[i];

}

printf("x=%lf , ",x); printf("y=%lf\n",y);

}

return 0;

}

第10题

最小二乘法二次回归

#include

#include

#include

float cf(int i,float f)

{ float g=1.0;

while(i--)

g*=f;

return g;

}

void ColPivot(float a[99][99], int n, float b[99][1],float x[99])

{

float max,m,temp;

int k,q=0,i,j,I;

for(k=0;k

{ max=a[k][k];

for(i=k+1;i

if(fabs(max)

{

max=a[i][k];

I=i;

}

if(max==0)

q=1;

else

{ if(I!=k)

{

temp=b[I][0]; b[I][0]=b[k][0]; b[k][0]=temp;

for(j=k;j

{

temp=a[I][j]; a[I][j]=a[k][j]; a[k][j]=temp;

}

}

for(i=k+1;i

{

m=a[i][k]/a[k][k];

b[i][0]=b[i][0]-b[k][0]*m;

for(j=0;j

a[i][j]=a[i][j]-a[k][j]*m;

}

}

}

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

{

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

b[i][0]=b[i][0]-a[i][j]*x[j];

x[i]=b[i][0]/a[i][i];

}

float x0,y0;

x0=-x[1]/(2*x[2]);

y0=x[0]-x[1]*x[1]/(4*x[2]);

printf("\nx0=%f",x0);

printf("\ny0=%f",y0);

}

int main()

{

float x[99],y[99],z[99],s[99][99],t[99][1];

int n,m,i,j,k;

printf("n(变量数)=");

scanf("%d",&n);

printf("m(拟合阶数)=");

scanf("%d",&m);

printf("x[%]=",n);

for(i=0;i

scanf("%f",&y[i]);

printf("y[%d]=",n);

for(i=0;i

scanf("%f",&z[i]);

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

{

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

{s[i][j]=0.0;

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

s[i][j]+=cf(i+j,y[k]);

}

t[i][0]=0.0;

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

t[i][0]+=z[j]*cf(i,y[j]);

}

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

s[i][m+1]=t[i][0];

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

{

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

printf("%f\t",s[i][j]);

printf("\n");

}

ColPivot(s,m+1,t,x);

printf("\n\n");

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

printf("\na[%d]=%f",i,x[i]);

printf("\n\n");

}

第13题

复合梯形递推算法

#include

#include

/***************计算函数值**************/

double f(double x)//

{

using namespace std;

double s,e=exp(1);

s=sqrt((1-pow(e,-x)))/x;//预先输入的待积分函数

return(s);

}

/***************************************/

/***************计算2^k值***************/

double power(int K)//

{

using namespace std;

double P;

P=pow(2.0,double(K));

return P;

}

/***************************************/

/**************复化梯形公式的递推过程***************/

double DTGCH(double a,double b,double precision)//

{

using namespace std;

int i,k;

double fa,fb,t1,p,S,X,t;

fa=1;

fb=f(b);

k=1;

//h=b-a;

t1=(b-a)/2*(fa+fb);//公式T1=(b-a)/2[f(a)+f(b)]

p=precision+1;//误差值初始化

while(p>=precision)

{

double n;

S=0;

for(i=1;i<=power(k-1);i++)//计算公式中:∑(2^(k-1),i=1)f[a+(2i-1)(b-a)/2^k]

{

X=a+(2*i-1)*((b-a)/power(k));

S=S+f(X);

}

t=(t1)/2+(b-a)/power(k)*S;

p=fabs(t1-t);//误差值

n=power(k-1);

cout<<"步长2^(k-1)为"<

t1=t;

k++;

}

return(t);

}

/**************************************************/

int main()

{

using namespace std;

double result,a,b,precision;//result为计算出的积分值、a为积分下限、b为积分上限、precision为要求的精确度

cout<<"需要求解的积分式为f(x)=(1-e(-x))(1/2)/x"<

cout<<"请输入积分下线:a="<<'\t';

cin>>a;

cout<<"请输入积分上限:b="<<'\t';

cin>>b;

cout<<"请输入精确度"<<'\t';

cin>>precision;

result=DTGCH(a,b,precision);

cout<<"经过复化梯形公式的递推算法得方程结果为:"<

}

第17题

欧拉方法

#include

#include

double f(double x,double y)

{

double s;

s=2.0/3*(x*pow(y,-2));//修改这里改变常微分方程

return s;

}

main()

{

double x=0,y=1,xi=0,yi=1,h=0.1,e;//改变x,y,xi,yi,h来控制

int i,j;

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

{

yi=yi+h*f(x,yi);

xi=x;

x=x+h;

y=pow((1+pow(x,2)),1.0/3);//修改这里改变准确解

printf("xi=%lf,yi=%lf,y=%lf\n",xi,yi,y);

}

}

改进欧拉方法

#include

#include

double f(double x,double y)

{

double s;

s=2.0/3*(x*pow(y,-2));

return s;

}

main()

{

double x=0,y=1,xi=0,yi=1,h=0.1,T1,T2;

int i,j;

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

{

T1=yi+h*f(x,yi);

xi=x;

x=x+h;

T2=yi+h*f(x,T1);

yi=(T1+T2)/2;

y=pow((1+pow(x,2)),1.0/3);

printf("xi=%lf,yi=%lf,y=%lf\n",xi,yi,y);

}

}

经典R-K方法

#include

#include

double f(double x,double y)

{

double s;

s=2.0/3*(x*pow(y,-2));

return s;

计算方法上机实验报告

. / 《计算方法》上机实验报告 班级:XXXXXX 小组成员:XXXXXXX XXXXXXX XXXXXXX XXXXXXX 任课教师:XXX 二〇一八年五月二十五日

前言 通过进行多次的上机实验,我们结合课本上的内容以及老师对我们的指导,能够较为熟练地掌握Newton 迭代法、Jacobi 迭代法、Gauss-Seidel 迭代法、Newton 插值法、Lagrange 插值法和Gauss 求积公式等六种算法的原理和使用方法,并参考课本例题进行了MATLAB 程序的编写。 以下为本次上机实验报告,按照实验内容共分为六部分。 实验一: 一、实验名称及题目: Newton 迭代法 例2.7(P38):应用Newton 迭代法求在附近的数 值解,并使其满足. 二、解题思路: 设'x 是0)(=x f 的根,选取0x 作为'x 初始近似值,过点())(,00x f x 做曲线)(x f y =的切线L ,L 的方程为))((')(000x x x f x f y -+=,求出L 与x 轴交

点的横坐标) (') (0001x f x f x x - =,称1x 为'x 的一次近似值,过点))(,(11x f x 做曲线)(x f y =的切线,求该切线与x 轴的横坐标) (') (1112x f x f x x - =称2x 为'x 的二次近似值,重复以上过程,得'x 的近似值序列{}n x ,把) (') (1n n n n x f x f x x - =+称为'x 的1+n 次近似值,这种求解方法就是牛顿迭代法。 三、Matlab 程序代码: function newton_iteration(x0,tol) syms z %定义自变量 format long %定义精度 f=z*z*z-z-1; f1=diff(f);%求导 y=subs(f,z,x0); y1=subs(f1,z,x0);%向函数中代值 x1=x0-y/y1; k=1; while abs(x1-x0)>=tol x0=x1; y=subs(f,z,x0); y1=subs(f1,z,x0); x1=x0-y/y1;k=k+1; end x=double(x1) K 四、运行结果:

计算方法上机实验报告

《计算方法》上机实验报告 班级:XXXXXX 小组成员:XXXXXXX XXXXXXX XXXXXXX XXXXXXX 任课教师:XXX 二〇一八年五月二十五日

前言 通过进行多次的上机实验,我们结合课本上的内容以及老师对我们的指导,能够较为熟练地掌握Newton 迭代法、Jacobi 迭代法、Gauss-Seidel 迭代法、Newton 插值法、Lagrange 插值法和Gauss 求积公式等六种算法的原理和使用方法,并参考课本例题进行了MATLAB 程序的编写。 以下为本次上机实验报告,按照实验内容共分为六部分。 实验一: 一、实验名称及题目: Newton 迭代法 例2.7(P38):应用Newton 迭代法求 在 附近的数值解 ,并使其满足 . 二、解题思路: 设'x 是0)(=x f 的根,选取0x 作为'x 初始近似值,过点())(,00x f x 做曲线)(x f y =的切线L ,L 的方程为))((')(000x x x f x f y -+=,求出L 与x 轴交点的横坐标) (') (0001x f x f x x - =,称1x 为'x 的一次近似值,过点))(,(11x f x 做曲线)(x f y =的切线,求该切线与x 轴的横坐标) (') (1112x f x f x x - =称2x 为'x

的二次近似值,重复以上过程,得'x 的近似值序列{}n x ,把 ) (') (1n n n n x f x f x x - =+称为'x 的1+n 次近似值,这种求解方法就是牛顿迭代法。 三、Matlab 程序代码: function newton_iteration(x0,tol) syms z %定义自变量 format long %定义精度 f=z*z*z-z-1; f1=diff(f);%求导 y=subs(f,z,x0); y1=subs(f1,z,x0);%向函数中代值 x1=x0-y/y1; k=1; while abs(x1-x0)>=tol x0=x1; y=subs(f,z,x0); y1=subs(f1,z,x0); x1=x0-y/y1;k=k+1; end x=double(x1) K 四、运行结果: 实验二:

《基础会计学》在线作业

《基础会计学》在线作业 一、单选题(共 20 道试题,共 50 分。) 1. 在利润表上,利润总额扣除()后,得出净利润或净亏损。 . 管理费用和财务费用 . 增值税 . 营业外收支净额 . 所得税费用 正确答案: 2. 资产负债表中,负债项目是按照()进行排列的。 . 变现能力 . 盈利能力 . 清偿债务的先后顺序 . 变动性 正确答案: 3. 对库存现金进行清查时,一般采取()。 . 账面清查 . 实地盘点 . 账账核对 . 账证核对 正确答案: 4. 为了使总分类账与其所属的明细账之间能起到统驭、控制与辅助、补充的作用,便于账户核对,确保核算资料的正确、完整,必须采取的方法是()。 . 补充登记 . 平行登记 . 定期登记 . 红字登记 正确答案: 5. 车间使用的固定资产提取折旧费时,应借记()账户,贷记“累计折旧”账户。 . “制造费用” . “管理费用” . “销售费用” . “待摊费用” 正确答案: 6. 会计的基本职能是()。 . 反映和核算 . 预测和核算

. 监督和分析 . 反映和监督 正确答案: 7. 制造企业的“限额领料单”一般是一种()。. 外来原始凭证 . 自制累计原始凭证 . 自制一次原始凭证 . 自制汇总原始凭证 正确答案: 8. 以下不属于会计档案的有()。 . 会计报表 . 会计凭证和账簿 . 财务计划和预算 . 其他会计资料 正确答案: 9. 技术推算法通常适用于()的盘点。 . 固定资产 . 流动资产 . 银行存款 . 大量成堆,难以逐一清点的物资 正确答案: 10. “本年利润”账户的借方余额表示()。. 利润总额 . 亏损总额 . 收益额 . 费用额 正确答案: 11. 科目汇总表的主要缺点是不能反映出()。. 借方发生额 . 贷方发生额 . 借方和贷方发生额 . 科目对应关系 正确答案: 12. 会计凭证按其填制程序和用途可分为()。. 原始凭证和记账凭证 . 自制凭证和外来凭证 . 一次凭证和累计凭证 . 单式凭证和复式凭证 正确答案: 13. 现金日记账应采用的格式是()。 . 订本式 . 三栏式 . 多栏式 . 分类式

数值计算方法大作业

目录 第一章非线性方程求根 (3) 1.1迭代法 (3) 1.2牛顿法 (4) 1.3弦截法 (5) 1.4二分法 (6) 第二章插值 (7) 2.1线性插值 (7) 2.2二次插值 (8) 2.3拉格朗日插值 (9) 2.4分段线性插值 (10) 2.5分段二次插值 (11) 第三章数值积分 (13) 3.1复化矩形积分法 (13) 3.2复化梯形积分法 (14) 3.3辛普森积分法 (15) 3.4变步长梯形积分法 (16) 第四章线性方程组数值法 (17) 4.1约当消去法 (17) 4.2高斯消去法 (18) 4.3三角分解法 (20)

4.4雅可比迭代法 (21) 4.5高斯—赛德尔迭代法 (23) 第五章常积分方程数值法 (25) 5.1显示欧拉公式法 (25) 5.2欧拉公式预测校正法 (26) 5.3改进欧拉公式法 (27) 5.4四阶龙格—库塔法 (28)

数值计算方法 第一章非线性方程求根 1.1迭代法 程序代码: Private Sub Command1_Click() x0 = Val(InputBox("请输入初始值x0")) ep = Val(InputBox(请输入误差限ep)) f = 0 While f = 0 X1 = (Exp(2 * x0) - x0) / 5 If Abs(X1 - x0) < ep Then Print X1 f = 1 Else x0 = X1 End If Wend End Sub 例:求f(x)=e2x-6x=0在x=0.5附近的根(ep=10-10)

1.2牛顿法 程序代码: Private Sub Command1_Click() b = Val(InputBox("请输入被开方数x0")) ep = Val(InputBox(请输入误差限ep)) f = 0 While f = 0 X1 = x0 - (x0 ^ 2 - b) / (2 * b) If Abs(X1 - x0) < ep Then Print X1 f = 1 Else x0 = X1 End If Wend End Sub 例:求56的值。(ep=10-10)

西安交通大学计算方法B上机报告

计算方法上机报告

姓名: 学号: 班级:能动上课班级:

题目及求解: 一、对以下和式计算: ∑ ∞ ? ?? ??+-+-+-+=0681581482184161n n n n S n ,要求: ① 若只需保留11个有效数字,该如何进行计算; ② 若要保留30个有效数字,则又将如何进行计算; 1 算法思想 (1)根据精度要求估计所加的项数,可以使用后验误差估计,通项为: 1421114 16818485861681 n n n a n n n n n ε??= ---<< ?+++++??; (2)为了保证计算结果的准确性,写程序时,从后向前计算; (3)使用Matlab 时,可以使用以下函数控制位数: digits(位数)或vpa(变量,精度为数) 2 算法结构 ;0=s ?? ? ??+-+-+-+= 681581482184161n n n n t n ; for 0,1,2,,n i =??? if 10m t -≤ end; for ,1,2,,0n i i i =--??? ;s s t =+ 3 Matlab 源程序 clear; %清除工作空间变量 clc; %清除命令窗口命令 m=input('请输入有效数字的位数m='); %输入有效数字的位数 s=0;

for n=0:50 t=(1/16^n)*(4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6)); if t<=10^(-m) %判断通项与精度的关系break; end end; fprintf('需要将n值加到n=%d\n',n-1); %需要将n值加到的数值 for i=n-1:-1:0 t=(1/16^i)*(4/(8*i+1)-2/(8*i+4)-1/(8*i+5)-1/(8*i+6)); s=s+t; %求和运算 end s=vpa(s,m) %控制s的精度 4 结果与分析 若保留11位有效数字,则n=7,此时求解得: s =3.1415926536; 若保留30位有效数字时,则n=22, 此时求解得: s =3.8。 通过上面的实验结果可以看出,通过从后往前计算,这种算法很好的保证了计算结果要求保留的准确数字位数的要求。 二、某通信公司在一次施工中,需要在水面宽度为20米的河沟底部沿直线走向铺设一条沟底光缆。在铺设光缆之前需要对沟底的地形进行初步探测,从而估计所需光缆的长度,为工程预算提供依据。已探测到一组等分点位置的深度数据(单位:米)如下表所示:

西工大16秋《基础会计学》在线作业

奥鹏17春西工大16秋《基础会计学》在线作业 一、单选题(共20 道试题,共50 分。) 1. 下列引起资产和负债同时增加的经济业务是()。 A. 用银行存款购买电脑一台 B. 以现金支付前欠贷款 C. 收回应收账款存入银行 D. 购买材料一批,贷款尚未支付 正确答案: 2. 现金日记账应采用的格式是()。 A. 订本式 B. 三栏式 C. 多栏式 D. 分类式 正确答案: 3. 对库存现金进行清查时,一般采取()。 A. 账面清查 B. 实地盘点 C. 账账核对 D. 账证核对 正确答案: 4. 科目汇总表的主要缺点是不能反映出()。 A. 借方发生额 B. 贷方发生额 C. 借方和贷方发生额 D. 科目对应关系 正确答案: 5. 技术推算法通常适用于()的盘点。 A. 固定资产 B. 流动资产 C. 银行存款 D. 大量成堆,难以逐一清点的物资 正确答案: 6. 为了使总分类账与其所属的明细账之间能起到统驭、控制与辅助、补充的作用,便于账户核对,确保核算资料的正确、完整,必须采取的方法是()。 A. 补充登记 B. 平行登记 C. 定期登记

D. 红字登记 正确答案: 7. “本年利润”账户的借方余额表示()。 A. 利润总额 B. 亏损总额 C. 收益额 D. 费用额 正确答案: 8. 会计假设包含会计主体、()、会计期间和货币计量四个方面的内容。 A. 实际成本 B. 配比原则 C. 持续经营 D. 会计准则 正确答案: 9. 企业在不单独设置“预付账款”账户的情况下,可用()账户代替。 A. 应收账款 B. 预收账款 C. 应付账款 D. 应收票据 正确答案: 10. 资产负债表中,负债项目是按照()进行排列的。 A. 变现能力 B. 盈利能力 C. 清偿债务的先后顺序 D. 变动性 正确答案: 11. 会计的职能不具有()。 A. 连续性 B. 主观性 C. 系统性 D. 全面性 正确答案: 12. “管理费用”属于()账户。 A. 资产类 B. 负债类 C. 所有者权益类 D. 损益类 正确答案: 13. 当前,我国会计法规制度体系的第一层是()。 A. 会计法 B. 企业会计准则 C. 企业财务通则 D. 各大行业会计制度 正确答案:

matlab与数值分析作业

数值分析作业(1) 1:思考题(判断是否正确并阐述理由) (a)一个问题的病态性如何,与求解它的算法有关系。 (b)无论问题是否病态,好的算法都会得到它好的近似解。 (c)计算中使用更高的精度,可以改善问题的病态性。 (d)用一个稳定的算法计算一个良态问题,一定会得到他好的近似解。 (e)浮点数在整个数轴上是均匀分布。 (f)浮点数的加法满足结合律。 (g)浮点数的加法满足交换律。 (h)浮点数构成有效集合。 (i)用一个收敛的算法计算一个良态问题,一定得到它好的近似解。√2: 解释下面Matlab程序的输出结果 t=0.1; n=1:10; e=n/10-n*t 3:对二次代数方程的求解问题 20 ++= ax bx c 有两种等价的一元二次方程求解公式

2224b x a c x b ac -±==- 对 a=1,b=-100000000,c=1,应采用哪种算法? 4:函数sin x 的幂级数展开为: 357 sin 3!5!7! x x x x x =-+-+ 利用该公式的Matlab 程序为 function y=powersin(x) % powersin. Power series for sin(x) % powersin(x) tries to compute sin(x)from a power series s=0; t=x; n=1; while s+t~=s; s=s+t; t=-x^2/((n+1)*(n+2))*t n=n+2; end

(a ) 解释上述程序的终止准则; (b ) 对于x=/2π、x=11/2π、x =21/2π,计算的精度是多少?分别需 要计算多少项? 5:指数函数的幂级数展开 2312!3!x x x e x =+++ + 根据该展开式,编写Matlab 程序计算指数函数的值,并分析计算结果(重点分析0x <的计算结果)。

计算方法第二章方程求根上机报告

实验报告名称 班级:学号:姓名:成绩: 1实验目的 1)通过对二分法与牛顿迭代法作编程练习与上级运算,进一步体会二分法与牛顿迭代法的不同特点。 2)编写割线迭代法的程序,求非线性迭代法的解,并与牛顿迭代法。 2 实验内容 用牛顿法和割线法求下列方程的根 x^2-e^x=0; x*e^x-1=0; lgx+x-2=0; 3实验步骤 1)根据二分法和牛顿迭代法,割线法的算法编写相应的求根函数; 2)将题中所给参数带入二分法函数,确定大致区间; 3)用牛顿迭代法和割线法分别对方程进行求解; 3 程序设计 牛顿迭代法x0=1.0; N=100; k=0; eps=5e-6; delta=1e-6; while(1) x1=x0-fc1(x0)/fc2(x0); k=k+1; if k>N disp('Newmethod failed')

break end if(abs(x1-x0)=delta) c=x1; x1=cutnext(x0,x1); x0=c; %x0 x1μYí?μ?μ?x1 x2 è?è?±£′??úx0 x1 end k=k+1; if k>N disp('Cutline method failed') break; end if(abs(x1-x0)

基础会计学第一次作业

首页 > 课程作业 作业名 称 基础会计学第1次作业出卷人SA 作业总 分100 通过分 数 60 起止时 间 2018-10-13 14:34:13至2018-10-13 14:53:14 学员姓 名学员成 绩 100 标准题总分100 标准题 得分 100 题号:1 题型:单选题(请在以下几个选项中选择唯一正确答 案)本题分数:2 企业将融资租入固定资产视同自有固定资产核算,所体现的会计核算的一般原则是()。 ?A、客观性原则 ?B、一致性原则 ?C、可比性原则 ?D、实质重于形式原则 ?E、形式原则 学员答案:d 说明: 本题得分:2 题号:2 题型:单选题(请在以下几个选项中选择唯一正确答 案)本题分数:2 下列明细分类账中,一般不宜采用三栏式账页格式的是()。 ?A、应收账款明细账 ?B、应付账款明细账 ?C、实收资本明细账 ?D、原材料明细账 学员答案:d 说明: 本题得分:2 题号:3 题型:单选题(请在以下几个选项中选择唯一正确答 案)本题分数:2 借贷记账法余额试算平衡法的依据是( )。

?A、借贷记账法记账规则 ?B、借贷记账法账户结构 ?C、会计恒等式 ?D、利润确定的基本等式 学员答案:c 说明: 本题得分:2 题号:4 题型:单选题(请在以下几个选项中选择唯一正确答 案)本题分数:2 工业企业领用材料制造产品,应计入( )账户。 ?A、制造费用 ?B、生产成本销售费用 ?C、管理费用 学员答案:b 说明: 本题得分:2 题号:5 题型:单选题(请在以下几个选项中选择唯一正确答 案)本题分数:2 原始凭证金额有错误的,应当()。 ?A、在原始凭证上更正 ?B、由出具单位更正并且加盖公章 ?C、由经办人更正 ?D、由出具单位重开,不得在原始凭证上更正 学员答案:d 说明: 本题得分:2 题号:6 题型:判断题本题分数:3 为了保证总账与其所属明细账的记录相符,总账应根据所属明细账记录逐笔或汇总登记。 ( ) ?1、错 ?2、对 学员答案:1 说明: 本题得分:3 题号:7 题型:判断题本题分数:3 在借贷记账法下,全部总分类账户的借方发生额合计数等于全部明细分类账的借方发生额合计数。 ( ) ?1、错

数值分析上机实验报告

数值分析上机实验报告

《数值分析》上机实验报告 1.用Newton 法求方程 X 7-X 4+14=0 在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。 1.1 理论依据: 设函数在有限区间[a ,b]上二阶导数存在,且满足条件 {}α?上的惟一解在区间平方收敛于方程所生的迭代序列 迭代过程由则对任意初始近似值达到的一个中使是其中上不变号 在区间],[0)(3,2,1,0,) (') ()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20 )()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f a b c f x f b a x f b f x f k k k k k k ==- ==∈≤-≠>+ 令 )9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3 2 2 5 333647>?''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f 故以1.9为起点 ?? ?? ? ='- =+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。当前后两个的差<=ε时,就认为求出了近似的根。本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码: #include #include main() {double x2,f,f1; double x1=1.9; //取初值为1.9 do {x2=x1; f=pow(x2,7)-28*pow(x2,4)+14; f1=7*pow(x2,6)-4*28*pow(x2,3); x1=x2-f/f1;} while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数printf("计算结果:x=%f\n",x1);} 1.3 运行结果: 1.4 MATLAB上机程序 function y=Newton(f,df,x0,eps,M) d=0; for k=1:M if feval(df,x0)==0 d=2;break else x1=x0-feval(f,x0)/feval(df,x0); end e=abs(x1-x0); x0=x1; if e<=eps&&abs(feval(f,x1))<=eps d=1;break end end

16秋学期《基础会计学》在线作业1

一、单选题(共 15 道试题,共 30 分。) V 1. “所得税费用”账户属于()。 A. 资产类账户 B. 负债类账户 C. 费用类账户 D. 收入类账户 满分:2 分 2. 记账以后发现记账凭证上的会计科目用错,应采用的更正方法是()。 A. 划线更正法 B. 红字更正法 C. 补充登记法 D. 作废原凭证重填 满分:2 分 3. 数量金额式明细分类账簿()。 A. 只反映价值量 B. 只反映实物量 C. 既反映价值量,又反映实物量 D. 既不反映价值量,也不反映实物量 满分:2 分 4. 汇总记账凭证核算组织程序的特点是()。 A. 根据各种汇总记账凭证直接登记明细分类账

B. 根据各种汇总记账凭证直接登记总分类账 C. 根据各种汇总记账凭证直接登记日记账 D. 根据各种记账凭证直接登记总分类账 满分:2 分 5. 下列费用中,被称为间接费用的是()。 A. 直接人工 B. 管理费用 C. 制造费用 D. 销售费用 满分:2 分 6. 一般说来,会计的对象是社会再生产过程中的()。 A. 资金分配 B. 资金筹集 C. 资金运动 D. 生产关系 满分:2 分 7. 下列各种方法中,定期总括反映企业的财务状况和经营成果的专门方法是()。 A. 财产清查 B. 登记账簿 C. 编制财务报告 D. 填制和审核会计凭证 满分:2 分 8. 在以下各项中,被称为利得的是()。 A. 主营业务收入 B. 其他业务收入 C. 营业外收入

D. 投资收益 满分:2 分 9. 企业对发出材料进行汇总并计入有关成本费用账户的主要依据是()。 A. 材料的名称 B. 材料的数量 C. 材料的用途 D. 材料的种类 满分:2 分 10. 一般认为,会计产生至今已有()。 A. 一千余年 B. 两千余年 C. 三千余年 D. 四千余年 满分:2 分 11. 在以下各项内容中,不属于企业所有者权益要素的是()。 A. 实收资本 B. 资本公积 C. 盈余公积 D. 库存现金 E. 未分配利润 满分:2 分 12. 前国务院总理朱镕基为会计的题词是()。 A. 诚信为本,操守为重,遵守准则,不做假账 B. 诚信为本,遵守准则,操守为重,不做假账 C. 诚信为本,操守为重,遵守原则,不做假账 D. 诚信为本,信用为重,遵守准则,不做假账

太原理工大学数值计算方法实验报告

本科实验报告 课程名称:计算机数值方法 实验项目:方程求根、线性方程组的直接解 法、线性方程组的迭代解法、代数插值和最 小二乘拟合多项式 实验地点:行勉楼 专业班级: ******** 学号: ********* 学生姓名: ******** 指导教师:李誌,崔冬华 2016年 4 月 8 日

y = x*x*x + 4 * x*x - 10; return y; } float Calculate(float a,float b) { c = (a + b) / 2; n++; if (GetY(c) == 0 || ((b - a) / 2) < 0.000005) { cout << c <<"为方程的解"<< endl; return 0; } if (GetY(a)*GetY(c) < 0) { return Calculate(a,c); } if (GetY(c)*GetY(b)< 0) { return Calculate(c,b); } } }; int main() { cout << "方程组为:f(x)=x^3+4x^2-10=0" << endl; float a, b; Text text; text.Getab(); a = text.a; b = text.b; text.Calculate(a, b); return 0; } 2.割线法: // 方程求根(割线法).cpp : 定义控制台应用程序的入口点。// #include "stdafx.h" #include"iostream"

心得体会 使用不同的方法,可以不同程度的求得方程的解,通过二分法计算的程序实现更加了解二分法的特点,二分法过程简单,程序容易实现,但该方法收敛比较慢一般用于求根的初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。

计算方法上机实习题大作业(实验报告).

计算方法实验报告 班级: 学号: 姓名: 成绩: 1 舍入误差及稳定性 一、实验目的 (1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令; (2)通过上机计算,了解舍入误差所引起的数值不稳定性 二、实验内容 1、用两种不同的顺序计算10000 21n n -=∑,分析其误差的变化 2、已知连分数() 1 01223//(.../)n n a f b b a b a a b =+ +++,利用下面的算法计算f : 1 1 ,i n n i i i a d b d b d ++==+ (1,2,...,0 i n n =-- 0f d = 写一程序,读入011,,,...,,,...,,n n n b b b a a 计算并打印f 3、给出一个有效的算法和一个无效的算法计算积分 1 041 n n x y dx x =+? (0,1,...,1 n = 4、设2 2 11N N j S j == -∑ ,已知其精确值为1311221N N ?? -- ?+?? (1)编制按从大到小的顺序计算N S 的程序 (2)编制按从小到大的顺序计算N S 的程序 (3)按两种顺序分别计算10001000030000,,,S S S 并指出有效位数 三、实验步骤、程序设计、实验结果及分析 1、用两种不同的顺序计算10000 2 1n n -=∑,分析其误差的变化 (1)实验步骤: 分别从1~10000和从10000~1两种顺序进行计算,应包含的头文件有stdio.h 和math.h (2)程序设计: a.顺序计算

#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]=%f\n",n,sum); } b.逆序计算 #include #include void main() { double sum=0; int n=10000; while(1) { sum=sum+(1/pow(n,2)); if(n%1000==0) printf("sum[%d]=%-30f",n,sum); if(n<=1)break; n--; } printf("sum[%d]=%f\n",n,sum); } (3)实验结果及分析: 程序运行结果: a.顺序计算

2012年春季基础会计学(本)网上作业

题号:1 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5 内容: 某一账户期初余额在贷方,期末余额在借方,表明该账户登记项目() A、性质未变 B、已从期初的资产变为期末的负债 C、已从期初的负债变为期末的资产 D、既不属于资产类,也不属于负债类 标准答案:C 学员答案:C 本题得分:5 题号:4 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5 内容: 引起资产和权益同时增加的业务有() A、将现金存入银行 B、从银行借款存入银 C、用银行存款购买机器设备 D、生产产品领用材料 标准答案:B 学员答案:B 本题得分:5 题号:5 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5 内容: 下列项目中属于流动资产的是() A、预付账款 B、应付账款 C、预提费用 D、短期借款 标准答案:A 学员答案:A 本题得分:5 题号:6 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5 内容: 会计从生产职能中分离出来,成为独立的职能是在() A、出现商品经济之后 B、出现复式记账之后 C、出现阶段之后 D、出现剩余产品之后

标准答案:D 学员答案:D 本题得分:5 题号:7 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5 内容: 企业购买的材料物资,其资金运动的是() A、货币资金转化为储备资 B、储备资金转化为生产资金 C、货币资金转化为生产资金 D、货币资金转化为成品资金 标准答案:A 学员答案:A 本题得分:5 题号:8 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5 内容: 下列哪种业务在实际工作中是不存在的() A、资产项目一增一减,增减金额相等 B、权益项目一增一减,增减金额相等 C、资产项目同增,增加金额相等 D、资产权益项目同增,增加金额相等 标准答案:C 学员答案:C 本题得分:5 题号:9 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5 内容: 所有者权益是企业投资人对企业净资产的所有权,在数量上等于() A、全部资产扣除流动负债 B、全部资产扣除长期负债 C、全部资产加上全部负债 D、全部资产扣除全部负债 标准答案:D 学员答案:D 本题得分:5 题号:10 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5 内容: 资产类账户期末余额的计算公式是()

数值计算方法作业

数值计算方法作业 姓名:李琦 学号:062410124 求 013=--x x 在x=1.5附近的一个根。 一.牛顿下山法: #include #include float f(float x) /* 定义函数f(x) */ { return x*x*x-x-1; } void main() { float x0,x1=1.5; x0=1; for(;;) { printf (" x0=%f",x0); printf (" x1=%f\n",x1); x0=x1; x1=x0-((x0*x0*x0-x0-1)/(3*x0*x0-1)); if(x0==x1) break; } printf(" x=%f\n",x1); }

二.加权法 #include #include float f(float x) /* 定义函数f(x) */ { return x*x*x-1; } float f1(float x) /* 定义函数f(x)的导数*/ { return 3*x*x; } void main() { float x0,x1=1.5,c; c=f1(x1);x0=1; printf("c=%f\n",c); for(;;) { printf (" x0=%f",x0); printf (" x1=%f\n",x1); x0=x1; x1=(f(x0)-c*x0)/(1-c); if(x0==x1) break; } printf("x=%f\n",x1); }

三.单点弦法: #include #include float f(float x) /* 定义函数f(x) */ { return x*x*x-x-1; } void main() { float x1,x0=1.5,a; a=f(x0); x1=1; for(;;) { printf (" x0=%f",x0); printf (" x1=%f\n",x1); x0=x1; x1=x0-(f(x0)*(x0-1.5)/(f(x0)-a)); if(x0==x1) break; } printf(" x=%f\n",x1); }

计算方法实验报告格式

计算方法实验报告格式 小组名称: 组长姓名(班号): 小组成员姓名(班号): 按贡献排序情况: 指导教师评语: 小组所得分数: 一个完整的实验,应包括数据准备、理论基础、实验内容及方法,最终对实验结果进行分析,以达到对理论知识的感性认识,进一步加深对相关算法的理解,数值实验以实验报告形式完成,实验报告格式如下: 一、实验名称 实验者可根据报告形式需要适当写出. 二、实验目的及要求 首先要求做实验者明确,为什么要做某个实验,实验目的是什么,做完该实验应达到什么结果,在实验过程中的注意事项,实验方法对结果的影响也可以以实验目的的形式列出. 三、算法描述(实验原理与基础理论) 数值实验本身就是为了加深对基础理论及方法的理解而设置的,所以要求将实验涉及到的理论基础,算法原理详尽列出. 四、实验内容 实验内容主要包括实验的实施方案、步骤、实验数据准备、实验的算法以及可能用到的仪器设备. 五、程序流程图 画出程序实现过程的流程图,以便更好的对程序执行的过程有清楚的认识,在程序调试过程中更容易发现问题. 六、实验结果 实验结果应包括实验的原始数据、中间结果及实验的最终结果,复杂的结果可以用表格

形式列出,较为简单的结果可以与实验结果分析合并出现. 七、实验结果分析 实验结果分析包括对对算法的理解与分析、改进与建议. 数值实验报告范例 为了更好地做好数值实验并写出规范的数值实验报告,下面给出一简单范例供读者参考. 数值实验报告 小组名称: 小组成员(班号): 按贡献排序情况: 指导教师评语: 小组所得分数: 一、实验名称 误差传播与算法稳定性. 二、实验目的 1.理解数值计算稳定性的概念. 2.了解数值计算方法的必要性. 3.体会数值计算的收敛性与收敛速度. 三、实验内容 计算dx x x I n n ? += 1 10 ,1,2,,10n = . 四、算法描述 由 dx x x I n n ? += 1 10 ,知 dx x x I n n ?+=--101110,则

数值分析Matlab作业

数值分析编程作业

2012年12月 第二章 14.考虑梯形电阻电路的设计,电路如下: 电路中的各个电流{i1,i2,…,i8}须满足下列线性方程组: 12 123 234 345 456 567 678 78 22/ 2520 2520 2520 2520 2520 2520 250 i i V R i i i i i i i i i i i i i i i i i i i i -= -+-= -+-= -+-= -+-= -+-= -+-= -+= 这是一个三对角方程组。设V=220V,R=27Ω,运用追赶法,求各段电路的电流量。Matlab程序如下: function chase () %追赶法求梯形电路中各段的电流量 a=input('请输入下主对角线向量a='); b=input('请输入主对角线向量b='); c=input('请输入上主对角线向量c='); d=input('请输入右端向量d='); n=input('请输入系数矩阵维数n='); u(1)=b(1); for i=2:n l(i)=a(i)/u(i-1); u(i)=b(i)-c(i-1)*l(i); end y(1)=d(1); for i=2:n y(i)=d(i)-l(i)*y(i-1); end x(n)=y(n)/u(n); i=n-1; while i>0 x(i)=(y(i)-c(i)*x(i+1))/u(i); i=i-1; end x 输入如下:

请输入下主对角线向量a=[0,-2,-2,-2,-2,-2,-2,-2]; 请输入主对角线向量b=[2,5,5,5,5,5,5,5]; 请输入上主对角线向量c=[-2,-2,-2,-2,-2,-2,-2,0]; 请输入方程组右端向量d=[220/27,0,0,0,0,0,0,0]; 请输入系数矩阵阶数n=8 运行结果如下: x = 8.1478 4.0737 2.0365 1.0175 0.5073 0.2506 0.1194 0.0477 第三章 14.试分别用(1)Jacobi 迭代法;(2)Gauss-Seidel 迭代法解线性方程组 1234510123412191232721735143231211743511512x x x x x ?????? ??????---????????????=--?????? --?????? ??????---?????? 迭代初始向量 (0)(0,0,0,0,0)T x =。 (1)雅可比迭代法程序如下: function jacobi() %Jacobi 迭代法 a=input('请输入系数矩阵a='); b=input('请输入右端向量b='); x0=input('请输入初始向量x0='); n=input('请输入系数矩阵阶数n='); er=input('请输入允许误差er='); N=input('请输入最大迭代次数N='); for i=1:n for j=1:n if i==j d(i,j)=a(i,j); else d(i,j)=0; end end end m=eye(5)-d\a; %迭代矩阵 g=d\b; x=m*x0+g; k=1; while k<=N %进行迭代 for i=1:5 if max(abs(x(i)-x0(i))) >er x=m*x+g; k=k+1;

计算方法B上机报告

计算方法B 上机报告 第1题 某通信公司在一次施工中,需要在水面宽度为20米的河沟底部沿直线走向铺设一条沟底光缆。在铺设光缆之前需要对沟底的地形进行初步探测,从而估计所需光缆的长度,为工程预算提供依据。已探测到一组等分点位置的深度数据(单位:米)如下表所示: (1)请用合适的曲线拟合所测数据点; (2)估算所需光缆长度的近似值,并作出铺设河底光缆的曲线图; 问题分析和算法思想: 本题的主要目的是对21个测量数据进行拟合,同时对拟合曲线进行线积分即可得到河底光缆长度的近似值,可以用的插值方法很多:多项式插值、Lagrange 插值、Newton 插值、三次样条插值等。由于数值点较多时,采用高次多项式插值将产生很大的误差,用拉格朗日插值多项式会出现龙格现象。故为了将所有的数据点都用上,且题中光缆为柔性,可光滑铺设于水底,鉴于此特性,采用三次样条插值的方法较为合适。 计算光缆长度近似值,只需将每两点之间的距离算出,然后依次相加,所得的折线长度,即为光缆长度的近似值。 光缆长度计算公式: 19 1 k k k l +===∑? ? ? 算法结构: 三次样条算法结构见《计算方法教程》P110。 源程序: clear;clc; x=0:20;

y=[9.01 8.96 7.96 7.97 8.02 9.05 10.13 11.18 12.26 13.28 13.32 12.61 11.29 10.22 9.15 7.90 7.95 8.86 9.81 10.80 10.93]; d=y; plot(x,y,'k.','markersize',15) hold on %%%计算二阶差商 for k=1:2 for i=21:-1:(k+1) d(i)=(d(i)-d(i-1))/(x(i)-x(i-k)); end end %%%假定d的边界条件,采用自然三次样条 for i=2:20 d(i)=6*d(i+1); end d(1)=0; d(21)=0; %%%追赶法求解带状矩阵的m值 a=0.5*ones(1,21); b=2*ones(1,21); c=0.5*ones(1,21); a(1)=0;c(21)=0; u=ones(1,21); u(1)=b(1); r=c; yy(1)=d(1); %%%追的过程 for k=2:21 l(k)=a(k)/u(k-1); u(k)=b(k)-l(k)*r(k-1); yy(k)=d(k)-l(k)*yy(k-1); end %%%赶的过程 m(21)=yy(21)/u(21); for k=20:-1:1 m(k)=(yy(k)-r(k)*m(k+1))/u(k); end %%%利用插值点画出拟合曲线 k=1; nn=100; xx=linspace(0,20,nn); l=0; for j=1:nn for i=2:20 if xx(j)<=x(i) k=i;

相关文档
最新文档