0.618法求F(X)=x+20/x

Cadence IC618使用 Cadence ic618个人学习记录 阅读详情

题目:已知目标函数F(X)=x+20/x,取初始区间[a,b]=[2,10],ε=0.01。分别用0.618法和二次插值法求最优解。

public class Main {
    
	public static void main(String[] args) {
		//初始数据
		double a=2.0;
        double b=10.0;
        double miu=0.01;
        f_618 h=new f_618(a,b,miu);
        h.SuanFa();
	}
	
}
class f_618  {
    double a;
    double b;
    double miu;
    double x1;
    double x2;
    
	public f_618(double a,double b,double miu){
        this.a=a;
        this.b=b;
        this.miu=miu;
        this.x1=0.0;
        this.x2=0.0;
    }
    public void SuanFa() {
        int k=0;
        fun f=new fun();
        while(true) {
            k++;
            x1=a+0.382*(b-a);
            x2=a+0.618*(b-a);
            System.out.println("x1:"+x1+"x2:"+x2);
            if((b-a)<miu) break;
            else {
                if(f.F(x1)>f.F(x2)) {
                    System.out.println("左边f(x1):"+f.F(x1)+"f(x2):"+f.F(x2));
                    a=x1;
                    x1=x2;
                    x2=a+0.618*(b-a);
                }
                else {
                    System.out.println("右边f(x1):"+f.F(x1)+"f(x2):"+f.F(x2));
                    b=x2;
                    x2=x1;
                    x1=a+0.382*(b-a);
                }
            }
            System.out.println("迭代了"+k+"次,区间[a,b]=["+a+","+b+"]"+'\n'+"f(a)="+f.F(a)+'\n'+"f(b)="+f.F(b));
        }
        double f1=f.F(a);
        double f2=f.F(b);
        System.out.println("迭代了"+k+"次,最优区间[a,b]=["+a+","+b+"]"+'\n'+"f(a)="+f1+"f(b)="+f2);
    }
}
class fun  {
	public double F(double x) {
		//目标函数
	    x=x+(20.0/x);
        return x;
    }
}

答案
左边f(x1):8.944272678017402f(x2):8.944272608908868
迭代了14次,区间[a,b]=[4.470283049462319,4.479765675814997]
f(a)=8.944272678017402
f(b)=8.944284904571628
x1:4.473905412729042x2:4.476143312548274
迭代了15次,最优区间[a,b]=[4.470283049462319,4.479765675814997]
f(a)=8.944272678017402f(b)=8.944284904571628

参考:https://blog.csdn.net/weixin_49858823/article/details/118915862

