1174 - C语言6.22
时间限制 : 1 秒
内存限制 : 32 MB
用二分法求以下方程在(-10, 10)之间的根:
![]()
保证此函数在以上区间中是单调递增的。
题目输入
无
题目输出
输出二分法求出的根,保留4位小数。
请注意行尾输出换行。
输入/输出样例
输入格式
无
输出格式
2.0000
C语言解答
#include <stdio.h> #include <math.h> int main() { float l, r, mid, val; int time; l = -10; r = 10; for (time = 1;time <= 50;time++) { mid = (l + r) * 0.5; val = 2 * mid * mid * mid - 4 * mid * mid + 3 * mid - 6; if (val < 0) l = mid; else r = mid; } printf("%.4f\n", l); return 0; }
C++解答
#include <stdio.h> #include <math.h> int main() { float l, r, mid, val; int time; l = -10; r = 10; for (time = 1;time <= 50;time++) { mid = (l + r) * 0.5; val = 2 * mid * mid * mid - 4 * mid * mid + 3 * mid - 6; if (val < 0) l = mid; else r = mid; } printf("%.4f\n", l); return 0; }
Java解答
public class Main { /** * @param args */ public static double qiuzhi( double x){ return 2 *x*x*x -4*x*x + 3*x - 6; } public static void main(String[] args) { // TODO Auto-generated method stub //求 2 *x*x*x -4*x*x + 3*x - 6 = 0 double shang ,xia ,zhong ; shang = 10; xia = -10 ; zhong = 0 ; do{ zhong = (shang+xia) /2; if( qiuzhi(shang ) * qiuzhi(zhong) <= 0 ) { xia = zhong; } else if( qiuzhi(xia)* qiuzhi(zhong) <= 0 ) { shang = zhong; } }while( Math.abs(shang-xia) >=1e-5 ); System.out.printf("%.4f\n",zhong); } }