zoukankan      html  css  js  c++  java
  • 【MATLAB与机械设计】一维优化黄金分割算法

    黄金分割算法是一种特殊的序列消去算法,黄金分割法的基本思想是:计算并比较插入的值的函数值,并且不断舍弃函数峰值旁边的一部分,进行对原有区间的消去,使其区间按等比例(0.618)等速缩短 ,(感觉是不是可以按更高的比例进行缩短,这样是不是更快)

    1,黄金分割法迭代过程
    在这里插入图片描述
    2,黄金分割法的程序框图
    在这里插入图片描述
    3,MATLAB可运行程序

    function [x,fx] = Golden_Section(f,a,b,exp)
    %% 说明
    %{
    本函数用于黄金分割法精确函数极值的区间
    其中f为输入的目标函数
    a,b分别为初始区间的左右端点
    exp为精度
    
    调用方法:
    clear; clc;
    fun = @(x) ((1/4)*x^4-(2/3)*x^3-2*x^2-7*x+8);
    [x,fx]=HJ(fun,3,4,0.05);
    disp('函数的极小值点为:');
    x
    disp('函数的极小值为:');
    fx
    
    %}
    %% 函数主体
    rbd=0.618;
    d=a+rbd*(b-a);
    c=a+(1-rbd)*(b-a);
    fc=f(c);
    fd=f(d);
    while abs(b-a)>=exp 
        if fc<fd
            b=d;
            d=c;
            fd=fc;
            c=a+(1-rbd)*(b-a);
            fc=f(c);
        end
        if fc>fd
            a=c;
            c=d;
            fc=fd;
            d=a+rbd*(b-a);
            fd=f(d);
        end
    end
    x=(a+b)/2;
    fx=f(x);
    end
    
  • 相关阅读:
    CDI Features
    Java Design Patterns
    pyautogui
    TCP/UDP的套接字Socket通信工作流程
    TCP连接的建立与释放(三次握手、四次挥手)
    python实现单例模式的三种方式及相关知识解释
    面向对象的三个基本特征
    网络编程
    初识python
    目录
  • 原文地址:https://www.cnblogs.com/mach-pupil/p/12535332.html
Copyright © 2011-2022 走看看