迭代阈值法上课讲义

迭代阈值法上课讲义
迭代阈值法上课讲义

迭代阈值法

摘要

数字图像处理的目的之一是图像识别, 而图像分割是图像识别工作的基础。

图像分割是指把图像分解成具有特性的区域并提取出感兴趣目标的技术和过

程,是计算机视觉领域的一个重要而且基本的问题,分割结果的好坏将直接影

响到视觉系统的性能。因此从原理,应用和应用效果的评估上深入研究图像分

割技术具有十分重要的意义。

本课题主要介绍了图像分割的基本知识。图像分割的算法有阈值分割法,

边缘检测法,区域分割等,本设计重点介绍了基于最小点阈值方法,基于最优

阈值分割方法,基于迭代图像分割方法,最大类间方差法(OTSU)的图像分

割法的原理和他们的MATLAB的实现代码与运行结果。

关键词:图像分割; MATLAB;阈值分割;

目录

3 1 课程设计目的............................................................................................................

2 课程设计要求............................................................................................................

3

3 3 相关知识....................................................................................................................

3

3.1 图像分割的概述.............................................................................................

3.2 阈值分割的基本原理 (4)

3.3 阈值分割方法的分类 (5)

3.3.1 基于点的全局阈值方法 (5)

3.3.2 基于区域的全局阈值方法 (6)

3.3.3 局部阈值法和多阈值法 (6)

6 4 程设计分析................................................................................................................

4.1 基于迭代的方法实现图像切割 (6)

4.2 最大类间方差的方法实现图像切割 (7)

7 5 程序设计....................................................................................................................

7

5.1 程序简单介绍.................................................................................................

8

5.2 程序代码.........................................................................................................

10 6 结果与分析..............................................................................................................

11结束语..........................................................................................................................

12参考文献......................................................................................................................

迭代阈值法

1 课程设计目的

本设计的课题任务是掌握图像阈值分割算法研究,实现对图像的分割。了解图

像分割的应用及基本方法,理解阈值化图像分割原理,理解三类典型的阈值化

分割算法,并利用之进行图像分割,给出实验结果并做出分析。

2 课程设计要求

⑴查阅相关资料;

⑵理解基于各像素值的阈值分割算法,基于区域性质的阈值分割算法, 基于坐

标位置的阈值分割算法[1];软件编程实现利用基于各像素值的阈值分割算法进行图像分割,要求完成如下内容:包括极小值点阈值、最优阈值、迭代阈值,基于最大方差的阈值,基于最大熵的阈值等方法,利用之实现图像分

割,这里的图像可以针对核磁共振图像(MRI)[2]

⑶用MATLAB实现,并观察各算法之间的区别。

3 相关知识

3.1 图像分割的概述

在对图像的研究和应用中,人们往往仅对图像中的某些部分感兴趣,这些部

分称为目标或前景(其他部分称为背景),他们一般对应图像中特定的、具有独

特性质的区域。为了辨识和分析目标,需要将他们分离提取出来,在此基础上

才有可能对目标进一步利用。图像分割就是指把图像分成格局特性的区域并提取出感兴趣目标的技术和过程。这里特性可以是象素的灰度、颜色、纹理等,

预先定义的目标可以对应单个区域,也可以对应多个区域[3]。现有的图像分割算法有:阈值分割、边缘检测和区域提取法。本文着重研究基于阈值法的图像分割技术。

所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分

成若干个互不相交的区域,使得这些特征在同一区域内,表现出一致性或相似性,而在不同区域间表现出明显的不同。简单的讲,就是在一幅图像中,把目

标从背景中分离出来,以便于进一步处理。图像分割是图像处理与计算机视觉

领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模

式识别的基本前提。同时它也是一个经典难题,到目前为止既不存在一种通用

的图像分割方法,也不存在一种判断是否分割成功的客观标准。

阈值法是一种传统的图像分割方法,因其实现简单、计算量小、性能较稳

定而成为图像分割中最基本和应用最广泛的分割技术[3]。已被应用于很多的领域,例如,在红外技术应用中,红外无损检测中红外热图像的分割,红外成像

跟踪系统中目标的分割;在遥感应用中,合成孔径雷达图像中目标的分割等;

在医学应用中,血液细胞图像的分割,磁共振图像的分割[4];在农业工程应用中,水果品质无损检测过程中水果图像与背景的分割。在工业生产中,机器视

觉运用于产品质量检测等等。在这些应用中,分割是对图像进一步分析、识别

的前提,分割的准确性将直接影响后续任务的有效性,其中阈值的选取是图像

阈值分割方法中的关键技术。

3.2 阈值分割的基本原理

图像阈值化分割是一种最常用,同时也是最简单的图像分割方法,它特别

适用于目标和背景占据不同灰度级范围的图像。它不仅可以极大的压缩数据

量,而且也大大简化了分析和处理步骤,因此在很多情况下,是进行图像分

析、特征提取与模式识别之前的必要的图像预处理过程。图像阈值化的目的是

要按照灰度级,对像素集合进行一个划分,得到的每个子集形成一个与现实景

物相对应的区域,各个区域内部具有一致的属性,而相邻区域布局有这种一致

属性[5]。这样的划分可以通过从灰度级出发选取一个或多个阈值来实现。

阈值分割法是一种基于区域的图像分割技术,其基本原理是:通过设定

不同的特征阈值,把图像像素点分为若干类.常用的特征包括:直接来自原始

图像的灰度或彩色特征;由原始灰度或彩色值变换得到的特征.设原始图像为

f(x,y),按照一定的准则在f(x,y)中找到特征值T,将图像分割为两个部分,分割后的图像为 :

g(x,y)={??0,f(x,y)

??1,f(??,??)≥t

(3.2.1)

若取b0=0(黑),??1=1(白),即为我们通常所说的图像二值化。

一般意义下,阈值运算可以看作是对图像中某点的灰度、该点的某种局

部特性以及该点在图像中的位置的一种函数,这种阈值函数可记作

T=T(??,y,??(??,??),??(??,??)) (3.2.2) 式中f(x,y)是点(x,y)的灰度值;n(x,y)是点(x,y)的局部邻域特性.根据对T的不同约束,可以得到3种不同类型的阈值,即

(1)点相关的全局阈值

T=T(??(??,??)) (3.2.3) 只与点的灰度值有关

(2)区域相关的全局阈值

T=T(??(??,??),??(??,??)) (3.2.4) 与点的灰度值和该点的局部邻域特征有关

(3)局部阈值或动态阈值

T=T(??,y,??(??,??),??(??,??)) (3.2.5)

它与点的位置、该点的灰度值和该点邻域特征有关

因此本文分三大类对阈值选取技术进行综述:

1) 基于点的全局阈值方法;

