数値微分とは? わかりやすく解説

数値微分(高階関数)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/03/19 03:24 UTC 版)

Standard ML」の記事における「数値微分(高階関数)」の解説

SML関数型言語なので、関数生成し処理することが容易である。これには様々な応用考えられる関数の数値微分もその1つである。以下のSML関数 "d" は与えられ関数 "f" の "x" における数値微分を計算する。 - fun d delta f x = (f (x + delta) - f (x - delta)) / (2.0 * delta); val d = fn : real -> (real -> real) -> real -> real この関数小さい値 "delta" を必要とする。例えば、マシンイプシロン立方根delta として使うことができる。 関数 "d" の型は、型 "(real -> real) -> real -> real" を持つ別の関数へ "real" を与える、というものであるこのように、「関数を、必要な全ての引数より少ない数の引数取り、さらに残り引数を取るような関数返す関数にする」方式カリー化と呼ぶ。これにより、引数一部だけ適用する部分適用という。部分適用のことないし「ある関数カリー化し、それに部分適用したもの返す」ことについて誤ってカリー化」と言及されていることがあるので注意する)こともできるうになる。ここでは "delta" を具体的に指定し、より特化した関数を得る。 - val d = d 1E~8; val d = fn : (real -> real) -> real -> real ここで推論され型を見ると、置換された "d" は第一引数が "real -> real" という型の関数になっている。これを使って例えば x^3-x-1 での x=3 のときの微分値の近似計算する。 - d (fn x => x * x * x - x - 1.0) 3.0; val it = 25.9999996644 : real 正しい値は f'(x) = 3x^2-1 => f'(3) = 27-1 = 26 である。 関数 "d" は別の関数 "f" を引数としてとるので、「高階関数 (higher-order function)」と呼ばれるカリー化高階関数冗長コード排除できる。例えば、ライブラリに a -> b という型の関数必要だとする。しかし、a 型c 型オブジェクト固定的な関係がある場合a * c -> b という型の関数を書くほうが便利である。(a * c -> b) -> (a -> b) という型の高階関数使えば共通点取り除くことができる。これは Adapter パターン一例である。

※この「数値微分(高階関数)」の解説は、「Standard ML」の解説の一部です。
「数値微分(高階関数)」を含む「Standard ML」の記事については、「Standard ML」の概要を参照ください。

ウィキペディア小見出し辞書の「数値微分」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「数値微分」の関連用語

数値微分のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



数値微分のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのStandard ML (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS