87.c

来自「计算概论阅读材料」· C语言 代码 · 共 31 行

C
31
字号
#include <stdio.h>#include <math.h>double efroot(f,x1,x2) double x1,x2,(*f)(double x);{	double x,y1,y2,y;	y1=(*f)(x1);	y2=(*f)(x2);	if(fabs(y1)<1e-6) return x1;	if(fabs(y2)<1e-6) return x2;	if(y1*y2>=0){		printf("same sign");return 0;	}	do{		x=0.5*(x1+x2);		y=(*f)(x);		if(y*y1<0){x2=x;y2=y;}		else {x1=x;	y1=y;}		}while(fabs(x1-x2)>1e-6&&fabs(y)>1e-6);	return x;}double fpoly1(double x){ return (x-1)*(x-2)*(x-3);}double fpoly2(double x){ return (x+1)*(x+2)*(x+3);}void main(void){	double x;	x=efroot(fpoly1,4.5,0.5);	printf("x=%lf\n",x);	x=efroot(fpoly2,-1.5,-2.5);	printf("x=%lf\n",x);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?