2) 基于区域的全局阈值方法

3) 局部阈值方法和多阈值方法

3.3 阈值分割方法的分类

全局阈值法指利用全局信息对整幅图像求出最优分割阈值,可以是单阈值,也可以是多阈值;局部阈值法是把原始的幅图像分为几个小的子图像,再对每个子图像应用全局阈值法分别求出最优分割值。其中全局阈值法又可分为基于点的阈值法和基于区域的阈值法。阈值分割法的结果很大程度上依赖于阈值的选择,因此该方法的关键是如何选择合适的阈值。由于局部阈值法中仍要用到全局阈值法,因此本文主要对全局阈值法中基于点的阈值法和基于区域的阈值法分别进行了研究。根据阈值法的原理可以将阈值选取技术分为三大类

3.3.1 基于点的全局阈值方法

基于点的全局阈值算法与其他几大类方法相比,算法时间复杂度较低,易于实现,适合应用于在线实时图像处理系统。

3.3.2 基于区域的全局阈值方法

对一幅图像而言,不同的区域,比如说目标区域或背景区域,同一区域内

的象素,在位置和灰度级上同时具有较强的一致性和相关性。

3.3.3 局部阈值法和多阈值法

局部阈值(动态阈值) 当图像中有如下一些情况:有阴影,照度不均匀,各

处的对比度不同,突发噪声,背景灰度变化等,如果只用一个固定的全局阈值

对整幅图像进行分割,则由于不能兼顾图像各处的情况而使分割效果受到影

响。有一种解决办法就是用与象索位置相关的一组阈值(即阈值使坐标的函数)来对图像各部分分别进行分割[6]。这种与坐标相关的阈值也叫动态阈值,此方

法也叫变化阈值法,或自适应阈值法。这类算法的时间复杂性和空间复杂性比

较大,但是抗噪能力强,对一些用全局阈值不易分割的图像有较好的效果[7]。

多阈值法很显然,如果图像中含有占据不同灰度级区域的几个目标,则需

要使用多个阈值才能将他们分开。其实多域值分割,可以看作单阈值分割的推广。

4 程序设计分析

4.1 基于迭代的方法实现图像切割

迭代法是基于逼近的思想,其步骤如下:

(1)求出图象的最大灰度值和最小灰度值,分别记为????????和????????,令初始阈值

??0=(????????+????????)÷2[2](4.1.1) (2)根据阈值????将图象分割为前景和背景,分别求出两者的平均灰度值??0和????;

(3)求出新阈值:

????+1=(??0+????)÷2[2](4.1.2) (4)若????=????+1,则所得即为阈值;否则转到第二步,迭代计算。

迭代所得的阈值分割的图象效果良好。基于迭代的阈值能区分出图像的前景和

背景的主要区域所在,但在图像的细微处还没有很好的区分度。

但令人惊讶的是,对某些特定图象,微小数据的变化却会引起分割效果的巨大

改变,两者的数据只是稍有变化,但分割效果却反差极大

经试验比较,对于直方图双峰明显,谷底较深的图像,迭代方法可以较快

地获得满意结果。但是对于直方图双峰不明显,或图像目标和背景比例差异悬

殊,迭代法所选取的阈值不如最大类间方差法。

4.2 最大类间方差的方法实现图像切割

由Otsu于1978年提出的最大类间方差法以其计算简单、稳定有效,一直广

为使用[6]。从模式识别的角度看,最佳阈值应当产生最佳的目标类与背景类的

分离性能,此性能我们用类别方差来表征,为此引入类内方差、类间方差和总体方差。最大类间方差法计算简单、稳定有效,一直广为使用,是一种受到普

遍欢迎的阈值选取方法[3]。其基本思路是将直方图在某一阈值处分割成两组,

当被分成的两组的方差为最大时,得到阈值。因为方差是灰度分布均匀性的一种量度,方差值越大,说明构成图像的两部分差别越大,当部分目标错分为背

景或部分背景错分为目标都会导致两部分差别变小,因此使类间方差最大的分

割意味着错分概率最小。

5 程序设计

5.1 程序简单介绍

程序除了有题目中要求的自编程序实现最大类间方差法外,还扩展了迭代

法阈值分割,功能较多,为了使程序有良好的人机界面,主程序中提供了简单

的菜单界面。同时为了增加程序的可读性,分模块编写,然后在主函数中调

用。

5.2 程序代码

function main %主程序

clear;close all; %清除变量,关闭所有窗口

示例图片\Winter.jpg');%获取图片路径及文件名

I=imread([path name]);%读图

I=rgb2gray(I);%彩色转黑白

while 1 %循环执行

disp('0 原图 1 OTSU 2 全局阈值 3 迭代法 4 退出');%提示信息

select=input('请选择:'); %选择相应功能

switch select

case 0

yuantu(I); %输入0 显示原图

case 1 %输入1 OTSU法

fun1(I);

case 2 %输入2 全局阈值法

fun2(I);

case 3

fun3(I) %输入3 迭代法

case 4

return; %输入4 退出

otherwise %其他值不处理

end

end

% OTSU

function fun1(I) %阈值计算程序

Ni=imhist(I);%计算直方图数组

N=sum(Ni); %总像素点个数

delamax=0; %类间方差最大值

threshold=0; %阈值

for k=2:255

u=dot([0:255],Ni/N); %图像的总平均灰度级

w0=sum(Ni(1:k)/N); %C0类像素所占面积的比例

w1=1-w0; %C1类像素所占面积的比例

if w0==0|w0==1 %当w0为1或0时提前结束本次循环

continue

end

u0=dot([0:k-1],Ni(1:k)/N)/w0; %C0类像素的平均灰度

u1=dot([k:255],Ni(k+1:256)/N)/w1; %C1类像素的平均灰度

dela(k)=w0*(u-u0)^2+w1*(u-u1)^2; %类间方差公式

%求出类间方差的最大值,最大时的那个值对应的k值存入delamax if dela(k)>delamax

delamax=dela(k);

threshold=k-1;

end

end

BW1=im2bw(I,threshold/255); %阈值分割

figure

imshow(BW1),title('自编程序运行结果')%显示图片disp('自编程序求的的阈值:')%显示提示信息

disp(threshold) %显示结果

%调用系统函数OTSU阈值分割

level=graythresh(I);%调用系统函数计算阈值

BW2=im2bw(I,level); %阈值分割

figure

imshow(BW2),title('调用库函数运行结果')

level=round(level*255);

disp('调用库函数求得的阈值:')

disp(level)

%全局阈值

function fun2(I) %阈值分割程序

[width height]=size(I);;%获取图片宽高

th=input('请输入阈值:');

for i=1:width

for j=1:height

