码迷,mamicode.com
首页 > 编程语言 > 详细

C语言 进退法确定极小值区间

时间:2020-05-26 15:11:24      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:语言   指针   cti   turn   pre   while   fun   define   c语言   

#include <stdio.h>

#define F(x)	(3*x*x-8*x+9)

double fun1(double x);
void goAndBackSectionPrint(double x1, double h, double (*f)(double));

int main(void){
	goAndBackSectionPrint(0, 0.1, fun1);
	
	return 0;
}

//进退法打印区间
//x1	搜索初值
//h	搜索步长
//f 	待搜索函数f(x)的指针
void goAndBackSectionPrint(double x1, double h, double (*f)(double)){
	double a1 = x1;
	double y1 = (*f)(a1);	
	double a2 = a1 + h;
	double y2 = f(a2);	
	double a3 = 0;
	double y3 = 0;
	
	if(y2 > y1){
		h = -h;
		a3 = a1;
		y3 = y1;
		
		a1 = a2;
		y1 = y2;
		a2 = a3;
		y2 = y3;
	}

	a3 = a2 + h;
	y3 = f(a3);
	
	while(y3 < y2){
		h = 2*h;
		a1 = a2;
		y1 = y2;
		a2 = a3;
		y2 = y3;
		
		a3 = a2 + h;
		y3 = f(a3);
	}
	
	printf("a1 = %f, y1 = %f.\n", a1, y1);
	printf("a2 = %f, y2 = %f.\n", a2, y2);
	printf("a3 = %f, y3 = %f.\n", a3, y3);
}


double fun1(double x){
	return F(x);
}

C语言 进退法确定极小值区间

标签:语言   指针   cti   turn   pre   while   fun   define   c语言   

原文地址:https://www.cnblogs.com/ritchie0307/p/12964045.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!