目标函数的几种极值求解方法
目标函数的几种极值求解方法

目标函数的几种极值求解方法在数学和优化领域中,目标函数是一个描述优化问题的函数,其目标是将该函数的值最小化或最大化。
目标函数的极值求解方法主要有以下几种方法:1.数值方法:数值方法是通过计算目标函数在一组特定点上的近似值来确定极值。
其中最简单的方法是取目标函数的一些特定点,并计算这些点上的函数值。
然后根据计算结果确定极值。
这些特定点通常是目标函数的极值点的近似值。
例如,可以使用微分方法来估计目标函数的极值点。
2.数学分析方法:数学分析方法是通过对目标函数进行数学分析来确定极值。
其中最常用的方法是求解目标函数的导数或二阶导数,并设置导数等于零来求解函数的极值点。
这个方法适用于一些简单的函数,例如多项式函数。
它可以精确地确定函数的极值点。
3.迭代方法:迭代方法是通过不断迭代目标函数来逼近极值。
迭代方法通常需要一个初始点,然后在每一步中更新该点,直到满足一些停止条件。
最常用的迭代方法是梯度下降法和牛顿法。
梯度下降法通过不断沿着函数的梯度方向进行迭代来逐渐接近极小值。
牛顿法将函数近似为一个二次函数,并使用二次函数的极值点来逼近原函数的极值点。
4.线性规划方法:线性规划方法是对一类特殊的目标函数进行极值求解的方法。
线性规划问题是指包含一组线性不等式或等式约束条件的目标函数的最小化或最大化问题。
线性规划方法可以通过求解线性规划问题的对偶问题来确定原问题的极值。
这个方法对于一些特殊的线性规划问题非常高效。
5.元启发式方法:元启发式方法是一种基于经验和启发式规则来确定目标函数极值的方法。
这些方法通常使用一些随机算法和优化算法,例如遗传算法、粒子群算法等。
元启发式方法通过不断目标函数的解空间来逼近极值。
总之,目标函数的极值求解方法有多种选择,可以根据具体的问题和需求选择合适的方法。
不同的方法有不同的适用范围和计算复杂度,需要根据具体情况进行选择和调整。
目标函数的几种极值求解方法

目标函数极值求解的几种方法题目:()()2221122min -+-x x,取初始点()()Tx 3,11=,分别用最速下降法,牛顿法,共轭梯度法编程实现。
一维搜索法:迭代下降算法大都具有一个共同点,这就是得到点()k x 后需要按某种规则确定一个方向()k d ,再从()k x 出发,沿方向()k d 在直线(或射线)上求目标函数的极小点,从而得到()k x 的后继点()1+k x ,重复以上做法,直至求得问题的解,这里所谓求目标函数在直线上的极小点,称为一维搜索。
一维搜索的方法很多,归纳起来大体可以分为两类,一类是试探法:采用这类方法,需要按某种方式找试探点,通过一系列的试探点来确定极小点。
另一类是函数逼近法或插值法:这类方法是用某种较简单的曲线逼近本来的函数曲线,通过求逼近函数的极小点来估计目标函数的极小点。
本文采用的是第一类试探法中的黄金分割法。
原理书上有详细叙述,在这里介绍一下实现过程:⑴ 置初始区间[11,b a ]及精度要求L>0,计算试探点1λ和1μ,计算函数值()1λf 和()1μf ,计算公式是:()1111382.0a b a -+=λ,()1111618.0a b a -+=μ。
令k=1。
⑵ 若L a b k k <-则停止计算。
否则,当()K f λ>()k f μ时,转步骤⑶;当()K f λ≤()k f μ时,转步骤⑷ 。
⑶ 置k k a λ=+1,k k b b =+1,k k μλ=+1,()1111618.0++++-+=k k k k a b a μ,计算函数值()1+k f μ,转⑸。
⑷ 置k k a a =+1,k k b μ=+1,k k μμ=+1,()1111382.0++++-+=k k k k a b a λ,计算函数值()1+k f λ,转⑸。
⑸ 置k=k+1返回步骤 ⑵。
1. 最速下降法实现原理描述:在求目标函数极小值问题时,总希望从一点出发,选择一个目标函数值下降最快的方向,以利于尽快达到极小点,正是基于这样一种愿望提出的最速下降法,并且经过一系列理论推导研究可知,负梯度方向为最速下降方向。
目标函数的几种极值求解方法

