LQ~~ 2021-09-24 08:23 采纳率: 100%
浏览 133
已结题

matlab中抛物线法求极值

img


img

  • 写回答

1条回答 默认 最新

  • 技术专家团-Joel 2021-09-24 09:22
    关注

    你好,以下代码供你参考,能注释的,都注释了

    clc; clear;
    x0 = 0;  x1 = 0.5;  x2 = 1;%初始区间,自己设置
    f=@(x) 3*x^2 - 2*tan(x);  %创建题目要求匿名函数,方便使用
    N = 100;  % 最多100次
    iter =1;    % 初始迭代步
    es = 1e-6;   % 误差
    e = 1;
    fprintf('迭代次数     x0        x1          x2       x(解)       f(最小值)     误差\n')
    for i = 1:N     % 迭代
        f0 = f(x0);     % 初始f0
        f1 = f(x1);     % f1
        f2 = f(x2);     % f2
        x3 = (f0*(x1^2-x2^2)+f1*(x2^2-x0^2)+f2*(x0^2-x1^2))/(2*f0*(x1-x2)+2*f1*(x2-...
            x0)+2*f2*(x0-x1));  % 二次插值迭代函数
        f3 = f(x3); % 计算f3
        if f3<f1    % 比较f3和f1大小
            e = abs(x3-x1);    % 误差
            x0 = x1;    % 设置新的左端x
            x1 = x3;    % 设置新的中间x
        else
            if f1<f3 && f3 < f2 && x3 < x2 && x3 > x1 %假如 f1 比 f3, 找到x3位置并看取代哪个
                x2 = x3; %用x3取代x2
            else
                if f1<f3 && f3 < f0 && x3 > x0 && x3 < x1 
                    x0=x3; % 用x3取代x0
                end
            end
        end
        fprintf('%6d\t%f\t%f\t%f\t%f\t%f\t%e\n', i, x0, x1, x2, x3, f3, e)%输出每一步迭代结果
        if e<es % 误差比较
            break   % 满足容差就结束
        end
    end
    

    结果输出

    迭代次数     x0        x1          x2       x(解)       f(最小值)     误差
         1    0.000000    0.500000    0.550323    0.550323    -0.318533    1.000000e+00
         2    0.500000    0.412041    0.550323    0.412041    -0.364786    8.795921e-02
         3    0.412041    0.378927    0.550323    0.378927    -0.365581    3.311424e-02
         4    0.378927    0.388860    0.550323    0.388860    -0.365810    9.933796e-03
         5    0.378927    0.388860    0.390133    0.390133    -0.365810    9.933796e-03
         6    0.388860    0.389493    0.390133    0.389493    -0.365810    6.329650e-04
         7    0.389493    0.389493    0.390133    0.389493    -0.365810    2.129880e-08
    

    可见到了第七次迭代,误差已经是2e-8,远小于设定的1e-6,可以结束
    答题不易,有用还请题主给个采纳支持一下答主哦

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月2日
  • 已采纳回答 9月24日
  • 修改了问题 9月24日
  • 创建了问题 9月24日

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?