完美升级版基于matlab的数值计算中的优化技术毕业论文设计.docx

上传人:b****6 文档编号:4302250 上传时间:2022-11-29 格式:DOCX 页数:31 大小:231.52KB
下载 相关 举报
完美升级版基于matlab的数值计算中的优化技术毕业论文设计.docx_第1页
第1页 / 共31页
完美升级版基于matlab的数值计算中的优化技术毕业论文设计.docx_第2页
第2页 / 共31页
完美升级版基于matlab的数值计算中的优化技术毕业论文设计.docx_第3页
第3页 / 共31页
完美升级版基于matlab的数值计算中的优化技术毕业论文设计.docx_第4页
第4页 / 共31页
完美升级版基于matlab的数值计算中的优化技术毕业论文设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

完美升级版基于matlab的数值计算中的优化技术毕业论文设计.docx

《完美升级版基于matlab的数值计算中的优化技术毕业论文设计.docx》由会员分享,可在线阅读,更多相关《完美升级版基于matlab的数值计算中的优化技术毕业论文设计.docx(31页珍藏版)》请在冰豆网上搜索。

完美升级版基于matlab的数值计算中的优化技术毕业论文设计.docx

完美升级版基于matlab的数值计算中的优化技术毕业论文设计

(此文档为word格式,下载后您可任意编辑修改!

 

HefeiUniversity

毕业论文(设计)

BACHELORDISSERTATION

论文题目:

基于matlab的数值计算中的优化技术

学位类别:

理学学位

学科专业:

信息与计算科学

基于matlab的数值计算中的优化技术

中文摘要

优化是人们寻求的目标,数值计算中优化技术采用的好,能从时间与空间上得到巨大的好处。

一个算法除了正确外,还要空间能存贮程序数据,且运行时间短,因而算法优化技术就很重要,一个程序无法存贮到计算机内存中,或运行时慢得无法等候是没有任何实际意义的。

由于数值计算的优化技术有很多方面,为此选用数值积分进行说明,数值积分计算有很多的方法,用不同的方法所计算的积分精确度不同,所需要的时间也不同,通过一些实例的分析,对优化技术进行归纳与总结。

本论文是基于matlab在数值计算中的优化技术,优化技术是算法设计的重要而关键的课题,本论文选取数值分析中的一些著名的优化技术进行讨论,并在matlab中加以实现,通过tic、tuc、cputime等函数的使用对其进入深入分析。

关键字:

数值计算;优化技术;matlab;数值积分

NumericaloptimizationtechniquebasedonMATLAB

ABSTRACT

Optimizationisthatpeopleseektargetandnumericaloptimizationtechniqueusedisgood.Itcangethugebenefitsfromthetimeandspace.Analgorithmnotonlyinordertoright,butalsospacecanstoredata,andshortrunningtime.Sothealgorithmoptimizationtechniqueisveryimportantandaprogramcannotbestoredinthecomputermemory,orrunslowandpracticalofsignificance.Theoptimizationtechnologyofnumericalcalculationisusedinmanyrespects.Thenumericalintegrationisdescribedandnumericalintegralcalculationhasmanymethods.Integralaccuracyiscalculatedbydifferentmethodsandthetimerequiredisdifferentalso,andthroughtheanalysisofsomeexamples,andsummarizestheoptimizationtechnique.

ThispaperistooptimizethetechnologybasedonMATLABinthenumericalcalculation.Optimizationtechniqueisthekeytaskinthealgorithmdesign,thispaperselectssomewell-knownoptimizationtechniquesinnumericalanalysisarediscussed,andimplementedinMATLAB,throughin-depthanalysisusingtic,tucandcputimeandotherfunctionsoftheentry.

KEYWORD:

numericalcalculation;optimizationtechniques;MATLAB;numericalintegration

第一章前言1

第二章数值积分的计算2

2.1数值求积公式的构造2

2.1.1求积公式的推导2

2.1.2几个低次牛顿-科特斯求积公式4

2.2复化求积公式6

2.2.1复化梯形求积公式6

2.2.2复化辛浦生求积公式6

2.2.3复化科特斯求积公式7

2.3高精度数值积分算法7

2.3.1龙贝格求积公式8

第三章线性方程组的求解10

3.1线性方程组的介绍10

3.2线性方程组的迭代法11

3.2.1Jacobi迭代法11

3.2.2Gauss-Seidel迭代法12

3.2.3SOR迭代法13

第四章各种求积公式的MATLAB编程实现与应用14

4.1对数值积分运行结果及其分析14

4.1.1数值积分运行结果14

4.1.1数值积分运行结果分析15

4.1线性方程组运行结果及其分析15

4.2.1线性方程组运行结果15

4.2.2线性方程组运行结果分析16

附录17

参考文献23

致谢24

第一章前言

数值计算是有效使用数字计算机求数学问题近似解的方法与过程,以及由相关理论构成的学科。

数值计算主要研究如何利用计算机更好的解决各种数学问题,包括连续系统离散化和离散形方程的求解,并考虑误差、收敛性和稳定性等问题。

从数学类型分,数值运算的研究领域包括数值逼近、数值微分和数值积分、数值代数、最优化方法、常微分方程数值解法、积分方程数值解法、偏微分方程数值解法、计算几何、计算概率统计等。

随着计算机的广泛应用和发展,许多计算领域的问题,如计算物理、计算力学、计算化学、计算经济学等都可归结为数值计算问题。

优化是人们寻求的目标,数值计算中优化技术采用的好,能从时间与空间上得到巨大的好处。

一个算法除了正确外,还要空间能存贮程序数据,且运行时间短,因而算法优化技术就很重要,一个程序无法存贮到计算机内存中,或运行时慢得无法等候是没有任何实际意义的。

在研究基于matlab在数值计算中的优化技术有很多方面求数值积分就是具有代表性的一点。

求某函数的定积分时,在多数情况下,被积函数的原函数很难用初等函数表达出来,因此能够借助微积分学的牛顿-莱布尼兹公式计算定积分的机会是不多的。

另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解。

由于以上原因,数值积分的理论与方法一直是计算数学研究的基本课题。

通过这个课题的研究,我们将会更好地掌握运用数值积分算法求特殊积分函数的定积分的一些基本方法、理论基础;并且通过matlab软件编程的实现,得出计算数值积分的最优化的方法,并应用于实际生活中。

第二章数值积分的计算

2.1数值求积公式的构造

人们根据积分的定义得出Newton-Leibniz求定积分的公式,但是这些公式并不是能求出所有式子的积分,而是针对许多特殊的例子,但是有许多都是球不出来的,如:

等。

所以采用积分的几何意义来设计出积分公式从而求出近似值。

2.1.1求积公式的推导

建立数值积分公式的途径比较多,其中最常用的优两种:

(1)对于连续函数,优积分中值定理:

其中是被积函数在积分区间上的平均值。

因此,如果能给出求平均值的一种近似方法,相应地就可以得到计算定积分的一种数值方法。

(2)先用某种简单函数近似逼近,然后在区间的积分值近似表示在区间上的定积分,即取

一般情况下,我们可以取为前面介绍的插值多项式或拟合多项式进行近似计算。

若取为插值多项式,则相应得到的数字微分公式就是插值型求积公式

把区间等分,其分点为、,过这个节点,可以构造一个次插值多项式:

其中

,用代替被积分函数则有

其中。

上式叫做牛顿-科茨公式,使用牛顿-科茨公式关键是计算系数,用变量替换,于是

这样

这时是不依赖于函数和区间的常数,可以事先计算出来,叫做牛顿-科茨系数。

表2.1牛顿-科茨系数

2.1.2几个低次牛顿-科特斯求积公式

1、梯形求积公式

定义2.1在牛顿-科特斯求积公式中,如果取

,用一次多项式代替被积函数,即用梯形面积代替曲边梯形的面积,则有

其中,

查表可得

代入上式得出

称式为梯形求积公式

根据牛顿-科特斯求积公式的误差理论,梯形求积公式的误差估计为

是被积函数

二阶导数在

点的取值,

2、辛浦生求积公式

定义2.2

在牛顿-科特斯求积公式中,如果取

,用二次多项式代替被积函数,即曲边用抛物线代替,则有

其中,,,

查表可得

,,代入上式得出

称式为辛浦生求积公式,也称抛物线求积公式。

辛浦生求积公式的误差估计式

3、科特斯求积公式

定义2.4

在牛顿-科特斯求积公式中,如果取

时,牛顿—科特斯公式为

称式为科特斯求积公式。

同理可求得其误差估计式

2.2复化求积公式

2.2.1复化梯形求积公式

在上一节求积分的过程只是求粗约的近似值,所以应根据积分的可加性,可以将区间分为许多部分使得积分值更加接近精确值,从而优化了梯形积分公式,辛普生积分公式和科特斯积分公式,这就是复化求积分公式的思想。

定义2.5

将积分区间

进行等分,记为

在每个小区间

上用梯形公式求和,得

若将所得的近似值记为

,整理得

称式为复化梯形公式。

记为

复化梯形公式的截断误差

2.2.2复化辛浦生求积公式

在辛普生积分公式上加以复化可以得到复化辛普生积分公式。

定义2.6

将积分区间

分成

等分,分点为,在每个小区间

上。

用Simpson公式求积分,

得到

式就称为复化辛浦生求积公式。

记为

如果,

则由Simpson插值余项公式可得复化公式的截断误差为

2.2.3复化科特斯求积公式

定义2.7将积分区间等分为个子区间,每个子区间的中点

,子区间长度,在每个子区间

上用科特斯公式求和,得

式就称为复化科特斯求积公式,式中

类似地可以推出复化科特斯公式的截断误差为

2.3高精度数值积分算法

求积分时,复化积分公式采用逐步分段法,是一种比较有效的方法,但是它也存在许多的弊端,它收敛于积分真值的速度缓慢,从而人们在复化求积分公式上进行改进。

在求积分时步长的大小也会影响到积分的效果,步长太长积分值就不会太精确,步长太短则会增加许多的运算量。

运算的时间也会随之增加。

在计算器中编程计算结果要花费大量的时间。

以下采用变步长的计算方法,从而避免了这一点。

2.3.1龙贝格求积公式

梯形法的算法简单,单精度低,收敛的速度缓慢。

由此引出了龙贝格公式。

由梯形的递推法可以看出,将积分区间等分时,用复化梯形公式计算的结果作为积分的近似值,其误差近似值为。

可以设想,如果用这个误差作为的一种补偿,即将

作为积分的近似值,可望提高其精确度。

直接根据复化求积公式,不难验证

这说明,将区间对分前后两次复化梯形公式的值,作线性组合恰好等于复化辛浦生公式的值,它比更接近于近似值。

同样,用于作线性组合会得到比更精确的值,且通过直接验证可得

用与作线性组合,又可得到比更精确的值,通常记为,即

式就称为龙贝格求积公式。

上述用若干个积分近似值推算出更为精确的积分近似值的方法,称为外推方法。

我们将序列,和分别称为梯形序列、辛浦生序列、科特斯序列和龙贝格序列。

由龙贝格序列当然还可以继续进行外推,得到新的求积序列。

在积分区间逐次分半的过程中,利用外推法算式将粗糙近似值逐步加工成越来越精确的近似值。

也就是说,将收敛速度缓慢的梯形序列逐步加工成收敛速度越来越快的序列。

根据这种原理设计的计算积分近似值的方法称为龙贝格积分方法,又称为数值积分逐次分半加速收敛法。

利用龙贝格序列求积的算法称为龙贝格算法。

这种算法具有占用内存少、精确度高的优点。

因此,成为实际中常用的求积方法。

在优化技术方面的考虑龙贝格方法比

较合适的选择,在第四章会用程序进行讨论说明。

第三章线性方程组的求解

上一章讲述了有关于优化技术在数值积分计算方法的应用,为了更加体现优化技术的应用本章将会讨论优化技术在线性方程组中的应用。

实际中,存在大量的解线性方程组的问题。

很多数值方法到最后也会涉及到线性方程组的求解问题:

如样条插值的M和m关系式,曲线拟合的法方程,方程组的Newton迭代等问题。

求解线性方程组有很多的方法,如gauss消去法,按比例主元消去法,用Cholesky分解解线性方程组,平方根法和追赶法等等。

3.1线性方程组的介绍

一般地设阶线性方程组为

表示成矩阵形式

其中

,,

为系数矩阵

高斯消元法是按照消元和回代两个过程。

高斯消元法的改进为高斯主元消元法,并且主元消元法主要有列主元,按比例主元和全主元。

高斯消元法的基本思想:

首先将A化为上三角阵,再回代求解

第二步

类似下去我们有第步

n-1步以后,我们可以得到变换后的矩阵为:

从此再回代可以解出线性方程组的解。

但是高斯解线性方程组一般都是针对中小型的,一下介绍几种线性方程组的迭代法,从而求解线性方程组的近似解,利用优化技术判断哪个方法最优。

3.2线性方程组的迭代法

3.2.1Jacobi迭代法

设阶线性方程组的系数非奇异(nonsigular),且。

将方程组改为

任取,将各分量代入上式的右边得

将代入上式的右边,得

以此类推,可得

由此可得向量序列。

称由迭代式建立的迭代法为Jacobi迭代法。

3.2.2Gauss-Seidel迭代法

在Jacobi迭代法中,每次迭代计算时用的是前一次迭代的全部分量。

实际上,在计算分量时,最新的分量,,,已经算出,但没有被利用,而且,如果Jacobi迭代收敛,最新算出的分量一般比的精度更高。

因此,可以对Jacobi迭代法加以改进,即在迭代过程中,每个分量计算出来之后,计算一下分量时就利用最新计算出的近似结果,具体地,即用新分量去替换右端的各项中,可得新的迭代公式

此式称为Gauss-Seidel迭代法。

3.2.3SOR迭代法

为了提高收敛速度,对Gauss-Seidel迭代法进一步用Gauss-Seidel迭代公式计算得到第个近似解

将前一步迭代值与Gauss-Seidel迭代值做加权平均,即

其中是参数,整理得

此式称为松弛迭代法,其中参数为松弛因子

当时,式称为超松弛法;

当时,式称为低松弛法;

当时,式就是Gauss-Seidel。

一般称这些方法为SOR方法。

第四章各种求积公式的MATLAB编程实现与应用

4.1对数值积分运行结果及其分析

不同的方法计算出来的积分求值的结果不同,所以一下针对进行求解,运用不同的方法得到近似值,余项以及运行程序所需要的时间,在精度不同的情况下,再进行分析判断出哪个方法最优。

4.1.1数值积分运行结果

表精度为的积分公式运行结果

方法

近似值

时间

梯形求积公式

1

辛普生求积公式

1

科特斯求积公式

1

复化梯形求积公式

8

复化辛普生求积公式

2

复化科特斯求积公式

2

龙贝格积分公式

2

0.002670

表精度为的积分公式运行结果

方法

近似值

时间

梯形求积公式

1

辛普生求积公式

1

科特斯求积公式

1

复化梯形求积公式

8

复化辛普生求积公式

8

复化科特斯求积公式

4

龙贝格积分公式

4

表精度为的积分公式运行结果

方法

近似值

时间

梯形求积公式

1

辛普生求积公式

1

科特斯求积公式

1

复化梯形求积公式

16

复化辛普生求积公式

16

复化科特斯求积公式

8

龙贝格积分公式

表精度为的积分公式运行结果

方法

近似值

时间

梯形求积公式

1

辛普生求积公式

1

科特斯求积公式

1

复化梯形求积公式

32

复化辛普生求积公式

32

复化科特斯求积公式

8

龙贝格积分公式

表精度为的积分公式运行结果

方法

近似值

时间

梯形求积公式

1

辛普生求积公式

1

科特斯求积公式

1

复化梯形求积公式

64

复化辛普生求积公式

32

复化科特斯求积公式

16

龙贝格积分公式

4.1.1数值积分运行结果分析

出梯形积分公式和辛普生积分公式运行的结果都差不多,但是科特斯公式运行的结果较为准确,但是运行的时间相比科特斯积分公式的时间比较长。

相同的精度但是科特斯所分割的节点少。

这是因为梯形公式、辛普生公式是低精度公式,但对被积函数的光滑性要求不高,他对对被积分光滑性较差的积分很有效。

特别是梯形积分公式对被积分函数式周期函数积分时,效果更加突出。

高阶科特斯求积分公式稳定性差,收敛较慢。

从而,为了提高收敛速度建立的复化梯形积分公式,复化辛普生积分公式。

但是相比之下,龙贝格积分公式是算法简单,是一个很好的加速方法。

从优化技术的角度看,一般都是选择龙贝格积分方法。

4.1线性方程组运行结果及其分析

4.2.1线性方程组运行结果

线性方程组

表方程组进行运行结果

迭代方法

次数

精确解

近似解

Jacobi迭代法

7

Gauss-Seide迭代法

5

SOR方法

5

4.2.2线性方程组运行结果分析

从运算的结果分析SOR运行的结果与精确值相比较为准确,而且迭代的次数少。

在日常生活中,迭代法常用的优Jacobi迭代法,Gauss-Seidel迭代法,SOR方法中Jacobi迭代法简单,并具有很好的串行算法,很适合并行计算,但收敛速度较慢。

Gauss-Seidel迭代法是典型的串行算法,在Jacobi迭代法与Gauss-Seidel迭代法同时收敛的条件下,后者比前者收敛的快,但两种迭代收敛收敛域互不相容,不能互相替代。

SOR方法是一种应用极为广泛的方法,但选取最佳松弛因子比较困难,常通过试算来确定最佳松弛因子。

各种方法都有其利弊,但是在计算方程组时要求精确度很高时往往选用SOR方法。

附录

1、复化梯形积分公式的源程序

function[out1,out2,out3]=fhtx(a,b,f)

formatlong;

clc;

ifnargin==3

wc=0.5*10^(-6);

end

%控制输入参数结束

disp('fhtx¸´»¯ÌÝÐÎ')

tic;

n=1;

s1=(subs(f,'x',a)+4*subs(f,'x',(a+b)/2)+subs(f,'x',b))*(b-a)/n/6;

n=2;

s2=s1+1;

whileabs(s2-s1)>wc

s1=s2;

n=n*2;

s=0;

h=(b-a)/n;

fori=1:

n

s=s+4*subs(f,'x',a+(i-1/2)*(h));

end;

fori=1:

n-1

s=s+2*subs(f,'x',a+i*h);

end;

s=(subs(f,'x',a)+subs(f,'x',b)+s)*h/6;

s2=s;

end;

time=toc;

jsz=s;

%控制输出参数结束

ifnargout==1

out1=jsz;

end

ifnargout==2

out1=jsz;

out2=n;

end

ifnargout==3

out1=jsz;

out2=n;

out3=time;

end

2、复化辛普生源程序

function[out1,out2,out3]=xps(a,b,f)

formatlong;

clc;

ifnargin==3

wc=0.5*10^(-6);

end

%此处填复化辛普生公式

tic;

n=1;s1=(subs(f,'x',a)+4*subs(f,'x',(a+b)/2)+subs(f,'x',b))*(b-a)/n/6;

n=2;s2=s1+1;

whileabs(s2-s1)>wc

s1=s2;

n=n*2;

s=0;

h=(b-a)/n;

fori=1:

n

s=s+4*subs(f,'x',a+(i-1/2)*(h));

end;

fori=1:

n-1

s=s+2*subs(f,'x',a+i*h);

end;

s=(subs(f,'x',a)+subs(f,'x',b)+s)*h/6;

s2=s;

end;

jsz=s2;

time=toc;

%控制输出参数开始

ifnargout==1

out1=jsz;

end

ifnargout==2

out1=jsz;

out2=n;

end

ifnargout==3

out1=jsz;

out2=n;

out3=time;

end

3、复化牛顿科特斯源程序

function[jsz,n,time]=kts(a,b,f)

formatlong;

clc;

fd=zeros(1,5);

wc=0.5*10^(-3);

%此处填复化科特斯公式

tic;

wqja=a;wqjb=b;

fori=1:

5

fd(i)=wqja+(i-1)*(wqjb-wqja)/4;

end;

s1=(7*subs(f,'x',fd

(1))+32*subs(f,'x',fd

(2))+12*subs(f,'x',fd(3))+32*subs(f,'x',fd(4))+7*subs(f,'x',fd(5)))*(wqjb-wqja)/90;

n=2;

h1=(b-a)/n;

s2=0;

fori=1:

n

wqja=a+(i-1)*h1;wqjb=a+i*h1;

fori=1:

5

fd(i)=wqja+(i-1)*(wqjb-wqja)/4;

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

当前位置:首页 > 初中教育 > 理化生

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

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