目标函数的几种极值求解方法目标函数是数学模型中的一个重要部分,它描述了问题的目标或者优化方向。
在实际应用中,求解目标函数的极值是一个重要的问题。
这篇文章将介绍目标函数的几种极值求解方法。
一、解析法解析法是指通过对目标函数进行数学推导和分析,找到极值的解析表达式。
这种方法适用于目标函数是一些简单的函数形式的情况。
常见的解析法包括:1.导数法:通过计算目标函数的导数,找到导数为零的点,这些点即为目标函数的极值点。
2.二阶导数法:在导数法的基础上,继续计算二阶导数,通过二阶导数的正负性判断极值点的类型(极大值点还是极小值点)。
3.泰勒展开法:通过将目标函数在其中一点进行泰勒展开,得到一个近似的二次函数模型,在该模型上求解极值问题。
解析法的优点是求解速度快,得到的解析表达式可以直接进行数值计算。
但是,解析法只适用于特定的函数形式,对于复杂的目标函数,可能很难得到解析解。
二、迭代法迭代法是指通过不断迭代目标函数的其中一个起始点,逐步逼近极值点的方法。
迭代法的基本思想是通过不断更新目标函数的当前点,使其逐渐趋向极值点。
常见的迭代法包括:1.简单迭代法:选择一个适当的起始点,通过不断迭代目标函数,直至收敛到一些极值点。
2.牛顿法:通过利用目标函数的一阶和二阶导数信息,不断更新当前点,使其逐渐逼近极值点。
3.拟牛顿法:在牛顿法的基础上,通过近似估计目标函数的二阶导数,减少计算二阶导数的开销。
迭代法的优点是适用于一般的函数形式,可以通过不断迭代逼近任意精度的极值点。
但是,迭代法的收敛性和稳定性很大程度上依赖于初始点的选择和算法的设计,收敛速度也可能较慢。
三、启发式算法启发式算法是一类基于自然界中的一些现象、规律或者人类的智慧的算法。
它们通过模拟自然界中一些现象的过程,来求解优化问题。
启发式算法一般不保证找到全局最优解,但通常能找到较好的解。
常见的启发式算法包括:1.遗传算法:模拟自然界中生物的进化过程,通过随机选择、交叉和变异操作,不断优化种群的适应度,最终找到较优解。
求极值的若干方法

求极值的若干方法求解函数的极值是数学分析中重要的问题之一、找出函数的极值可以帮助我们确定函数的最大值或最小值,并且有助于解决各种实际问题。
本文将介绍常见的求解极值的若干方法。
一、导数法(一阶导数法、二阶导数法)导数是函数在其中一点的变化率,求导数的过程可以帮助我们确定函数的增减性,从而找出函数的极值点。
常见的导数法包括一阶导数法和二阶导数法。
1.一阶导数法:首先求函数的一阶导函数,然后将导函数等于零,解出方程得到函数的临界点,再将临界点代入函数,找出对应的函数值,最终从函数值中找出最大值或最小值。
2.二阶导数法:首先求函数的二阶导函数,然后将二阶导函数等于零,解出方程得到函数的拐点,再将拐点代入函数,找出对应的函数值,最终从函数值中找出最大值或最小值。
二阶导数法可以帮助我们判断函数的临界点是极值点还是拐点。
二、边界法(最大最小值定理)边界法是基于最大最小值定理求解函数极值的方法。
最大最小值定理指出,在闭区间内的连续函数中,最大值和最小值一定存在。
因此,我们可以通过求解函数在闭区间端点和临界点处的函数值,找出函数的最大值或最小值。
三、拉格朗日乘数法拉格朗日乘数法是用于求解带约束条件的极值问题的方法。
在求解极值问题时,如果还存在一些约束条件,可以引入拉格朗日乘数,通过构建拉格朗日函数,将约束条件加入目标函数中,然后求解拉格朗日函数的极值点。
最终,通过求解得到的极值点,再进行函数值的比较,找出最大值或最小值。
四、二分法二分法是一种在有序列表中查找特定元素的方法,也可以用于求解函数的极值。
二分法的基本思想是通过将区间一分为二,然后比较中间点与两侧点的大小关系,逐步缩小范围,最终找出函数的极值点。
二分法的效率较高,适用于一些连续单调函数。
五、牛顿法牛顿法是一种用于求解多项式函数的根的方法,也可以用于求解函数的极值。
牛顿法的基本思想是通过构建一个逼近曲线,以曲线与函数的交点为新的逼近值。
然后不断迭代逼近,最终找到函数的极值点。
条件极值拉格朗日乘数法不等式

