黄金分割法的matlab程序
- 格式:doc
- 大小:48.50 KB
- 文档页数:2
matlab二分法MATLAB二分法是一种常用的求解非线性方程的数值解法,它通过不断地将定义域分成若干个子区间,从而找到近似解。
与梯形法和牛顿迭代法相比,MATLAB 二分法又称为“分治法”,是一种简单、直观、快速和有效的求解非线性方程的数值解法。
1. 二分法原理MATLAB 二分法是根据“分而治之”的思想来求解非线性方程的数值解的。
它的基本思想是,将定义域分成两个子区间,其中一个子区间的函数值的符号一定是固定的,另一个子区间的函数值的符号也是固定的,只有当它们的符号相反时,才能确定解存在于这两个子区间之间。
然后,再对缩小的子区间重复以上操作,进而确定非线性方程的近似解,也就是所谓的“黄金分割法”。
2. MATLAB 二分法的步骤(1)始条件首先,要将定义域分成两个子区间,在每一个子区间内,假定函数值的符号是固定的;确定迭代初值 $x_0,比如$x_0=0.5;(2)代计算求出迭代第二值 $x_1,即 $x_1=x_0+frac{b-x_0}{2},计算出$x_1$值,计算函数值的符号;(3)晕条件当求得的函数值的符号与定义域中一边的函数值的符号相反时,认为解存在于此子区间之间,继续将所取得的子区间继续缩小,直到定义域中的某两个端点接近,或者函数值的绝对值小于指定的误差范围,此时称为收敛;(4)的输出将收敛时的根 $x_n$ 作为解的输出。
3. MATLAB 二分法的优缺点(1) MATLAB 二分法的优点MATLAB 二分法具有简单、直观、快速和有效的特点,只要能够确定函数在定义域中的一边的函数值的符号,就可以求出近似解。
(2) MATLAB 二分法的缺点MATLAB 二分法容易收敛到局部极小值,而无法收敛到全局最优值;同时,它也不适用于函数值在定义域内不连续或周期变化的情况。
4. MATLAB 二分法的应用MATLAB 二分法在实际工程中广泛应用,主要用于求解非线性方程、解决二次规划问题、求解非线性最小化问题、结构优化问题等。
实验报告
实验项目名称改进的黄金分割法
所属课程名称最优化
实验类型算法编程
实验日期2015年12月25日
班级
学号
姓名
成绩
附录1:源程序
附录2:实验报告填写说明
1.实验项目名称:要求与实验教学大纲一致。
2.实验目的:目的要明确,要抓住重点,符合实验教学大纲要求。
3.实验原理:简要说明本实验项目所涉及的理论知识。
4.实验环境:实验用的软、硬件环境。
5.实验方案(思路、步骤和方法等):这是实验报告极其重要的内容。
概括整个实验过程。
对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。
对于设计性和综合性实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明。
对于创新性实验,还应注明其创新点、特色。
6.实验过程(实验中涉及的记录、数据、分析):写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。
7.实验结论(结果):根据实验过程中得到的结果,做出结论。
8.实验小结:本次实验心得体会、思考和建议。
9.指导教师评语及成绩:指导教师依据学生的实际报告内容,给出本次实验报告的评价。
实验报告实验名称运筹与优化上机实验课程名称运筹与优化班级学号姓名开课时间 2011/2012学年,第二学期实验一:黄金分割法一、实验目的1.掌握并运用黄金分割法2.能在计算机上完成算法的实现,并解决最优化问题二、实验题目用黄金分割法求1xxf的最小值,初始区间[a,b]=[-1,1],精度=x)2-(min2-.0e≤16三、实验过程#include "math.h"#include "stdio.h"#define f(x) 2*x*x-x-1double hj(double *a,double *b,double e,int *n){ double x1,x2,s;if(fabs(*b-*a)<=e)s=f((*b+*a)/2);else{ x1=*a+0.382*(*b-*a);x2=*a+0.618*(*b-*a);if(f(x1)>f(x2))*a=x1;else*b=x2;*n=*n+1;s=hj(a,b,e,n);}return s;}main(){ double s,a,b,e;int n=0;scanf("%lf %lf %lf",&a,&b,&e); // 输入区间[a,b]和精度e的值s=hj(&a,&b,e,&n); //调用hj函数,其中n代表迭代次数printf("a=%lf,b=%lf,s=%lf,n=%d\n",a,b,s,n);}四、实验结果相应输入a、b、e的值-1、1、0.16,得出结果:区间为【0.167232,0.278651】一共迭代6次实验二:共轭梯度法一、 实验目的1、掌握并运用共轭梯度法2、能在计算机上完成算法的实现,并解决最优化问题二、 实验题目用共轭梯度法求解:(1)2122212142min x x x x x x -++-三、 实验过程function [ x,g ] = Untitled1( Q,b,x,c,m) a=0; f=Q*x+b;s=sqrt(f(1)^2+f(2)^2); while s>m, d=-f+a*d;t=-f'*d/(d'*Q*d); x=x+t*d; f=Q*x+b;a=f'*Q*d/(d'*Q*d); s=sqrt(f(1)^2+f(2)^2); endg=0.5*x'*Q*x+b'*x+c; Q=[2,-1;-1,2]; b=[2;-4]; x=[0;0]; c=0; m=0.001;[X,U]=getd(Q,b,x,c,m)四、实验结果利用Matlab作出上述结果,最优解为x=(0,2)T实验三:内外惩罚函数一、实验目的通过内外点法的学习让我们掌握利用罚函数解决线性规划为解决相应问题的一种思路与策略。
Fibonacci数列与黄金分割求极小的程序法管志忠【摘要】本文通过Fibonacci法和黄金分割法进行一维搜索的模型分析,运用Matlab编写了两种模型的程序.给出的算例表明,根据两种算法模型编写的程序,不受精度限制,且计算准确,省时省力,具有一定的理论及实际应用价值.【期刊名称】《河西学院学报》【年(卷),期】2010(026)005【总页数】4页(P1-4)【关键词】Fibonacci数列;黄金分割法;MATLAB程序【作者】管志忠【作者单位】池州职业技术学院,安徽,池州,247000【正文语种】中文【中图分类】O229在无约束极值问题中常用到搜索方法,而一维搜索是求一元函数的极小点方法,它是多维搜索的基础.具有内在本质联系的Fibonacci法和黄金分割法恰是被人普遍接受的一维搜索法.著名的Fibonacci数列{FK},k=0,1,2,…,是指满足关系的整数序列,也可以写成:其通项公式为:容易证明分数序列是收敛的,且有(黄金分割数).事实上,令,由通项公式得如果考虑要在区间 [a0,b0]上,求一元函数f(x)的最优解.Fibonacci法模型为:设n表示要计算的函数值个数,k=n-1表示迭代次数.在这两点中,以函数值较小者为近似极小点,相应的函数值为近似极小值.而黄金分割法可以看作是Fibonacci法的近似,差别只在于最初两个试验点的选取上,黄金分割法最初两个试验点选在[a0,b0]中的0.382与0.618处,以后每次迭代都是按对称的原则选试验点.两种方法虽被普通接受,但在精度很高的情况下,迭代次数很多,计算量大,容易出错.根据两种算法模型编写的程序就优越多了,不受精度限制,且计算准确,省时省力.运用MATLAB编制Fibonacci数列求极小的程序 (不妨取文件名为:Fibo.m)如下: 运用MATLAB编制黄金分割求极小的程序 (不妨取文件名为:goldmin.m)如下:评价一种方法的好坏,当然不仅仅看运算速度,如果计算的精度不能达到预定的要求,也是要被淘汰的方法.下面通过具体算例的求解,对Fibonacci法、黄金分割法以及用两种方法的程序法进行比较,来判断程序的可行性.例求函数f(x)=x2-x+2在[-1,3]上的近似极小点和极小值,要求缩短后的区间长度不大于区间[-1,3]长度的0.1、0.001、0.00001倍.结果如下表所示:实际上,对于高次方函数,只须修改子程序即可.如求函数f(x)=x4-2x3-5x2+5在[1,3]上的近似极小点和极小值,要求缩短后的区间长度不大于区间[1,3]长度的0.1、0.001、0.00001倍.根据此函数编制子程序 (不妨取名funl.m)如下:在MATLAB 命令窗口中分别输入[x,y]=Fibo('fun1',1 ,3 ,0.1)、[x,y]=Fibo('fun1',1 ,3 ,0.001)、[x,y]=Fibo('fun1',1 ,3 ,0.00001)、[x,y]=goldmin('fun1',1 ,3 ,0.1,500)、[x,y]=goldmin('fun1',1 ,3 ,0.001,500)、[x,y]=goldmin('fun1',1 ,3 ,0.00001,500),结果如下表所示:对于简单的一维问题可能看不出两者之间的差别,但是对于大型高精度多维问题的求解时,往往都会用到一维搜索方法.程序法可以通过控制精度来提高结果的准确性,而且避免了因提高精度而增加了迭代次数所带来的手工计算的繁琐,可以节省很多的计算时间,具有一定的理论及实际应用价值.【相关文献】[1]华东师范大学数学系.数学分析 (第三册)[M].北京:高等教育出版社,2001.[2]刘艳.关于黄金分割法的几点讨论[J].机电技术,2006,1.[3]牛映武.运筹学[M].西安:西安交通大学出版社,2006,5.[4]李南南等.MATLAB7简明教程[M].北京:清华大学出版社,2006,3.。
黄金分割算法详解
黄金分割算法,又称黄金分割搜索算法,是一种寻找最优解的优化算法。
该算法基于黄金比例,通过逐步缩小搜索区间来寻找最优解。
算法步骤如下:
1. 确定初始搜索区间[a, b],使得最优解x在该区间内。
2. 将区间[a, b]分成两个子区间,分别为[a, c]和[c, b],使得c距离a端点的距离与b端点的距离的比例与黄金比例相同,即(c-a)/(b-a)=(b-c)/c=黄金比例。
3. 比较f(c1)和f(c2)的大小,选择f值更小的子区间,作为下一次搜索的区间。
4. 重复步骤2、3,直到搜索区间足够小时,近似认为找到了最优解。
黄金分割算法的优点是收敛速度快,而且可以在连续函数的最优化问题中使用。
它的缺点是需要对函数进行反复计算,因此计算量较大。
《最优化方法》实验报告实验序号:01 实验项目名称:线性规划及MATLAB应用《最优化方法》实验报告实验序号:02 实验项目名称:0.618黄金分割法的应用结果分析:根据以上结果可知,在区间[0,3]上,函数g(x)=x^3-2*x+1的最小值点在x=0.9271处,此时最小值为0。
第二题:P50 例题3.1程序:function [t,f]=golden3(a,b) %黄金分割函数的m文件t2=a+0.382*(b-a);f2=2*(t2)^2-(t2)-1;t1=a+0.618*(b-a); %按照黄金分割点赋值,更准确可直接算f1=2*(t1)^2-(t1)-1;while abs(t1-t2)>0.16; %判定是否满足精度if f1<f2a=t2;t2=t1;f2=f1;t1=a+0.618*(b-a);f1=2*(t1)^2-(t1)-1;elseb=t1;t1=t2;f1=f2;t2=a+0.382*(b-a);f2=2*(t2)^2-(t2)-1;endendt=(t1+t2)/2; %满足条件取区间中间值输出第四题:P64 T3程序:function [t,d]=newtow2(t0)t0=2.5;t=t0-(4*(t0)^3-12*(t0)^2-12*(t0)-16)/(12*(t0)^2-24*(t0)-12);k=1;T(1)=t;while abs(t-t0)>0.000005t0=t;t=t0-(4*(t0)^3-12*(t0)^2-12*(t0)-16)/(12*(t0)^2-24*(t0)-12); k=k+1;T(k)=t;endt1=t0;d=(t1)^4-4*(t1)^3-6*(t1)^2-16*(t1)+4;kTend运行结果:当x(0)=2.5当x(0)=3四.实验小结:1.通过这次实验,加深了对0.618法的理解。
2.在学习0.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)。
matlab计算函数最大值及最小值在MATLAB中,有几种方法可以计算一个函数的最大值和最小值。
下面将介绍几种常用的方法。
1.通过绘制函数图像找到最大值和最小值:首先,可以通过绘制函数图像来观察函数的最大值和最小值所在的位置。
可以使用plot函数来绘制函数的图像。
例如,我们想计算函数y=x^3-2x的最大值和最小值:```x=-10:0.1:10;y=x.^3-2*x;plot(x, y)```通过观察图像,可以确定函数的最大值和最小值的位置。
2. 使用fminbnd函数找到函数的最小值:MATLAB中的fminbnd函数可以用于寻找函数的最小值。
该函数使用了黄金分割算法。
例如,我们想计算函数y=x^3-2x的最小值:```[x, y] = fminbnd(f, -10, 10);```这段代码将返回函数的最小值y以及对应的x值。
3. 使用fmincon函数找到函数的最小值(约束最优化):如果函数有特定的约束条件,可以使用fmincon函数来计算函数的最小值。
fmincon函数基于无约束的最优化算法,并添加了约束条件。
例如,我们想计算函数y=x^2的最小值,但限制x的范围在0到1之间:```x0=0.5;%初始解A=[];b=[];Aeq = [];beq = [];lb = 0; % x的下限ub = 1; % x的上限[x, y] = fmincon(f, x0, A, b, Aeq, beq, lb, ub);```这段代码将返回函数的最小值y以及对应的x值。
4. 使用max和min函数找到向量或矩阵的最大值和最小值:如果需要计算向量或矩阵的最大值和最小值,可以使用MATLAB中的max和min函数。
例如,计算向量x=[1,2,3,4,5]的最大值和最小值:```x=[1,2,3,4,5];max_value = max(x);min_value = min(x);```这段代码将返回向量x的最大值和最小值。
最优化⽅法三分法+黄⾦分割法+⽜顿法最优化_三等分法+黄⾦分割法+⽜顿法⼀、实验⽬的1. 掌握⼀维优化⽅法的集中算法;2. 编写三分法算法3. 编写黄⾦分割法算法4. 编写⽜顿法算法⼆、系统设计三分法1.编程思路:三分法⽤于求解单峰函数的最值。
对于单峰函数,在区间内⽤两个mid将区间分成三份,这样的查找算法称为三分查找,也就是三分法。
在区间[a,b]内部取n=2个内等分点,区间被分为n+1=3等分,区间长度缩短率=1 3 .各分点的坐标为x k=a+b−an+1⋅k (k=1,2) ,然后计算出x1,x2,⋯;y1,y2,⋯;找出y min=min{y k,k=1,2} ,新区间(a,b)⇐(x m−1,x m+1) .coding中,建⽴left,mid1,mid2,right四个变量⽤于计算,⽤新的结果赋值给旧区间即可。
2.算法描述function [left]=gridpoint(left,right,f)epsilon=1e-5; %给定误差范围while((left+epsilon)<right) %检查left,right区间精度margin=(right-left)/3; %将区间三等分,每⼩段长度=marginm1=left+margin; %left-m1-m2-right,三等分需要两个点m2=m1+margin; %m2=left+margin+marginif(f(m1)<=f(m2))right=m2; %离极值点越近,函数值越⼩(也有可能越⼤,视函数⽽定)。
else %当f(m1)>f(m2),m2离极值点更近。
缩⼩区间范围,逼近极值点left=m1; %所以令left=m1.endend %这是matlab的.m⽂件,不⽤写return.黄⾦分割法1.编程思路三分法进化版,区间长度缩短率≈0.618.在区间[a,b]上取两个内试探点,p i,q i要求满⾜下⾯两个条件:1.[a i,q i]与[p i,b i]的长度相同,即b i−p i=q i−a i;2.区间长度的缩短率相同,即b i+1−a i+1=t(b i−a i)]2.算法描述⾃⼰编写的:function [s,func_s,E]=my_golds(func,left,right,delta)tic%输⼊: func:⽬标函数,left,right:初始区间两个端点% delta:⾃变量的容许误差%输出: s,func_s:近似极⼩点和函数极⼩值% E=[ds,dfunc] ds,dfunc分别为s和dfunc的误差限%0.618法的改进形式:每次缩⼩区间时,同时⽐较两内点和两端点处的函数值。
matlab函数最小值一、函数介绍本文将介绍如何使用MATLAB函数求解最小值。
最小值是指函数在某个区间内取得的最小值,它是优化问题中的重要概念之一。
MATLAB提供了多种函数可以帮助我们求解最小值,包括fminbnd、fminsearch和fminunc等。
二、fminbnd函数1. 函数介绍fminbnd是MATLAB中用于求解一元函数在给定区间内的最小值的函数。
它使用黄金分割法进行搜索,并保证结果的精度达到指定的容差范围。
2. 函数格式[x, fval, exitflag] = fminbnd(fun, x1, x2)3. 参数说明fun:表示要求解的一元函数,可以是一个匿名函数或者一个M文件。
x1和x2:表示搜索区间的左右端点。
x:表示找到的最小值点。
fval:表示在找到的最小值点处的函数值。
exitflag:表示算法是否收敛以及收敛原因。
4. 实例演示假设我们要求解以下一元函数在区间[0, 10]内的最小值:fun = @(x) x.^2 - 4*x + 5;我们可以使用以下代码进行求解:fun = @(x) x.^2 - 4*x + 5;[x, fval, exitflag] = fminbnd(fun, 0, 10)输出结果为:x = 2fval = 1exitflag = 1说明在区间[0, 10]内,函数的最小值为1,对应的最小值点为x=2。
三、fminsearch函数1. 函数介绍fminsearch是MATLAB中用于求解多元函数在给定初始点附近的最小值的函数。
它使用Nelder-Mead单纯形法进行搜索,并保证结果的精度达到指定的容差范围。
2. 函数格式[x, fval, exitflag] = fminsearch(fun, x0)3. 参数说明fun:表示要求解的多元函数,可以是一个匿名函数或者一个M文件。
x0:表示搜索起点。
x:表示找到的最小值点。
fval:表示在找到的最小值点处的函数值。
matlab分割矩阵
Matlab分割矩阵是指将一个大矩阵分割成若干个小矩阵的操作。
在Matlab中,可以使用以下两种方法进行矩阵的分割:
1. 使用方括号和冒号运算符进行矩阵分割
例如,对于一个4行4列的矩阵A,我们可以使用以下代码将该矩阵分割成4个2行2列的小矩阵:
B = [A(1:2,1:2) A(1:2,3:4); A(3:4,1:2) A(3:4,3:4)];
其中,A(1:2,1:2)表示选取矩阵A的第1行到第2行、第1列到第2列的元素,以此类推。
2. 使用mat2cell函数进行矩阵分割
mat2cell函数可以将一个大矩阵按行或列进行分割,返回一个元胞数组。
例如,对于一个4行4列的矩阵A,我们可以使用以下代码将该矩阵按行分割成2个2行4列的小矩阵:
B = mat2cell(A,[2 2],[4]);
其中,[2 2]表示将矩阵A分割成2个2行的小矩阵,[4]表示每个小矩阵有4列。
需要注意的是,使用以上两种方法进行矩阵分割时,分割后的小矩阵的行列数需要相等。
- 1 -。
MATLAB中的非线性优化算法实现1. 引言在工程和科学领域,我们经常会遇到需要优化某个目标函数的问题。
优化是指在给定的约束条件下,找到能够使目标函数取得最大或最小值的变量值。
而非线性优化则是指目标函数和约束条件都不是线性的情况下的优化问题。
在MATLAB中,有多种非线性优化算法可供选择。
本文将介绍几种常用的非线性优化算法以及它们在MATLAB中的实现。
2. 一维优化算法在讨论多维优化算法之前,我们先介绍一维优化算法。
一维优化算法主要用于解决单变量目标函数的极值问题。
MATLAB中常用的一维优化算法有黄金分割法、抛物线插值法和斐波那契法。
这些算法都是通过不断迭代来逼近最优解的。
3. 无约束多维优化算法对于没有约束条件的多维优化问题,MATLAB提供了几种有效的算法,如共轭梯度法、拟牛顿法和模拟退火算法等。
这些算法在不同的问题中都有着各自的优势。
共轭梯度法适用于求解大规模无约束问题,而拟牛顿法则对于Hessian矩阵难以计算的问题更为适用。
模拟退火算法则常用于全局优化问题,可以避免陷入局部最优解。
4. 有约束多维优化算法在实际问题中,往往会伴随着各种约束条件。
MATLAB提供了多种算法来解决有约束的多维优化问题,如线性规划法、SQP方法和遗传算法等。
线性规划法适用于目标函数和约束条件都是线性的情况。
SQP方法则通过近似二次规划的方式来求解非线性约束问题。
遗传算法是一种启发式算法,适用于复杂的非线性优化问题,并能够在全局范围内搜索最优解。
5. 优化算法性能比较不同的优化算法在不同的问题中表现出不同的性能。
为了评估各个算法的优劣,可以使用一些性能指标进行比较,如收敛速度、收敛精度、计算复杂度等。
通过对比实验,可以选择最适合特定问题的算法,并进行参数调优以获得更好的结果。
6. MATLAB中的优化工具箱MATLAB提供了强大的优化工具箱,其中包含了大量的优化函数和算法。
通过使用这些函数和算法,我们可以方便地进行各种优化问题的求解。
matlab 分割线样式
在MATLAB中,你可以使用不同的函数和属性来创建和修改分割
线的样式。
首先,你可以使用plot函数来绘制分割线,然后使用属
性来修改其样式。
一种常见的方法是使用plot函数绘制一条水平或垂直的分割线。
例如,要绘制一条水平分割线,你可以使用以下代码:
matlab.
yline(0, '--', 'LineWidth', 2);
这将在y轴上绘制一条虚线,线宽为2。
另一种方法是使用line函数来绘制任意角度的分割线。
例如,
要绘制一条倾斜的分割线,你可以使用以下代码:
matlab.
x = [0 10];
y = [0 5];
line(x, y, 'LineStyle', ':', 'LineWidth', 2);
这将在从点(0,0)到点(10,5)的直线上绘制一条虚线,线宽为2。
除了上面的示例之外,你还可以使用不同的线型(如实线、虚线、点线等)和线宽来自定义分割线的样式。
你可以通过设置plot
和line函数的属性来实现这一点。
例如,你可以使用'LineStyle'
属性来指定线型,'LineWidth'属性来指定线宽。
另外,你还可以使用subplot函数在同一图中绘制不同样式的
分割线,或者使用axes函数在自定义的坐标系中绘制分割线。
总之,在MATLAB中,你可以通过使用plot和line函数以及它
们的属性来创建和修改分割线的样式,从而满足你的需求。
希望这
些信息能够帮助到你。
黄金分割线指标源码黄金分割线指标源码{N=80 1 999 , M=3 1 15}MA5:MA(C,5);MA13:MA(C,13);高:=REF(HHV(H,N),M);低:=REF(LLV(L,N),M);H19:=高-(高-低)*0.191;H38:=高-(高-低)*0.382;H中:=高-(高-低)*0.5;H61:=高-(高-低)*0.618;H80:=高-(高-低)*0.809;顶点:REFDATE(高,DATE),COLORWHITE;%19.8:REFDATE(H19,DATE),COLORYELLOW;%38.2:REFDATE(H38,DATE),COLORMAGENTA;%50:REFDATE(H中,DATE),COLORRED;%61.8:REFDATE(H61,DATE),COLORMAGENTA;%80.9:REFDATE(H80,DATE),COLORYELLOW;低点:REFDATE(低,DATE),COLORWHITE;DRAWTEXT(ISLASTBAR,顶点,'顶点'),COLORWHITE; DRAWTEXT(ISLASTBAR,%19.8,'%19.8'),COLORYELLOW; DRAWTEXT(ISLASTBAR,%38.2,'%38.2'),COLORMAGENTA; DRAWTEXT(ISLASTBAR,%50,'%50'),COLORRED; DRAWTEXT(ISLASTBAR,%61.8,'%61.8'),COLORMAGENTA; DRAWTEXT(ISLASTBAR,%80.9,'%80.9'),COLORYELLOW; DRAWTEXT(ISLASTBAR,低点,'低点'),COLORWHITE;---------------------------------------------------------黄金分割的应用:一、 "顶"的判断:当空头市场结束,多头市场展开时,投资人最关心的问题是"顶"在那里?事实上,影响股价变动的因素极多,要想准确地掌握上升行情的最高价是绝对不可能的,因此,投资人所能做的,就是依照黄金分割律计算可能出现的股价反转点,以供操作时的参考。
1.用黄金分割法编程求解函数
由点TX]3797.1,8693.3[)0(出发,沿方向
Td]5.0,6.0[)0(
的极小点X(1)
解答:
将点TX]3797.1,8693.3[)0(代入
得点TX]3797.1,8693.3[)0(在Td]5.0,6.0[)0(
方向上1x 和2x的关系为:
6041.48333.012xx
代入原函数:
7651.221007.96389.3)(121xxXf
简单断头抛物线的中心可确定搜索区间为[0,]。
Matlab 程序代码如下:
22
1212
()10(5)()fXxxxx
运行结果为: