gpt4 book ai didi

c - 在 C 中寻找局部最大值

转载 作者:太空狗 更新时间:2023-10-29 15:02:55 26 4
gpt4 key购买 nike

我想为这个 Sin(x) 函数找到 0 到 3.1416 区间内的局部最大值。但它始终显示 0 作为最大值。即最大值=0;请帮我找出我的错误。

谢谢。

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#ifndef max
#define max(a,b) ((a)>(b)?(a):(b))
#endif
double f(double x){
return sin(x);
}
double bisection(double a,double b)
{
double Fa=f(a);
double Fb=f(b);
double midpoint=(a+b)/2;
double Fmidpoint=f(midpoint);
while(abs(b-a)>1e-6){
double left=(a+midpoint)/2;
double right=(b+midpoint)/2;
double Fleft=f(left);
double Fright=f(right);
if(midpoint>max(Fleft,Fright)){
a=left;
Fa=Fleft;
b=right;
Fb=Fright;
}
else{
if(Fleft>Fright)
{
b=midpoint;
Fb=Fmidpoint;
midpoint=left;
Fmidpoint=Fleft;
}
else{
a=midpoint;
Fa=Fmidpoint;
midpoint=right;
Fmidpoint=Fright;
}
}
}
return midpoint;
}
int main(){
double maximum;
double rangeleft=0;
double rangeright=3.1416;
maximum=bisection(rangeleft,rangeright);
printf("%d",maximum);
return 0;
}

最佳答案

您在调用 printf 函数时出错。

你不应该在这里使用 %d 格式标识符,因为这意味着 printf 应该输出一个整数,而你的 maximum 变量是 double 。

改用 %f,您的程序将输出正确的 1.5708。

您可以在 Wikipedia 上找到所有可能的 printf 格式标识符的列表。 .

关于c - 在 C 中寻找局部最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6190743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com