书中的问题是要求在误差范围内,求超越方程的解。
思路流程
程序源码:
//找出方程f(x) = 0在允许误差内的解
#include <stdio.h>
#include <math.h>
//允许的最大误差,float最多能表示小数点后6位,注意不要超过表示范围。
const float DEVIATION = 1e-5;
//解所在的可能区间
float x_left = -1.00;
float x_right = 0.00;
float my_function(float x_value);
int is_same_symbol(float x,float y);
int main(void)
{
float x_middle = (x_left + x_right)/2;
static int count_num = 0;
while (fabs(my_function(x_middle)) > DEVIATION)
{
printf("\tx%d = %f...\n", count_num, x_middle);
count_num++;
if (is_same_symbol(my_function(x_middle), my_function(x_right)) == 1)
{
x_right = x_middle; //迭代下一次判断的区间范围!!!
x_middle = (x_middle + x_left) / 2;
continue;
}
else
{
x_