黄金分割二分法数值分析回顾

今天看了2012年写的对黄金分割二分法的数值探讨,推理公式不记得了,当时写的不细致,晚上回顾了下,做了些补充

原文:

http://blog.csdn.net/aaajj/article/details/7878480

比如ABCDE 5个节点,通过以下斐波拉契数列二分方式组织起来,

找A需要3次,即从5开始到A的路径

找B需要3次

找C需要2次

找D需要2次

找E需要2次

平均期望次数E=总次数 / 节点数 = (3+3+2+2+2) / 5 = 2.4

这里,设斐波拉契数列Tn 为 1 1 2 3 5 8 13 21 ……

设总次数为F

可以发现,随着层次的增加,存在着递推关系

F0 = 0

F1 = 0

F2 = F1 + t(2) + F0 + t(1)

Fn = Fn-1 + t(n) + Fn-2 + t(n-1)

En = Fn / sum

= Fn / t(n+1)

= (Fn-1 + Fn-2 + t(n+1) ) /  t(n+1)

= 1 + Fn-1 /  t(n+1) + Fn-2 /  t(n+1)

= 1 + En-1 * t(n) / t(n+1) + En-2 *t(n-1)

从这里可以看出,期望正好是左右2块的期望值加上深度1,在数学计算与逻辑上也是一致的

数值分析程序和数据见原文

http://blog.csdn.net/aaajj/article/details/7878480

时间: 2024-12-14 18:05:18

黄金分割二分法数值分析回顾的相关文章

二分法回顾

二分法(自己写的格外放心) 1.lower_bound 注意要是查找一个数组的话 应该从(-1, n)的范围内查找 r表示出现的最小位置 void solve(int l, int r)///(l,r] { while(l + 1 < r) { int mid = (l + r) >> 1; if(a[mid] >= k) r = mid; else l = mid; } cout<<l<<" "<<r<<endl

3-5 回顾,快速二分法的疑点解惑:为啥先右j移动?因为设定a[left]为基准点

快速二分法的疑点解惑:为啥先右j移动?因为设定a[left]为基准数 思路:(查看了网上的2篇文章,关键点就是谁为基准数,我自己又尝试了不同排序,不同基准数left,right.得出??的结论) 步骤: 1. 在序列中设a[left]为基准数.最左边设i,最右边设j(目标是从大到小排列) 2. 先从右往左找大于基准数的数,再从左往右找小于基准数的数,找到后两数交换位置 3. 然后重复2和3步骤.直到i和j最终相遇,结束本次循环. 4. 把基准数和最终相遇的数交换,结束.此步骤定位了一个数. 5.

斐波那契数与二分法的递归与非递归算法及其复杂度分析

1. 什么是斐波那契数? 这里我借用百度百科上的解释:斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列.费波那西数列.费波拿契数.费氏数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.--在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加.特别指出:0不是第一

数值算法:无约束优化之一维搜索方法之二分法、牛顿法、割线法

1.二分法(一阶导) 二分法是利用目标函数的一阶导数来连续压缩区间的方法,因此这里除了要求 f 在 [a0,b0] 为单峰函数外,还要去 f(x) 连续可微. (1)确定初始区间的中点 x(0)=(a0+b0)/2 .然后计算 f(x) 在 x(0) 处的一阶导数 f'(x(0)), 如果 f'(x(0)) >0 , 说明极小点位于 x(0) 的左侧,也就是所,极小点所在的区间压缩为[a0,x(0)]:反之,如果 f'(x(0)) <0,说明极小点位于x(0)的右侧,极小点所在的区间压缩为[x

数值分析课程设计

数值分析学习心得: 插值法:拉格朗日插值,埃米特插值 函数逼近:最小二乘法 求积分的算法:牛顿-科斯特公式,龙贝格求积公式,高斯求积公式 求线性方程组的迭代法:jacobi迭代法,高斯-赛德尔迭代法 求非线性方程的算法:牛顿法 求常微分方程初值问题的算法:欧拉法,龙格-库塔法 数值分析课程设计  浙江大学 陈越 第1章 数值分析课程实践概要1.1 课程实践的意义1.2 实验的基本要求第2章 MATLAB简介2.1 MATLAB概述2.2 常用基本指令2.3 数值技术第3章 案例详解1:误差的影响

C#基础知识回顾

C#基础知识回顾          相同数据类型不同的定义变量方式. int a = 5; Int32 b = 6; long c = 4; Int64 d = 4; double e = 3.14; Double f = 3.14; float g = 3.14f; Single h = 3.14f; bool aa = true; Boolean bb = true; string s = "Hello"; String ss = "Hello";   数据类型

控制二分法

儒家和佛学都强调无欲则刚,我一直不理解,没有欲望为什么就会变得刚强?一个人怎么会没有欲望呢?我们平时的贪欲.爱欲.甚至食欲这不都是欲望吗?怎么会消除呢?这太难做到了,直到我看到斯多葛学派的安心之法,才发现原来是我将无欲则刚给理解错了. 1.一段名言 中国科技大学的前校长朱清时用这样一段话来勉励学生: 有勇气去改变你能改变的事情: 有度量去接受你不能改变的事情: 有智慧区别以上两类事情: 上面这句话最起源于斯多葛学派,基督教和犹太教也有类似的名言,上面这段话看起来很普通,但实则这段话厉害非凡! 我

Spring知识点回顾(01)

Spring知识点回顾(01) 一.依赖注入 1.声明Bean的注解 @Component @Service @Repository @Controller 2.注入Bean的注解 @Autowired @Inject @Resource 二.加载Bean 1.xml方式 - applicationcontext.xml : Beans, Bean, Component-Scan 2.注解方式 - @Configuration,@ComponentScan,@Bean 用@Configurati

day05匿名函数,内置函数,二分法,递归,模块

yield作为表达式来使用的方式 #grep -rl 'python /root """ 查找root下文件中含有python的文件 """ import os def init(func): def wrapper(*args,**kwargs): g=func(*args,**kwargs) next(g) return g return wrapper @init def search(target): while True: search