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

📄 forward_and_backward.cpp

📁 最优化理论与算法(第2版)这本书中的课后作业。用C++实现的一些具体算法。
💻 CPP
字号:
#include<iostream.h>
#include<math.h>

void main()
{
	double x0=1,h0=0.05;
	double h,x1,f1;
	int k=0;

	int sn=0;

	double x4,f4;
	double x2,x3,f2;

	h=h0;
	x1=x0;
	f1=pow((1-x1),2)-2*(1-x1)*(1-3*x1)+4*pow((1-3*x1),2)+(1-x1)-3*(1-3*x1);//f1=pow(x1,4)+2*x1+4;

Loop:	
	x4=x1+h;
	f4=pow((1-x4),2)-2*(1-x4)*(1-3*x4)+4*pow((1-3*x4),2)+(1-x4)-3*(1-3*x4);
	k=k+1;

	if(f4<f1) sn=4;
	else if(k==1)
		sn=6;
	else
		sn=7;

	switch(sn)
	{
	case 4:
		x2=x1;x1=x4;
		f2=f1;
		f1=f4;
		h=2*h;
		goto Loop;
	case 6:
		h=-h;
		x2=x4;
		f2=f4;
		goto Loop;
	case 7:
		x3=x2;
		x2=x1;
		x1=x4;
		break;
	}
    //printf("%lf,%lf",x1,x3);
	cout<<"\n取初始步长为"<<h0<<"时,采用进退法得到的区间两端点,分别是:"<<x1<<"\t"<<x3<<endl<<endl;
}

⌨️ 快捷键说明

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