C语言:用弦截法求方程 f(x)=x3 |
您所在的位置:网站首页 › 解方程x-30=80步骤 › C语言:用弦截法求方程 f(x)=x3 |
用弦截法求方程 f(x)=x3-5x2+16x-80=0 的根。 1、方法分析 (1) 取两个不同点x1,x2,如果f(x1)和f(x2)符号相反,则(x1,x2)区间内必有一个根。如果f(x1)与f(x2)同符号,则应改变x1,x2,直到f(x1)、f(x2)异号为止。注意x1、x2的值不应差太大,以保证(x1,x2)区间内只有一个根。 (2) 连接(x1,f(x1))和(x2,f(x2))两点,此线(即弦)交x轴于x。 (3) 若f(x)与f(x1)同符号,则根必在(x,x2)区间内,此时将x作为新的x1。如果f(x)与f(x2)同符号,则表示根在(x1,x)区间内,将x作为新的x2。 (4) 重复步骤 (2) 和 (3) , 直到 |f(x)|<ε 为止, ε为一个很小的数, 例如 10-6\. 此时认为 f(x)≈0 。 2、N-S流程图 3、程序实现 #include #include double x,x1,x2; double fx(double x) { double c; c=x*x*x-5*x*x+16*x-80; return(c); } double root(double x1,double x2) { do { double k,b; k=(fx(x1)-fx(x2))/(x1-x2); b=fx(x1)-k*x1; x=-b/k; if(fx(x)*fx(x1)>=0) x1=x; if(fx(x)*fx(x2)>=0) x2=x; }while(fx(x)0.00001); return fx(x); } int main() { while(fx(x1)*fx(x2)>=0) { printf("Input x1,x2:\n"); scanf("%lf,%lf",&x1,&x2); } root(x1,x2); printf("%f\n",x); return 0; } 4、运行结果
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |