#include#includefloat getequation(float x)
{
return x*x-2*x+2
}
void main()
{
float a=0
float b=6
float result = 0
do {
float c=a+0.618*(b-a)
float d=a+b-c
if(fabs(getequation(c)) <fabs(getequation(d)))
{
a=d
result = c
}
else
{
b=c
result = d
}
} while(fabs(getequation(result)) >0.01)
printf("f(a)=a*a-7*a+10\n")
printf("a=%f\n",result)
}
扩展资料
C语言编写程序求最大值
#include<stdio.h>
double Max(double*p,int n)
{
double max=*p
for(int i=0i<ni++)
if(*(p+i)>max)
max=*(p+i)
return max
}
double Min(double *p,int n)
{
double min=*p
for(int i=0i<ni++)
if(*(p+i)<min)
min=*(p+i)
return 闭答答min
}
double Average(double *p,int n)
{
double 轿慧sum=0
for(int i=0i<ni++)
sum+=*(p+i)
return sum/n
}
int main()
{
double a[10]
printf("请输入10个实数:\n")
for(int i=0i<10i++)
scanf("%f"举渣,&a[i])
printf("这10个数中最大值为:%f\n",Max(a,10))
printf("这10个数中最小值为:%f\n",Min(a,10))
printf("这10个数的平均值为:%f\n",Average(a,10))
return 0;
#include<iostream.h>#include<math.h>
/*黄金分割法求最小值者岩键的C++程序,部分变量及函数书写并不规范*/
//δ为题枣亩给精度
int n = (lnδ/ln0.618 + 1) + 1
int i
float f(float ai, float bi)
{
a(i + 1) = ai + 0.618(bi - ai)
return ai + 1
}
float g(float ai, float bi)
{
b(i + 1) = ai + 0.382(bi - ai)
return b(i + 1)
}
float F(float ai, float bi)
{
//题给的f(x)函数式
return
}
float A(float ai, float bi)
{
int i = 1
float result
L: do
{
a(i + 1) = f(float ai, float bi)
b(i + 1) = g(float ai, float bi)
float F1 = F(float ai, float bi)
float F2 = F(float a(i + 1), float b(i + 1))
ai = ai, bi = b(i + 1)
i ++
}while(i <= n &&F1 >= F2)
if(i <n)
{
B(float ai, float bi)
}
else
result = F2
return result
}
float B(float ai, float bi)
{
do
{
a(i + 1) = f(float ai, float bi)
b(i + 1) = g(float ai, float bi)
float F1 = F(float ai, float bi)
float F2 = F(float a(i + 1), float b(i + 1))
ai = a(i + 1), bi = bi
i ++
}while(i <= n &&F1 <= F2)
if(i <n)
{
goto L
}
else
result = F1
return result
}
void main()
{
int i = 1
float A(float ai, float bi)
cout<<首巧"最小值为:"<<result<<endl
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)