条件极值拉格朗日乘数法不等式在数学中,条件极值是一类非常重要的问题,它涉及到在一定条件下找到函数的最大值或最小值。
而拉格朗日乘数法则是解决条件极值问题的重要方法之一。
本文将就条件极值问题和拉格朗日乘数法进行深入探讨,以帮助读者全面理解这一数学概念。
1. 条件极值问题条件极值问题是指在一定的条件下,求函数的最大值或最小值。
一般来说,条件极值问题可以归结为一个求解约束条件下的目标函数的极值问题。
在实际生活中,这类问题也是非常常见的,比如在一定成本下求企业利润的最大值、在一定材料条件下求物体体积的最小值等等。
2. 拉格朗日乘数法拉格朗日乘数法是在求解条件极值问题时常用的一种方法。
它的基本思想是将约束条件引入目标函数,构造出一个新的函数,然后通过对新函数求偏导数并令其为零,来找到可能的极值点。
拉格朗日乘数法的基本原理是在满足约束条件的情况下,使得目标函数取得极值。
3. 深入理解条件极值问题在深入理解条件极值问题时,我们需要考虑约束条件对目标函数的影响,以及在满足约束条件下的可能极值点。
这就涉及到了对多元函数的求导、极值点的判定以及拉格朗日乘数法的具体应用。
只有全面理解了这些内容,才能够正确地解决条件极值问题。
4. 总结与回顾通过本文的讨论,我们对条件极值问题和拉格朗日乘数法有了更深入的了解。
在解决条件极值问题时,我们首先需要设立约束条件,然后构造出新的函数并求偏导数,最后通过拉格朗日乘数法来求得可能的极值点。
这种方法在实际问题中具有很强的实用性,并且可以推广应用到更多的数学和实际问题中。
5. 个人观点对我来说,条件极值问题和拉格朗日乘数法是数学中非常有趣且实用的内容。
它不仅帮助我们更好地理解函数的极值问题,还可以应用到金融、经济、物理等领域中。
我相信通过不断地学习和实践,我们可以更深入地理解和应用这一方法。
在本文中,我通过对条件极值问题和拉格朗日乘数法的探讨,希望读者能够更全面、深刻和灵活地理解这一数学概念,并在实际问题中灵活运用。
条件极值的求法

