用对分法求解min f(t)=t(t-3),已知初始单谷区间[a,b]=[-3,5],按精度s=0.1计算。用MATLAB编写程序,急要!!!!
答案:1 悬赏:70 手机版
解决时间 2021-05-11 03:25
- 提问者网友:一抹荒凉废墟
- 2021-05-10 23:43
用对分法求解min f(t)=t(t-3),已知初始单谷区间[a,b]=[-3,5],按精度s=0.1计算。用MATLAB编写程序,急要!!!!
最佳答案
- 五星知识达人网友:低血压的长颈鹿
- 2021-05-11 00:18
在网上搜了一下,不知道这个跟你的问题有没有联系,好歹不能让你零答案啊。
黄金分割法:
#
include
<stdio.h>#
include
<math.h>float
d,e,f;void
main
(){printf("请输入目标函数的二次项,一次项,常数项,中间用空格分开\n");scanf("%f
%f
%f",&d,&e,&f);float
fox
(float
x);float
a0,b0,z,a,b,x1,x2,f1,f2,xx;char
k,m;int
n;printf("请输入初始区间a0,b0,收敛精度z,中间用空格分开\n");scanf("%f
%f
%f",&a,&b,&z);a=a0;b=b0;x1=a+0.382*(b-a);f1=fox(x1);x2=a+0.618*(b-a);f2=fox(x2);if(f1<f2)
{n=0;
b=x2;
x2=x1;
f2=f1;
}else
{n=1;
a=x1;
x1=x2;
f1=f2;
}while(fabs((b-a))>z){if(n==0)
{x1=a+0.382*(b-a);
f1=fox(x1);
}else
{x2=a+0.618*(b-a);
f2=fox(x2);
}}if(f1<f2)
{n=0;
b=x2;
x2=x1;
f2=f1;
}else
{n=1;
a=x1;
x1=x2;
f1=f2;
}xx=(a+b)/2;printf("极小点和极小值xx=%f,ff=%f\n",xx,fox(xx));k=getchar();m=getchar();}float
fox(float
x){float
r;
r=d*x*x+e*x+f;
return(r);}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