解在【-1,2】之间吧
#include "stdio.h"
#include "math.h"
double fun(double x)
{
return sin(x)+x
}
int main()
{
double low=-1,up=2,mid=(low+up)/橘慧2
while(up-low>1e-6)
{
if(fun(mid)>0)up=mid
else if(fun(mid)<0)low=mid
else break
mid=(low+up)/2
}
printf("%.4lf\n",mid)
return 0
}
5(1-e^(-x))=x5-5e^(-x)=x
-5e^(-x)=x-5
画图改清,可以观察出
y=-5e^(-x)这个值是恒小于0的
y=x-5在x=6这个点是大于0的毕纤
当X取-1时
-5e<-6
所以解必定在[-1,6]这个区间里面
我们可以二分.
求解
#include<stdio.h>
#include<math.h>
const double EPS=1.0e-8
int main()
{
double high=6,low=-1,mid,t
int text=100// 确定二分次数.大一核数前些准确一些的
while(text--)
{
mid=(low+high)/2//取中点
t=(5*(1-exp(-mid))-mid)
if(t>0)//大于0,说明x太小了
low=mid
else high=mid
}
printf("x=%lf\n",low)
printf("验证:5*(1-e^(-%lf))=%lf",low,5*(1-exp(-low)))
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)