HOME > JavaScript

JavaScript

JavaScriptでニュートン法

ここでは1変数の場合を考えます.下記の関数の最小値を求めることとします.

f(x) = x^4-6x^3+5x^2+4x+1

また,上記の関数のグラフは以下になります.

Graph of f(x)

ニュートン法によって最小値を求めてみます.しかし,注意しなければならないことは,この関数には3つの極値が存在していることです.

ここでは,簡単にニュートン法を説明します.Davidson and MacKinnon (2004, pp. 228-234) の説明を参考にしました.

初期値x(0)周りでの2次のテイラー展開によって関数ƒ(x)の近似を求めると

Second-Order Taylor Expantion

となります.

このƒ(x)の近似のxに関する最小化の1階条件は

FOC

となります(ƒ(x)の近似をxで微分してイコール0とおく).

これをxについて解き,それをx(1)とすると

Iteration

が得られます.

この反復回数の指標をjとして一般化すれば

Iteration

となります.

これを反復して得られた収束解は,ƒ(x)のxに関する最小化の1階条件ƒ'(x)=0を満たしています.つまり,上式において,x*=x(j+1)=x(j)が満たされるとき,ƒ'(x*)=0を意味しています(極大値ならばƒ''(x*)<0,極小値ならばƒ''(x*)>0).よって,この収束解は関数ƒ(x)の最小値であるかもしれません.もし関数ƒ(x)が厳密な凸関数であるならば,最小値が得られます.しかし,この例では図からも明らかなように,それが満たされていません.よって,初期値によっては最小値が求められなくなってしまいます(極大値の可能性もあります).

実際に,JavaScriptを使ってニュートン法により収束する解を求めてみます.

なお,収束判定として

f'(x)*f'(x)/f''(x) 1e-12

を使用しています.ここで,ε=1e-12としています.また,最大反復回数は100回までに制限してあります.

以下のフォーム「初期値」に好きな値を入れてください.「計算」ボタンを押すと反復計算が行われ,計算結果が現れます.

【ニュートン法による数値解析の一例】
初期値:  x(0) =
反復回数:  j =
収束した解:  x* =
関数の値:  ƒ(x*) =
反復計算(xの値)

初期値によって収束する点が違うことがわかります(1の周辺の値では極大値に収束します).ゆえに,ニュートン法を使用する時は,厳密な凸関数を証明できない場合,初期値によって最小値が得られないことがあります.その場合には,様々な初期値を試して結果を確認する必要があります.

(注)ブラウザによってはうまくJavascriptがうまく動かないかもしれません.

【作成したJavaScriptのプログラム】: newtons_method.txt

【参考文献】

  • Davidson, Russell and James G. MacKinnon (2004) Econometirc Theory and Method: Oxford: Oxford University Press.

【JavaScriptの参考WebPage】

(Uploaded: 2010年11月20日, Last Updated: 2010年11月20日)  ページ上部へ移動

2地点間の距離

緯度,経度より2点間の距離を求めることができます.以下の入力フォームに,注意書きに従ってデータを入力してください.

【2地点間の距離】
出発点 到着点
緯度
経度
単位
※注意 【データの入力の仕方】
 緯度:dd.mmss(北緯はプラス,南緯はマイナス)
 経度:ddd.mmss(東経はプラス,西経はマイナス)
 dが度,mが分,sが秒を表します(省略すると0).
 十進法の場合も度以下は小数点で入力します.
初期値はJR三ノ宮駅からJR大阪駅の緯度経度(十進法)です.
Vincenty Formulaを使用しています.
計算結果

【作成したJavaScriptのプログラム】: distance.txt

【参考Webページ】

国土地理院の地図閲覧サービス「ウォッちず」より,緯度経度の検索ができます.JR三ノ宮駅とJR大阪駅の緯度経度はこのWebサイトより検索しました.

国土地理院測地部のWebページで,緯度経度より2点間の距離を求めることができます.「便利なプログラム・データ」>「測量計算」>「距離と方位角の計算」の順にアクセスしてください.

