## Project Euler Problem 80-高精度开方-牛顿逼近法 原

BlackJoker

It is well known that if the square root of a natural number is not an integer, then it is irrational. The decimal expansion of such square roots is infinite without any repeating pattern at all.

The square root of two is 1.41421356237309504880..., and the digital sum of the first one hundred decimal digits is 475.

For the first one hundred natural numbers, find the total of the digital sums of the first one hundred decimal digits for all the irrational square roots.

``````// 0.0000001是精度，f是待求根的函数，df是f的导数，x0是初值
public static double newtonMehtod(F f, DF df, double x0) {
double x1 = x0 - f.f(x0) / df.df(x0);
while (Math.abs(x1 - x0) > 0.0000001) {
x0 = x1;
x1 = x0 - f.f(x0) / df.df(x0);
}
return x1;
}
//函数f(x)
public interface F {
double f(double x);
}
//f(x)的导数f'(x)
public interface DF {
double df(double x);
}``````

F和DF的实现类没贴上来。

``````static int prec = 100;
static BigDecimal precE;
static {
String e = "-0.";
for (int i = 0; i < prec; i++) {
e += "0";
}
e += "1";
precE = new BigDecimal(e);
}

public static BigDecimal newtonMehtod(F f, DF df, double x00) {
BigDecimal x0 = BigDecimal.valueOf(x00);
.divide(df.df(x0), BigDecimal.ROUND_HALF_EVEN).negate());
x0 = x1;
.negate());
}
return x1;
}

public interface F {
BigDecimal f(BigDecimal x);
}
public interface DF {
BigDecimal df(BigDecimal x);
}``````

1.4142135623730950488016887242096980785696718
753769480731766797379907324784621070388503875
343276415727350138462309122970249248360558507
372126441214970999358314132226659275055927557
999505011527820605714701095599716059702745345
968620147285174186408891986095523.

### BlackJoker

【牛顿迭代法】 假设方程 在 附近有一个根，那么用以下迭代式子： 依次计算、、、……，那么序列将无限逼近方程的根。 牛顿迭代法的原理很简单，其实是根据f(x)在x0附近的值和斜率，估计f(x...

Nob
2016/02/13
230
0

zhangphil
01/05
0
0
LeetCode：Sqrt(x) - 整数开方

1、题目名称 Sqrt(x)（整数开方） 2、题目地址 https://leetcode.com/problems/sqrtx 3、题目内容 英文：Implement int sqrt(int x). Compute and return the square root of x. 中文：实现函......

2015/08/12
0
0
【数学基础篇】---详解极限与微分学与Jensen 不等式

LHWorldBlog
09/09
0
0
Newton-Raphson切线法解高次方程近似根

Newton-Raphson切线法解高次方程近似根 对于一般的一次，二次方程来说，求解方程的根比较简单。但是对于四次、五次甚至更高次方程，求解方程的f(x)=0的根变得十分困难甚至不可能完成。为此N...

zhangphil
2017/12/27
0
0

redisson提供了基于redis的分布式锁实现方式，本文就尝试了下锁的使用方式。Redisson同时还为分布式锁提供了异步执行的相关方法，第二节执行介绍。 一、可重入锁验证 同一个jvm里面同一线程的...

noob_chr
10分钟前
1
0
CPU性能过剩提升乏力影响未来行业发展吗？

linux-tao
12分钟前
0
0

Java干货分享
29分钟前
5
0
mybatis学习（1）

JDBC连接方式： 1.底层没有使用连接池，操作数据库需要频繁的创建和关闭连接，消耗资源。 2.写原生的JDBC代码在JAVA中，一旦需要修改SQL的话（比如表增加字段），JAVA需要整体重新编译，不利...

4
0

-___-

4
0