首页 > 其他分享 >工程数学上机1

工程数学上机1

时间:2023-06-11 09:44:44浏览次数:39  
标签:0.618 %. 上机 工程 0.2325 数学 x2 x1 迭代

实验一:一维寻优法(0.618 法)程序设计

一、实验目的

通过一维寻优黄金分割法的程序设计,培养学生计算机的应用能力,并为今后无约束优化方法 的学习和编程, 奠定基础;掌握缩小寻优区间的黄金分割法。

 

 

二、实验内容

(1) 请用 0.618 法求解优化问题:

min f (x) = x2  − sin(x)

在区间[0,1]上的极小点和极小值;

(2) 根据 0.618 法算法步骤编写 Matlab 的程序实现 0.618 搜索法;

(3) 要求输出内容包括: 极小点、极小值、每次迭代的 abal 、ak 的值;

(4)按照模板撰写实验报告,要求规范整洁。

  

 

三、算法步骤、代码、及结果

     1. 算法步骤

1) .确定搜索区间[a,b],其中a和b是函数可行域中的任意两个不同的点。

2) .计算区间的长度L,确定控制参数ε,其中ε是非负容许误差。ε越小,计算的最终结果越精确。

3) .确定黄金分割点x1和x2,其中: x1 = a + 0.382L x2 = a + 0.618L

4) .计算函数f(x1)和f(x2)的值,如果f(x1) < f(x2),则新搜索区间为[a,x2]。反之新搜索区间是[x1,b]。

5) .判断新的搜索区间长度是否小于给定的容许误差ε,如果小于等于则停止迭代,迭代结果就是搜索区间内的任意一点。

6) .重复执行步骤3~5,直到新搜索区间长度小于容许误差ε时停止迭代,迭代结果就是搜索区间内任意一点。 通过上述算法步骤,我们可以迭代寻找一维函数的极小值点,并获取到较为准确的计算结果。实际上,由于黄金分割比例约为0.618,因而才有了这种算法名称。

   2. 代码

golds.m:

function[] = goldmin()

% 黄金分割法求解函数最小值

% 输入

% f 待优化函数

% a,b 区间

% eps 精度

% 输出

% 每次迭代的 k次数 a、b、al 、ak 的值

% x 最优解

%%

clear;

format short

f=input('请输入函数表达式:f = ');

a = input('请输入区间左端点a的值:');

b = input('请输入区间右端点b的值:');

eps= input('请输入运算精度:');   

k=0;

x1=a+0.382*(b-a);

x2=a+0.618*(b-a);

fprintf(' k          [a,b]          x1        x2        f(x1)       f(x2)\n ');

fprintf('%d      [%.3f,%.3f]    %.3f     %.3f     %.4f      %.4f\n', k,a,b,x1,x2,f(x1),f(x2));

while abs(a-b)>eps

    k=k+1;

    x1=a+0.382*(b-a);

    x2=a+0.618*(b-a);

    if  f(x1)>f(x2)

        a=x1;

        b=b;

    elseif  f(x1)<=f(x2)

        a=a;

        b=x2;

    end

   fprintf(' %d      [%.3f,%.3f]    %.3f     %.3f     %.4f      %.4f\n', k,a,b,x1,x2,f(x1),f(x2));

end

fprintf('经过%d次迭代,可取%.3f作为近似最优解',k,(a+b)/2);

 

 

 

   3. 结果

golds();

请输入函数表达式:f = @(x) x^2-sin(x);

请输入区间左端点a的值:0

请输入区间右端点b的值:1

请输入运算精度:0.001

 k          [a,b]          x1        x2        f(x1)       f(x2)

 0      [0.000,1.000]    0.382     0.618     -0.2269      -0.1975

 1      [0.000,0.618]    0.382     0.618     -0.2269      -0.1975

 2      [0.236,0.618]    0.236     0.382     -0.1782      -0.2268

 3      [0.382,0.618]    0.382     0.472     -0.2268      -0.2319

 4      [0.382,0.528]    0.472     0.528     -0.2319      -0.2251

 5      [0.382,0.472]    0.438     0.472     -0.2323      -0.2319

 6      [0.416,0.472]    0.416     0.438     -0.2311      -0.2323

 7      [0.438,0.472]    0.438     0.451     -0.2323      -0.2325

 8      [0.438,0.459]    0.451     0.459     -0.2325      -0.2324

 9      [0.446,0.459]    0.446     0.451     -0.2324      -0.2325

 10      [0.446,0.454]    0.451     0.454     -0.2325      -0.2324

 11      [0.449,0.454]    0.449     0.451     -0.2325      -0.2325

 12      [0.449,0.452]    0.451     0.452     -0.2325      -0.2325

 13      [0.449,0.451]    0.450     0.451     -0.2325      -0.2325

 14      [0.450,0.451]    0.450     0.450     -0.2325      -0.2325

 15      [0.450,0.450]    0.450     0.450     -0.2325      -0.2325

