当前位置:
文档之家› 黄金分割法二次插值法牛顿法matlab程序一维搜索方法比较
黄金分割法二次插值法牛顿法matlab程序一维搜索方法比较
end
newton_2.m
clear; clc; x0=input('x0='); EPSI=input('EPSI='); tic X=newton_1(x0,EPSI); t=toc fprintf('牛顿法所得极小值点为%f\n',X); fprintf('牛顿法所得极小值为%f\n',f(X));
左边的区间距离 0.0153
黄金分割法所得最小极值点为:-1.001326 黄金分割法所得最小极值为:-0.999998 迭代次数为:11.000000
t=
0.0630
(3)牛顿法
求解 y=n*n+2*n 的最小值。 程序: newton_1.m
function y = newton_1(x0,EPSI) x(1)=x0; b=1; i=1; while (abs(b)>EPSI) i=i+1; x(i)=x(i-1)-df(x(i-1))/df2(x(i-1)); b=x(i)-x(i-1); fprintf('所得的极小值点为:%f\n',x(i)); end y=x(i); fprintf('总共迭代%f 次\n',i-1);
左边的区间距离 0.0402
黄金分割法所得最小极值点为:-0.993642 黄金分割法所得最小极值为:-0.999960 迭代次数为:9.000000 右边的区间距离 0.0249
左边的区间距离 0.0249
黄金分割法所得最小极值点为:-1.013756 黄金分割法所得最小极值为:-0.999811 迭代次数为:10.000000 右边的区间距离 0.0154
end fprintf('右边的区间距离'); disp(b-x2); fprintf('左边的区间距离'); disp(x1-a); i=i+1;
X=0.5*(b+a); min=X*X+2*X; fprintf('黄金分割法所得最小极值点为:%f\n',X); fprintf('黄金分割法所得最小极值为:%f\n',min); fprintf('迭代次数为:%f\n',i); end t=toc
把得到的最后的 作为 的近似极小值点。上述求极值点的方法称为三点二 次插值法。
为便于计算,可将式(7)改写为
式中:
(8)
(9)
(10)
(2)应用 四、例题应用 (1)黄金分割法 求解 y=n*n+2*n 的最小值。 程序: huangjinfenggefa.m clear clc
a=-3;b=5;lamda=0.618;epsilon=0.05;i=0; x1=b-lamda*(b-a);
一维搜索方法应用比较
一、黄金分割法
(1)黄金分割法的起源
黄金分割在文艺复兴前后,经过阿拉伯人传入欧洲,受到了欧洲人的欢迎, 他们称之为"金法",17 世纪欧洲的一位数学家,甚至称它为"各种算法中最可宝 贵的算法"。这种算法在印度称之为"三率法"或"三数法则",也就是我们现在常说 的比例方法。
其实有关"黄金分割",我国也有记载。虽然没有古希腊的早,但它是我国古 代数学家独立创造的,后来传入了印度。经考证。欧洲的比例算法是源于我国而 经过印度由阿拉伯传入欧洲的,而不是直接从古希腊传入的。
黄金分割〔Golden Section〕是一种数学上的比例关系。黄金分割具有严格 的比例性、艺术性、和谐性,蕴藏着丰富的美学价值。应用时一般取 0.618 ,就 像圆周率在应用时取 3.14 一样。
由于公元前 6 世纪古希腊的毕达哥拉斯学派研究过正五边形和正十边形的 作图,因此现代数学家们推断当时毕达哥拉斯学派已经触及甚至掌握了黄金分 割。
迭代次数为:2.000000 右边的区间距离 0.7214
左边的区间距离 0.7212
黄金分割法所得最小极值点为:-0.888304 黄金分割法所得最小极值为:-0.987524 迭代次数为:3.000000 右边的区间距离 0.4459
左边的区间距离 0.4459
黄金分割法所得最小极值点为:-1.249028 黄金分割法所得最小极值为:-0.937985 迭代次数为:4.000000 右边的区间距离 0.2755
对于一个函数 f(x),它的泰勒级数展开式是这样的 f(x)=f(x0)+f′(x0)(x−x0)+12f′′(x0)(x−x0)2+...+1n!fn(x0)(x−x0)n 当使用牛顿法来求 一个方程解的时候,它使用泰勒级数前两项来代替这个函数,即用ϕ(x)代替 f(x), 其中:
ϕ(x)=f(x0)+f′(x0)(x−x0) 令ϕ(x)=0,则 x=x0−f(x0)f′(x0)。 所以,牛顿法的迭代公式是 xn+1=xn−f(xn)f′(xn)
(3)
解式(3)即求得插值函数的极小点
(4)
式(4)中要确定的系数 可在方程组(2)中利用相邻两个方程消去 而得:
(5)
(6) 将式(5)、(6)代入式(4)便得插值函数极小值点 的计算公式:
(7)
把 取作区间
内的另一个计算点,比较 与 两点函数值的大
小,在保持 两头大中间小的前提下缩短搜索区间,从而构成新的三点搜索 区间,再继续按上述方法进行三点二次插值运算,直到满足规定的精度要求为止,
(1)起源 牛顿法最初由艾萨克·牛顿于 1736 年在 Method of Fluxions 中公开提出。而
事实上方法此时已经由 Joseph Raphson 于 1690 年在 Analysis Aequationum 中提 出,与牛顿法相关的章节《流数法》在更早的 1671 年已经完成了。 (2)原理及应用
牛顿法求解 n 的平方根求解 n 的平方根,其实是求方程 x2−n=0 的解利用上 面的公式可以得到:xi+1=xi−x2i−n2xi=(xi+nxi)/2 编程的时候核心的代码是:x = (x + n/x)/2 三、二次插值法
二次插值法亦是用于一元函数 在确定的初始区间内搜索极小点的一种 方法。它属于曲线拟合方法的范畴。
f1=x1*x1+2*x1; x2=a+lamda*(b-a); f2=x2*x2+2*x2; tic while b-a>=epsilon
if f1>=f2 a=x1;x1=x2;f1=f2; x2=a+lamda*(b-a); f2=x2*x2+2*x2;
else b=x2;x2=x1; f2=f1; x1=b-lamda*(b-a); f1=x1*x1+2*x1;
t=
0.0283
因为它在造型艺术中具有美学价值,在工艺美术和日用品的长宽设计中,采 用这一比值能够引起人们的美感,在实际生活中的应用也非常广泛,建筑物中某 些线段的比就科学采用了黄金分割,舞台上的报幕员并不是站在舞台的正中央, 而是偏在台上一侧,以站在舞台长度的黄金分割点的位置最美观,声音传播的最 好。就连植物界也有采用黄金分割的地方,如果从一棵嫩枝的顶端向下看,就会 看到叶子是按照黄金分割的规律排列着的。在很多科学实验中,选取方案常用一 种 0.618 法,即优选法,它可以使我们合理地安排较少的试验次数找到合理的西 方和合适的工艺条件。正因为它在建筑、文艺、工农业生产和科学实验中有着广 泛而重要的应用,所以人们才珍贵地称它为"黄金分割"。我国数学家华罗庚曾致 力于推广优选法中的"0.618 法",把黄金分割应用于生活实际及科学应用中。
运行结果:
右边的区间距离 1.8880
左边的区间距离 1.8886
黄金分割法所得最小极值点为:-0.528000 黄金分割法所得最小极值为:-0.777216 迭代次数为:1.000000 右边的区间距离 1.1674
左边的区间距离 1.1674
黄金分割法所得最小极值点为:-1.472000 黄金分割法所得最小极值为:-0.777216
(1)基本原理
在求解一元函数 的极小点时,常常利用一个低次插值多项式 来逼 近原目标函数,然后求该多项式的极小点(低次多项式的极小点比较容易计算), 并以此作为目标函数 的近似极小点。如果其近似的程度尚未达到所要求的 精度时,可以反复使用此法,逐次拟合,直到满足给定的精度时为止。
常用的插值多项式 为二次或三次多项式,分别称为二次插值法和三次 插值法。这里我们主要介绍二次插值法的计算公式。
公元前 4 世纪,古希腊数学家欧多克索斯第一个系统研究了这一问题,并建 立起比例理论。
公元前 300 年前后欧几里得撰写《几何原本》时吸收了欧多克索斯的研究成 果,进一步系统论述了黄金分割,成为最早的有关黄金分割的论著。
中世纪后,黄金分割被披上神秘的外衣,意大利数家帕乔利称中末比为神圣 比例,并专门为此著书立说。德国天文学家开普勒称黄金分割为神圣分割。
左边的区间距离 0.2754
黄金分割法所得最小极值点为:-1.026101 黄金分割法ห้องสมุดไป่ตู้得最小极值为:-0.999319 迭代次数为:5.000000 右边的区间距离 0.1704
左边的区间距离 0.1704
黄金分割法所得最小极值点为:-0.888420 黄金分割法所得最小极值为:-0.987550 迭代次数为:6.000000 右边的区间距离 0.1052
df.m function y = f(n) y=n*n+2*n; end
df2.m
function y = df(n) y=2*n+2; end
f.m function y = df2(n) y=2; end
运行结果: x0=1 EPSI=0.05 所得的极小值点为:-1.000000 所得的极小值点为:-1.000000 总共迭代 2.000000 次