数值分析作业.docx

上传人:b****7 文档编号:8881053 上传时间:2023-02-02 格式:DOCX 页数:28 大小:66.97KB
下载 相关 举报
数值分析作业.docx_第1页
第1页 / 共28页
数值分析作业.docx_第2页
第2页 / 共28页
数值分析作业.docx_第3页
第3页 / 共28页
数值分析作业.docx_第4页
第4页 / 共28页
数值分析作业.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

数值分析作业.docx

《数值分析作业.docx》由会员分享,可在线阅读,更多相关《数值分析作业.docx(28页珍藏版)》请在冰豆网上搜索。

数值分析作业.docx

数值分析作业

数值分析作业四

刘涌

一、作业要求

1.算法的设计方案。

2.全部源程序(要求注明主程序和每个子程序的功能)。

3.用各种积分方法求出的数值解

及节点

的值。

4.在同一坐标系内画出积分方程精确解的曲线和用各种积分方法求出的数值解的曲线。

5.讨论不同积分法的优劣

二、算法设计方案

1.复化梯形积分法:

在区间[a,b]

上有二阶连续导数,取等距节点

复化梯形公式

其求积系数

总满足

对于问题中所给积分方程中的积分项,分别用复化梯形积分法的数值积分算法公式展开,得到含有未知数u(x)和x的方程,有如下形式:

再将各个方程积分节点带入各个方程,得到

的(n+1)阶方程组。

由于对角元素绝对占优,用Gauss消去法解该方程组即可。

由于节点数目未知,需要进行迭代确定,每迭代一次,需要判断是否满足精度要求,节点数目增加,然后再进行。

2.复化Simpon积分法:

在区间[a,b]

上有二阶连续导数,取2m+1个等距节点

复化Simpson公式为

其求积系数总满足

复化simpson积分法计算量较小,可以直接每次增加2个节点(区间必需取偶数)。

3.Guass积分法:

本题中采用下列公式

若记

,积分区间在[a,b],其相应的正交多项式是Ledendre多项式,其形式为如上求积公式,查表得n=NG时的积分节点及求积系数

求解得NG个差值节点的值。

三、程序源代码:

#include

#include

#include"stdlib.h"

#defineN2601

#defineM39

#defineNG9

doublea1[N+1][N+1],g1[N+1],x1[N+1],u1[N+1];

FILE*fp;

//N:

复化梯形计算的节点数:

N+1

//M:

复化Simpson算法节点数:

2*M+1

//NG:

gauss算法节点数:

NG

voidgsxy(n)

//列主元素的gauss消去法求解线性方程组,用于梯形法中方程组的求解

intn;

