时间限制: 1 Sec 内存限制: 128 MB
提交: 3841 解决: 920
[提交][状态][讨论版]
二分法求一个方程根的基本思路是:对于区间[a, b]上连续单调且f(a)∙f(b)<0的函数y=f(x),取[a, b]区间中点x,将区间一分为二,则方程的根必然存在于f(a)或f(b)中与f(x)正负异号的区间,舍去另一半区间,继续依此迭代,直至f(x)的值符合精度要求,则x就是方程在[a, b]区间中根的近似值。
请根据上述二分法,按精度为1E-6的要求求解方程x3-10x2+3x+20=0在指定区间的根:
请补全给出代码中所缺少的代码。
注意:务必按原代码结构提交补全后的代码。
题目代码:(此处代码仅供浏览,修改可直接从此处下载
解的区间范围[a,b]
区间[a,b]内的解,提示:输入输出语句已在main函数中完成
3 10
9.459
#define _CRT_SECURE_NO_WARNINGS 1#include
#include /* 非线性函数原型 */
double f(double x);/* 二分求解函数原型 */
double BinarySearch(double, double);int main()
{double x, a, b;scanf("%lf%lf", &a, &b);if (f(a) * f(b) > 0) /* 此处填空 */{printf("错误,a和b同号!\n");return -1;}x = BinarySearch(a, b); /* 此处填空 */printf("%5.3f\n", x);return 0;
}double f(double x)
{return x * x * x - 10 * x * x + 3 * x + 20.0;
}double BinarySearch(double a, double b)
{double x;x = (a + b) / 2.0;if (x-a < 1E-6) /* 此处填空 */return x;else{if (f(a) * f(x) > 0)return BinarySearch(x, b); /* 此处填空 */elsereturn BinarySearch(a, x); /* 此处填空 */}
}
上一篇:样本于抽样分布(1)-基本概念
下一篇: 四年级写景作文游重庆【最新6篇】