java中sqrt函数的详解[通俗易懂]

java中sqrt函数的详解[通俗易懂]一、原理:牛顿迭代法具体解释:牛顿迭代法求平方根那我们怎么用牛顿迭代法呢?首先要明白,牛顿迭代法求的是函数和X轴的交点的横坐标,也就是我们说的根1)那么第一步就是构建曲线了。假设有一个数c,我们求它的平方根x,那么有一个等式,x^2=c;挪到一边就是求f= x^2-c的根x2)带入上面的公式也就是 3)既然是个迭代,那么

大家好,又见面了,我是你们的朋友全栈君。

一、原理:牛顿迭代法

java中sqrt函数的详解[通俗易懂]

具体解释:牛顿迭代法求平方根

那我们怎么用牛顿迭代法呢?

首先要明白,牛顿迭代法求的是函数和X轴的交点的横坐标,也就是我们说的根

1)那么第一步就是构建曲线了。

假设有一个数c,我们求它的平方根x,那么有一个等式,x^2 = c;挪到一边就是求 f =  x^2 – c的根x

2)带入上面的公式

java中sqrt函数的详解[通俗易懂]

也就是 

java中sqrt函数的详解[通俗易懂]

3)既然是个迭代,那么就有迭代的开始和结束了

3.1)迭代的开始,我们可以取c

3.2)迭代的结束,就是和我们预期的很接近。

我们的预期是x^2 = c,那么变一下就是x = c / x 

 只要这两个数很接近,我们就停止迭代。。这就要设计一个精度了,我们设为 1e-7


二、java代码,sqrt函数

	public static double sqrt(double c){
		if(c < 0) return Double.NaN; //既然要开平方,肯定不能为负啊
		double err = 1e-7; //精度
		double x = c; //迭代的初始值
		while(Math.abs(x - c/x) > err){ //没达到精度,那么继续迭代
			x = (x + c/x) / 2.0;
		}
		return x;
	}




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139756.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Vue生成二维码_视频生成二维码软件

    Vue生成二维码_视频生成二维码软件vue有两种生成二维码的方式,qrcode、vue-qr(有icon);

  • 微机原理与接口技术马春燕答案_微机原理与接口技术难不难

    微机原理与接口技术马春燕答案_微机原理与接口技术难不难spContent=课程面向有志于从事计算机过程控制系统设计、或对计算机硬件结构感兴趣的学习者。总体目标是:具备输入/输出接口控制系统软硬件初步设计能力。课程以“家庭安全防盗系统”案例引导,主要介绍:计算机基础知识、微型机基本工作原理、80×86基本指令集、汇编程序设计、存储器接口设计、接口控制技术等。——课程团队课程概述在今天的信息化时代,计算机已成为了人类工作和生活中必不可少的一部分。计算机…

  • NOIP 2012 文化之旅 题解[通俗易懂]

    NOIP 2012 文化之旅 题解[通俗易懂]来水一篇题解,我看洛谷上说的这道题的数据特别水,于是就写了很水的做法。题目:P1078[NOIP2012普及组]文化之旅-洛谷|计算机科学教育新生态(luogu.com.cn)题目背景本题是错题,后来被证明没有靠谱的多项式复杂度的做法。测试数据非常的水,各种玄学做法都可以通过(比如反着扫),不代表算法正确。因此本题题目和数据仅供参考。题目描述有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其

  • Linux面试题整理[通俗易懂]

    Linux面试题整理[通俗易懂]Linux概述什么是LinuxLinux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。什么是Linux内核?Linux系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。系统内存管理 应用

  • ASSERT_VALID和ASSERT宏分析[通俗易懂]

    ASSERT_VALID和ASSERT宏分析[通俗易懂]这个宏都是MFC的调试宏. ASSERT_VALID宏用来在运行时检查一个对象的内部合法性,比如说现在有一个学生对象,我们知道每个学生的年龄一定大于零,若年龄小于零,则该学生对象肯定有问题。事实上,ASSERT_VALID宏就是转化为对象的成员函数Asser

  • webpack(7)webpack使用vue配置「建议收藏」

    webpack(7)webpack使用vue配置「建议收藏」前言如果我们想在webpack中使用vue,就需要在webpack中配置vue配置vue首先,我们需要在项目中安装vue,安装命令如下:npminstallvue–save安装完成后

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号