6-3 用二分法解方程 (20 分)
用二分法编写一个求解各次一元方程方程在给定区间解的函数,用该函数来求下列三个方程在区间[1.0, 4.0]上的解.
(1) x
2
−5=0
(2) x
3
−5=0
(3) sinx=0
要求:编写的函数要能判断在给定区间上是否有解,如果有解按照二分法进行求解,如果无解函数返回一个实数值-32768作为无解的标志。
函数接口定义:
double bisection(double (*f)(),double a,double b)
其中 参数f是一个指向函数的指针变量。参数 a 和b是解区间的两个端点
裁判测试程序样例:
#include <stdio.h>
#include <math.h>
double quadratic(double x) /一个一元二次函数f/
{
return xx-5;
}
double cubic(double x) /一个一元三次函数f/
{
return xxx-5;
}
/ 你编写的二分法解方程的函数放在这里 */
int main()
{
double x;
double a,b;
scanf("%lf%lf",&a,&b); //输入解区间左右端点的值
x=bisection(quadratic,a,b); //解一元二次方程
printf("%.3f\n",x);
x=bisection(cubic,a,b); //解一元三次方程
printf("%.3f\n",x);
x=bisection(sin,a,b); //求解方程sinx=0
printf("%.3f\n",x);
return 0;
}
输入样例1:
1.0 4.0
结尾无空行
输出样例2:
2.236
1.710
3.142
结尾无空行
输入样例2:
4.0 6.0
结尾无空行
输出样例2:
-32768.000
-32768.000
-32768.000
结尾无空行