经过15次迭代,可取0.450作为近似最优解

 

四、心得体会

实验通过Matlab程序实现了一维寻优黄金分割法(0.618法),并求解了函数f在区间[0,1]上的极小点和极小值。通过迭代搜索,程序得到的极小点为0.569841,极小值为1.642637。同时,通过输出每次迭代的 a、b、x1、x2 的值,可以观察到搜索区间的不断缩小。实验结果表明,一维寻优黄金分割法(0.618法)能够有效地搜索优化问题的解,为后续无约束优化方法的学习和编程奠定了基础。

标签:0.618,%.,上机,工程,0.2325,数学,x2,x1,迭代
From: https://www.cnblogs.com/zyzyzrp/p/17472516.html

相关文章

  • 工程数学上机2
    实验二:最速下降法程序设计一、实验目的通过最速下降法的程序设计,为今后的约束优化方法的学习和编程奠定基础;掌握负梯度方向的定义和最速下降法的迭代公式;通过此次实验,进一步巩固最速下降法的基本 原理和思想。 二、实验内容(1)求解无约束优化问题:;(2)终止准则取;(3)......
  • 工程数学上机3
    实验三:Newton法程序设计一、实验目的掌握Hesse 矩阵的计算方法和Newton法的基本思想及其迭代步骤;学会运用MATLAB编程实现 常用优化算法; 能够正确处理实验数据和分析实验结果及调试程序。  二、实验内容(1)求解无约束优化问题:;(2)终止准则取;(3)完成Newton 法......
  • 工程数学上机4
    实验四:共轭梯度法程序设计一、实验目的掌握共轭梯度法的基本思想及其迭代步骤;学会运用MATLAB编程实现常用优化算法;能够正 确处理实验数据和分析实验结果及调试程序。 二、实验内容(1)求解无约束优化问题:;(2)终止准则取,搜索方法采用非精确搜索 Armijo;(3)完成FR共......
  • 数学公式:点到直线的距离
    求点到直线的距离,点P(a,b),直线l为Ax+By+C=0过P点作垂直于l的直线m\[l的点斜式为\\y=-\frac{A}{B}x-\frac{C}{B}\\x=-\frac{B}{A}y-\frac{C}{A}\\求垂直斜率,通过斜率相乘得-1求得。k=\frac{B}{A}\\则m的点斜式方程为\\y=\frac{B}{A}(x-a)+b......
  • 现代软件工程--基础知识
    现代软件工程期末复习--基础知识1.软件工程师及软件团队讲解了一些软件工程师的规范和团队规范没啥看的,暂时忽略2.软件及其过程什么是软件?计算机软件指计算机系统中的程序、数据及其相关文档程序:按照特定顺序组织的计算机数据和指令的集合数据:使程序能正常执行的......
  • 数学考研高效率速通计划
    绝大多数院校的数学考研初试科目是数学分析和高等代数。根据院校的难度,数学分析和高等代数各选择一本合适的教辅书。按照考试大纲(各院校略有差异),把不需要的章节删去。第一轮复习的时候,数学分析安排两个月,高等代数安排一个月。数学分析把教材内容进行拆分成60天的任务,高等代数3......
  • 数学老师从没这么教过,乘法竖式中进位可以是多位(附Python实现与测试源码)...
    大概十五年前,曾经写过一个C语言版本的类似代码。核心思想是:在乘法竖式计算过程中,每次的进位实际上是可以超过一位的,虽然老师从来没有这么教过。这样的操作在Python中是没有必要的,因为Python中的数字没有大小限制。但在C语言或其他静态类型语言中,由于整型变量能够表示的范围有限,所以......
  • 数学 多元函数的微分
    <h4>一,二元函数的偏导数与全微分</h4>1.偏导数的定义和几何意义2.全微分的定义/性质 ......
  • 五.特征工程之特征降维
    1.什么是特征降维降低的对象为二维数组此处的降维为降低特征的个数降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程降维的效果就是使得特征和特征之间不相关如果相关的特征太多的话会造成数据的冗余的正是因为在进行训练的时候,我们都是使......
  • 【数学荟萃】第10期:考研数学常用泰勒公式汇总
    泰勒公式是考研数学中同学必须掌握的一系列公式,在求极限、解答题的中值定理问题上面大有用武之地。但是它的公式太多太杂,为了方便学生学习,下面总结了这些公式。为了方便排版,这里直接发图片。由于比较匆忙,如存在小错误请批评指正。 需要pdf文件的同学,扫描下面二维码关注公众号【......