都市間の距離を大量に求める必要がありましたので,自分用に距離を求めるプログラムをOxで作成しました.ここに掲載されているのは,それをJavascriptに書き換えたものです.距離の計算方法に関して,英語のWikipediaに大圏距離(great-circle distance)に関する記事があります.

(Uploaded: 2011年03月31日, Last Updated: 2015年09月07日)  ページ上部へ移動

Excelの表をTeXの表に変換

Excelの表をTeXの表に変換するjavascriptのコードを作成しました.詳細はTeX: Excelの表をTeXの表に変換を確認してください.

上段のテキストエリアにExcelの表をコピー・ペーストしてから「変換」ボタンを押すと,下段のテキストエリアにTeX用の表形式に変換されて現れます.後はTeXソースファイルにコピー・ペーストして使用して下さい.

Excelの表
TeXの表

【作成したJavaScriptのプログラム】: excel2tex.txt

(Uploaded: 2014年01月14日, Last Updated: 2015年09月26日)  ページ上部へ移動

一様乱数

連続確率変数Xが区間(a, b)の一様分布に従うとき,その確率密度関数は以下のようになります.

PDF of U(a, b)
【一様乱数の発生】
最小値:  a =
最大値:  b =
数:  n =
生成した乱数

【作成したJavaScriptのプログラム】: rand_uniform.txt

【参考文献】

  • Tanizaki, Hisashi (2004) Computational Methods in Statistics and Econometrics: New York: Marcel Dekker.

(Uploaded: 2010年11月22日, Last Updated: 2011年02月04日)  ページ上部へ移動

正規乱数

連続確率変数Xが平均μ,分散σ2の正規分布に従うとき,その確率密度関数は以下のようになります.

PDF of N(mu, sigma^2)

正規乱数を発生させるには,ボックス・ミューラー法(Box-Muller transformation)を用います.この方法は,2つの独立な一様分布に従う確率変数を用います.

詳細はTanizaki (2004)を参照してください.

【正規乱数の発生】
平均:  μ =
分散:  σ2 =
数:  n =
生成した乱数

【作成したJavaScriptのプログラム】: rand_normal.txt

【参考文献】

  • Tanizaki, Hisashi (2004) Computational Methods in Statistics and Econometrics: New York: Marcel Dekker.

(Uploaded: 2010年11月22日, Last Updated: 2011年01月18日)  ページ上部へ移動

指数乱数

連続確率変数Xが正のパラメータβの指数分布に従うとき,その確率密度関数は以下のようになります.

PDF of Exp(beta)

ここで,βはscale parameterを表します.

連続確率変数Uが,区間(0,1)で一様分布に従うとき,以下の変数変換を用いることによって正のパラメータβの指数乱数を発生させることができます.

Transformation

詳細はTanizaki (2004)を参照してください.

【指数乱数の発生】
パラメータ:  β = > 0
数:  n =
生成した乱数

【作成したJavaScriptのプログラム】: rand_exp.txt

【参考文献】

  • Tanizaki, Hisashi (2004) Computational Methods in Statistics and Econometrics: New York: Marcel Dekker.

(Uploaded: 2010年11月22日, Last Updated: 2011年02月04日)  ページ上部へ移動

ガンマ乱数

連続確率変数Xがそれぞれ正のパラメータ(α, β)のガンマ分布に従うとき,その確率密度関数は以下のようになります.

PDF of Gamma(alpha, beta)
【ガンマ乱数の発生】
パラメータ:  α = > 0
パラメータ:  β = > 0
数:  n =
生成した乱数

【作成したJavaScriptのプログラム】: rand_gamma.txt

【参考文献】

  • Tanizaki, Hisashi (2004) Computational Methods in Statistics and Econometrics: New York: Marcel Dekker.
  • Tanizaki, Hisashi (2008) "A Simple Gamma Random Number Generator for Arbitrary Shape Parameters," Economics Bulletin 3(7), pp. 1-10.

(Uploaded: 2010年11月22日, Last Updated: 2011年02月04日)  ページ上部へ移動

(Uploaded: 2011年02月22日, Last Updated: 2011年02月22日)  ページ上部へ移動