c语言解超越方程

c语言解超越方程,第1张

这种东西可以用逼圆胡答近法,不过要知道做宽解的大致范围。给你示范你上面的例子

解在【-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))=x

5-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

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存