Java下用牛顿迭代法实现开方

 1 import java.util.Scanner;
 2
 3 public class sqrtNewton {
 4     public static void main(String[] args) {
 5         System.out.println("请输入要开方的数:");
 6         Scanner input = new Scanner(System.in);
 7         double num = input.nextDouble();
 8         double e = 0.01F;
 9         sqrt(num, e);
10         num = 2;
11         e = 0.0001F;
12         sqrt(num, e);
13         num = 2;
14         e = 0.00001F;
15         sqrt(num, e);
16     }
17     private static double sqrt(double num, double e) {
18         double gssn = num / 2;
19         double e0;
20         int cnt = 0;
21         do {
22             gssn= (gssn + num / gssn) / 2;
23             e0 = gssn*gssn - num;
24             cnt++;
25             System.out.printf("尝试 %f, 误差: %f\n", gssn, e0);
26         } while (e0 > e);
27
28         System.out.printf("尝试 %d 次, 结果为: %f\n", cnt, gssn);
29         return gssn;
30     }
31 }
时间: 2024-11-05 01:26:01

Java下用牛顿迭代法实现开方的相关文章

【leetcode】【二分 | 牛顿迭代法】69_Sqrt(x)

题目链接:传送门 题目描述: 求Sqrt(x),返回整数值即可. [代码]: 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N = 1e6+10 ; 4 /* 5 int mySqrt ( int x ){ 6 int L = 1 , R = N , mid , ans = 0 ; 7 while ( L <= R ){ 8 mid = ( L + R ) >> 1 ; 9 if( mid <=

@算法 - [email&#160;protected] 牛顿迭代法的应用——多项式开方,对数,指数,三角与幂函数

目录 @0 - 参考资料@ @0.5 - 多项式平方根@ @1 - 牛顿迭代法@ @数学上的定义@ @对于多项式的定义@ @2 - 牛顿迭代的应用@ @重新推导 - 多项式逆元@ @重新推导 - 多项式平方根@ @多项式对数函数@ @多项式指数函数@ @多项式幂函数@ @多项式三角函数@ @3 - 一些参考代码@(留坑待填) @4 - 算法应用@(留坑待填) @0 - 参考资料@ Miskcoo's Space 的讲解 Picks 的讲解 @0.5 - 多项式平方根@ 已知一个多项式 \(A(x

141. Sqrt(x)【牛顿迭代法求平方根 by java】

Description Implement int sqrt(int x). Compute and return the square root of x. Example sqrt(3) = 1 sqrt(4) = 2 sqrt(5) = 2 sqrt(10) = 3 Challenge O(log(x)) 题意:求给定数的平方根,如果用一般的方法,例如二分法之类的,需要考虑一下int型的范围,别溢出.最好的方法时牛顿迭代法.代码如下: public class Solution { /**

牛顿迭代法求解平方根

牛顿迭代法求解平方根 2015-05-16 10:30 2492人阅读 评论(1) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 一个实例 迭代简介 牛顿迭代法 牛顿迭代法简介 简单推导 泰勒公式推导 延伸与应用 一个实例 //java实现的sqrt类和方法 public class sqrt { public static double sqrt(double n) { if (n<0) return Double.NaN; double err = 1e

蓝桥杯练习系统 矩阵翻硬币 大数,牛顿迭代法 难度:2

http://lx.lanqiao.org/problem.page?gpid=T126 明显,对于一个格子(i,j),设f(i)为i的约数个数,则(i,j)的翻转次数为(f(i)-1)*(f(j)-1)+1, 而只有翻转次数为奇数,也就是f(i),f(j)都为奇数的格子开始才是反面, 又因为f(i)为奇数当且仅当i为完全平方数,所以只需统计n,m中各有多少个完全平方数,然后相乘即可, 也就是sqrt(n)*sqrt(m), 但是因为n,m是大数,必须要用大数方法解决,这里采用了java的Big

51nod 1166 大数开平方(高精度+牛顿迭代法)

分析:直接用二分还是会T,用更快的牛顿迭代法.把问题转化为求x^2-n=0的根,假设解为x0,当前解为x且x^2-n>0,在(x,x^2-n)处作切线,与x轴交点横坐标为新的x,然后迭代即可,比二分法快,但是貌似只能用在凹函数或凸函数上.. java水高精度真是666... 1 import java.io.*; 2 import java.util.*; 3 import java.math.BigInteger; 4 public class Main { 5 public static v

牛顿迭代法(Newton&#39;s Method)

牛顿迭代法(Newton's Method) 简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出.但是,这一方法在牛顿生前并未公开发表. 牛顿法的作用是使用迭代的方法来求解函数方程的根.简单地说,牛顿法就是不断求取切线的过程. 对于形如f(x)=0的方程,首先任意估算一个解x0,再把该估计值代入原方程中.由于一般不会正好选择到正确的解,所以有f(x)=a.这时计算函数在x0处的斜率,和这条斜率与x轴的交点x1. f(x)=0中精确解的意义是,当取得解的时候,函数值为零(即f(x)的

sqrt (x) 牛顿迭代法

参考: 0开方 是 0 1的开方式 1 2的开方式 1.4 3.的开方=(1.4+3/1.4)/2 牛顿迭代法:学习自 http://blog.csdn.net/youwuwei2012/article/details/34075241 public class Solution { public int sqrt(int x) { if(x==0)return 0; double pre=0; double cur=1; while(Math.abs(cur-pre)>0.000001) {

Atitit 迭代法&#160;&#160;“二分法”和“牛顿迭代法&#160;attilax总结

Atitit 迭代法  "二分法"和"牛顿迭代法 attilax总结 1.1. ."二分法"和"牛顿迭代法"属于近似迭代法1 1.2. 直接法(或者称为一次解法),即一次性的快速解决问题,1 1.3. 最常见的迭代法是"二分法 牛顿法.还包括以下算法1 1.4.  二分法(dichotomie)1 1.5. 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method