⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 program.cs

📁 运筹学中用0.618法解决线搜索问题
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;

namespace _17
{
    public class LinkSearch
    {
        double e, ak, bk, ak1, ak2;
        int k, key;
        double t = 0.618;
        public LinkSearch(double e1, double xk)         //输入精度和初始迭代值
        {
            e = e1;
            ak = xk;
            bk = xk + 100;                  //由于只输入一个初始迭代值,所以+100构造一个区间,这个区间离最小点很远的话再增加距离
            k = 0;
        }
        double f(double x)                  //这个是所求最小点的函数
        {
            return x * x - 3 * x;
        }
        public double output()
        {
            double ares=0, akpus1, bkpus1;
            while (Math.Abs(bk - ak) >= e)
            {
                if (k ==0)
                {
                    ak1 = ak + t * (bk - ak);
                    ak2 = bk - t * (bk - ak);
                }
                else
                {
                    if (key == 1)
                    {
                        ak1 = ak + t * (bk - ak);
                    }
                    if (key == 2)
                    {
                        ak2 = bk - t * (bk - ak);
                    }
                }
                if (f(ak1) < f(ak2))
                {
                    ares = ak;
                    key = 1;
                    akpus1 = ak2;
                    bkpus1 = bk;
                    ak2 = ak1;
                }
                else
                {
                    ares = ak2;
                    key = 2;
                    akpus1 = ak;
                    bkpus1 = ak1;
                    ak1 = ak2;
                }
                k = k + 1;
                ak = akpus1;
                bk = bkpus1;
            }
            return ares;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            LinkSearch lk = new LinkSearch(0.005, -1);
            Console.WriteLine("res is {0}",lk.output().ToString());
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -