标准模版数值计算课程设计Word格式.docx

上传人:b****6 文档编号:20337880 上传时间:2023-01-22 格式:DOCX 页数:38 大小:405.15KB
下载 相关 举报
标准模版数值计算课程设计Word格式.docx_第1页
第1页 / 共38页
标准模版数值计算课程设计Word格式.docx_第2页
第2页 / 共38页
标准模版数值计算课程设计Word格式.docx_第3页
第3页 / 共38页
标准模版数值计算课程设计Word格式.docx_第4页
第4页 / 共38页
标准模版数值计算课程设计Word格式.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

标准模版数值计算课程设计Word格式.docx

《标准模版数值计算课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《标准模版数值计算课程设计Word格式.docx(38页珍藏版)》请在冰豆网上搜索。

标准模版数值计算课程设计Word格式.docx

换行后以小四号宋体打印正文。

章、节、小节编号分别以1、1.1、1.1.1格式依次标出,空一字符后接各部分的标题。

每一章的标题都应出现在本章首页的第一行上。

当课程设计报告结构复杂,小节以下的标题,左起顶格书写,编号依次用

(1)、

(2)……或1)、2)……顺序表示。

字体为小四号宋体。

对条文内容采用分行并叙时,其编号用(a)、(b)……或a)、b)……顺序表示,如果编号及其后内容新起一个段落,则编号前空两个中文字符。

曲线图表要求:

所有曲线、图表、线路图、流程图、程序框图、示意图等不准徒手画,必须按国家规定标准或工程要求绘制(应尽可能采用计算机辅助绘图)。

课程设计说明书(报告)中图表、公式要求如下:

(a)图:

图的名称采用中文,中文字体为五号宋体,图名在图片下面。

引用图应在图题右上角标出文献来源。

图号以章为单位顺序编号。

格式为:

图1-1,空一字符后接图名。

(b)表格:

表的名称及表内文字采用中文,中文字体为五号宋体,表名在表格上面。

表号以章为单位顺序编号,表内必须按规定的符号标注单位。

表1-1,空一字符后接表格名称。

(c)公式:

公式书写应在文中另起一行,居中排列。

公式序号按章顺序编号。

字体为五号宋体,序号靠页面右侧。

(1-1)……。

设计体会及今后的改进意见:

体会要简洁、真实、深刻;

忌空话、套话等不实之词。

改进意见要合理、中肯。

参考文献的要求:

另起一页,居中打印参考文献四字(四号黑体,段前段后1行),字间空一字符;

另起一行,按论文中参考文献出现的先后顺序用阿拉伯数字连续编号(参考文献应在正文中注出);

参考文献中每条项目应齐全(字体均为小四号宋体)。

(格式:

[编号]作者.论文或著作名称.期刊名或出版社.出版时间)。

(期刊应注明第几期、起止页数(包括论著))。

3)设计报告装订顺序与规范

封面

数值计算设计课程设计报告正文

设计体会及今后的改进意见

参考文献(资料)

左边缘装订

3、课程设计工作进度计划:

时间

设计任务及要求

第14周

编写和调试程序并按要求撰写设计报告

指导教师:

刘海峰日期:

6.21

教研室主任:

日期:

 

1经典四阶龙格库塔法解一阶微分方程组

1.1算法说明

龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。

由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。

该算法是构建在数学支持的基础之上的。

图3-1四阶龙格库塔法流程图

1.2程序运行结果

图3-2四阶龙格库塔算法程序结果

1.3程序代码

#include<

iostream>

usingnamespacestd;

intmain()

{

intM;

floatX[120],Y[120],F[120];

inta,b;

a=0,b=1.4;

floath=0.1;

doublek1,k2,k3,k4;

floatf(float,float);

X[0]=0.0;

Y[0]=0.0;

F[0]=f(X[0],Y[0]);

for(M=0;

M<

(int)((b-a)/h);

M++)

{

X[M]=X[0]+M*h;

F[M]=f(X[M],Y[M]);

k1=h*F[M];

k2=h*f(X[M]+h/2,Y[M]+k1/2);

k3=h*f(X[M]+h/2,Y[M]+k2/2);

k4=h*f(X[M]+h,Y[M]+k3);

Y[M+1]=Y[M]+(k1+2*k2+2*k3+k4)/6.0;

F[M+1]=f(X[M+1],Y[M+1]);

cout<

<

X[M]<

"

"

Y[M]<

endl;

}

return0;

}

floatf(floata,floatb)

{floatc;

c=1+b*b;

return(c);

}

2高斯列主元法解线性方程组

2.1算法说明

一个二元一次方程组,设法对每个等式进行变形,使两个等式中的同一个未知数的系数相等,这两个等式相减,得到一个新的等式,在这个新的等式中,系数相等的未知数就被除去了(系数为0)。

