{"id":5296,"date":"2014-01-07T09:00:52","date_gmt":"2014-01-07T00:00:52","guid":{"rendered":"http:\/\/www.moonmile.net\/blog\/?p=5296"},"modified":"2014-01-06T23:05:47","modified_gmt":"2014-01-06T14:05:47","slug":"f-%e8%a1%8c%e5%88%97%e5%bc%8f%e3%82%92%e8%a8%88%e7%ae%97%e3%81%99%e3%82%8b","status":"publish","type":"post","link":"http:\/\/www.moonmile.net\/blog\/archives\/5296","title":{"rendered":"[F#] \u884c\u5217\u5f0f\u3092\u8a08\u7b97\u3059\u308b"},"content":{"rendered":"<p>\nF# MathProvider \u3060\u3068\u3001\u3042\u3063\u3055\u308a\u3068 MathProvider.LinearAlgebra.inv \u306a\u308b\u95a2\u6570\u304c\u3042\u308b\u306e\u3060\u304c\u3001\u81ea\u4f5c\u3057\u3066\u307f\u308b\u3002\n<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nlet det ( A&#039; : matrix ) =\n    let A = A&#039;.Copy()\n    let n = A.NumCols-1\n    let B = Matrix.identity A.NumCols\n    let mutable det = 1.0\n\n    for k in 0..n do\n        \/\/ akk\u30921\u306b\u3059\u308b\n        let p = A.&#x5B;k,k]\n        det &lt;- det * p\n        for j in 0..n do\n            A.&amp;#91;k,j&amp;#93; &lt;- A.&amp;#91;k,j&amp;#93; \/ p\n            B.&amp;#91;k,j&amp;#93; &lt;- B.&amp;#91;k,j&amp;#93; \/ p\n        \/\/ k\u884c\u4ee5\u5916\u304b\u3089\u5f15\u304f\n        for i in 0..n do\n            if i &lt;&gt; k then\n                let d = A.&#x5B;i,k]\n                for j in 0..n do\n                    A.&#x5B;i,j] &lt;- A.&amp;#91;i,j&amp;#93; - A.&amp;#91;k,j&amp;#93; * d\n                    B.&amp;#91;i,j&amp;#93; &lt;- B.&amp;#91;i,j&amp;#93; - B.&amp;#91;k,j&amp;#93; * d\n    det\n&amp;#91;\/code&amp;#93;\n&lt;p&gt;\n\u9006\u884c\u5217\u306e\u8a08\u7b97\n&lt;a href=&quot;http:\/\/www.asahi-net.or.jp\/~uc3k-ymd\/Lesson\/Section03\/invmat.html&quot;&gt;http:\/\/www.asahi-net.or.jp\/~uc3k-ymd\/Lesson\/Section03\/invmat.html&lt;\/a&gt;\n&lt;\/p&gt;\n&lt;p&gt;\n\u306e\u4e2d\u306b\u3042\u308b Fortran \u306e\u30b3\u30fc\u30c9\u304b\u3089\u64ec\u4f3c\u5199\u3057\u306a\u3093\u3060\u3051\u3069\u3001\u300cdet &lt;- det * p\u300d\u306a\u3068\u3053\u308d\u3067\u3001\u884c\u5217\u5f0f\u3092\u4fdd\u5b58\u3002\u4ed6\u306f\u3044\u3089\u306a\u3044\u306f\u305a\u306a\u3093\u3060\u304c\u3001\u3046\u307e\u304f\u62ec\u308a\u3060\u305b\u306a\u3044\u306e\u3067\u305d\u306e\u307e\u307e\u3067\u3059\u3002\n\u6570\u5b66\u7684\u306b\u306f det A = 0 \u306e\u5834\u5408\u306f\u3001\u9006\u884c\u5217\u304c\u8a08\u7b97\u3067\u304d\u306a\u3044\u306e\u3067\u9023\u7acb\u4e00\u6b21\u65b9\u7a0b\u5f0f\u304c\u89e3\u3051\u306a\u3044\u3053\u3068\u306a\u308b\u306e\u3060\u304c\u3001\u6709\u9650\u8981\u7d20\u6cd5\u306e\u5834\u5408\u306b\u306f\u62d8\u675f\u6761\u4ef6\u3092\u9593\u9055\u3048\u306a\u3044\u9650\u308a\u3001\u9006\u884c\u5217\u306f\u5b58\u5728\u3059\u308b\u306e\u3067\u554f\u984c\u306a\u3057\uff08\u306a\u306f\u305a\uff09\u3002\u3053\u306e\u65b9\u5f0f\u3060\u3068 det \u306e\u8a08\u7b97\u81ea\u4f53\u306b\u9006\u884c\u5217\u306e\u8a08\u7b97\u304c\u542b\u307e\u308c\u3066\u3057\u307e\u3063\u3066\u3044\u308b\u306e\u3067\u672c\u672b\u8ee2\u5012\u3060\u3057\u3001\u8a08\u7b97\u6642\u9593\u3082\u304b\u304b\u3063\u3066\u3057\u307e\u3046\u3002\u306a\u306e\u3067\u3001\u5b9f\u969b\u306b\u306f 0 \u9664\u7b97\u306b\u306a\u3089\u306a\u3051\u308c\u3070\u9006\u884c\u5217\u306e\u8a08\u7b97\u3092\u7d9a\u3051\u308b\u3001\u3068\u3044\u3046\u65b9\u5f0f\u3067\u3088\u3044\u306e\u304b\u3082\u3002\n&lt;\/p&gt;\n&#x5B;code lang=&quot;csharp&quot;]\nlet A = matrix &#x5B;&#x5B;3.0; 1.0;]; \n                &#x5B;2.0; 5.0;]]\n\ndet A\n<\/pre>\n<p>\n\u306a\u611f\u3058\u3067\u8a08\u7b97\u304c\u3067\u304d\u3066\u3001\n<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nval it : float = 13.0\n<\/pre>\n<p>\n\u306e\u7d50\u679c\u304c\u5f97\u3089\u308c\u308b\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>F# MathProvider \u3060\u3068\u3001\u3042\u3063\u3055\u308a\u3068 MathProvider.LinearAlgebra.inv \u306a\u308b\u95a2\u6570\u304c\u3042\u308b\u306e\u3060\u304c\u3001\u81ea\u4f5c\u3057\u3066\u307f\u308b\u3002 let det ( A&#039; : matrix ) = let  &hellip; <a href=\"http:\/\/www.moonmile.net\/blog\/archives\/5296\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[59],"tags":[],"class_list":["post-5296","post","type-post","status-publish","format-standard","hentry","category-f"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/5296","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/comments?post=5296"}],"version-history":[{"count":1,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/5296\/revisions"}],"predecessor-version":[{"id":5297,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/5296\/revisions\/5297"}],"wp:attachment":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/media?parent=5296"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/categories?post=5296"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/tags?post=5296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}