我正在编写二分法的代码。
我的代码在下面,不知何故循环似乎没有开始。
没有特殊的编译问题。
我认为变量声明/函数原型(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);
您需要有条件地更改 a
和 b
以收敛(更接近退出条件)并重新计算 pA
、pB每次迭代中的
和 pM
。
一旦您能让代码按照您的预期工作,我希望您能够弄清楚一些优化范围(避免重新计算)。
关于c - C 的二分 - 初学者的基本 q,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35333245/