条件极值的求法条件极值是指在一定条件下,函数取得的最大值或最小值。
在解决实际问题时,我们经常需要求解条件极值。
本文将介绍条件极值的求法,包括拉格朗日乘数法、KKT条件法和梯度下降法等。
1. 拉格朗日乘数法拉格朗日乘数法是一种求解有约束条件的极值问题的方法。
其基本思想是将原问题转化为一个无约束条件的最优化问题,然后求解该最优化问题得到原问题的解。
设函数f(x, y)为原问题的目标函数,g(x, y)为约束条件。
则原问题的拉格朗日函数为:L(x, y, λ) = f(x, y) + λ·g(x, y)其中,λ为拉格朗日乘数。
求解原问题的步骤如下:(1) 对目标函数f(x, y)求偏导数,并令偏导数等于0,得到无约束条件的最优化问题;(2) 对约束条件g(x, y)求偏导数,并令偏导数等于0,得到约束条件;(3) 将无约束条件的最优化问题与约束条件联立,求解得到原问题的解。
2. KKT条件法KKT条件法是拉格朗日乘数法的一种推广,可以用于求解更复杂的有约束条件的极值问题。
KKT条件包括:(1) 梯度下降方向:对于无约束条件的最优化问题,梯度下降方向为负梯度方向;对于有约束条件的最优化问题,梯度下降方向为负梯度方向与拉格朗日乘数的比值。
(2) 边界条件:当梯度下降方向指向可行域外时,需要满足一定的边界条件。
常见的边界条件有:梯度下降方向与可行域边界的交点处的梯度必须大于等于零;梯度下降方向与可行域边界的交点处的拉格朗日乘数必须大于等于零。
(3) 非负约束:对于有非负约束的问题,需要满足非负约束条件。
即目标函数的值必须大于等于零。
3. 梯度下降法梯度下降法是一种迭代求解无约束条件的最优化问题的方法。
其基本思想是通过计算目标函数在当前点的梯度,沿着梯度的负方向进行搜索,直到找到局部最优解或满足停止准则。
梯度下降法的迭代公式为:x(k+1) = x(k) - α·∇f(x(k))其中,x(k)表示第k次迭代的解,α为学习率,∇f(x(k))表示目标函数在x(k)处的梯度。
函数的极值知识点总结

函数的极值知识点总结函数的极值是数学中的重要概念,它可以帮助我们确定函数的最大值和最小值,以及在哪些点上达到这些值。
在实际问题中,函数的极值可以用来优化问题,找到最佳解决方案。
下面我将从定义、求解方法和应用三个方面来总结函数的极值知识点。
一、定义函数的极值是函数在定义域上的最大值和最小值。
最大值又称为最大极值,最小值又称为最小极值。
二、求解方法1. 寻找函数的极值点要求函数的极值,首先需要找到函数的极值点。
极值点是函数在定义域内使函数取得极值的点。
可以通过求函数的导数或者二阶导数来找到极值点。
2. 判断极值找到极值点后,需要判断这些点是函数的极大值还是极小值。
可以通过求导数的符号来判断,如果导数在极值点的左侧为正,右侧为负,则该点为极大值;如果导数在极值点的左侧为负,右侧为正,则该点为极小值。
3. 检验极值找到极值点并判断后,还需要进行检验。
可以通过求二阶导数来检验,如果二阶导数在极值点处的值大于0,则该点为极小值;如果二阶导数在极值点处的值小于0,则该点为极大值。
4. 边界点的考虑在求解函数的极值时,还需要考虑边界点。
边界点是函数定义域的端点,需要将边界点和极值点进行比较,找出最大值和最小值。
三、应用函数的极值在实际问题中有广泛的应用,例如:1. 最优化问题:在约束条件下,找到使目标函数取得最大值或最小值的变量值,如生产成本最小化、利润最大化等。
2. 经济学:用函数的极值来分析供求关系、市场均衡等问题。
3. 物理学:用函数的极值来分析力学系统中的平衡点、最小能量状态等。
4. 生态学:用函数的极值来分析物种种群的最大增长率、生物多样性等。
函数的极值是数学中的重要概念,可以帮助我们确定函数的最大值和最小值。
通过求解极值点、判断极值和检验极值,可以找到函数的极大值和极小值。
函数的极值在实际问题中有广泛的应用,可以用来解决最优化问题、分析经济学和物理学等领域的现象。
掌握函数的极值知识,可以帮助我们更好地理解和应用数学。
极值的求解方法