if(I(i,j)

BW1(i,j)=0;

else % 灰度大于等于阈值时则为白色

BW1(i,j)=1;

end

end

end

figure

imshow(BW1),title('全局阈值')

%迭代法

function fun3(I) %迭代法求阈值

J=double(I);

T=(min(J(:))+max(J(:)))/2; %T的初始阈值

done=false; %done 的初始值为false

i=0;

while ~done %当done为false是则执行循环

r1=find(J<=T); %找出不大于T的所有像素点索引值 r2=find(J>T); %找出大于T的所有像素点索引值

Tnew=(mean(J(r1))+mean(J(r2)))/2; %计算新的阈值 done=abs(Tnew-T)<1; %判断|T2-T1|是否小于T0 T=Tnew;

i=i+1;

end

J(r1)=0; %小于等于阈值的为黑

J(r2)=1 ; %大于阈值的为白

figure

imshow(J),title('迭代法求阈值')

function yuantu(I) %显示原图

figure

imshow(I);title('原图')

6 结果与分析

图 6.1 原图,自编程结果图,调用库函数图

不同阈值的全局阈值图,迭代法求阈

值图的比较

结果分析:

调用系统函数与自编的程序求得的阈值一样,处理的结果完全一样。手动输入阈值分割的话输入的阈值不同处理的结果也不一样,阈值差别越大图像的区别越明显但如果输入的阈值和OTSU算出的阈值一样,处理结果就完全一样。另外采用迭代法,通过多次用不同的图片处理发现算出的阈值和最大类间方差法基本一样,但有时会有误差,处理结果基本一样。

结束语

通过本学期对数字图像处理的学习,在老师的指导下,对选取的图像进行迭

代阈值法的处理得到处理结果,并对结果进行分析。这个过程分为三步:

第一步:熟悉所运用的仿真软件MATLAB,查阅相关资料了数字图像处理中的迭代阈值法的原理。

第二步:设计相应的程序并选取合适的图像,运用仿真软件对图像进行仿真处理,从而得到处理结果。

第三步:对得到的处理结果进行分析,比较不同的迭代法的优缺点,加深对这种方法的理解。

通过这个课程设计的学习,使我对数字图像处理的理解更加深刻了。数字图像

处理和我们的生活息息相关,理解它就是理解生活,同时我也感受到老师对我

们学习科学知识的重要性,并且明白想要知道更多的东西就要在动脑的同时多

动手进行实践,帮助我们去理解,即理论与实际相结合。

参考文献

[1] 王家文.MATLA.图形图像处理[M].北京,国防工业出版社.2001:12-17:30-55

[2] 甲永红.数字图像处理[M] .武汉,武汉大学出版社.2011:71-84.:25-68

[3] 李红梅.二值图像的阈值分割方法探讨[J] .上海,科技经济市

场.2007:38-42:68-79

[4] 刘刚. MATLAB数字图像处理[M].北京,机械工业出版社.2010:34-45.:128-205

[5]张强, 王正林.《精通MATLAB图像处理》. 电子工业出版社,1997:99-106

[6]陈怀琛.《MATLAB及其在课程中的应用指南》. 西安电子科技大学出版社,2000:256-306

[7]朱习军.《MATLAB在信号与系统与图象处理中的应用》. 电子工业出版社,2002:78-109

数值计算迭代法

习题二 3、证明:当X 0=1.5时,迭代法X k+1=Xk +410和X k+1=21k X 310-都收敛于方程f(x)=x 3+4x 2-10=0在区间[1,2]内唯一实根x *,并分别用上述迭代法求满足于精度要求︱X k+1-X k ︱≤10-5的近似根。 解:证明:{先用迭代法求f(x)=x 3+4x 2-10=0的根。 (a )对x 3+4x 2-10=0变形有:4x 2=10-x 3 所以:X=21310X - 则相应的迭代公式为:X k+1=21k X 310- 取:X 0=1.5,根据计算可以看出看,我们认为得到的迭代序列是 收敛的。}(此行可忽略) { 由 f(x)=x 3+4x 2-10=0得迭代方程:X=21310X -=g (x ) 先证明在区间【1,2】上x=g (x )有实根。由于[1,2]上g ‘(x )存在,所以g (x )连续。作Q (x )=x-g(x),则Q(x)在[1,2]上也连续。由定理1条件2有:Q (1)=1-g (1)≤0,Q (,2)=1-g (2)≥0 故存在x *∈[1,2]使Q *(x )=0,即x *= Q *(x ) 又因为,x *是方程f(x)=x 3+4x 2-10=0在区间[1,2]内的唯一实根,(由定理一条件 2)对任意的x 0∈[1,2]时,X k ∈[1,2](k=0,1,2,3…) 因为:x *- X k+1=g (x *)-g (X k )=g ‘(h k )(x *- X k )故由条件1知: ︱X *-X k+1︱≤L ︱X *-X k ︱(k=0,1,2,3…)于是有:0≤︱X *-X k ︱≤L k ︱X *-X 0︱,0<L <1,立即可知:lim (k 趋于无穷)︱X *-X k ︱=0,从而lim (k 趋于无穷)X k= X *。所以当X 0=1.5时,迭代法X k+1=Xk +410和X k+1=21k X 310-都是由迭代法X k+1=g (X k )产生的迭代序列{ X k }收敛于方程f(x)=x 3+4x 2-10=0在区间[1,2]内唯一实 根x *。 正解如下: (1) (牛顿迭代法): 证明:对方程f(x)=x 3+4x 2-10=0在区间[1,2]内, (a ) f ‘(x)=3x 2+8x ,f ’‘(x)=6x+8,f ’‘(x)在区间[1,2]内连续; (b ) f (1)=-5,f (2)=14,f (1)f (2)<0; (c ) 对于任意的x ∈[1,2],都有f ‘(x)=/(不等于)0; (d ) f ’‘(x)在[1,2]上保号; 综上所述,当X 0=1.5时,迭代法X k+1=Xk +410和X k+1=21k X 310-都收敛于方程f(x)=x 3+4x 2-10=0在区间[1,2]内唯一实根x *。 (2)用牛顿迭代法求近似根。 方程f(x)=x 3+4x 2-10=0有唯一实根x *∈[1,2],容易验证,f(x)=x 3+4x 2-10在[1,2]

迭代阈值法

数字图像处理的目的之一是图像识别, 而图像分割是图像识别工作的基础。图像分割是指把图像分解成具有特性的区域并提取出感兴趣目标的技术和过程,是计算机视觉领域的一个重要而且基本的问题,分割结果的好坏将直接影响到视觉系统的性能。因此从原理,应用和应用效果的评估上深入研究图像分割技术具有十分重要的意义。 本课题主要介绍了图像分割的基本知识。图像分割的算法有阈值分割法,边缘检测法,区域分割等,本设计重点介绍了基于最小点阈值方法,基于最优阈值分割方法,基于迭代图像分割方法,最大类间方差法(OTSU)的图像分割法的原理和他们的MATLAB的实现代码与运行结果。 关键词:图像分割;MATLAB;阈值分割;

1 课程设计目的 (3) 2 课程设计要求 (3) 3 相关知识 (3) 3.1 图像分割的概述 (3) 3.2 阈值分割的基本原理 (4) 3.3 阈值分割方法的分类 (5) 3.3.1 基于点的全局阈值方法 (6) 3.3.2 基于区域的全局阈值方法 (6) 3.3.3 局部阈值法和多阈值法 (6) 4 程设计分析 (6) 4.1 基于迭代的方法实现图像切割 (6) 4.2 最大类间方差的方法实现图像切割 (7) 5 程序设计 (8) 5.1 程序简单介绍 (8) 5.2 程序代码 (8) 6 结果与分析 (11) 结束语 (13) 参考文献 (14)

迭代阈值法 1 课程设计目的 本设计的课题任务是掌握图像阈值分割算法研究,实现对图像的分割。了解图像分割的应用及基本方法,理解阈值化图像分割原理,理解三类典型的阈值化分割算法,并利用之进行图像分割,给出实验结果并做出分析。 2 课程设计要求 ⑴查阅相关资料; ⑵理解基于各像素值的阈值分割算法,基于区域性质的阈值分割算法, 基于坐 标位置的阈值分割算;软件编程实现利用基于各像素值的阈值分割算法进行图像分割,要求完成如下内容:包括极小值点阈值、最优阈值、迭代阈值,基于最大方差的阈值,基于最大熵的阈值等方法,利用之实现图像分割,这里的图像可以针对核磁共振图像 ⑶用MATLAB实现,并观察各算法之间的区别。 3 相关知识 3.1 图像分割的概述 在对图像的研究和应用中,人们往往仅对图像中的某些部分感兴趣,这些部分称为目标或前景(其他部分称为背景),他们一般对应图像中特定的、具有独特性质的区域。为了辨识和分析目标,需要将他们分离提取出来,在此基础上才有可能对目标进一步利用。图像分割就是指把图像分成格局特性的区域并提取出感兴趣目标的技术和过程。这里特性可以是象素的灰度、颜色、纹理等,预先定义的目标可以对应单个区域,也可以对应多个区。现有的图像分割算法有:阈值分割、边缘检测和区域提取法。本文着重研究基于阈值法的图像分割技术。 所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内,表现出一致性或相似性,

几种常见的阈值分割算法核心代码

阈值分割 1/*===============================图像分割 =====================================*/ 2 /*-------------------------------------------------------------------------- -*/ 3/*手动设置阀值*/ 4 IplImage* binaryImg = cvCreateImage(cvSize(w, h),IPL_DEPTH_8U, 1); 5 cvThreshold(smoothImgGauss,binaryImg,71,255,CV_THRESH_BINARY); 6 cvNamedWindow("cvThreshold", CV_WINDOW_AUTOSIZE ); 7 cvShowImage( "cvThreshold", binaryImg ); 8//cvReleaseImage(&binaryImg); 9 /*---------------------------------------------------------------------------*/ 10/*自适应阀值 //计算像域邻域的平均灰度,来决定二值化的值*/ 11 IplImage* adThresImg = cvCreateImage(cvSize(w, h),IPL_DEPTH_8U, 1); 12double max_value=255; 13int adpative_method=CV_ADAPTIVE_THRESH_GAUSSIAN_C;//CV_ADAPTIVE_THRESH_MEAN_C 14int threshold_type=CV_THRESH_BINARY; 15int block_size=3;//阈值的象素邻域大小 16int offset=5;//窗口尺寸 17 cvAdaptiveThreshold(smoothImgGauss,adThresImg,max_value,adpative_method, threshold_type,block_size,offset); 18 cvNamedWindow("cvAdaptiveThreshold", CV_WINDOW_AUTOSIZE ); 19 cvShowImage( "cvAdaptiveThreshold", adThresImg ); 20 cvReleaseImage(&adThresImg); 21 /*-------------------------------------------------------------------------- -*/ 22/*最大熵阀值分割法*/ 23IplImage* imgMaxEntropy = cvCreateImage(cvGetSize(imgGrey),IPL_DEPTH_8U,1); 24 MaxEntropy(smoothImgGauss,imgMaxEntropy); 25 cvNamedWindow("MaxEntroyThreshold", CV_WINDOW_AUTOSIZE ); 26 cvShowImage( "MaxEntroyThreshold", imgMaxEntropy );//显示图像 27 cvReleaseImage(&imgMaxEntropy ); 28 /*-------------------------------------------------------------------------- -*/ 29/*基本全局阀值法*/ 30 IplImage* imgBasicGlobalThreshold = cvCreateImage(cvGetSize(imgGrey),IPL_DEPTH_8U,1); 31 cvCopyImage(srcImgGrey,imgBasicGlobalThreshold);

二维熵阈值法的修改及其快速迭代算法

第23卷第1期2010年2月模式识别与人工智能 PR&AI V01.23No.1 Feb2010 二维熵阈值法的修改及其快速迭代算法 吴成茂1’2田小平1’2谭铁牛2 1(西安邮电学院电子工程学院西安710121) 2(中国科学院自动化研究所模式识别国家重点实验室北京100080) 摘要提出二维熵阈值法的一种修改方法和其快速迭代算法.针对传统二维熵阈值法及其递推算法的高计算复杂性的不足,首先对二维直方图所对应的二元概率分布进行修改并得到一种新的二维熵阈值法.其次假设二维直方图所对应的二元概率分布是连续可微的条件下导出的修改后的二维熵阈值法的快速迭代算法.实验结果表明,文中提出的修改二维熵阈值法及其快速迭代算法是可行的,且快速迭代算法的时间消耗相对其递归算法有很大程度地降低. 关键词图像分割,阈值法,最大熵法,迭代算法 中图法分类号TP391.41 ModificationofTwo—DimensionalEntropicThresholdingMethod andItsFastIterativeAlgorithm WUCheng—Ma01”,TIAN Xiao.Pin91”,TAN Tie—Niu2 1(CollegeofElectronicsEngineering,XiatnUniversityofPostsandTelecommunications,Xi"an710121)2(NationalLaboratoryofPatternRecognition,InstituteofAutomation, ChineseAcademyofSciences,Beijing100080) ABSTRACT Amodifiedmethodfortwo.dimensionalentmpicthresholdingmethodanditsfastiterativealgorithmareproposed.Aimingatthedisadvantageofhighcomputationalcomplexityoftheclassicaltwo?dimensionalentropiethresholdinganditsrecursivealgorithm,thetwo—variablesprobabilitydistributionoftwodimensionalhistogramisfirstlymodifiedandanewtwo—dimensionalentropiethresholdingmethodisobtained.Then,thefastiterativealgorithmforthenewmodifiedtwo.dimensionalentropicthresholdingmethodiseducedontheassumptionthatthemodifiedtwo—vailablesprobabilitydistributionoftwo—dimensionalhistogramiScontinuousanddifferentiable.Experimentalresultsshowthatthemodifiedtwo.dimensionalentropiethresholdingmethodanditsfastiterativealgorithmarefeasible,andthecomputationaltimeofthefastiterativealgorithmismuchlessthanthatofitsreeursivealgorithmtoacertainextent. KeyWordsImageSegmentation,ThresholdingMethod,MaximumEntropicMethod,IterativeAlgorithm ?陕西省教育厅资助项目(No.06JKl94) 收稿日期:2008—09—16;修回日期:2009—07—24 作者简介吴成茂,男,1968年生,高级工程师,主要研究方向为智能信息处理.E-mail:wuchengma0123@sohu.coin.田小平,男,1963年生,副教授,主要研究方向为信号处理.谭铁牛,男,1964年生,研究员,主要研究方向为模式识别、图像处理. 万方数据

牛顿迭代法

牛顿迭代法 李保洋 数学科学学院信息与计算科学学号:060424067 指导老师:苏孟龙 摘要:牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法,即牛顿迭代法.迭代法是一种不断用变量的旧值递推新值的过程.跟迭代法相对应的是直接法或者称为一次解法,即一次性解决问题.迭代法又分为精确迭代和近似迭代.“牛顿迭代法”属于近似迭代法,本文主要讨论的是牛顿迭代法,方法本身的发现和演变和修正过程,避免二阶导数计算的Newton迭代法的一个改进,并与中国古代的算法,即盈不足术,与牛顿迭代算法的比较. 关键词:Newton迭代算法;近似求解;收敛阶;数值试验;中国古代数学; 九章算术;Duffing方程;非线性方程;收敛速度;渐进性 0 引言: 迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法或者称为一次解法,即一次性解决问题.迭代法又分为精确迭代和近似迭代.“二分法”和“牛顿迭代法”属于近似迭代法. 迭代算法是用计算机解决问题的一种基本方法.它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值.具体使用迭代法求根时应注意以下两种可能发生的情况: (1)如果方程无解,算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代算法前应先考察方程是否有解,并在程序中对迭代的次数给予限制. (2)方程虽然有解,但迭代公式选择不当,或迭代的初始近似根选择不合理,也会导致迭代失败. 所以利用迭代算法解决问题,需要做好以下三个方面的工作: 1、确定迭代变量.在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 2、建立迭代关系式.所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系).迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成. 3、对迭代过程进行控制,在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题.不能让迭代过程无休止地重复执行下去.迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定.对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件. 1牛顿迭代法:

MAAB计算方法迭代法牛顿法二分法实验报告

姓名 实验报告成绩 评语: 指导教师(签名) 年 月 日 说明:指导教师评分后,实验报告交院(系)办公室保存。 实验一 方程求根 一、 实验目的 用各种方法求任意实函数方程0)(=x f 在自变量区间[a ,b]上,或某一点附近的实根。并比较方法的优劣。 二、 实验原理 (1)、二分法 对方程0)(=x f 在[a ,b]内求根。将所给区间二分,在分点 2a b x -=判断是否0)(=x f ;若是,则有根2a b x -=。否则,继续判断是否0)()(

+)(0x f 0))(('0=-x x x f 设0)('0≠x f ,则=x -0x )(') (00x f x f 。取x 作为原方程新的近似根1x ,然后将1x 作为0x 代入上式。迭代公式为:=+1 k x -0x )(')(k k x f x f 。 三、 实验设备:MATLAB 软件 四、 结果预测 (1)11x = (2)5x = (3)2x =0,09052 五、 实验内容 (1)、在区间[0,1]上用二分法求方程0210=-+x e x 的近似根,要求误差不超 过3105.0-?。 (2)、取初值00=x ,用迭代公式=+1 k x -0x )(') (k k x f x f ,求方程0210=-+x e x 的近似根。要求误差不超过3105.0-?。 (3)、取初值00=x ,用牛顿迭代法求方程0210=-+x e x 的近似根。要求误差 不超过3105.0-?。 六、 实验步骤与实验程序 (1) 二分法 第一步:在MATLAB 软件,建立一个实现二分法的MATLAB 函数文件如下: function x=agui_bisect(fname,a,b,e) %fname 为函数名,a,b 为区间端点,e 为精度 fa=feval(fname,a); %把a 端点代入函数,求fa fb=feval(fname,b); %把b 端点代入函数,求fb if fa*fb>0 error('两端函数值为同号'); end

线性方程组的迭代法及程序实现

线性方程组的迭代法及程序实现 学校代码:11517 学号:200810111217 HENAN INSTITUTE OF ENGINEERING 毕业论文 题目线性方程组的迭代法及程序实现 学生姓名 专业班级 学号 系 (部)数理科学系 指导教师职称 完成时间 2012年5月20日河南工程学院 毕业设计(论文)任务书 题目:线性方程组的迭代法及程序实现专业:信息与计算科学学号 : 姓名一、主要内容: 通过本课题的研究,学会如何运用有限元方法来解决线性代数方程组问题,特别是Gaussie-Seidel迭代法和Jacobi迭代法来求解线性方程组。进一步学会迭代方法的数学思想,并对程序代码进行解析与改进,这对于我们以后学习和研究实际问题具有重要的意义。本课题运用所学的数学专业知识来研究,有助于我们进一步掌握大学数学方面的知识,特别是迭代方法。通过这个课题的研究,我进一步掌握了迭代方法的思想,以及程序的解析与改进,对于今后类似实际问题的解决具有重要的意义。

二、基本要求: 学会编写规范论文,独立自主完成。 运用所学知识发现问题并分析、解决。 3.通过对相关资料的收集、整理,最终形成一篇具有自己观点的学术论文,以期能对线性方程组迭代法的研究发展有一定的实践指导意义。 4.在毕业论文工作中强化英语、计算机应用能力。 完成期限: 2012年月指导教师签名:专业负责人签名: 年月日 目录 中文摘要....................................................................................Ⅰ英文摘要 (Ⅱ) 1 综述 1 2 经典迭代法概述 3 2.1 Jacobi迭代法 3 2.2 Gauss?Seidel迭代法 4 2.3 SOR(successive over relaxation)迭代法 4 2.4 SSOR迭代法 5 2.5 收敛性分析5 2. 6 数值试验 6 3 matlab实现的两个例题8 3.1 例1 迭代法的收敛速度8 3.2 例 2 SOR迭代法松弛因子的选取 12致谢16参考文献17附录19

沈阳理工大学迭代阈值法图像分割程序设计

成绩评定表 学生姓名高冰钰班级学号1303030402 专业 电子信息工程课程设计题目 基于最大类间方差法图 像分割程序设计 —迭代阈值法 评 语 组长签字: 成绩 日期2016年7月18日

课程设计任务书 学院信息科学与工程专业电子信息工程 学生姓名高冰钰班级学号1303030402 课程设计题目基于最大类间方差法图像分割程序设计—迭代阈值法实践教学要求与任务: 本设计要求利用Matlab进行编程及仿真,仿真内容为基于最大类间方差法图像分割程序设计——迭代阈值法。利用所学数字图象处理技术知识,在Matlab软件系统上来实现图像分割,并且对程序进行测试。要求如下: (1)掌握课程设计的相关知识、概念、思路及目的。 (2)程序设计合理、能够正确运行且操作简单,可实施性强。 (3)掌握图像分割的方法。 (4)能够利用迭代阈值法进行图像分割。 工作计划与进度安排: 第一阶段(1-2)天:熟悉matlab编程环境,查阅相关资料; 第二阶段(2-3)天:算法设计; 第三阶段(2-3)天:编码与调试; 第四阶段(1-2)天:实验与分析; 第五阶段(1-2)天:编写文档。 指导教师: 2016年7月3日专业负责人: 2016年7月4日 学院教学副院长: 2016年7月4日

摘要 数字图像处理的目的之一是图像识别,而图像分割是图像识别工作的基础。图像分割是从图像预处理到图像识别和分析、理解的关键步骤,在数字图像处理中占据重要的位置。图像分割的目的是将图像分成一些有意义的区域并对这些区域进行描述。 图像分割的方法主要有点相关分割、区域相关分割、阈值法、界限检测法、匹配法、跟踪法等。本设计主要采用阈值分割法中的迭代阈值法,利用MATLAB 软件中的图像处理函数将图像导入,然后对图像进行灰度变换,通过迭代法求图像最佳分割阈值,根据该阈值对图像进行分割,从而产生二值化后的图像。仿真结果表明,通过迭代法选取的阈值是比较准确的,可以采用此阈值对图像进行分割。 关键词:图像分割;迭代阈值法;MATLAB

数值计算_第4章 解线性方程组的迭代法

第4章解线性方程组的迭代法 用迭代法求解线性方程组与第4章非线性方程求根的方法相似,对方程组进行等价变换,构造同解方程组(对可构造各种等价方程组, 如分解,可逆,则由得到),以此构造迭代关系式 (4.1) 任取初始向量,代入迭代式中,经计算得到迭代序列。 若迭代序列收敛,设的极限为,对迭代式两边取极限 即是方程组的解,此时称迭代法收敛,否则称迭代法发散。我们将看到,不同于非线性方程的迭代方法,解线性方程组的迭代收敛与否完全决定于迭代矩阵的性质,与迭代初始值的选取无关。迭代法的优点是占有存储空间少,程序实现简单,尤其适用于大型稀疏矩阵;不尽人意之处是要面对判断迭代是否收敛和收敛速度的问题。 可以证明迭代矩阵的与谱半径是迭代收敛的充分必要条件,其中是矩阵的特征根。事实上,若为方程组的解,则有 再由迭代式可得到

由线性代数定理,的充分必要条件。 因此对迭代法(4.1)的收敛性有以下两个定理成立。 定理4.1迭代法收敛的充要条件是。 定理4.2迭代法收敛的充要条件是迭代矩阵的谱半径 因此,称谱半径小于1的矩阵为收敛矩阵。计算矩阵的谱半径,需要求解矩阵的特征值才能得到,通常这是较为繁重的工作。但是可以通过计算矩阵的范数等方法简化判断收敛的 工作。前面已经提到过,若||A||p矩阵的范数,则总有。因此,若,则必为收敛矩阵。计算矩阵的1范数和范数的方法比较简单,其中 于是,只要迭代矩阵满足或,就可以判断迭代序列 是收敛的。 要注意的是,当或时,可以有,因此不能判断迭代序列发散。

在计算中当相邻两次的向量误差的某种范数小于给定精度时,则停止迭代计算,视为方程组的近似解(有关范数的详细定义请看3.3节。) 4.1雅可比(Jacobi)迭代法 4.1.1 雅可比迭代格式 雅可比迭代计算 元线性方程组 (4.2) 写成矩阵形式为。若将式(4.2)中每个方程的留在方程左边,其余各项移到方程右边;方程两边除以则得到下列同解方程组: 记,构造迭代形式

解线性方程组的几种迭代算法

解线性方程组的几种迭代算法 内容摘要: 本文首先总结了分裂法解线性方程组的一些迭代算法,在此基础上分别通过改变系数矩阵A的分裂形式和对SSOR算法的改进提出了两种新的算法,并证明了这两种算法的收敛性.与其它方法相比,通过改变系数矩阵A的分裂形式得到的新算法具有更好的收敛性,改进的SSOR算法有了更快的收敛速度.最后通过数值实例验证了这两种算法在有些情况下确实可以更有效的解决问题. 关键词: 线性方程组迭代法算法收敛速度 Several kinds of solving linear equations iterative algorithm Abstract: In this paper, we firstly summarize some Iterative algorithms of Anti-secession law solution of linear equations. Based on these, two new algorithms are put forward by changing the fission form of coefficient matrix A and improving the algorithm of SSOR, and the convergence of the two algorithms is demonstrated. Compared with other methods, the new algorithm acquired by changing the fission form of coefficient matrix A is possessed of a better convergence. And the improved SSOR algorithm has a faster convergence speed. Finally, some numerical examples verify that the two algorithms can solve problems more effectively in some cases. Key words: Linear equations Iteration method algorithm Convergence speed

阈值分割算法

clc; clear; I=imread('d:\1.jpg'); subplot(221);imshow(I);title('原图像'); I1=rgb2gray(I); %双峰法 newI=im2bw(I1,150/255); subplot(222),imshow(newI);title('双峰法阈值分割后的图像'); %迭代法阈值分割 ZMax=max(max(I)); ZMin=min(min(I)); TK=(ZMax+ZMin)/2; bCal=1; iSize=size(I); while(bCal) iForeground=0; iBackground=0; ForegroundSum=0; BackgroundSum=0; for i=1:iSize(1) for j=1:iSize(2) tmp=I(i,j); if(tmp>=TK) iForeground=iForeground+1; ForegroundSum=ForegroundSum+double(tmp); else iBackground=iBackground+1; BackgroundSum=BackgroundSum+double(tmp); end end end ZO=ForegroundSum/iForeground; ZB=BackgroundSum/iBackground; TKTmp=uint8((ZO+ZB)/2); if(TKTmp==TK) bCal=0; else TK=TKTmp; end end disp(strcat('迭代后的阈值:',num2str(TK))); newI=im2bw(I,double(TK)/255);

图像阈值分割技术原理和比较要点

图像阈值分割和边缘检测技术原理和比较

摘要 图像分割是一种重要的图像分析技术。对图像分割的研究一直是图像技术研究中的热点和焦点。医学图像分割是图像分割的一个重要应用领域,也是一个经典难题,至今已有上千种分割方法,既有经典的方法也有结合新兴理论的方法。医学图像分割是医学图像处理中的一个经典难题。图像分割能够自动或半自动描绘出医学图像中的解剖结构和其它感兴趣的区域,从而有助于医学诊断。 阈值分割是一种利用图像中要提取的目标物与其背景在灰度特性上的差异,把图像视为具有不同灰度级的两类区域(目标和背景)的组合,选取一个合适的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生对应的二值图像。 本文先介绍各种常见图像阈值分割和边缘检测方法的原理和算法,然后通过MATLAB 程序实现,最后通过比较各种分割算法的结果并得出结论。 关键词:图像分割;阈值选择;边缘检测;

目录 1.概述 (4) 2.图像阈值分割和边缘检测原理 (4) 2.1.阈值分割原理 (4) 2.1.1.手动(全局)阈值分割 (5) 2.1.2.迭代算法阈值分割 (6) 2.1.3.大津算法阈值分割 (6) 2.2.边缘检测原理 (6) 2.2.1.roberts算子边缘检测 (7) 2.2.2.prewitt算子边缘检测 (7) 2.2.3.sobel算子边缘检测 (7) 2.2.4.高斯laplacian算子边缘检测 (8) 2.2.5.canny算子边缘检测 (8) 3.设计方案 (9) 4.实验过程 (10) 4.1.阈值分割 (12) 4.1.1.手动(全局)阈值分割 (12) 4.1.2.迭代算法阈值分割 (12) 4.1.3.大津算法阈值分割 (12) 4.2.边缘检测 (13) 4.2.1.roberts算子边缘检测 (13) 4.2.2.prewitt算子边缘检测 (13) 4.2.3.sobel算子边缘检测 (13) 4.2.4.高斯laplacian算子边缘检测 (13) 4.2.5.canny算子边缘检测 (14) 5.试验结果及分析 (14) 5.1.实验结果 (14) 5.1.1.手动(全局)阈值分割 (14) 5.1.2.迭代算法阈值分割 (17) 5.1.3.大津算法阈值分割 (18) 5.1.4.roberts算子边缘检测 (19) 5.1.5.prewitt算子边缘检测 (20) 5.1.6.sobel算子边缘检测 (21) 5.1.7.高斯laplacian算子边缘检测 (22) 5.1.8.canny算子边缘检测 (23) 5.2. 实验结果分析和总结 (24) 参考文献 (24)

MATLAB计算方法迭代法牛顿法二分法实验报告要点

姓名实验报告成绩 评语: 指导教师(签名) 年月日

说明:指导教师评分后,实验报告交院(系)办公室保存。 实验一 方程求根 一、 实验目的 用各种方法求任意实函数方程0)(=x f 在自变量区间[a ,b]上,或某一点附近的实根。并比较方法的优劣。 二、 实验原理 (1)、二分法 对方程0)(=x f 在[a ,b]内求根。将所给区间二分,在分点2a b x -= 判 断是否0)(=x f ;若是,则有根 2a b x -= 。否则,继续判断是否0)()(

(1)11x =0.09033 (2)5x =0.09052 (3)2x =0,09052 五、 实验内容 (1)、在区间[0,1]上用二分法求方程0210=-+x e x 的近似根,要求误差不 超过 3 105.0-?。 (2)、取初值00=x ,用迭代公式=+1k x -0x )(') (k k x f x f ,求方程0210=-+x e x 的 近似根。要求误差不超过 3 105.0-?。 (3)、取初值00=x ,用牛顿迭代法求方程0210=-+x e x 的近似根。要求误 差不超过 3 105.0-?。 六、 实验步骤与实验程序 (1) 二分法 第一步:在MATLAB 7.0软件,建立一个实现二分法的MATLAB 函数文件agui_bisect.m 如下: function x=agui_bisect(fname,a,b,e) %fname 为函数名,a,b 为区间端点,e 为精度 fa=feval(fname,a); %把a 端点代入函数,求fa fb=feval(fname,b); %把b 端点代入函数,求fb if fa*fb>0 error('两端函数值为同号'); end %如果fa*fb>0,则输出两端函数值为同号 k=0 x=(a+b)/2 while(b-a)>(2*e) %循环条件的限制

阈值法图像分割实验报告

阈值法图像分割实验报告 阈值法图像分割实验报告 1 实验目的 图像分割阈值法具有实现容易、计算量小、性能稳定等优点。因此这种方法成为图像分割领域中应用最普遍的方法。本文主要讨论了基于直方图法的图像分割的设计与实现,并与迭代法进行了对比实验。 2 实验环境 Microsoft VC++6.0软件平台,32位Windows XP操作系统。 3 实验原理基础 3.1 直方图法 直方图阈值法其阈值主要通过分析图像的灰度直方图来进行确定。假定一幅图像 如图3-1所示,其中背景是灰色,物体为灰白色的,背景中的黑色像素产生了直fxy(,) 方图的左锋,而物体的各灰度级产生了直方图的右峰。由于物体边界像素数相对而言较少,从而产生两峰之间的谷,选择谷对应的灰度值作为阈值T,利用式3.1,可以得到一幅二值图像gxy(,),用于后续处理和分析。 0,(,)fxyT,, (3.1) g(,)xy,,255,(,)fxyT,,

背景部分物体部分 0255 阈值T 图3-1 利用直方图选择二值化阈值 3.2 迭代法(用于对比试验) 迭代法也是一种在图像分割过程中选择合适阈值的方法。它是基于逼近的思想通过阈值迭代的方式利用程序自动计算出比较合适的分割阈值。迭代法指在初始条件中假设一个阈值,而通过对图像的迭代运算来不断地更新这一假设阈值来得到最佳阈值。迭代法阈值分割主要算法: RR,minmax1( 求出图像最小灰度值和最大灰度值计算初始阈值为 T,RRminmax022( 根据阈值将图像分割成目标和背景两部分,求出两部分的平均灰度值 RijNij(,)(,),RijNij(,)(,),,,RijT(,),RijT(,),kkR,R, 0GNij(,)Nij(,),,RijT(,),RijT(,),kk 为图像上点的灰度值,为点的权重系数,一般为 Rij(,)(,)ijNij(,)(,)ijNij(,) 的个数 T 为阈值 Rij(,)

自动阈值迭代法及Otsu法实验报告

数字图像处理实验 自动阈值迭代法及Otsu法 姓名: 学好: 指导老师:王韬 时间:2012年5月

自动阈值迭代法及Otsu法实验报告 一、实验原理 大津法由大津于1979年提出,对图像Image,记t为前景与背景的分割阈值,前景点数占图像比例为w0,平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。图像的总平均灰度为:u=w0*u0+w1*u1。从最小灰度值到最大灰度值遍历t,当t使得值g=w0*(u0-u)2+w1*(u1-u)2 最大时t即为分割的最佳阈值。对大津法可作如下理解:该式实际上就是类间方差值,阈值t分割出的前景和背景两部分构成了整幅图像,而前景取值u0,概率为 w0,背景取值u1,概率为w1,总均值为u,根据方差的定义即得该式。因方差是灰度分布均匀性的一种度量,方差值越大,说明构成图像的两部分差别越大, 当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小。 二、实验步骤 自动阈值(迭代法)步骤 (1)估计一个阈值T(比如均值) (2)用阈值T将灰度直方图分割成两个区域R1、R2 (3)分别计算两个区域R1、R2内的灰度平均值u1和u2 (4)选择新阈值T=(u1+u2)/2 (5)重复上述工作3~5次,直到前后两次的阈值不变 自动阈值(Otsu法)步骤 (1).计算直方图 (2).设置初值:wi(0)以及ui(0) (3).从1到最大值设置阈值T。更新wi (t)以及ui (t)。计算σb(t) * σb(t)。 (4).选取最大σb(t) * σb(t)对应的T 三、实验程序 #include #include #include #include #include int nWidth; //图像宽度 int nHeight; //图像高度 int nColorBits; //每个像素所占位数 int nColor; //图像颜色数 int nLen; //图像文件大小,以字节数计 int nByteWidth; //图像每行字节数 BYTE *lpBitmap; //指向图像首字节的指针 BYTE *lpBits; //指向图像实际数据的指针

MATLAB计算方法迭代法牛顿法二分法实验报告

姓名 _______________ 实验报告成绩 __________________________ 评语: 指导教师(签名)

说明:指导教师评分后,实验报告交院(系)办公室保存 实验一方程求根 一、实验目的 用各种方法求任意实函数方程f(x)0在自变量区间[a,b]上,或某一点附 近的实根。并比较方法的优劣。 二、实验原理 (1)、二分法 b a x --------- 对方程f(x)0在[a,b]内求根。将所给区间二分,在分点2判 b a x --------- 断是否f(x) 0;若是,贝y有根2。否则,继续判断是否f(a)?f(x) 0, 若是,则令b x,否则令a x。否则令a x。重复此过程直至求出方程f(x) 0在[a,b]中的 近似根为止。 (2)、迭代法 将方程f(x) 0等价变换为x = ?( x )形式,并建立相应的迭代公式xk 1 J x)。 (3)、牛顿法 若已知方程的一个近似根X。,则函数在点X。附近可用一阶泰勒多项 式pi(x) f(X0) f'(X0)(X X0)来近似,因此方程f(x) 0可近似表示为f(X0) f(X0) f'(X0)(X X)0设f'(X0) 0,则x X0 f'(X0)。取x 作为原方程新的近 f (X k) 似根X1,然后将X1作为X0代入上式。迭代公式为:Xk 1 X0 f'(X k)。 三、实验设备:MATLAB 7.0软件 四、结果预测

(1) 心=0.09033 (2) x 5=o.o9O52 (3) x 2=0,09052 五、实验内容 (1)、在区间[0,1]上用二分法求方程e x 10x 2 0的近似根,要求误差不 六、实验步骤与实验程序 (1)二分法 第一步:在MATLAB 7.0软件,建立一个实现二分法的 MATLAB 函数 文 件 agui_bisect.m 女口下: fun cti on x=agui_bisect(fname,a,b,e) %fname 为函数名,a,b 为区间端点,e 为精度 fa=feval(fname,a); % 把a 端点代入函数,求fa fb=feval(fname,b); % 把b 端点代入函数,求fb if fa*fb>0 error(' 两端函数值为同号'); end %如果fa*fb>0,则输出两端函数值为同号 k=0 x=(a+b)/2 while(b-a)>(2*e) % 循环条件的限制 fx 二feval(fname,x);% 把x 代入代入函数,求fx 超过 0.5 10 3 (2)、取初值 xo 0 ,用迭代公式 Xk1 f (X k ) f'(X k ),求方程 e x 10x 2 0 的 近似根。要求误差不超过 0.5 10 (3)、取初值x 。 ,用牛顿迭代法求方程e x 10x 2 0的近似根。要求误 差不超过 0.5 10

数值计算方法-简单迭代

《数值计算方法》实验2报告 班级: 学号: 姓名: 成绩: 1. 实验名称 实验2 非线性方程的迭代解法(之简单迭代法) 2. 实验题目 用简单迭代法求方程010423=-+x x 在区间[1,2]内的一个实根,取绝对误差限为410-. 3. 实验目的 掌握非线性方程的简单迭代法. 4. 基础理论 简单迭代法:将方程0)(=x f 改写成等价形式)(x x ?=,从初值0x 开始,使用迭代公式)(1k k x x ?=+可以得到一个数列,若该数列收敛,则其极限即为原方程的解.取数列中适当的项可作为近似解. 5. 实验环境 操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程 (1)、输入初值x0,将方程改写等价形式; (2)、构造迭代公式 ,k=0,1,2.......; (3)、采用for 循环实现反复迭代; (4)、以误差410-终止循环; (5)、输出结果。 7. 结果与分析 x0=0 del=0.0001 N=100 k x(k) 0 0.000000 1 1.581139 2 1.229548

3 1.426638 4 1.331951 5 1.381756 6 1.356640 7 1.369593 8 1.362987 9 1.366376 10 1.364643 11 1.365531 12 1.365076 13 1.365309 14 1.365190 近似解=1.365251 100次迭代后未达到精度要求. 分析:计算结果与理论一致。 8. 附录:程序清单 phi=inline('0.5*sqrt((10-x^3))'); x0=input('x0='); del=input('del='); N=input('N='); n=1; fprintf('\n k x(k) '); fprintf('\n %4d %f',0,x0); while n

相关文档
最新文档