同样的也适合多元多次方程组。

它是线性代数中的一个算法,用于决定线性方程组的解,决定矩阵的秩,以及决定可逆方矩阵的逆。

当用于一个矩阵时,高斯消去产生“行消去梯形形式”。

Gauss列主元消去法是在Gauss消去法中增加选主元的过程,即在第k步(k=1,2,3,…)消元时,首先在第k列主对角元以下(含对角元)元素中挑选绝对值最大的数(即为列主元),并通过初等行变换,使得该数位于主对角线上,然后再继续消元。

2.2运行结果

图2-1高斯列主元法解线性方程组程序运行结果

2.3程序代码

#include<

cmath>

voidssss(double**a,double*x,intn);

inti,j,n;

double**a;

cout<

输入增广矩阵的列数n:

n="

;

cin>

>

n;

a=newdouble*[n];

for(i=0;

i<

i++)

a[i]=newdouble[n-1];

输入方程的系数"

n-1;

i++)

for(j=0;

j<

j++)

{cin>

a[i][j];

doublex[100];

ssss(a,x,n-1);

delete[]a;

return0;

voidssss(double**a,double*x,intn)

intk,i,j,f,g;

doublet,r;

for(k=0;

k<

k++)

f=k;

for(i=k+1;

{

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

fabs(a[f][k]))

f=i;

}

for(i=0;

n+1;

{

t=a[k][i];

a[k][i]=a[f][i];

a[f][i]=t;

}//换行

for(i=k+1;

t=a[i][k];

for(j=k;

j++)

a[i][j]=a[i][j]-(t/a[k][k])*a[k][j];

//变成上三角矩阵

}

cout<

输出上三角矩阵"

{for(j=0;

a[i][j]<

//下面是回带过程

x[n-1]=a[n-1][n]/a[n-1][n-1];

for(i=n-2;

i>

=0;

i--)

r=0;

for(j=n-1;

j>

i;

j--)

r=r+a[i][j]*x[j];

x[i]=(a[i][n]-r)/a[i][i];

高斯消元法的一个解"

cout<

x"

i+1<

="

x[i]<

3牛顿法解非线性方程组

3.1算法说明

图3-1牛顿法解非线性方程组流程图

3.2运行结果

图3-2牛顿法解非线性方程组程序运行结果

3.3程序代码

#defineN2//定义非线性方程组中方程个数、未知量个数(这里做的是书P137例题)

#defineepsilon0.0001//定义差向量1范数的上限

#defineMax100//这是最大迭代次数

constintN2=2*N;

voidss(floatxx[N],floatyy[N]);

//计算向量函数的因变量向量yy[N]

voidssjacobian(floatxx[N],floatyy[N][N]);

//计算雅克比矩阵yy[N][N]

voidinv_jacobian(floatyy[N][N],floatinv[N][N]);

//计算雅克比矩阵的逆矩阵inv

voidnewton(floatx0[N],floatinv[N][N],floaty0[N],floatx1[N]);

//由近似解向量x0计算近似解向量x1

floatx0[N]={2.0,0.25},y0[N],jacobian[N][N],invjacobian[N][N],x1[N],errornorm;

inti,j,iter=0;

cout<

初始近似解向量:

for(i=0;

N;

x0[i]<

do

iter=iter+1;

第"

iter<

次迭代开始"

//计算向量函数的因变量向量y0

ss(x0,y0);

//计算雅克比矩阵

ssjacobian(x0,jacobian);

//计算雅克比矩阵的逆矩阵

inv_jacobian(jacobian,invjacobian);

newton(x0,invjacobian,y0,x1);

//计算差向量的1范数errornorm

errornorm=0;

errornorm=errornorm+fabs(x1[i]-x0[i]);

if(errornorm<

epsilon)break;

x0[i]=x1[i];

}while(iter<

Max);

return0;

voidss(floatxx[N],floatyy[N])

{floatx,y;

inti;

x=xx[0];

y=xx[1];

yy[0]=x*x-2*x-y+0.5;

yy[1]=x*x+4*y*y-4;

向量函数的因变量向量是:

for(i=0;

yy[i]<

voidssjacobian(floatxx[N],floatyy[N][N])

floatx,y;

inti,j;

//jacobianhaven*nelement

yy[0][0]=2*x-2;

yy[0][1]=-1;

yy[1][0]=2*x;

yy[1][1]=8*y;

雅克比矩阵是:

{for(j=0;

yy[i][j]<

voidinv_jacobian(floatyy[N][N],floatinv[N][N])

{floataug[N][N2],L;

inti,j,k;

开始计算雅克比矩阵的逆矩阵:

{for(j=0;

aug[i][j]=yy[i][j];

for(j=N;

N2;

if(j==i+N)aug[i][j]=1;

elseaug[i][j]=0;

aug[i][j]<

for(i=0;

for(k=i+1;

{L=-aug[k][i]/aug[i][i];

for(j=i;

aug[k][j]=aug[k][j]+L*aug[i][j];

for(i=N-1;

0;

{

for(k=i-1;

k>

k--)

for(j=N2-1;

for(i=N-1;

for(j=N2-1;

aug[i][j]=aug[i][j]/aug[i][i];

inv[i][j-N]=aug[i][j];

雅克比矩阵的逆矩阵:

inv[i][j]<

voidnewton(floatx0[N],floatinv[N][N],floaty0[N],floatx1[N])

floatsum=0;

{sum=0;

for(j=0;

sum=sum+inv[i][j]*y0[j];

x1[i]=x0[i]-sum;

近似解向量:

x1[i]<

4龙贝格求积分算法

4.1算法说明

生成

的逼近表

,并以

为最终解来逼近积分

(4-1)

逼近

存在于一个特别的下三角矩阵中,第0列元素

用基于

个[a,b]子区间的连续梯形方法计算,然后利用龙贝格公式计算

时,第

行的元素为

(4-2)

时,程序在第

行结束。

图4-1龙贝格求积分算法流程图

4.2运行结果

图4-2龙贝格求积分算法程序运行结果

4.3程序代码

iostream.h>

cstdio>

floatf(floatx)

returnx*x;

main()

intM=1,n=0,p=0,K=0,i=0,j=0,J=0;

floath=0.0,a=0.0,b=0.0,err=1.0,quad=0.0,s=0.0,x=0.0,tol=0.0;

floatR[30][30]={0};

a=0;

b=1;

h=b-a;

n=4;

tol=0.000001;

求函数y=x^2在(0,1)上的龙贝格积分"

'

\n'

龙贝格矩阵最大行数为:

n<

误差限为:

tol;

R[0][0]=h*(f(a)+f(b))/2;

while(((err>

tol)&

&

(J<

n))||(J<

4))

J=J+1;

h=h/2;

s=0;

for(p=1;

p<

=M;

p++)

x=a+h*(2*p-1);

s=s+f(x);

R[J][0]=R[J-1][0]/2+h*s;

M=2*M;

for(K=1;

K<

=J;

K++)

R[J][K]=R[J][K-1]+(R[J][K-1]-R[J-1][K-1])/(pow(4,K)-1);

err=fabs(R[J-1][J-1]-R[J][K]);

quad=R[J][J];

\n龙贝格矩阵为:

(J+1);

'

R[i][j]<

\n"

积分值为:

quad<

误差估计为:

err<

使用过的最小步长:

h<

5三次样条插值算法(压紧样条)

5.1算法说明

图5-1样条插值算法(压紧样条)流程图

5.2运行结果

图5-2样条插值算法(压紧样条)算法运行结果

5.3程序代码

voidmain()

输入节点个数:

intnum;

num;

intn=num-1;

double*x=newdouble[num];

double*y=newdouble[num];

按序依次输入各处节点及函数值"

for(inti=0;

=n;

cin>

x[i]>

y[i];

double*h=newdouble[num];

=n-1;

h[i]=x[i+1]-x[i];

double*a1=newdouble[num];

double*b1=newdouble[num];

请输入边界。

按1输入第一种边界条件,按2输入第二种边界条件:

intpd;

pd;

if(pd==1)

按顺序输入两端点的微商:

intk1,k2;

k1>

k2;

a1[0]=0;

a1[n]=1;

b1[0]=2*k1;

b1[n]=2*k2;

else

按顺序输入两端点的二阶微商:

intt1,t2;

t1>

t2;

a1[0]=1;

a1[n]=0;

b1[0]=3*(y[1]-y[0])/h[0];

b1[n]=3*(y[n]-y[n-1])/h[n-1];

for(i=1;

a1[i]=h[i-1]/(h[i-1]+h[i]);

b1[i]=((1-a1[i])*(y[i]-y[i-1])/h[i-1]+a1[i]*(y[i+1]-y[i])/h[i])*3;

double*a2=newdouble[num];

double*b2=newdouble[num];

a2[0]=-a1[0]/2;

b2[0]=b1[0]/2;

a2[i]=-a1[i]/(2+(1-a1[i])*a2[i-1]);

b2[i]=(b1[i]-(1-a1[i])*b2[i-1])/(2+(1-a1[i])*a2[i-1]);

double*m=newdouble[n+2];

m[n+1]=0;

for(i=n;

m[i]=a2[i]*m[i+1]+b2[i];

输入所要求的点:

intxx;

xx;

for(

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

当前位置:首页 > PPT模板 > 中国风

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

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