#include <stdio.h>

float f(float x) { return 2 * x - 3; // 二次函数 y = 2x - 3 的根为 x = 1.5 }

float root(float x1, float x2) { float mid = (x1 + x2) / 2; // 求中间点 if (f(x1) * f(x2) >= 0) { // 判断是否同号 printf("No root in [%f, %f]\n", x1, x2); return -1; } else if (f(mid) == 0) { // 中间点直接是根 printf("Root found: %f\n", mid); return mid; } else if (f(x1) * f(mid) < 0) { // 根在左区间 return root(x1, mid); } else { // 根在右区间 return root(mid, x2); } }

int main() { float x1 = -10, x2 = 10; root(x1, x2); return 0;

用二分法求方程2在-1010之间的根。二分法的思路:先指定一个区间x1x2如果函数fx在此区间是单调变化可以根据fx1和fx2是否同号来确定fx=0在x1x2区间是否有一个实根。若fx1和fx2不同号则fx=0在x1x2区间必有一个且只有一个实根;若果fx1和fx2同号说明在x1x2区间无实根需要重新改变x1和x2的值。当确定x1x2区间有一个实根后采取二分法将x1x2区间一分为二即求x1和x2的

原文地址: https://www.cveoy.top/t/topic/g91k 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录