求解一个数的立方根(想不懂都难)
也不开学,只能自己找点事情干了。O(∩_∩)O
虽然周六还有一场考试,周五还有一个Presentation,周四还有一下午的实验,周三还有一上午的课,可是,我 都 不 想 干 ~
又不会做什么大事情,只能做点小题目来觉得自己没有闲着,干了大事情,难搞。/(ㄒoㄒ)/~~
牛客做题的第一天,只写了两道题,还看了别人的思路,脑子不在状态,写不出来自己的代码/(ㄒoㄒ)/~~
【前面这一大段废话是两周前写的,现在才来干正事,我真是个废物】
思路一:库函数
函数 pow(x,y) 是计算 x 的 y 次方,所以,令 y=1/3 即可求数 x 的立方根。
思路二:二分法
public static double getCubeRoot(double input)
{if(input==0||input==1||input==-1)return input;else{double min = 0;double max = input;double mid = 0;// 注意,这里的精度要提高一点,否则某些测试用例无法通过while ((max - min) > 0.001) {mid = (max + min) / 2;if (mid * mid * mid > input)max = mid;else if (mid * mid * mid < input)min = mid;elsereturn mid;}return max;//这种情况是:在满足精确度的条件下无精确值,选择max作为近似值来返回。//同样也可以选择min作为近似值来返回}
}
我觉着这个代码还是很简单的,主要是理解二分法的思想:
在这里,是先把立方根的范围锁定在0-x(x是输入的值)。
mid=(min+max)/2;
然后让 mid 连续三次乘,结果为 y
然后比较 y 与 input 的关系。
如果y 大于 input 时,max=mid,范围缩小了一半;
如果y 小于 input 时,min=mid,范围缩也小了一半;
如果y 等于 input 时,代表 mid 就是数 input 的立方根,可直接返回。
思路三:牛顿迭代法
首先要先了解牛顿迭代法是什么:
假如输入 a ,求数 a 的立方根,那么 x^3-a=0 这个方程的解就是我们所求的。
而方程 f(x) 的牛顿迭代格式为:
所以,所求方程的牛顿迭代公式为:
了解了牛顿迭代法的内容,我们就可以来写代码了。
public static void main(String[] args) {double x,y,x1,x2;Scanner in = new Scanner(System.in);x = in.nextDouble();System.out.println("请手动输入一个初始近似值");x1 = in.nextDouble();in.close();x2= (x/x1/x1+2*x1)/3; //牛顿迭代公式的第一次使用y = fun(x2,x);System.out.printf("%.1f",y);
}
public static double fun(double x2,double x)
{if(Math.abs(x2*x2*x2-x)<0.0000001) //递归的结束条件return x2;elsereturn fun((x/x2/x2+2*x2)/3,x);//牛顿迭代公式的递归使用
}
OK,终于把这个在草稿箱里躺了两周的文章写完了。睡觉咯,晚安。
求解一个数的立方根(想不懂都难)相关推荐
- 这样理解PWM,想不懂都难!
关注.星标公众号,直达精彩内容 PWM有非常广泛的应用,比如直流电机的无极调速,开关电源.逆变器等等.个人认为,要充分理解或掌握模拟电路.且有所突破,很有必要吃透这三个知识点: PWM 电感 纹波 P ...
- 450g吐司烘烤温度_解决这24个问题,吐司面包想失败都难!
原标题:解决这24个问题,吐司面包想失败都难! 制作吐司 对于烘焙人来说 是再基础不过的操作 但很多人都会发现 吐司看似简单 真正动起手来却小问题不断 前段时间网上流行的段子 所以今天我们就来一个问答 ...
- 服务器发送了一个意外的数据包 received 3_肝不好,身体会发出3个信号求救,每天吃1物,肝想不好都难!...
原标题:肝不好,身体会发出3个信号求救,每天吃1物,肝想不好都难! 随着现代生活水平提高,人们很多坏习惯都出来了,熬夜.酗酒.都给肝脏造成了一定的负担,因为本是我们人体最重要的解毒器官,由于大家&qu ...
- icmp报文_用侦察兵的故事趣讲ICMP和Ping,看完想忘都难!
无论是在宿舍,还是在办公室,或者运维一个数据中心,我们常常会遇到网络不通的问题.那台机器明明就在那里,你甚至都可以通过机器的终端连上去看.它看着好好的,可是就是连不上去,究竟是哪里出了问题呢? ICM ...
- 硬盘安装工具cgi_300元固态硬盘,INTEL洋垃圾1PB写入之后,寿命依然100%想死都难...
本文的意义不是评测,也不是SHOW,更不是分享. 只是跟大家聊聊天儿. 比如,同样价格,洋垃圾和全新产品,哪个更好? 一,INTEL SATA接口洋垃圾老皇帝S3700 VS 最新64层TLC的545 ...
- 身为程序员的你一定要学会Python这个神操作,会这个想单身都难
女朋友在外地我一直在琢磨怎么去关心她,怎么样让她觉得时时刻刻都陪在她的身边,所以我就默默的学会了这个神操作,时时刻刻我都能关注到她 让她觉得满满的爱 这次的这个项目,弄了好几天,主要在tkinter上 ...
- 倒车入库技巧图解,不想过关都难!----fwqlzz love is for ever
经过了一番理论实战,现在终于到了可以上车"摸车"的环节了,但是小编提醒大家可别高兴太早哦,因为科目二难点有很多的哦,其中最难的要数倒车入库了吧!别害怕,今天小编就给大家来详细的讲解 ...
- 学会这十五招,斗地主想输都难
1.将手上的牌打成单双不过(单双不过指人家不管打单还是双都是你大).单双不过很重要,要多考虑.如对A.2.单 自己上手,如打对A,是错误的.应该打单,因为可排除对方用对2接打对A后全把对.连.三带打完 ...
- 计算机哪部分坏了导致开机慢6,为什么电脑开机慢反应也慢?排查完这6点,系统速度想慢都难...
电脑或者笔记本使用的时间长了之后,普遍会出现开机慢.反应慢这些情况,对于电脑高手来说,这些都是毛毛雨,但是大部分用户都是电脑这方面的技术小白,对此就显得一筹莫展,只能将就使用着. 事实上,这类问题的处 ...
最新文章
- 如何评价马云和马斯克在世界人工智能大会的对话?
- 20170208--正则表达式
- 【实战 Ids4】║ 控制台密码模式搭配Ocelot网关
- Android之 ListView滑动时不加载图片
- 使用vmstat和iostat命令进行Linux性能监控
- 我参与的一个项目的继续总结:经验篇
- Python使用ffmpeg下载m3u8拼接为视频
- 【转】马拉松式学习与技术人员的成长性
- 小米怎么设置语音识别权限 | 手游网游页游攻略大全
- android常用窗口动画,android 自定义dialog,窗口动画,
- 一个简单的通用序列数据结构
- Springboot - 构建基于XML交互的Restful应用程序
- 手撸一个外卖点餐系统后台,可以写上简历的实战项目!
- WireShark的过滤语法
- 翻译图片中文字的网站
- java卡牌游戏详解
- 天翼云linux远程密码不对,天翼云主机远程连接
- 认知世界(1)--学与思
- Android导航组件Navigation从入门到精通
- 图形 1.4 PC手机图形API介绍