0.618法的c语言编程程序?

0.618法的c语言编程程序?,第1张

其次,你的题目是否有问题???得不出结果啊,还有你定义的c怎么不使用。我按照你题目的意思编写了一下,但不出结果(死循环)。

#include<stdio.h>

float f(float x)

{

float y

y=x+10/x

return(y)

}

float abvalue(float a,float b)

{

if(a>b)

return (a-b)

else

return (b-a)

}

void main()

{

float a=2,b=10,c=0.3

float f1,f2,k,a1,b1

do

{

a1=a+0.382*(b-a)//第一步

b1=b+0.618*(b-a)

if(f(a1)>f(b1))//第二步

{

a=a1

b=b

}

else

{

b=b1

a=a

}

}

while(abvalue(a,b)>0.3)

printf("the result k is %f",(b-a)/2)

}

另外,虚机团上产品团购,超级便宜

#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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12189555.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存