不使用库函数sqrt实现求一个数的平方根
2014-08-16 20:46
253 查看
二分法:
牛顿迭代:
double mysqrt(double a) { if(a == 0 ) return 0; double precision = 1.0e-7, start = 0, end = a; if(a < 1) end = 1; while(end - start > precision) { double mid = (start + end) / 2; if( mid == a / mid) return mid; else if(mid > a/mid) end = mid; else start = mid; } return (start + end)/2; }
牛顿迭代:
/* 牛顿法求解 */ #define E 0.0000001 double newton(double number, int *count) //*count 可统计出迭代次数 { double x0 = number; double x1; if(x0<E)return 0; while(true) { (*count)++; x1 = -(x0*x0 - number) / (2 * x0) + x0; //x1 = (x0*x0 + number) / (2 * x0) if(x1 * x1 - number <= E && x1 * x1 - number >= -E) return x1; x0 = x1; } return 0; }
相关文章推荐
- [笔试题] 不使用库函数sqrt实现求一个数的平方根
- 编写SQRT.m文件以实现求一个数的平方根
- [2014创新工场笔试]求一个正数的开方,不能使用库函数sqrt,精度在0.001以内即可
- 求一个非负数的平方根--sqrt实现
- 写一个函数实现数组内容拷贝,要求不能使用库函数
- 将一个字符串逆序(用递归实现不能使用库函数)
- 将一个字符串逆序(用递归实现不能使用库函数)
- 使用 XUL 实现浏览器扩展,第 2 部分: 组建一个跨平台的 Firefox 扩展
- 使用Hibernate 和 Spring 实现一个事务持久层
- 有关打印、收藏等的JS代码(打印等主要使用了一个IE组件来实现)
- 使用事务与锁,实现一个用户取过的数据不被其他用户取到
- 使用事务与锁,实现一个用户取过的数据不被其他用户取到
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份
- 使用UDP实现一个时钟服务器
- 使用AJAX和J2EE实现一个网上会议室系统
- 使用事务与锁,实现一个用户取过的数据不被其他用户取到
- 写了一个ASP.Net2.0中使用"客户端回调"实现无刷新例子
- 有关打印、收藏等的JS代码(打印等主要使用了一个IE组件来实现)
- 一个openlaszlo使用flash的共享对象实现保存客户端信息的例子
- 使用cvsnt与wincvs实现cvs的架设(最近笔者想架设一个版本管理器,现在仍然在测试中)