黄金分割法、斐波那契法求极值
- 格式:doc
- 大小:21.00 KB
- 文档页数:2
一、黄金分割法
题目:求函数在区间[0,7]中的极小值点,令。
结果:
当LN(最小区间)=1的时候,迭代6次,求出的最小值为-5.999;
当LN=0.1时,迭代10次,最小值为-5.9997;
当LN=0.01时迭代15次,最小值为-6。
图 1 黄金分割法输出图
讨论:
黄金分割法每次将区间变为原来的0.618倍。
只有在单峰函数的时候才能求出最优解。
对于多峰情况黄金分割法有可能找不到最优点。
因为当x1<x2的时候直接把x2右边的部分去掉,不能证明在x2和b之间没有更小的点。
二、Fibonacci法
题目:求函数在区间内的极大值。
假定用14个Fibonacci 搜索点,具有弧度。
结果:
迭代12次,求出最大值为0.5611
图 2 Fibonacci法输出图
讨论:
1、Fibonacci法在布置n个点后的区间长度缩短为原长度L1的1/F n倍。
2、将区间改成10pi,搜索结果如图3,没有达到最大值。
可见fibonacci法同样需
要函数为单峰函数。
图 3 区间为[0 10*pi]时搜索结果。
神奇的斐波那契数列与黄金分割石家庄二中南校区孟柳比萨的列奥纳多,又称斐波那契(Leonardo Pisano ,Fibonacci, Leonardo Bigollo,1175年-1250年),中世纪意大利数学家,是西方第一个研究斐波那契数的人,并将现代书写数和乘数的位值表示法系统引入欧洲。
列奥纳多的父亲Guilielmo(威廉),外号Bonacci.因此列奥纳多就得到了外号斐波那契(Fibonacci,意即filius Bonacci,Bonacci之子)。
1202年,他撰写了《算盘全书》(Liber Abacci)一书。
他是第一个研究了印度和阿拉伯数学理论的欧洲人。
他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点相当于今日的阿尔及利亚地区,当时仍是小伙子的列奥纳多已经开始协助父亲工作,因此得以在一个阿拉伯老师的指导下研究数学。
他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯等地研究数学。
于是他就学会了阿拉伯数字。
他是西方第一个研究斐波那契数的人,并将现代书写数和乘数的位值表示法系统引入欧洲。
主要著作有《算盘书》《几何实践》《花朵》《平方数书》斐波那契在《算盘书》中提出了一个有趣的兔子问题:一般而言,兔子在出生两个月后就具有了繁殖能力,一对兔子每个月能生出一对兔子,如果兔子都不死,那么一年后能有多少对兔子?拿新出生的一对兔子研究:第一个月兔子没有繁殖能力,两个月后生下一对小兔总数共有两对;三个月后,老兔子生下又一对,因为上一轮的小兔没有繁殖能力,所以总数是三对;…………..1,1,2,3,5,8,13,21,34,55,89,144……依次类推下去,你会发现,它后一个数等于前面两个数的和。
在这个数列中的数字,就被称为斐波那契数。
2是第3个斐波那契数。
斐波那契数列还满足一下特点:1.任一项的平方数都等于与它相邻的两项乘积相差12.相邻的4个数,内积与外积相差13.前一项与后一项的比大约是0.6184.后一项比前一项大约是1.618经研究发现,相邻两个斐波那契数的比值是随序号的增加而逐渐趋于黄金分割比的。
【交易干货】斐波那契—黄金分割线用法及技巧!听过很多交易故事,也见过很多交易者,他们的经历无论多么千奇百怪,有几个共同的词汇频频出现:亏损、扛单、爆仓。
一旦交易出现连亏,大多数交易者离爆仓就不远了。
就小编接触的交易者而言,至少80%的人在连亏之后以爆仓而告终,只有一部分老手能及时找到正确的方向扭转颓势。
那么,老手在连亏的时候是如何及时找到与盘面一致的方向,避免爆仓的呢?大家都知道我们想要预测盘面走势,基本只能靠借助基本面信息或各种各样的指标和理论来分析的。
最常用的就是指标了,因为这个是切切实实可以看到的。
这些指标之中就有一些在预测行情方面有着较高的准确性,学会它你就能在交易中找到方向,防止爆仓了。
而老手最常用的便是斐波那契——黄金分割线!为什么呢?因为它极其简单,你甚至不用知道其背后的复杂逻辑,只需知道如何使用即可,并且它有着神奇的预测作用,学会用它即能轻松找到方向。
下面我们就来详细的了解一下,斐波那契——黄金分割线在交易中的实战应用吧!01斐波那契数列是怎么来的?斐波那契,十二世纪意大利的天才数字研究专家,那时候,罗马数字和阿拉伯数字正好风靡欧洲。
斐波那契醉心数字,因为发明斐波那契数列而闻名全世界。
闲话少说!请看数列:1+1=2 13+21=341+2=3 21+34=552+3=5 34+55=893+5=8 35+89=1445+8=13 89+144=23318+13=21 144+233=377。
直到无穷要知道一个数字天才发现的东西,肯定不是一个简单的东西。
如果你简单一看,你就看明白了,那你也是天才了。
如果如我般看不明白才是真正的蠢才,那是非常正常的。
不可能人人都是天才。
对天才的东西加以利用,至少我们可以从蠢才变成人才、地才。
天才就免了吧。
首先,从上面得出一组数据:1、3、5、8、13、21、34、55、89、144、233、377.......接着,随便取一组数据:34+55=89.做除法得出几个相同且重要的数据:55除以34,结果等于1.618.34除以55,结果等于0.618.34除以89,结果等于0.382.34除以144,结果等于0.236.•无论你把数组中哪一个数字拿出来,都会得到这几个数字,于是这6个数字你是必须记住的:0.236、0.382、0.50、0.618、0.786、1.27、1.618。
最优化方法实验报告(1)最优化方法实验报告Numerical Linear Algebra And Its Applications学生所在学院:理学院学生所在班级:计算数学10-1学生姓名:甘纯指导教师:单锐教务处2013年5月实验一实验名称:熟悉matlab基本功能实验时间: 2013年05月10日星期三实验成绩:一、实验目的:在本次实验中,通过亲临使用MATLAB,对该软件做一全面了解并掌握重点内容。
二、实验内容:1. 全面了解MATLAB系统2. 实验常用工具的具体操作和功能实验二实验名称:一维搜索方法的MATLAB实现实验时间: 2013年05月10日星期三实验成绩:一、实验目的:通过上机利用Matlab数学软件进行一维搜索,并学会对具体问题进行分析。
并且熟悉Matlab软件的实用方法,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。
二、实验背景:(一)0.618法(黄金分割法),它是一种基于区间收缩的极小点搜索算法,当用进退法确定搜索区间后,我们只知道极小点包含于搜索区间内,但是具体哪个点,无法得知。
1、算法原理黄金分割法的思想很直接,既然极小点包含于搜索区间内,那么可以不断的缩小搜索区间,就可以使搜索区间的端点逼近到极小点。
2、算法步骤用黄金分割法求无约束问题min (),f x x R ∈的基本步骤如下:(1)选定初始区间11[,]a b 及精度0ε>,计算试探点:11110.382*()a b a λ=+-11110.618*()a b a μ=+-。
(2)若k k b a ε-<,则停止计算。
否则当()()k k f f λμ>时转步骤(3)。
当()()k k f f λμ≤转步骤(4)。
(3)置11111110.382*()k kk k k k k k k k a b b a b a λλμμ+++++++=??=??=??=+-?转步骤(5)(4)置11111110.382*()k k k k k k k k k k a a b a b a μμλλ+++++++=??=??=??=+-?转步骤(5)(5)令1k k =+,转步骤(2)。
斐波那契-黄⾦分割斐波那契数列普通递推F0=0,F1=1,F n=F n−1+F n−2快速倍增递推F2n=F n(2F n+1−F n)F2n=F n(F n+1+F n−1)F2n+1=F2n+1+F2n 矩阵递推1 1 1 0F n−1F n−2=F nF n−1通项公式及其推导令ϕ=1+√52,ˆϕ=1−√52∵F_n = \dfrac{1}{\sqrt{5}}(\phi^n-\hat\phi^n)=\lfloor \dfrac{\phi^i}{\sqrt{5}} + \dfrac{1}{2} \rfloor所以、斐波那契以指数形式增长1.母函数法$ \digamma(x)=\sum\limits_{\infin} F_nx n\ \digamma(x)=x2\digamma(x)+x\digamma(x)+x\ \digamma(x)=\dfrac{1-x-x2} $母函数进⾏展开,⾸先我们要知道⽜顿⼆项式定理、⽜顿⼴义⼆项式定理、⼆项式定理的推⼴⽜顿⼆项式定理(n \in N^{+})(x+y)^n = \sum\limits_{i=0}^{n} C_{n}^{i} x^{n-i}y^{i}**⼆项式定理推⼴⾄(n \in N) **(1+x)^n=\sum\limits_{i=0}^{\infin} C_{n}^{i} x^i~~~~(n>0)(1+x)^{-n} = \sum\limits_{i=0}^{\infin} C_{-n}^{i} x^i=\sum\limits_{i=0}^{\infin}(-1)^i C_{n+i-1}^{i} x^i⽜顿⼴义⼆项式定理(\alpha \in R)(x+y)^{\alpha}=\sum\limits_{i=0}^{\infin}\tbinom{\alpha}{i} x^{\alpha-i}y^k其中\tbinom{\alpha}{i}类似组合数\tbinom{\alpha}{i}=\dfrac{\alpha(\alpha-1)\cdots(\alpha-i+1)}{i!}特殊形式(1+x)^n = (1-x)^{-n} = \sum\limits_{i=0}^{\infin} C_{n}^{i}x^i推导开始:设~\digamma(x)=\frac{x}{1-x-x^2}=\frac{A}{1-\alpha x}+\frac{B}{1-\beta x} \\=\frac{A+B-x(A\beta+B\alpha)}{1-(\alpha+\beta)x+\alpha\beta x^2}\\ \left\{ \begin{matrix} A+B=0\\A\beta+B\alpha=-1\\ \alpha+\beta=1\\ \alpha\beta=-1 \end{matrix} \right. \Rightarrow \left\{ \begin{matrix} A=\frac{1}{\sqrt{5}}\\ B=-\frac{1}{\sqrt{5}}\\ \alpha=\phi\\ \beta=\hat\phi\end{matrix} \right.\\ \therefore \digamma(x)=\frac{1}{\sqrt{5}}(\frac{1}{1-\phi x}-\frac{1}{1-\hat\phi x})\\ \because\frac{1}{1-x}=\sum\limits_{n=0}^{\infin}x^n\\ \digamma(x)=\frac{1}{\sqrt{5}}\sum\limits_{n=0}^{\infin}(\phi^n-\hat\phi^n) x^n2.数列待定系数法类似于求解a_n = pa_{n-1}+q性质1.卡西尼性质F_{n-1}F_{n+1}-F_n^2=(-1)^n证:F_{n-1}F_{n+1}-F_n^2\\ =det \left( \left[ \begin{matrix} F_{n+1}~~F_{n}\\ F_{n}~~F_{n-1} \end{matrix} \right] \right) =det \left( \left[ \begin{matrix} 1~~~~1\\ 1~~~~0 \end{matrix} \right] \right)^n = \left( det \left( \left[ \begin{matrix} 1~~~~1\\ 1~~~~0 \end{matrix} \right] \right) \right)^n=(-1)^n2.附加性质F_{n+m}=F_m F_{n+1}+F_{m-1}F_{n}证:\because \left[ \begin{matrix} F_{n}~~~F_{n-1}\\ F_{n-1}~~~F_{n-2} \end{matrix} \right] = \left[ \begin{matrix} 1~~~~1\\ 1~~~~0 \end{matrix} \right]^{n-1}\\ \therefore \left[ \begin{matrix} F_{n+m}~~~F_{n+m-1}\\ F_{n+m-1}~~~F_{n+m-2} \end{matrix} \right] = \left[ \begin{matrix} 1~~~~1\\ 1~~~~0 \end{matrix} \right]^{n+m-1}=\left[ \begin{matrix} 1~~~~1\\ 1~~~~0\end{matrix} \right]^{n} \left[ \begin{matrix} 1~~~~1\\ 1~~~~0 \end{matrix} \right]^{m-1}= \left[ \begin{matrix} F_{n+1}~~~F_{n}\\ F_{n}~~~F_{n-1} \end{matrix} \right] \left[ \begin{matrix} F_{m}~~~F_{m-1}\\ F_{m-1}~~~F_{m-2} \end{matrix} \right]\\ \therefore F_{n+m}=F_{n+1}F_{m}+F_nF_{m-1}变形:F_{2n} = F_n(F_{n+1}+F_{n-1}) .3.整除与GCD性质\forall a,b \in N,F_a|F_b\Leftrightarrow a|b[][][](F_n,F_m) = F_{(n,m)}证:设~n>m~~则~(F_n,F_m)=(F_{n-km},F_m)\\ 设~r=n-km~,r<m~则~(F_r,F_m)=(F_r,F_{m-kr})\\ 这就类似于欧⼏⾥德算法的过程\\ \therefore~(F_n,F_m)=F_{(n,m)}4.求和公式奇数项:\sum\limits_{i=1}^{2n-1}[2\nmid i] F_{i}= F_{2n}偶数项:\sum\limits_{i=2}^{2n}[2\mid i] F_{i}= F_{2n+1}-1平⽅项:\sum\limits_{i=1}^{n}F_i^2=F_n F_{n+1}证:画图推⼴1.⼴义斐波那契数列当n<0时F_n=F_{n+2}-F_{n+1}F_{-n}=(-1)^{n-1}F_n2 .类斐波那契数列⼜称斐波那契—卢卡斯数列对于数列G,若G_0=a,G_1=b,且数列满⾜递推关系式,则称G是类斐波那契数列G_n =a F_{n-1} + b F_{n}⽤矩阵可证类斐波那契数列也有部分斐波那契数列的性质任意两个或两个以上斐波那契—卢卡斯数列之和或差仍然是斐波那契—卢卡斯数列3. Lucas数列与Fibonacci数列Lucas数列为a=2,b=1的类斐波那契数列,记为LL_n = (\dfrac{1+\sqrt{5}}{2})^n+(\dfrac{1-\sqrt{5}}{2})^n~~~~(n\ge 2)Lucas数列能够辅助写出看似很困难的等式2L_{n+m}=5 F_n F_m+L_n L_m\\ 2F_{n+m}=5 F_n L_m+L_n F_m\\ L_{2n}=L_n^2-2(-1)^n\\ F_{2n}=F_n L_n\\ L_n=F_{n+1}+F_{n-1}4.编码(齐肯多夫定理)齐肯多夫表述法表⽰任何正整数都可以表⽰成若⼲个不连续的斐波那契数之和证:若~m~为斐波那契数,成⽴\\ 否则考虑最⼤~n1~满⾜~F_{n1}< m<F_{n1+1}\\ 继续考虑最⼤~n2~满⾜~F_{n2} < m-F_{n1}<F_{n2+1}\\ 反证:\\ 若~F_{n1}~和~F_{n2}~为连续斐波那契数\\ 则~F_{n1+1}<m~与~F_{n1+1}>m~⽭盾模意义下的循环对于任意整数n , 数列为F_i~(mod~n)周期数列. ⽪萨诺周期\pi(n)记为该数列的周期.例如,模3的斐波那契数列前若⼲项为:0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0\cdots\therefore \pi(3) = 8.性质:1.~~\pi(n)\le 6 n且只有满⾜n=2*5^k的形式时才取得到等号2.~~\forall a,b\in N~且~(a,b)=1,\pi(a)\pi(b)=\pi(ab)Loading [MathJax]/jax/element/mml/optable/MathOperators.js。
斐波那契数字和黄金分割率
一、斐波那契数字对股市提前预示和警示周期:
斐波那契数字1、1、2、3、5、8、13、21、34、55、89、144......前面两数相加得后面一个数。
1,斐波那契数字在日循环周期中最大上升天数为55天,34天,21天。
2,斐波那契数字在周循环周期中最大上升周数为34周,21周,13周。
3,斐波那契数字在月循环周期中最大上升月数为13月,8月,5月,3月。
涨跌幅度与空间的高低快慢对波段走势时间长短有制约作用。
推测出的变盘日期如果与周的日期重叠,应视为重要的时间之窗。
再与月的相吻合市场就会发生重大转折!
对一个完整小周期:低点---高点---低点;高点---低点---高点。
在分析周期时,只有这两种循环周期与斐波那契数字时间周期相对应。
二、黄金分割位数字的计算是:
1、相邻的两个数互除,得数约等于0.618(记住是相邻的)。
2、相隔的两个数互除,得数约等于0.382和2.618(记住是相隔的)。
3、高位数除相邻的低位数,得数约等于1.618。
4、0.382 X 0.618 = 0.236。
5、通常所用的黄金分割率为:
0.236、0.382、0.5、0.618、0.809、1.236、1.382、1.618、2、2.618、3.236、4.236、5.236、6.854。
黄金分割率的演算同斐波那契数字密不可分。
斐波那契数字同黄金分割位是相互印证的关系。
斐波那契数字表现的是时间的长短,黄金分割位提示的是空间上升下降的幅度。
外汇交易高手:斐波那契回调线(黄金分割线)的顶级用法斐波那契回调线,又称黄金分割线。
在交易市场上,大多数的技术指标都具有滞后性,导致交易者在使用时不太好掌握。
但是,斐波那契回调线具有提前性,能很好的帮助交易者挂单操作,提前布局。
而下文将会以概念介绍、基本用法以及实战方法三个板块解释,该如何用好斐波那契回调线。
概念介绍斐波那契是一种极为古老的数学方法,它涉及一组奇异的数列1、1、2、3、5、8、13、21、34、55、89、144、233……该数列具有神奇的特性:任一数字都是由前面两个数字之和构成,前一数字与后一数字之比趋近于以固定常数0.618。
因此,61.8%就成为了斐波那契的关键比率,也被称作“黄金比例”。
总的来说,通过对该数列的探索可以推导出两组重要的数列——0.191、0.382、0.5、0.618、0.809;1、1.382、1.5、1.618、2、2.382、2.618。
这两组数列中最为重要的是0.382、0.5、0.618、1、1.618五个数字,它们在黄金外汇分析中使用十分广泛而且效果极佳。
根据不同的使用方法,黄金分割线在黄金外汇中可以细化为五类线——斐波那契回调线、斐波那契扩展线、斐波那契时间区间、斐波那契扇形线和斐波那契弧线。
这五类线中应用最为广泛的是斐波那契回调线和斐波那契扩展线,而今天将重点讲讲斐波那契回调线的应用。
基本用法画线方式斐波那契回调线常用于寻找上涨行情中回调的支撑位和下跌行情中回调的压力位。
这里我们需要指出的是,斐波那契回调线也可以用于寻找目标位。
斐波那契回调线由七个数字组成,分别分0、0.236、0.382、0.5、0.618、0.764、和1。
画斐波那契回调线有两个方向:下跌行情:一般选取的是前期高点和近期低点,选中斐波那契技术指标,点击价格高点,按住鼠标然后移动到低点放开。
上涨行情:一般选取前期低点和近期高点,选中斐波那契技术指标,点击价格低点,按住鼠标然后移动到低点放开。
快速学会斐波那契线的画法,黄金分割原来这么简单!
技术要点
✔趋势行情下较适用
✔顺势画好斐波那契线
✔回调到50为弱阻力支撑
✔回调到61.8为强阻力支撑
图片案例
技术点评
斐波那契线其实可以理解成趋势的压力以及支撑位,当汇价处於上升趋势时就使用工具从波底画到波顶(100-0),当汇价回调到50时是一个比较弱的阻力支撑可以参考K线信号进场,如果继续突破可以等蜡烛回调到61.8时的阻力支撑交易,有比较高的概率回调。
风险提示
既然是阻力支撑位,那么就有突破的可能,如果汇价已经强行突破了61.8,那也不要急着追单,而是等待下个机会出手,斐波那契线比较困难的地方就是比较难认定波浪的顶底之处,在交易之前不妨多复盘熟悉画法,然後再运用在交易当中,如果想要交易起来更有把握,则可以结合K线的型态交易。
function y=fx(x)
if nargin==1
y=x+20/x;
end
end
%a为区间下限,b为区间上限,e为精度;
%fx(x)为原方程函数;
function [xj,yj]=huangjin(a,b,e)
a=input('Please enter the value of a:');
b=input('Please enter the value of b:');
e=input('Please enter the value of e:');
while b-a>e
x1=a+*(b-a);
x2=a+*(b-a);
if fx(x1)<fx(x2)
b=x2;
else
a=x1;
end
end
xj=(a+b)/2;
yj=fx(xj);
end
此题中,a=,b=1,e=,程序运行结果为xj=,yj=。
改变方程,将原函数方程改变。
6、用斐波那契法求极值:
()432
31630248 f x x x x x
=-+-+;
%建立原方程函数;
function y=fx(x)
if nargin==1
y=3*x^4-16*x^3+30*x^2-24*x+8; end
end
%建立斐波那契数列函数;
function fn=F(n)
if nargin==1
y=[0];
y(1)=[1];
y(2)=[1];
for k=3:1:n
y(k)=[y(k-1)+y(k-2)];
end
fn=y(n);
end
end
%求解应计算次数的函数;
%s为(b-a)/e的值,其中(a,b)为单峰区间,e为精度;
function n=cishu(s)
if nargin==1
n=1;
while F(n)<s
n=n+1;
end
end
end
%求极值函数;
%a为区间下限,b为区间上限,e为精度;
function [xj,yj]=fib(a,b,e)
a=input('Please enter the value of a:');
b=input('Please enter the value of b:');
e=input('Please enter the valud of e:');
s=(b-a)/e;
n=cishu(s);
x2=a+F(n-1)/F(n)*(b-a);
x1=b-F(n-1)/F(n)*(b-a);
while (b-a)>e
if fx(x2)>=fx(x1)
b=x2;
x2=x1;
x1=a+b-x2;
else
a=x1;
x1=x2;
x2=a+b-x1;
end
end
xj=(a+b)/2;
yj=fx(xj);
end
此题中,a=-10,b=10,e=,程序运行结果为:xj =, yj =,若原方程改变,只需改变原方程函数即可。