森晚0101 2021-09-19 08:49 采纳率: 50%
浏览 249
已结题

0.618法的matlab实现

一、题目: 0. 618法寻最优解←

问题描述:←

求函数f(x)= 3x2- 2 tan x在区间[0, 1]上的极小值,其中容许误差ε= 10-4。《●实验的基本 要求<

1、输出最优解、函数的最优值、终止条件; k

2、画图显示其寻优过程。

  • 写回答

2条回答 默认 最新

  • 技术专家团-Joel 2021-09-19 09:48
    关注

    可以这么写

    f = @(x)3*x.^2- 2*tan(x); %目标函数
    ratio = 0.618;
    left = 0;
    right = 1;
    epsil = right-left;
    count = 0;
    xp = linspace(0,1,101);
    yp = f(xp);
    plot(xp,yp,'b-'); hold on;
    sol = [(left+right)/2,f((left+right)/2)];
     fprintf('迭代次数\t误差\t\t\t\t最优解位置\t最优值\n')%打印输出(表头)
    while (epsil>1e-4)
        count = count + 1;
        a = left + (1-ratio)*(right-left);
        b = left + ratio*(right-left);
        f1 = f(a);
        f2 = f(b);
        if(f1<f2)
            right = b;
        else
            left = a;
        end
        epsil = right-left;
        solution = (left+right)/2;
        sol = [sol;solution, f(solution)]; %保存每次的最优解
        fprintf('%d\t\t%E\t%f\t%f\n',count, epsil, solution, f(solution))%打印输出
    end
    for i = 1:1:size(sol,1)-1
    plot(sol(i:i+1,1),sol(i:i+1,2),'r-o','markerfacecolor','r')
    pause(0.1)
    end
    

    然后输出每一步

    迭代次数    误差                最优解位置    最优值
    1        6.180000E-01    0.309000    -0.352007
    2        3.819240E-01    0.427038    -0.362997
    3        2.360290E-01    0.354091    -0.363202
    4        1.458659E-01    0.399172    -0.365620
    5        9.014515E-02    0.371312    -0.365129
    6        5.570970E-02    0.388529    -0.365808
    7        3.442860E-02    0.399170    -0.365620
    8        2.127687E-02    0.392594    -0.365791
    9        1.314911E-02    0.388530    -0.365808
    10        8.126148E-03    0.391042    -0.365805
    11        5.021960E-03    0.389490    -0.365810
    12        3.103571E-03    0.390449    -0.365808
    13        1.918007E-03    0.389856    -0.365810
    14        1.185328E-03    0.389490    -0.365810
    15        7.325329E-04    0.389716    -0.365810
    16        4.527053E-04    0.389576    -0.365810
    17        2.797719E-04    0.389490    -0.365810
    18        1.728990E-04    0.389543    -0.365810
    19        1.068516E-04    0.389510    -0.365810
    20        6.603429E-05    0.389490    -0.365810
    

    可见最优解位置是x=0.389490,最优解是f=-0.365810,终止条件是k=count=20

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月27日
  • 已采纳回答 9月19日
  • 创建了问题 9月19日

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算