c - C 的二分 - 初学者的基本 q

标签 c

我正在编写二分法的代码。

我的代码在下面,不知何故循环似乎没有开始。

没有特殊的编译问题。

我认为变量声明/函数原型(prototype)没有任何问题。

有人可以帮我找到真正的问题吗?

最佳答案

标准binary search algo就像:

do {
    m=(a+b)/2; /* Change 1, 4 lines */
    pA=polynomial(a,c3,c2,c1,c0);
    pB=polynomial(b,c3,c2,c1,c0);
    pM=polynomial(m,c3,c2,c1,c0);

    if(pA*pM<0) {
        b=m;
    }
    else {
        a=m; /* Change 2, 1 line */
    }
} while(pM!=0 && fabs(a-b)>0.0001);

您需要有条件地更改 ab 以收敛(更接近退出条件)并重新计算 pApB每次迭代中的 pM

一旦您能让代码按照您的预期工作,我希望您能够弄清楚一些优化范围(避免重新计算)。

关于c - C 的二分 - 初学者的基本 q,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35333245/

相关文章:

CS50 维吉尼亚密码 : Can't fix the problem with the spaces in the plaintext

c++ - Matlab 是否在 MEX/C 代码中阻止或拦截 free()

大数字之间的比较似乎不起作用

c - 结构实现建议

c - 用于在两个数组之间的相同位置上查找相同数字的递归函数

c - 一个进程中放置多少个线程

Eclipse 中的一个包和文件夹结构中可以有多个文件吗?

c - 即使文件不存在,fopen也会返回非空指针

c - 为什么 clang 和 gcc 会产生次优输出(复制结构)以将指针传递给按值结构 arg?

c - 第二个 getpwuid 调用似乎覆盖了旧值