Matlab最优化编程例子
完整版优化设计Matlab编程作业

化设计hl4HU©0⑥ 3 hlu 凹内r d X1州fci-rU-fFF卢F ♦ 忡下¥为+1 —*— S-ll-« F41:Si —MATLABoftiHMirjirCfiffliiiiJ PHI■1**■ 温不平?」11,・—喜M - 〜FT 文词一时y 片 34ml 3F*L9TR0i. Jill!-LkftLgWf 1S1CSI掰f 1 ■ >A A A »W I % :k Dnfl w I ■ J k^lXMprfaMk tjn nn Alflhw初选 x0=[1,1] 程序:Step 1: Write an Mfle objfunl.m.function f1=objfun1(x)f1=x(1)人2+2*x(2)入2-2*x(1)*x(2)-4*x(1);Step 2: Invoke one of the unconstrained optimization routinesx0=[1,1];>> options = 0Ptimset('LargeScale','off);>> [x,fval,exitflag,output] = fminunc(@objfun1,x0,options)运行结果: x =4.0000 2.0000 fval = -8.0000exitflag =1 output = iterations: 3 funcCount: 12 stepsize: 1 firstorderopt: 2.3842e-007algorithm: 'medium-scale: Quasi-Newton line search message: [1x85 char]非线性有约束优化1. Min f(x)=3 x : + x 2+2 x 1-3 x 2+5 Subject to:g 2(x)=5 X 1-3 X 2 -25 < 0 g (x)=13 X -41 X 2 < 0 3 12g 4(x)=14 < X 1 < 130无约束优化 min f(x)=X 2 + x 2-2 x 1 x 2-4 x 1g5 (x)=2 < X 2 < 57初选x0=[10,10]Step 1: Write an M-file objfun2.mfunction f2=objfun2(x)f2=3*x(1)人2+x(2)人2+2*x(1)-3*x(2)+5;Step 2: Write an M-file confunl.m for the constraints. function [c,ceq]=confun1(x) % Nonlinear inequality constraints c=[x(1)+x(2)+18;5*x(1)-3*x(2)-25;13*x(1)-41*x(2)人2;14-x(1);x(1)-130;2-x(2);x(2)-57];% Nonlinear inequality constraints ceq=[];Step 3: Invoke constrained optimization routinex0=[10,10]; % Make a starting guess at the solution>> options = optimset('LargeScale','off);>> [x, fval]=...fmincon(@objfun2,x0,[],[],[],[],[],[],@confun1,options)运行结果:x =3.6755 -7.0744 fval =124.14952.min f (x) =4x2 + 5x2s.t. g 1(x) = 2X] + 3x2- 6 < 0g (x) = x x +1 > 0初选x0=[1,1]Step 1: Write an M-file objfun3.m function f=objfun3(x) f=4*x(1)人2 + 5*x(2)人2Step 2: Write an M-file confun3.m for the constraints. function [c,ceq]=confun3(x) %Nonlinear inequality constraints c=[2*x(1)+3*x(2)-6;-x(1)*x(2)-1];% Nonlinear equality constraints ceq口;Step 3: Invoke constrained optimization routinex0=[1,1];% Make a starting guess at the solution>> options = optimset('LargeScale','off);>> [x, fval]=...fmincon(@objfun,x0,[],[],[],[],[],[],@confun,options)运行结果:Optimization terminated: no feasible solution found. Magnitude of search direction less than2*options.TolX but constraints are not satisfied.x =11fval =-13实例:螺栓连接的优化设计图示为一压气机气缸与缸盖连接的示意图。
Matlab优化算法及应用案例

Matlab优化算法及应用案例一、引言优化算法在科学和工程领域中起着重要的作用。
Matlab作为一款强大的科学计算软件,提供了丰富的优化算法工具箱,为用户提供了广泛的优化应用场景。
本文将介绍Matlab优化算法的基本原理,并通过实际案例来展示其在实际问题中的应用。
二、优化算法的基本原理优化算法的目标是求解一个函数的最优解,通常包括最大化或最小化目标函数。
Matlab中的优化算法主要基于以下两种类型:局部搜索算法和全局优化算法。
1. 局部搜索算法局部搜索算法是在当前解的附近搜索最优解的一类算法。
其中最为常见的是梯度下降法和牛顿法。
梯度下降法是一种迭代方法,通过沿着目标函数的负梯度方向不断调整参数,以逐步接近最优解。
具体步骤如下:(1)计算目标函数在当前解的梯度。
(2)根据梯度方向和步长系数进行参数调整。
(3)重复以上步骤直到满足停止准则。
牛顿法是一种基于二阶导数的优化方法,相比梯度下降法更为高效,但也更为复杂。
其基本思想是通过泰勒展开近似目标函数,然后解析求解导数为零的方程,得到下一次迭代的参数值。
2. 全局优化算法全局优化算法是通过全局搜索空间来找到最优解的方法。
Matlab提供了一些全局优化算法工具箱,其中最常用的是遗传算法和模拟退火算法。
遗传算法是一种模拟自然进化的优化方法,通过不断迭代生成新的解并选择适应度高的个体,并模拟自然选择、交叉和变异等操作来优化目标函数。
遗传算法在搜索空间较大且复杂的问题上有很好的表现。
模拟退火算法是一种以某种概率接受劣解的搜索算法,通过模拟金属退火过程来逐渐降低目标函数的值。
它能够避免局部最优解,并在一定程度上探索全局最优解。
三、Matlab优化算法的应用案例1. 机器学习中的参数调优在机器学习中,模型的性能很大程度上取决于参数的选择。
Matlab提供了优化工具箱,可以帮助用户选择合适的参数以提高模型的性能。
以支持向量机(SVM)为例,通过调整核函数类型、惩罚项系数和软间隔参数等参数,可以提高模型的分类准确度。
matlab优化算法100例

matlab优化算法100例1. 线性规划问题的优化算法:线性规划问题是一类目标函数和约束条件都是线性的优化问题。
Matlab中有很多优化算法可以解决线性规划问题,如单纯形法、内点法等。
下面以单纯形法为例介绍线性规划问题的优化算法。
单纯形法是一种迭代算法,通过不断改变基础解来寻找问题的最优解。
它的基本思想是从一个可行解出发,通过改变基本变量和非基本变量的取值来逐步逼近最优解。
2. 非线性规划问题的优化算法:非线性规划问题是一类目标函数和约束条件至少有一个是非线性的优化问题。
Matlab中有很多优化算法可以解决非线性规划问题,如拟牛顿法、共轭梯度法等。
下面以拟牛顿法为例介绍非线性规划问题的优化算法。
拟牛顿法是一种逐步逼近最优解的算法,通过近似目标函数的二阶导数信息来构造一个二次模型,然后通过求解该二次模型的最优解来更新当前解。
3. 全局优化问题的优化算法:全局优化问题是一类目标函数存在多个局部最优解的优化问题。
Matlab中有很多优化算法可以解决全局优化问题,如遗传算法、模拟退火算法等。
下面以遗传算法为例介绍全局优化问题的优化算法。
遗传算法是一种模拟生物进化过程的优化算法,通过基因编码、选择、交叉和变异等操作来不断迭代演化一组个体,最终找到全局最优解。
4. 多目标优化问题的优化算法:多目标优化问题是一类存在多个目标函数并且目标函数之间存在冲突的优化问题。
Matlab中有很多优化算法可以解决多目标优化问题,如多目标粒子群优化算法、多目标遗传算法等。
下面以多目标粒子群优化算法为例介绍多目标优化问题的优化算法。
多目标粒子群优化算法是一种基于粒子群优化算法的多目标优化算法,通过在粒子的速度更新过程中考虑多个目标函数来实现多目标优化。
5. 其他优化算法:除了上述提到的优化算法,Matlab还提供了很多其他的优化算法,如模拟退火算法、蚁群算法等。
这些算法可以根据具体的问题选择合适的算法进行求解。
综上所述,Matlab提供了丰富的优化算法,可以解决不同类型的优化问题。
Matlab中的优化问题求解方法与示例分析

Matlab中的优化问题求解方法与示例分析介绍在科学与工程领域,优化问题是一个常见且重要的研究方向。
优化问题的目标是在给定的约束条件下,找到使得目标函数取得最优值的变量取值。
Matlab作为一个著名的科学计算软件,提供了丰富的优化问题求解方法。
本文将介绍Matlab中常用的优化问题求解方法,并通过实例分析来展示其应用。
一、线性规划问题的求解方法线性规划问题(Linear Programming)是一类目标函数与约束条件均为线性关系的优化问题。
Matlab中提供了线性规划问题求解的函数“linprog”和“intlinprog”。
1. linprog函数linprog函数用于求解线性规划问题,其使用方法如下:```[x, fval, exitflag, output] = linprog(f, A, b, Aeq, beq, lb, ub)```其中,f为目标函数的系数向量,A和b为不等式约束的系数矩阵和常数向量,Aeq和beq为等式约束的系数矩阵和常数向量,lb和ub为变量的下界和上界。
2. intlinprog函数intlinprog函数用于求解整数线性规划问题,即变量取值为整数的线性规划问题。
其使用方法与linprog类似,但需要添加一个参数“options”,用于设置求解器的选项。
二、非线性规划问题的求解方法非线性规划问题(Nonlinear Programming)是一类目标函数或约束条件存在非线性关系的优化问题。
Matlab中提供了多种非线性规划问题求解的函数,包括“fminunc”、“fmincon”和“lsqnonlin”。
1. fminunc函数fminunc函数用于求解没有约束条件的非线性规划问题,其使用方法如下:```[x, fval, exitflag, output] = fminunc(fun, x0)```其中,fun为目标函数的句柄,x0为变量的初始猜测值。
2. fmincon函数fmincon函数用于求解带约束条件的非线性规划问题,其使用方法如下:```[x, fval, exitflag, output, lambda] = fmincon(fun, x0, A, b, Aeq, beq, lb, ub)```参数的含义与linprog函数中的相对应参数相似,但需要注意的是,A、b、Aeq 和beq都是针对不等式约束和等式约束的系数矩阵和常数向量;lb和ub为变量的下界和上界。
matlab优化函数的使用方法

三.举例例1:求解线性规划问题:max f=2x1+5x2s.t先将目标函数转化成最小值问题:min(-f)=- 2x1-5x2程序:f=[-2 -5];A=[1 0;0 1;1 2];b=[4;3;8];[x,fval]=linprog(f,A,b)f=fval*(-1)结果:x = 23fval = -19.0000maxf = 19例2:minf=5x1-x2+2x3+3x4-8x5s.t –2x1+x2-x3+x4-3x5≤62x1+x2-x3+4x4+x5≤70≤x j≤15 j=1,2,3,4,5程序:f=[5 -1 2 3 -8];A=[-2 1 -1 1 -3;2 1 -1 4 1];b=[6;7];lb=[0 0 0 0 0];ub=[15 15 15 15 15];[x,fval]=linprog(f,A,b,[],[],lb,ub)结果:x =0.00000.00008.00000.000015.0000minf =-104例3:求解线性规划问题:minf=5x1+x2+2x3+3x4+x5s.t –2x1+x2-x3+x4-3x5≤12x1+3x2-x3+2x4+x5≤-20≤x j≤1 j=1,2,3,4,5程序:f=[5 1 2 3 1];A=[-2 1 -1 1 -3;2 3 -1 2 1];b=[1;-2];lb=[0 0 0 0 0];ub=[1 1 1 1 1];[x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb,ub) 运行结果:Exiting: One or more of the residuals, duality gap, or total relative errorhas grown 100000 times greater than its minimum value so far: the primal appears to be infeasible (and the dual unbounded).(The dual residual < TolFun=1.00e-008.)x = 0.00000.00001.19870.00000.0000fval =2.3975exitflag =-1output =iterations: 7cgiterations: 0algorithm: 'lipsol'lambda =ineqlin: [2x1 double]eqlin: [0x1 double]upper: [5x1 double]lower: [5x1 double]显示的信息表明该问题无可行解。
Matlab最优化编程例子

题目:分别用最速下降法、FR 共轭梯度法、DFP 法和BFGS 法求解问题:22112212min f (x)x 2x x 4x x 3x =-++-取初始点(1)T x (1,1)=,通过Matlab 编程实现求解过程。
公用函数如下:1、function f= fun( X )%所求问题目标函数f=X(1)^2-2*X(1)*X(2)+4*X(2)^2+X(1)-3*X(2); end2、function g= gfun( X )%所求问题目标函数梯度g=[2*X(1)-2*X(2)+1,-2*X(1)+8*X(2)-3]; end3、function He = Hess( X )%所求问题目标函数Hesse 矩阵n=length(X);He=zeros(n,n);He=[2,-2;-2,4];End解法一:最速下降法function [ x,val,k ] = grad( fun,gfun,x0 )%功能:用最速下降法求无约束问题最小值%输入:x0是初始点,fun 和gfun 分别是目标函数和梯度%输出:x 、val 分别是最优点和最优值,k 是迭代次数maxk=5000;%最大迭代次数rho=0.5;sigma=0.4;k=0;eps=10e-6;while (k<maxk)g=feval(gfun,x0);%计算梯度d=-g;%计算搜索方向if (norm(d)<eps)break ;endm=0;mk=0;while (m<20)if (feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d) mk=m;break ;endm=m+1;endx0=x0+rho^mk*d;k=k+1;endx=x0;val=feval(fun,x0);end解法二:FR共轭梯度法function [ x,val,k ] = frcg( fun,gfun,x0 ) %功能:用FR共轭梯度法求无约束问题最小值%输入:x0是初始点,fun和gfun分别是目标函数和梯度%输出:x、val分别是最优点和最优值,k是迭代次数maxk=5000;%最大迭代次数rho=0.5;sigma=0.4;k=0;eps=10e-6;n=length(x0);while(k<maxk)g=feval(gfun,x0);%计算梯度itern=k-(n+1)*floor(k/(n+1));itern=itern+1;%计算搜索方向if(itern==1)d=-g;elsebeta=(g*g')/(g0*g0');d=-g+beta*d0;gd=g'*d;if(gd>=0.0)d=-g;endendif(norm(g)<eps)break;endm=0;mk=0;while(m<20)if(feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d) mk=m;break;endm=m+1;endx0=x0+rho^mk*d;val=feval(fun,x0);g0=g;d0=d;k=k+1;endx=x0;val=feval(fun,x0);end解法三:DFP法function [ x,val,k ] = dfp( fun,gfun,x0 )%功能:用DFP法求无约束问题最小值%输入:x0是初始点,fun和gfun分别是目标函数和梯度%输出:x、val分别是最优点和最优值,k是迭代次数maxk=5000;%最大迭代次数rho=0.5;sigma=0.4;k=0;eps=10e-6;n=length(x0);Hk=inv(feval('Hess',x0));while(k<maxk)gk=feval(gfun,x0);if(norm(gk)<eps)break;enddk=-Hk*gk';dk=dk';m=0;mk=0;while(m<20)if(feval(fun,x0+rho^m*dk)<feval(fun,x0)+sigma*rho^m*gk'*dk) mk=m;break;endm=m+1;end%DFP校正x=x0+rho^mk*dk;sk=x-x0;yk=feval(gfun,x)-gk;if(sk'*yk>0)Hk=Hk-(((Hk*yk')*yk)*Hk)/(yk*Hk*yk')+(sk'*sk)/(sk*yk');endk=k+1;x0=x;endval=feval(fun,x0);end解法四:BFGS法function [ x,val,k ] = bfgs( fun,gfun,x0 )%功能:用BFGS法求无约束问题最小值%输入:x0是初始点,fun和gfun分别是目标函数和梯度%输出:x、val分别是最优点和最优值,k是迭代次数maxk=5000;%最大迭代次数rho=0.5;sigma=0.4;k=0;eps=10e-6;n=length(x0);Bk=eye(n);while(k<maxk)gk=feval(gfun,x0);if(norm(gk)<eps)break;enddk=-Bk*gk';m=0;mk=0;while(m<20)new=sigma*rho^m*gk*dk;old=feval(fun,x0);if(feval(fun,x0+rho^m*dk')<feval(fun,x0)+sigma*rho^m*gk*dk) mk=m;break;endm=m+1;end%BFGS校正x=x0+rho^mk*dk';sk=x-x0;yk=feval(gfun,x)-gk;if(yk'*sk>0)Bk=Bk-(((Bk*sk')*sk)*Bk)/(sk*Bk*sk')+(yk'*yk)/(yk*sk');endk=k+1;x0=x;endval=feval(fun,x0);end。
Matlab在最优化问题中的应用举例

在企业生产和日常生活中,人们总是希望用最少的人力、物力、财力和时间去办更多的事,这就是所谓的最优化问题。
线性规划方法是解决最优化问题的有效方法之一,因此受到人们的普遍关注。
在企业生产过程中,生产计划安排直接影响到企业的经济效益,而生产计划本质就是在目标一定时,对于人力、时间和物质资源的优化配置问题。
1。
综述了最优化方法,归纳了最优化闯题中线性规划和非线性规划模型的解法,并给出了相应的matlab求解代码。
2。
提出了基于信息增益率的用电客户指标选择方法,根据信息增益率的大小选择对分类有贡献的指标。
关键词:Matlab,最优化方法,应用举例In enterprise production and daily life, people always hope with the least amount of human, material and financial resources and time to do more things, this is the so-called optimization problem. Linear programming method is to solve the optimal problem, so one of the effective method by people's attention. In enterprise production process, production plan directly affect the enterprise economic benefit, but in essence is the production plan for the target certain human, time and material resources optimization allocation problem.1·Studying the optimization,summing up the solutions ofoptimization problem for both linear and non-linear programming model and proposing the matlabcode.2·Proposing a new way based on information-gain-ratio to choose the powercustomer indices,selecting the indices which are more contributive to theclassification,in order to avoid over learning。
第6讲+MATLAB在最优化中的运用

3、 如果求解目标函数的最大值,可将目标函数改为负值来求解最小值,解 出后再将目标函数的符号改回来。若不等式约束是大于等于形式,则可 以在不等式两端乘上负号,改变不等式方向。 4、 函数 linprog 的书写格式如下: 最优解: x=linprog(f,A,b) %用于不等式约束,使目标函数为最小的解。 %用于具有等式约束和不等式约束,使
第六讲 MATLAB 在最优化中的应用
MATLAB 常用的优化函数见下表: 函数名 fminbnd fminunc fminsearch linprog quadprog fmincon fgoalattain fminmax fseminf lsqlin 说明 有边界的标量最小化 无约束非线性最小化 无约束非线性最小化搜索 线性规划,具有等式约束或不等式约束 二次规划,具有等式约束或不等式约束 条件约束非线性最小化 多目标达到课题 最大最小化 半无限最小化 有约束线性最小二乘解
options=optimset(options,'largescale','off')
[x,fval,exitflag,output]=fminunc(fun,0.5,options)
5、 注:fminsearch 也是解决无约束非线性极小化问题的函数。 (自学) fminsearch 用 Nelder-Mead 单纯形法求多变量函数极小值点,用于多维 无约束非线性最小化。 (fminunc 用 Quasi-Newton 拟牛顿法求多变量函 数局部极小值点 )
min f T x
x
Ax b
Aeq x=beq
lb x ub
其中,f、x、b、beq、lb、ub 为向量,而 A、Aeq 为矩阵。f 为目标函数 的系数向量, x 为决策变量。 b 为不等式约束表达式右端的常数向量。 beq 为等式约束表达式右端的常数向量。lb、ub 为 x 的下界和上界。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:分别用最速下降法、FR 共轭梯度法、DFP 法和BFGS 法求解问题:
22112212min f (x)x 2x x 4x x 3x =-++-
取初始点(1)T x (1,1)=,通过Matlab 编程实现求解过程。
公用函数如下:
1、function f= fun( X )
%所求问题目标函数
f=X(1)^2-2*X(1)*X(2)+4*X(2)^2+X(1)-3*X(2); end
2、function g= gfun( X )
%所求问题目标函数梯度
g=[2*X(1)-2*X(2)+1,-2*X(1)+8*X(2)-3]; end
3、function He = Hess( X )
%所求问题目标函数Hesse 矩阵
n=length(X);
He=zeros(n,n);
He=[2,-2;
-2,4];
End
解法一:最速下降法
function [ x,val,k ] = grad( fun,gfun,x0 )
%功能:用最速下降法求无约束问题最小值
%输入:x0是初始点,fun 和gfun 分别是目标函数和梯度
%输出:x 、val 分别是最优点和最优值,k 是迭代次数
maxk=5000;%最大迭代次数
rho=0.5;sigma=0.4;
k=0;eps=10e-6;
while (k<maxk)
g=feval(gfun,x0);%计算梯度
d=-g;%计算搜索方向
if (norm(d)<eps)
break ;
end
m=0;mk=0;
while (m<20)
if (feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d) mk=m;break ;
end
m=m+1;
end
x0=x0+rho^mk*d;
k=k+1;
end
x=x0;
val=feval(fun,x0);
end
解法二:FR共轭梯度法
function [ x,val,k ] = frcg( fun,gfun,x0 ) %功能:用FR共轭梯度法求无约束问题最小值
%输入:x0是初始点,fun和gfun分别是目标函数和梯度%输出:x、val分别是最优点和最优值,k是迭代次数maxk=5000;%最大迭代次数
rho=0.5;sigma=0.4;
k=0;eps=10e-6;
n=length(x0);
while(k<maxk)
g=feval(gfun,x0);%计算梯度
itern=k-(n+1)*floor(k/(n+1));
itern=itern+1;
%计算搜索方向
if(itern==1)
d=-g;
else
beta=(g*g')/(g0*g0');
d=-g+beta*d0;
gd=g'*d;
if(gd>=0.0)
d=-g;
end
end
if(norm(g)<eps)
break;
end
m=0;mk=0;
while(m<20)
if(feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d) mk=m;break;
end
m=m+1;
end
x0=x0+rho^mk*d;
val=feval(fun,x0);
g0=g;d0=d;
k=k+1;
end
x=x0;
val=feval(fun,x0);
end
解法三:DFP法
function [ x,val,k ] = dfp( fun,gfun,x0 )
%功能:用DFP法求无约束问题最小值
%输入:x0是初始点,fun和gfun分别是目标函数和梯度
%输出:x、val分别是最优点和最优值,k是迭代次数
maxk=5000;%最大迭代次数
rho=0.5;sigma=0.4;
k=0;eps=10e-6;
n=length(x0);
Hk=inv(feval('Hess',x0));
while(k<maxk)
gk=feval(gfun,x0);
if(norm(gk)<eps)
break;
end
dk=-Hk*gk';
dk=dk';
m=0;mk=0;
while(m<20)
if(feval(fun,x0+rho^m*dk)<feval(fun,x0)+sigma*rho^m*gk'*dk) mk=m;break;
end
m=m+1;
end
%DFP校正
x=x0+rho^mk*dk;
sk=x-x0;
yk=feval(gfun,x)-gk;
if(sk'*yk>0)
Hk=Hk-(((Hk*yk')*yk)*Hk)/(yk*Hk*yk')+(sk'*sk)/(sk*yk');
end
k=k+1;
x0=x;
end
val=feval(fun,x0);
end
解法四:BFGS法
function [ x,val,k ] = bfgs( fun,gfun,x0 )
%功能:用BFGS法求无约束问题最小值
%输入:x0是初始点,fun和gfun分别是目标函数和梯度
%输出:x、val分别是最优点和最优值,k是迭代次数
maxk=5000;%最大迭代次数
rho=0.5;sigma=0.4;
k=0;eps=10e-6;
n=length(x0);
Bk=eye(n);
while(k<maxk)
gk=feval(gfun,x0);
if(norm(gk)<eps)
break;
end
dk=-Bk*gk';
m=0;mk=0;
while(m<20)
new=sigma*rho^m*gk*dk;
old=feval(fun,x0);
if(feval(fun,x0+rho^m*dk')<feval(fun,x0)+sigma*rho^m*gk*dk) mk=m;break;
end
m=m+1;
end
%BFGS校正
x=x0+rho^mk*dk';
sk=x-x0;
yk=feval(gfun,x)-gk;
if(yk'*sk>0)
Bk=Bk-(((Bk*sk')*sk)*Bk)/(sk*Bk*sk')+(yk'*yk)/(yk*sk');
end
k=k+1;
x0=x;
end
val=feval(fun,x0);
end。