极值的求解方法极值问题在数学、经济、物理等领域中具有重要的应用价值。
求解极值问题是找到函数的最大值或最小值,从而得到最优解。
本文将介绍几种常用的极值求解方法。
一、导数法导数法是一种常用且常见的求解极值的方法。
它基于函数的导数与函数的极值之间的关系进行分析和计算。
导数表示的是函数变化的快慢,通过计算函数的导数,可以找到函数变化最快的地方,即极值点。
如何使用导数法来求解极值问题呢?首先,对于给定的函数,我们需要求取它的导函数。
然后,通过对导函数进行求解,找到其一阶导数为零的点,即函数的稳定点。
这些稳定点就是函数可能存在的极值点。
接下来,我们需要使用二阶导数的信息来判断这些稳定点是极大值还是极小值。
若二阶导数大于零,则该点是极小值;若二阶导数小于零,则该点是极大值。
二、牛顿法牛顿法是一种迭代的方法,通过不断逼近函数的极值点。
该方法通过第一阶导数和第二阶导数的信息来进行迭代计算。
在使用牛顿法求解极值问题时,我们首先需要初始化一个初始点,作为迭代的起点。
然后,通过计算该点的一阶导数和二阶导数的比值,得到一个新的近似点,再次计算一阶导数和二阶导数的比值。
如此循环迭代,直到满足收敛条件。
当满足收敛条件时,即可得到函数的极值点。
牛顿法的迭代过程较为复杂,但在实际应用中具有较高的准确性和快速性。
三、割线法割线法是一种基于连续函数的近似线性化的方法,通过不断迭代来逼近函数的极值点。
该方法将直线代替了切线的位置,通过连接两个近似点的直线来逼近极值点。
使用割线法求解极值问题时,我们首先需要选择两个初始点,作为迭代的起点。
然后,通过计算这两个点所在直线与函数的交点,得到一个新的近似点,并将其作为下一次迭代的起点。
如此循环迭代,直到满足收敛条件。
当满足收敛条件时,即可得到函数的极值点。
割线法相较于牛顿法而言,迭代过程更加简单,但准确性略有降低。
四、遗传算法遗传算法是一种模拟生物进化过程的优化算法,通过模拟进化过程中的选择、交叉和变异等操作来寻找函数的极值点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目标函数极值求解的几种方法题目:()()2221122min -+-x x,取初始点()()Tx 3,11=,分别用最速下降法,牛顿法,共轭梯度法编程实现。
一维搜索法:迭代下降算法大都具有一个共同点,这就是得到点()k x 后需要按某种规则确定一个方向()k d ,再从()k x 出发,沿方向()k d 在直线(或射线)上求目标函数的极小点,从而得到()k x 的后继点()1+k x ,重复以上做法,直至求得问题的解,这里所谓求目标函数在直线上的极小点,称为一维搜索。
一维搜索的方法很多,归纳起来大体可以分为两类,一类是试探法:采用这类方法,需要按某种方式找试探点,通过一系列的试探点来确定极小点。
另一类是函数逼近法或插值法:这类方法是用某种较简单的曲线逼近本来的函数曲线,通过求逼近函数的极小点来估计目标函数的极小点。
本文采用的是第一类试探法中的黄金分割法。
原理书上有详细叙述,在这里介绍一下实现过程:⑴ 置初始区间[11,b a ]及精度要求L>0,计算试探点1λ和1μ,计算函数值()1λf 和()1μf ,计算公式是:()1111382.0a b a -+=λ,()1111618.0a b a -+=μ。
令k=1。
⑵ 若L a b k k <-则停止计算。
否则,当()K f λ>()k f μ时,转步骤⑶;当()K f λ≤()k f μ时,转步骤⑷ 。
⑶ 置k k a λ=+1,k k b b =+1,k k μλ=+1,()1111618.0++++-+=k k k k a b a μ,计算函数值()1+k f μ,转⑸。
⑷ 置k k a a =+1,k k b μ=+1,k k μμ=+1,()1111382.0++++-+=k k k k a b a λ,计算函数值()1+k f λ,转⑸。
⑸ 置k=k+1返回步骤 ⑵。
1. 最速下降法实现原理描述:在求目标函数极小值问题时,总希望从一点出发,选择一个目标函数值下降最快的方向,以利于尽快达到极小点,正是基于这样一种愿望提出的最速下降法,并且经过一系列理论推导研究可知,负梯度方向为最速下降方向。
最速下降法的迭代公式是()()()k k k k d x x λ+=+1,其中()k d 是从()k x 出发的搜索方向,这里取在点()k x 处最速下降方向,即()()k k x f d -∇=。
k λ是从()k x 出发沿方向()k d 进行的一维搜索步长,满足()()()()()()k k k k k d x f d x f λλλ+=+≥0min 。
实现步骤如下:⑴ 给定初点()n R x ∈1 ,允许误差0>ε,置k=1。
⑵ 计算搜索方向()()k k x f d -∇=。
⑶ 若()ε≤k d ,则停止计算;否则,从()k x 出发,沿方向()k d 进行的一维搜索,求k λ,使()()()()()()k k k k k d x f d x f λλλ+=+≥0min 。
⑷ ()()()k k k k d x x λ+=+1,置k=k+1返回步骤 ⑵。
2. 拟牛顿法基本思想是用不包括二阶导数的矩阵近似牛顿法中的Hesse 矩阵的逆矩阵,因构造近似矩阵的方法不同,因而出现了不同的拟牛顿法。
牛顿法迭代公式:()()()k k k k d x x λ+=+1,()k d 是在点()k x 处的牛顿方向,()()()()()k k k x f x f d ∇-∇=-12,k λ是从()k x 出发沿牛顿方向()k d 进行搜索的最优步长。
用不包括二阶导数的矩阵k H 近似取代牛顿法中的Hesse 矩阵的逆矩阵()()12-∇k x f ,1+k H 需满足拟牛顿条件。
实现步骤:⑴ 给定初点()1x ,允许误差0>ε。
⑵ 置n I H =1(单位矩阵),计算出在()1x 处的梯度()()11x f g ∇=,置k=1。
⑶ 令()k k k g H d -=。
⑷ 从()k x 出发沿方向()k d 搜索,求步长k λ,使它满足()()()()()()k k k k k d x f d x f λλλ+=+≥0min ,令()()()k k k k d x x λ+=+1。
⑸ 检验是否满足收敛标准,若()()ε≤+1k y f ,则停止迭代,得到点()1+-=k x x ,否则进行步骤⑹。
⑹ 若k=n ,令()()11+=k x x ,返回⑵;否则进行步骤⑺。
⑺令()()11++∇=k k x f g ,()()()k k k x x p -=+1,()kk k g g q -=+1,()()()()()()()()k k Tk kT k k k k T k T k k k k q H q H q q H q p p p H H -+=+1,置k=k+1 。
返回⑶。
3. 共轭梯度法若()()()k d d d ,,,21 是n R 中k 个方向,它们两两关于A 共轭,即满足()()k j i j i Ad d j T i ,,1,;,0 =≠=,称这组方向为A 的k 个共轭方向。
共轭梯度法的基本思想是把共轭性与最速下降法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点,根据共轭方向的基本性质这种方法具有二次终止性。
实现步骤如下:⑴ 给定初点()1x ,允许误差0>ε,置 ()()11x y =,()()()11y f d -∇=,k=j=1。
⑵ 若()()ε≤j y f ,则停止计算;否则,作一维搜索,求j λ,满足 ()()()()()()j j j j j d y f d y f λλλ+=+≥0min ,令()()()j j j j d y y λ+=+1。
⑶ 若n j <,则进行步骤⑷,否则进行步骤⑸⑷ 令()()()()j j j j d y f d β+-∇=++11,其中()()()()221jj j y f y f ∇∇=+β,置j=j+1,转⑵。
⑸ 令()()11++=n k y x ,()()11+=k x y ,()()()11y f d -∇=,置j=1,k=k+1,转⑵ 。
4. 实验结果1=。
迭用以上三种方法通过Matlab编程得到实验数据。
初始值()()Tx3,1代精度sum(abs(x1-x).^2)<1e-4。
实验结果分析:由上表格可以看到最速下降法需要四次迭代实现所要求的精度,拟牛顿法和共轭梯度法需要三次。
程序:%精确一维搜索法的子函数,0.618(黄金分割)法,gold.m%输入的变量x为初始迭代点是二维的向量,d为初始迭代方向是二维的向量%输出变量是在[0,10]区间上使函数取得极小值点的步长因子function alfa=gold(x,d)a=0;b=10;tao=0.618;lanmda=a+(1-tao)*(b-a);mu=a+tao*(b-a);alfa=lanmda;%初始化f=((x(1)+alfa*d(1))-2)^2+2*(x(2)+alfa*d(2)-1)^2;%目标函数m=f;alfa=mu;n=f;while 1if m>nif abs(lanmda-b)<1e-4alfa=mu; returnelsea=lanmda; lanmda=mu; m=n;mu=a+tao*(b-a); alfa=mu;n=((x(1)+alfa*d(1))-2)^2+2*(x(2)+alfa*d(2)-1)^2;endelseif abs(mu-a)<1e-4alfa=lanmda; returnelseb=mu; mu=lanmda; n=m;lanmda=a+(1-tao)*(b-a); alfa=lanmda;m=((x(1)+alfa*d(1))-2)^2+2*(x(2)+alfa*d(2)-1)^2;endendend%梯度子函数,tidu.m,输入的变量为二维的向量,返回梯度在x处的数值向量function g=tidu(x)%待求解的函数f=(x(1)-2)^2+2*(x(2)-1)^2;%求函数的梯度表达式g=[2*(x(1)-2) 4*(x(2)-1)];x1=x(1); x2=x(2);%最速下降法极小化函数的通用子函数zuisu.m%输入变量为初始的迭代点,输出变量为极小值点function x0=zuisu(x)%判断梯度范数是否满足计算精度1e-4的要求.是,标志变量设为1,输出结果; %否,标志变量设为0if sum(abs(tidu(x)).^2)<1e-4flag=1; x0=x;elseflag=0;end%循环求解函数的极小点while flag==0d=-tidu(x); a=gold(x,d); x=x+a*d%判断梯度范数是否满足计算精度的要求.是,标志变量设为1,输出结果;%否,标志变量设为0,继续迭代if sum(abs(tidu(x)).^2)<1e-4flag=1; x0=x;elseflag=0;endEnd%拟牛顿法极小化函数的通用子函数,gonge.m%输入变量为初始的迭代点,输出变量为极小值点function x0=ninewton(x)%判断梯度范数是否满足计算精度的要求.是,标志变量设为1,输出结果;%否,标志变量设为0,继续迭代if sum(abs(tidu(x)).^2)<1e-4flag=1; x0=x;elseflag=0;end%初始的H矩阵为单位矩阵h0=eye(2);%循环求解函数的极小点while flag==0%计算新的迭代方向d=-h0*tidu(x)'; a=gold(x,d);x1=(x'+a*h0*d)'; s=x1-x;y=tidu(x1)-tidu(x); v=s*y';%校正H矩阵h0=(eye(2)-s'*y./v)*h0*(eye(2)-y'*s./v)+s'*s./v;%判断下一次和上一次迭代点之差是否满足计算精度的要求.是,标志变量设为1,输出结果;否,标志变量设为0,继续迭代if sum(abs(x-x1).^2)<1e-4flag=1; x0=x;elseflag=0;endx=x1end%共轭剃度法极小化函数的通用子函数,gonge.m%输入变量为初始的迭代点,输出变量为极小值点function x0=gonge(x)%判断梯度范数是否满足计算精度的要求.是,标志变量设为1,输出结果;%否,标志变量设为0,继续迭代if sum(abs(tidu(x)).^2)<1e-4flag=1; x0=x;elseflag=0;end%第一次的迭代方法为负梯度方向d1=-tidu(x);a=gold(x,d1);x1=x+a*d1;%循环求解函数的极小点while flag==0g1=tidu(x); g2=tidu(x1);%利用FR公式求解系数batabata=(g2*g2')/(g1*g1');d2=-g2+bata*d1;a=gold(x1,d2);x=x1;x1=x+a*d2%判断下一次和上一次迭代点之差是否满足计算精度的要求.是,标志变量设为1,输出结果;否,标志变量设为0,继续迭代if sum(abs(x1-x).^2)<1e-4flag=1; x0=x1;elseflag=0;endend。