1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

サーバサイド初心者がニュートン法の例題を個人的に解こうとした話

Last updated at Posted at 2019-10-08

いや、待ってめっちゃ数学やん。うふぇぇ苦手なんだよなぁ。。。

ってことでニュートン法についてまずウィキ様から引用します。

ニュートン法

数値解析の分野において、ニュートン法(ニュートンほう、英: Newton's method)またはニュートン・ラフソン法(英: Newton-Raphson method)は、方程式系を数値計算によって解くための反復法による求根アルゴリズムの1つである。対象とする方程式系に対する条件は、領域における微分可能性と2次微分に関する符号だけであり、線型性などは特に要求しない。収束の速さも2次収束なので古くから数値計算で使用されていた。名称はアイザック・ニュートンとジョゼフ・ラフソンに由来する。

やっぱりわかんない。

結局やりたいことは、収束する点を探したいってことと、特定の桁数まで合致するようにif文とfor文を回せってことだと思う。

まず頭の中でどういうアルゴリズムであるべきかを想定する。

xの平方根を求める方法を考える。変数zを使う場合に、10回の試行でどれだけ近づけるかを考える。

一回書いてみっかーヒント見ながら。

package main

import (
	"fmt"
	"math"
)

func Sqrt(x float64) float64 {
	z := float64(1)
	fmt.Println(math.Sqrt(x))
	for i := 0; i < 9; i++{
		z -= (z*z - x) / (2*z)
		}
	return z
}

func main() {
	fmt.Println(Sqrt(2))
}

はい答え。。。

10回の試行で小数点以下16桁まで合うのすげぇ。

まあ、そうか偏差的に計算してるし、そらよっていくよね。1000からzを初めて10回試行で2ケタくらいだし。

おもしろいなぁ

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?