计算方法与实习实验报告Word格式文档下载.docx

上传人:b****6 文档编号:21295205 上传时间:2023-01-29 格式:DOCX 页数:14 大小:42.48KB
下载 相关 举报
计算方法与实习实验报告Word格式文档下载.docx_第1页
第1页 / 共14页
计算方法与实习实验报告Word格式文档下载.docx_第2页
第2页 / 共14页
计算方法与实习实验报告Word格式文档下载.docx_第3页
第3页 / 共14页
计算方法与实习实验报告Word格式文档下载.docx_第4页
第4页 / 共14页
计算方法与实习实验报告Word格式文档下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

计算方法与实习实验报告Word格式文档下载.docx

《计算方法与实习实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《计算方法与实习实验报告Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。

计算方法与实习实验报告Word格式文档下载.docx

sum1<

endl;

按降序计算的结果为:

sum2<

return0;

程序执行结果是:

1.64473

1.64483

分析:

显然升序结果的误差大于降序结果。

随着n的增大误差将越来越大,实际中,需合理选择计算顺序。

使误差尽量小。

实习题二

1.用牛顿法求下列方程的根:

1)

C语言程序代码如下:

cmath>

doublef(doublex){

returnx*x-exp(x);

doublef1(doublex){

return2*x-exp(x);

doubleeps=1e-6,eta=1e-8,x0,x1;

inti;

请输入迭代初值:

cin>

>

x0;

运行结果为:

for(i=0;

100;

i++){

x1=x0-f(x0)/f1(x0);

if(fabs(x1-x0)<

eps||fabs(f(x1))<

eta)

{cout<

x1<

break;

elsex0=x1;

x0<

1

-1.39221

-0.835088

-0.709834

-0.703483

-0.703467

实习题三

1.用列主元消去法解方程组:

C语言程序代码如下:

#include<

cmath>

voidColPivot(float*,int,float[]);

floatx[4];

floatc[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);

=3;

i++)printf("

x[%d]=%f\n"

i,x[i]);

voidColPivot(float*c,intn,floatx[]){

inti,j,k,t;

floatp;

=n-2;

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;

=n;

j++){

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

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

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

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

for(t=i;

t<

t++)

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

for(i=n-1;

i>

=0;

i--){

for(j=n-1;

=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));

x[0]=-1.333333

x[1]=2.333333

x[2]=-0.333333

x[3]=1.000000

4.编写用追赶法解三对角线性方程组的程序,并解下列方程组:

2)

,其中

A10x10=-41

1-41

...

...

1-4

b=-27

-15

-15

#definei11

intmain()

{

floata[i]={0,0,1,1,1,1,1,1,1,1,1};

floatb[i]={0,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4};

floatc[i]={0,1,1,1,1,1,1,1,1,1,0};

floatd[i]={0,-27,-15,-15,-15,-15,-15,-15,-15,-15,-15};

floate[i]={0,0,0,0,0,0,0,0,0,0,0};

floatf[i]={0,0,0,0,0,0,0,0,0,0,0};

floatg[i]={0,0,0,0,0,0,0,0,0,0,0};

floatm;

intj;

f[1]=c[1]/b[1];

g[1]=d[1]/b[1];

for(j=2;

i-1;

{

m=b[j]-f[j-1]*a[j];

f[j]=c[j]/m;

g[j]=(d[j]-g[j-1]*a[j])/m;

g[i-1]=(d[i-1]-g[i-2]*a[i-1])/(b[i-1]-f[i-2]*a[i-1]);

e[i-1]=g[i-1];

for(j=i-2;

=1;

e[j]=g[j]-f[j]*e[j+1];

x1~x10依次为:

for(j=1;

i;

e[j]<

return0;

8.70576

7.82303

7.58637

7.52245

7.50344

7.49131

7.46179

7.35583

6.96156

5.49039

实习题四

2.按下列数据

Xi

0.30

0.42

0.50

0.58

0.66

0.72

Yi

1.04403

1.08462

1.11803

1.15603

1.19817

1.23223

作5次插值,并求X1=0.46,X2=0.55,X3=0.60时的函数近似值。

floatchazhi(floatx[],floaty[],floatxx,intn)

float*a,yy=0;

a=newfloat[n];

a[i]=y[i];

for(j=0;

if(j!

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

yy=yy+a[i];

deletea;

returnyy;

floatx[6]={0.30,0.42,0.50,0.58,0.66,0.72};

floaty[6]={1.04403,1.08462,1.11803,1.15603,1.19817,1.23223};

floatxx1,xx2,xx3,yy1,yy2,yy3;

请输入x"

xx1>

xx2>

xx3;

yy1=chazhi(x,y,xx1,6);

yy2=chazhi(x,y,xx2,6);

yy3=chazhi(x,y,xx3,6);

x="

xx1<

"

y="

yy1<

xx2<

yy2<

xx3<

yy3<

请输入x

0.460.550.60

x=0.46,y=1.10072

x=0.55,y=1.14127

x=0.6,y=1.16619

实习题五

1.试分别用抛物线

和指数曲线

拟合下列数据

1.5

2

2.5

3

3.5

4

4.5

33.4

79.5

122.65

159.05

189.15

214.15

238.65

252.5

5

5.5

6

6.5

7

7.5

8

267.55

280.5

296.65

301.4

310.4

318.15

325.15

比较两个拟合函数的优劣。

①二次曲线:

matlab代码为:

A=[11.522.533.544.555.566.577.58];

B=[33.479.5122.65159.05189.15214.15238.65252.5267.55280.5296.65301.4310.4318.15325.15];

S=zeros(1,5);

T=zeros(3,1);

fork=1:

S(k)=sum(A.^(k-1));

end

T(k)=sum(A.^(k-1).*B);

C=zeros(3,3);

a=zeros(3,1);

fori=1:

forj=1:

C(i,j)=S(i+j-1);

a=C\T;

disp(a(k));

执行结果为:

-45.3333

94.2302

-6.1316

故拟合曲线为:

②指数曲线:

C语言程序代码为:

voidmain()

doubleX[15]={1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8};

doubleY[15]={log(33.4),log(79.5),log(122.65),log(159.05),log(189.15),log(214.15),log(238.65),log(252.5),log(267.55),log(280.5),log(296.65),log(301.4),log(310.4),log(318.15),log(325.15)};

doublexx;

doubleyy;

xx=0;

yy=0;

for(inti=0;

15;

++i)

xx+=(X[i]/15.0);

yy+=(Y[i]/15.0);

}

doubleb;

b=0;

doublem;

doublez;

m=0;

z=0;

for(intv=0;

v<

++v)

m+=((X[v]-xx)*(X[v]-xx));

z+=((X[v]-xx)*(Y[v]-yy));

if(m==0)

cout<

fail"

;

b=z/m;

doublelna;

lna=yy-b*xx;

a为:

exp(lna)<

b为:

b<

67.4026

0.23896

由计算结果可知,指数曲线的误差远大于二次拟合曲线。

因为拟合指数曲线时,利用取对数,将指数曲线间接转化为拟合一次曲线,而对于曲线拟合来说,拟合度越高往往意味着精确度越高。

故,指数曲线误差度大于二次曲线。

实习题六

1、用复化梯形公式和复化辛卜生公式计算积分I1(f)=

dx和I2(f)=

dx。

观察n为多少时,所得近似值具有6位有效数字。

(1)①用复化梯形公式计算:

Matlab程序如下:

functionadaptTrap(a,b,eps)

h=b-a;

T1=0;

T2=(b-a)/2*(f(a)+f(b));

n=1;

whileabs(T1-T2)>

eps

T1=T2;

m=2*n+1;

x=a:

(b-a)/(2*n):

b;

s=sum(f(x(2:

2:

m-1)));

T2=1/2*(T1+h*s);

n=n*2;

h=h/2;

fprintf(‘T(%d)=%f\n’,n,T2);

functiony=f(x)

y=sqrt(1+(cosx).*(cosx));

执行程序结果:

T(8)=1.910099

其中,n=8

②用复化辛卜生公式计算:

functionSimpson(a,b)

n=2;

fori=1:

x=a:

m=2*n+1;

h=(b-a)/n;

s=(h/6)*(f(a)+2*sum(f(3:

m-2)))+4*sum(f(x(2:

m-1)))+f(b));

fprintf(‘s(%d)=%f\n’,n,s);

n=n*2;

y=sqrt(1+(cosx).*(cosx));

s

(2)=1.910141;

s(4)=1.910099;

s(8)=1.910099

其中,n=8

(2)①用复化梯形公式计算:

f(x)=(tanx)/x;

T(512)=0.848967;

其中,n=512.

f(x)=(tanx)/x;

s

(2)=0.849039;

s(4)=0.848972;

s(8)=0.848967;

其中,n=8.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1