📄 program.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 + -