Python实战:3种一维搜索算对比(成功失败vs牛顿vs0.618 本文对比了三种一维搜索算在Python中的实现与性能:成功失败、牛顿0.618。通过详细的代码示例实验分析,展示了各算在收敛速度、精度鲁棒性上的差异,帮助开发者在工程优化机器学习调参中选择最适合的方 阅读详情

相关推荐

黄金分割与Fibonacci

最近在上一门最优化算的课,于是就打算写一篇博客来将自己所学的知识做一个巩固,这两种方都是用来选取函数的极值点,属于的一维搜索方中的试探,方式也是很简单那就是在值域[a,b][a, b]内选取两个点,通过两个值的函数值来缩小值域的取值范围下面我们来看一下用两种方,怎么求出函数在区间[0,1][0,1]内的极大值点,容许误差为10−610^{-6},函数图像呢如下: 斐波那契:var

zp1996323的博客 4762

程序优化设计编程(0.618、单纯形、梯度二次插值)

0.618 单纯形 梯度 二次插值 程序优化的编程代码

【最优化】黄金分割

【黄金分割】【0.618】一维搜索是最优化结构里的重要且基础的模块,学习一位搜索对研究最优性条件、收敛性的证明、算速度的设计有着极其重要的作用。精确一维搜索通常有两种实现方式:**试探****函数逼近**。其中**试探** 常见的有 *黄金分割*(0.618 *斐波那契*(Fibonacci)**函数逼近** 常见的有 牛顿、割线、抛物线插值法 等。本文只浅谈试探众多黄金分割

Zimu的博客 4115

最优化学习笔记——第四章

第四章 一维搜索 这里写目录标题第四章 一维搜索一、缩小区间的搜索缩小区间的精确一维搜索黄金分割0.618 )中点(二分)进退初始不确定区间二、Newton插值法1、 Newton2插值法基本的思想就是拟合一个多元n次方程,按照参数的需去选择点数,若点数不够, 可以用导数凑方程以32次为例:两点两次:三次插值:四个参数 近似精确解 一、缩小区间的搜索 一元函数极小及线性搜索均为一维搜索。常用于 : 缩小区间的精确一维搜索 考虑问题§ 不确定区间: [𝛼, 𝛽]含𝜑(

weixin_43845522的博客 1345

鲍威尔方c语言程序,鲍威尔编程-powell编程-c语言编程-c++6.0.doc

鲍威尔编程-powell编程-c语言编程-c++6.0.docinclude stdio.hdefine N 2float gsfloat zNfloat f;f10*z0z1-5*z0z1-5z0-z1*z0-z1;f44.5*z0-4*z1z0*z02*z1*z1-2*z0*z1z0*z0*z0*z0-2*z0*z0*z1;f1.5*z0*z00.5*z1*z1-z0*z1-2*z0;re...

weixin_30420175的博客 798

非线性优化(二)

一维搜索 Fibonacci(分数) 设y=f(t)是区间[a,b]上的下单峰函数(如下图),在此区间内它有唯一极小点t.若在此区间内任取两点cd,c<d,并计算函数值f(c)f(d),可能出现以下两种情形: 1. f(c)<f(d),这时极小点t必在区间[a,d]内. 2. f(c)≥f(d),这时极小点t必在区间[c,b]内. 在区间[a,b...

工大机器人工作室 2635

二次插值法函数最小值

表达式的值Function erresult(ByVal expression As String, ByVal x As String) As Single      Dim tmpStr As String          tmpStr = Replace(UCase(expression), "LN", "Log")          tmpStr = Replace(tmpStr,

xpnh123的专栏 6302

利用0.618(黄金分割)极小值

[书籍]马昌风-最优化方与MATLAB程序设计 书中例题编程详解 利用0.618(黄金分割)极小值 思路图解: MATLAB程序如下: clc,clear; epsilon=10^-4; phi=@(x) x^2-sin(x); %phi为目标函数 a=0;b=1; %a,b,分别为区间(a,b)的端点 t=(sqrt(5)-1)/2; %t为区间长度缩短率,即为每次迭代,区间...

ZHUQIUSHI123的博客 2万+

20、Fibonacci0.618的一维搜索

# -*- coding: utf-8 -*- """ Created on Wed Mar 20 20:38:07 2019 @author: zhangchaoyu """ import copy def Fibonacci(bound): l = bound[0] r = bound[1] print(l,r) gap = 1e-5 ...

chaoyuzhang的博客 1522

0.618 matlab r2012b,powell算的matlab实现

%powell·方程f=10*(x1+x2-5)^4+(x1-x2+x3)^2+(x2+x3)^6的最优解function MyPowell()syms x1 x2 x3 a;f=10*(x1+x2-5)^4+(x1-x2+x3)^2+(x2+x3)^6;error=10^(-3);D=eye(3);x0=[0 0 0]';for k=1:1:10^6MaxLength=0;x00=x0;m=0...

weixin_35917998的博客 436

powell matlab,优化理论中的powell算的matlab编程

%powell·方程 f=10*(x1+x2-5)^4+(x1-x2+x3)^2 +(x2+x3)^6 的最优解function MyPowell()syms x1 x2 x3 a;f=10*(x1+x2-5)^4+(x1-x2+x3)^2 +(x2+x3)^6;error=10^(-3);D=eye(3);x0=[0 0 0]';for k=1:1:10^6MaxLength=0;x00=x0...

weixin_39854326的博客 897

matlab黄金分割算实现与解析

% 0.618f(x) = x^2 - 7x + 10最小值,初始区间[1, 7],判断精度0.01lower = 1; upper = 7; f = @(x) x ^ 2 - 7* x + 10; %匿名函数e = 0.01; tic while((upper - lower) >= e) alpha1 = lower + 0.382 * (upper - lower);

lance~crazy 7310

解决单峰最值问题0.618—hdu 4355

0.618: 设f(x)在区间[x,y]上为单峰函数,可以使用0.618实现解最值问题,实质与二分一样,只是更加精确。 题意:   在x轴上有n个点a1,a2,...ai,每个点有wi重量,(a1-x)^3*w1+(a2-x)^3*w2+(a3-x)^3*w3...+(ai-x)^3*wi的最小值。 View Code 1 /* 2 6499620 2012...

weixin_33881041的博客 409

【数学建模】数学建模学习3---非线性规划(例题+matlab代码实现)

文章目录1 非线性规划1.1 非线性规划的实例与定义1.2 线性规划与非线性规划的区别1.3 非线性规划的 Matlab 解1.4 凸函数、凸规划2 无约束问题2.1 一维搜索方2.1.1 Fibonacci 2.1.2 0.618 2.2 二次插值法2.3 无约束极值问题的解2.3.1 解析2.3.1.1 梯度(最速下降2.3.1.2 Newton 2.3.2 直接2.4 Matlab 无约束极值问题3 约束极值问题3.1 二次规划3.2 罚函数 1 非线性规划 1.1 非线性规

要像蜗牛一样一步一步往上爬! 3万+

黄金分割数0.618(蓝桥杯)

黄金分割数0.618     黄金分割数0.618与美学有重要的关系。舞台上报幕员所站的位置大约就是舞台宽度的0.618处,墙上的画像一般也挂在房间高度的0.618处,甚至股票的波动据说也能找到0.618的影子....     黄金分割数是个无理数,也就是无表示为两个整数的比值。0.618只是它的近似值,其真值可以通过对5开方减去1再除以2来获得,我们取它的一个较精确的近似值:0.61803...

潮流 M I 的博客 2414

黄金分割(C语言实现)

title: 黄金分割 date: 2021-10-25 19:45:32 tags: 算 黄金分割 0.618是美国数学家Jack Kiefer于1953年提出,我国著名数学家华罗庚于20世纪6070年代对其进行简化、补充,并在我国进行推广,广泛应用于各个领域。 0.618适用于单峰函数,单峰函数概念:设f是定义在闭区间[a,b]上的一元函数,\(\overline x\)是f在[a,b]上的极小点,并且对任意的x1,x2属于[a,b],x1<x2,当x2<\(\overlin.

weixin_42660711的博客 4385

2023年天猫618预售限时抢免定金福利玩介绍

活动参与门槛:消费者在免定金活动时间内在预售玩会场(不包含任务新开页面)下单即可参与免定金活动,可通过拼手速或者拼手气获得免定金福利。消费者在免定金活动时间内在2023年天猫618预售玩会场(不包含任务新开页面)下单即可参与免定金活动,可通过拼手速或者拼手气获得免定金福利。6场抢免定金福利时间分别为:5月26日20点、5月27日10点、5月28日10点、5月29日10点、5月30日10点、5月31日10点。1、活动时间:2023年5月26日00:00:002023年5月31日17:59:59期间。

jisuyunzzc的博客 1813

Leo赠书活动-25期 618精选编程书单:提升你的代码力

亲爱的开发者们,👋在这个快速发展的技术时代,不断学习提升自己的编程技能是每位程序员的必修课。今天,我为大家精心挑选了一系列编程技术书籍,它们将是你技术成长道路上的宝贵财富。

分享思想,留下痕迹。 1893
上一篇: 2022年一到二年经验全栈工程师面试总结
下一篇: 未完成的用Java实现二次插值法
CarlJaTo
博客等级 码龄7年 7粉丝 · 11原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值