{

doublesum,max,tem;

inti,j,r,im;

for(r=0;r

{

im=r;

max=fabs(a1[r][r]);

for(i=r;i

{

if(fabs(a1[(i+1)][r])>=max)

{

max=fabs(a1[(i+1)][r]);

im=i+1;

}

}

for(j=r;j

{

tem=a1[im][j];

a1[im][j]=a1[r][j];

a1[im][j]=tem;

}

for(i=r+1;i

{

tem=a1[i][r]/a1[r][r];

for(j=r+1;j

a1[i][j]=a1[i][j]-tem*a1[r][j];

g1[i]=g1[i]-tem*g1[r];

}

}

u1[n-1]=g1[n-1]/a1[n-1][n-1];

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

{

sum=0.0;

for(j=i+1;j

sum=sum+a1[i][j]*u1[j];

u1[i]=(g1[i]-sum)/a1[i][i];

}

}

doublefhtix()

//复合梯形法求解,因为计算量大,数组采用全局变量的形式存储,返回误差值,结果存入F:

\\rezult4.txt

{

doubleh,er;

inti,j,n;

n=N+1;

h=2/(double)N;

for(i=0;i

x1[i]=-1.0+h*(double)i;

for(i=0;i

g1[i]=exp(4*x1[i])+(exp(x1[i]+4)-exp(-1.0*(x1[i]+4)))/(x1[i]+4);

for(i=0;i

for(j=0;j

{

if((j==0)||(j==N))

a1[i][j]=h*exp(x1[i]*x1[j])/2;

else

a1[i][j]=h*exp(x1[i]*x1[j]);

}

for(i=0;i

a1[i][i]=1.0+a1[i][i];

//lu(a1,g1,N+1,u1);

gsxy(n);

er=0.0;

for(i=1;i

er=er+(exp(4*x1[i])-u1[i])*(exp(4*x1[i])-u1[i]);

er=er*h;

er=er+h*(exp(4*x1[0])-u1[0])*(exp(4*x1[0])-u1[0])/2.0;

er=er+h*(exp(4*x1[N])-u1[N])*(exp(4*x1[N])-u1[N])/2.0;

fprintf(fp,"梯形解法:

erroris:

%.8e\n",er);

fputs("差值点,计算值,真实值\n",fp);

for(i=0;i

fprintf(fp,"%f,%f,%f\n",x1[i],u1[i],exp(4*x1[i]));

return(er);

}

voidlu(a,b,n,x)

doublea[],b[],x[];

intn;

/*Doolittle法解线性方程组,用于simpson和gauss方法中线性方程组的求解*/

{

intk,t,j,i;

double*l,*u,*y;

doublesum;

l=malloc(n*n*sizeof(double));

u=malloc(n*n*sizeof(double));

y=malloc(n*sizeof(double));

for(k=0;k

l[k*n+k]=1.0;

for(j=0;j

{

u[j]=a[j];

if(j>0)

l[j*n]=a[j*n]/u[0];

}

for(k=1;k

{

for(j=k;j

{sum=0.0;

for(t=0;t

{

sum=sum+l[k*n+t]*u[t*n+j];

}

u[k*n+j]=a[k*n+j]-sum;

}

if(k<(n-1))

{

for(i=(k+1);i

{

sum=0.0;

for(t=0;t

{

sum=sum+l[i*n+t]*u[t*n+k];

}

l[i*n+k]=(a[i*n+k]-sum)/u[k*n+k];

}

}

}

y[0]=b[0];

for(i=1;i

{sum=0.0;

for(t=0;t

sum=sum+l[i*n+t]*y[t];

y[i]=b[i]-sum;

}

x[n-1]=y[n-1]/u[(n-1)*n+n-1];

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

{sum=0.0;

for(t=i+1;t

sum=sum+u[i*n+t]*x[t];

x[i]=(y[i]-sum)/u[i*n+i];

}

free(l);

free(u);

free(y);

return;

}

doublefhSimpson(doubleu[2*M+1])

//复合Simpson求解,返回误差值,结果存入F:

\\rezult4.txt

{

doublex[2*M+1],a[2*M+1][2*M+1],g[2*M+1],h,er;

inti,j;

h=1/(double)M;

for(i=0;i<(2*M+1);i++)

x[i]=-1.0+h*(double)i;

for(i=0;i<(2*M+1);i++)

g[i]=exp(4*x[i])+(exp(x[i]+4)-exp(-1.0*(x[i]+4)))/(x[i]+4);

for(i=0;i<(2*M+1);i++)

for(j=0;j<(2*M+1);j++)

{

if((j==0)||(j==2*M))

a[i][j]=h*exp(x[i]*x[j])/3;

elseif(j%2==0)

a[i][j]=2*h*exp(x[i]*x[j])/3;

else

a[i][j]=4*h*exp(x[i]*x[j])/3;

}

for(i=0;i<(2*M+1);i++)

a[i][i]=1.0+a[i][i];

lu(a,g,2*M+1,u);

er=0.0;

for(i=2;i<2*M;i=i+2)

er=er+(exp(4*x[i])-u[i])*(exp(4*x[i])-u[i]);

er=er*h*2/3;

for(i=1;i<2*M;i=i+2)

er=er+(exp(4*x[i])-u[i])*(exp(4*x[i])-u[i]);

er=er*h*4/3;

er=er+h*(exp(4*x[0])-u[0])*(exp(4*x[0])-u[0])/3;

er=er+h*(exp(4*x[2*M])-u[2*M])*(exp(4*x[2*M])-u[2*M])/3;

fprintf(fp,"Simpson解法:

erroris:

%.8e\n",er);

for(i=0;i<(2*M+1);i++)

fprintf(fp,"%f,%f,%f\n",x[i],u[i],exp(4*x[i]));

return(er);

}

doublegauss(doubleu[NG])

//Gauss积分法求解,返回误差值,结果存入F:

\\rezult4.txt

{

doublex[NG]={-0.9681602395,-0.8360311073,-0.6133714327,-0.3242534234,0,0.3242534234,0.6133714327,0.8360311073,0.9681602395};

doublea1[NG]={0.0812743884,0.1806481607,0.2606106964,0.3123470770,0.3302393550,0.3123470770,0.2606106964,0.1806481607,0.0812743884};

//NG=9时节点值及系数

//doublex[NG]={-0.9602898565,-0.7966664774,-0.5255324099,-0.1834346425,0.1834346425,0.5255324099,0.7966664774,0.9602898565};

//doublea1[NG]={0.1012285363,0.2223810345,0.3137066459,0.3626837834,0.3626837834,0.3137066459,0.2223810345,0.1012285363};

//NG=8时节点值及系数

//doublex[NG]={-0.9324695142,-0.6612093865,-0.2386191861,0.2386191861,0.6612093865,0.9324695142};

//doublea1[NG]={0.1713244924,0.3607615730,0.4679139346,0.4679139346,0.3607615730,0.1713244924};

////NG=6时节点值及系数

//doublex[NG]={-0.9491079123,-0.7415311856,-0.4058451514,0,0.4058451514,0.7415311856,0.9491079123};

//doublea1[NG]={0.1294849662,0.2797053915,0.3818300505,0.4179591837,0.3818300505,0.2797053915,0.1294849662};

//NG=7时节点值及系数

doublea[NG][NG],g[NG],er;

inti,j;

for(i=0;i

g[i]=exp(4*x[i])+(exp(x[i]+4)-exp(-1.0*(x[i]+4)))/(x[i]+4);

for(i=0;i

for(j=0;j

a[i][j]=a1[j]*exp(x[i]*x[j]);

for(i=0;i

a[i][i]=1.0+a[i][i];

lu(a,g,NG,u);

er=0;

for(i=0;i

er=er+a1[i]*(exp(4*x[i])-u[i])*(exp(4*x[i])-u[i]);

fprintf(fp,"Gauss解法:

erroris:

%.8e\n",er);

for(i=0;i

fprintf(fp,"%f,%f,%f\n",x[i],u[i],exp(4*x[i]));

return(er);

}

voidmain()

//主函数,调用各子函数求解方程,结果存入F:

\\rezult4.txt

{

doubleu2[2*M+1],u3[NG];

doubler1,r2,r3;

fp=fopen("F:

\\rezult4.txt","w");

r1=fhtix(u1);

printf("er1is:

%.8e\n",r1);

r2=fhSimpson(u2);

printf("er2is:

%.8e\n",r2);

r3=gauss(u3);

printf("er3is:

%.8e\n",r3);

fclose(fp);

}

四、计算结果

复化梯形积分法

复化Simpon积分法

Guass积分法

节点值

数值解

节点值

数值解

节点值

数值解

-1

0.018317

-1

0.018317

-0.96816

0.020803

-0.99231

0.018889

-0.97561

0.020194

-0.83603

0.035291

-0.98462

0.019479

-0.95122

0.022263

-0.61337

0.085993

-0.97693

0.020087

-0.92683

0.024544

-0.32425

0.273347

-0.96924

0.020715

-0.90244

0.02706

0

1

-0.96155

0.021362

-0.87805

0.029832

0.324253

3.658356

-0.95386

0.022029

-0.85366

0.03289

0.613371

11.62881

-0.94618

0.022717

-0.82927

0.03626

0.836031

28.33576

-0.93849

0.023426

-0.80488

0.039976

0.96816

48.06917

-0.9308

0.024158

-0.78049

0.044072

-0.92311

0.024913

-0.7561

0.048589

-0.91542

0.025691

-0.73171

0.053568

-0.90773

0.026493

-0.70732

0.059057

-0.90004

0.027321

-0.68293

0.065109

-0.89235

0.028174

-0.65854

0.071781

-0.88466

0.029054

-0.63415

0.079137

-0.87697

0.029961

-0.60976

0.087247

-0.86928

0.030897

-0.58537

0.096188

-0.86159

0.031862

-0.56098

0.106045

-0.8539

0.032857

-0.53659

0.116912

-0.84621

0.033884

-0.5122

0.128893

-0.83852

0.034942

-0.48781

0.142102

-0.83083

0.036033

-0.46342

0.156664

-0.82315

0.037159

-0.43902

0.172719

-0.81546

0.038319

-0.41463

0.190419

-0.80777

0.039516

-0.39024

0.209932

-0.80008

0.040751

-0.36585

0.231446

-0.79239

0.042023

-0.34146

0.255164

-0.7847

0.043336

-0.31707

0.281312

-0.77701

0.04469

-0.29268

0.310141

-0.76932

0.046085

-0.26829

0.341924

-0.76163

0.047525

-0.2439

0.376963

-0.75394

0.049009

-0.21951

0.415594

-0.74625

0.05054

-0.19512

0.458183

-0.73856

0.052119

-0.17073

0.505137

-0.73087

0.053747

-0.14634

0.556903

-0.72318

0.055425

-0.12195

0.613973

-0.71549

0.057157

-0.09756

0.676892

-0.70781

0.058942

-0.07317

0.746259

-0.70012

0.060783

-0.04878

0.822734

-0.69243

0.062681

-0.02439

0.907047

-0.68474

0.064639

0

1

-0.67705

0.066658

0.02439

1.102478

-0.66936

0.06874

0.04878

1.215459

-0.66167

0.070887

0.073171

1.340017

-0.65398

0.073101

0.097561

1.47734

-0.64629

0.075385

0.121951

1.628736

-0.6386

0.077739

0.146341

1.795646

-0.63091

0.080168

0.170732

1.979662

-0.62322

0.082672

0.195122

2.182535

-0.61553

0.085254

0.219512

2.406198

-0.60784

0.087917

0.243902

2.652782

-0.60015

0.090663

0.268293

2.924635

-0.59246

0.093495

0.292683

3.224348

-0.58478

0.096415

0.317073

3.554775

-0.57709

0.099426

0.341463

3.919064

-0.5694

0.102532

0.365854

4.320684

-0.56171

0.105735

0.390244

4.763462

-0.55402

0.109037

0.414634

5.251615

-0.54633

0.112443

0.439024

5.789794

-0.53864

0.115955

0.463415

6.383124

-0.53095

0.119577

0.487805

7.037259

-0.52326

0.123312

0.512195

7.758428

-0.51557

0.127164

0.536585

8.553501

-0.50788

0.131136

0.560976

9.430053

-0.50019

0.135232

0.585366

10.39643

-0.4925

0.139456

0.609756

11.46185

-0.48481

0.143811

0.634146

12.63644

-0.47712

0.148303

0.658537

13.93141

-0.46944

0.152936

0.682927

15.35908

-0.46175

0.157713

0.707317

16.93306

-0.45406

0.162639

0.731707

18.66833

-0.44637

0.167719

0.756098

20.58144

-0.43868

0.172958

0.780488

22.6906

-0.43099

0.17836

0.804878

25.0159

-0.4233

0.183931

0.829268

27.5795

-0.41561

0.189676

0.853659

30.40581

-0.40792

0.195601

0.878049

33.52176

-0.40023

0.20171

0.902439

36.95702

-0.39254

0.208011

0.926829

40.74433

-0.38485

0.214508

0.95122

44.91975

-0.37716

0.221208

0.97561

49.52307

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

当前位置:首页 > 高等教育 > 农学

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

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