重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
已知y=f(x)函数的零点就是f(x)=0的根。
我们提供的服务有:网站建设、网站设计、微信公众号开发、网站优化、网站认证、郁南ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的郁南网站制作公司
函数零点的求法:
1,可以利用二分法求近似解。给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下:
1 确定区间[a,b],验证f(a)·f(b)0,给定精确度ξ.
2 求区间(a,b)的中点c.
3 计算f(c).
(1) 若f(c)=0,则c就是函数的零点;
(2) 若f(a)·f(c)0,则令b=c;
(3) 若f(c)·f(b)0,则令a=c.
(4) 判断是否达到精确度ξ:即若|a-b|ξ,则得到零点近似值a(或b),否则重复2-4.
2、利用图像法求零点。①、一般步骤:令f(x)=0,解f(x)=0,找图像与X轴的交点;
②、图像法:把函数图像画出来,找两个函数图像的交点。
#include stdio.h
#include math.h
double fun_math(double);
int main(void)
{
/* 根据函数可知Y是关于x的一个递增函数 */
/* 先判断输入Y时,X在(0,1)时是否有解 */
double Y;
double X=0 ,big_x=1.0,small_x=0,tmp_X=1;
unsigned int tmp=0;
printf("Please enter Y:");
scanf("%lf",Y);
if(fun_math(1) = Y fun_math(0) = Y)
{
while(tmp_X != X)
{
X =(big_x + small_x)/2;
if(fun_math(X)==Y) break;
if(fun_math(X)Y) big_x = X;
else small_x = X;
tmp_X = X ;
X =(big_x + small_x)/2;
}
printf("X = %.6lf",X);
}
else printf("while Y=%lf, X(0,1) on results\n",Y);
return 0;
}
#includestdio.h
#includemath.h
typedef double(*fun)(double xx);//函数指针
#define e 0.000001 //误差
void eff(double a,double b,fun hs)//二分法
{int i=0;
while(fabs(hs(a)-hs(b))efabs(a-b)e){i++;
if(hs(a)*hs((b+a)/2)0){
a=(a+b)/2;
printf("迭代第%d次:\t%f\n",i,a);
}
else {
b=(a+b)/2;
printf("迭代第%d次:\t%f\n",i,b);
}
}
}
double hs1(double xx)//函数f(x)=x^3+x^2-3x-3
{return xx*xx*xx+xx*xx-3*xx-3;}
double hs2(double xx)//函数f(x)=lnx+x
{return log(xx)+xx;}
void main()
{
printf("用二分法求方程x^3+x^2-3x-3=0在1.5附近的根\n");
eff(1.0,2.0,hs1);
printf("用二分法求方程lnx+x在0.5附近的根\n");
eff(0.0,1.0,hs2);
}