Python 学習:Solve(Findroot)

2014-03-18 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での、blogramのランクインカテゴリは、
2、3、1、1、2、 0、0、0、0、1(38)で、換算ポイント 57pt 。
「Python」昨日昼、2位にアップした。
・-・ - -・

さて、本文。

ランク・アップしたと云う訳けではないが「Python の学習」を再開。

前記事(2014-03-16):
Python 学習:Python 学習:sprintf 相当
に続いて、更なる Python の学習。


昨年(2013-09-05)「R言語」絡みで、
Solve と、Findroot(続)
と、その元(2013-08-18)の記事:
Solve と、Findroot
を書いた。

これに対応して、「Python」ではどうする?


先ずは、
当該記事から、・・・・・

最初の、「R」プログラムの例として、
  ・・・・・
    ・・・・・
     連立方程式の解
     A・x = b なる形の x についての連立方程式の解は
     関数 solve() を使って解く事が出来る。
    ・・・・・
  と云うことで、
    a <- matrix(c(0,1,2,3,4,5,6,7,9), 3, 3 )   #      3y + 6z = 1
    b <- matrix(c(1,0,-2 ) )           #    x + 4y + 7z = 0
    solve( a, b )                 #   2x + 5y + 9z = -2
  とすると、
        [,1]
  [1, ] -2.333333
  [2, ] 2.333333
  [3, ] -1.000000
  と、
    x, y, z
  が求まる。
  ・・・・・
と書いた。


これを、Python でやると、・・・

「3元1次連立方程式の求解」は、「NumPy」だけで出来る。

import numpy as np

A = np.array([ [0,3,6],[1,4,7],[2,5,9] ]) # 係数行列:左から右を先に
b = np.array([1,0,-2]) # 右辺
x = np.linalg.solve( A, b )
print x # [-2.33333333, 2.33333333, -1. ]

の様に、「numpy.linalg.solve」で出来た。


次は、これまでの記事には無いもの。

問題は、・・・

  10*cos(x) = exp(y)
  y = sqrt(x)

の様な連立方程式!

これは、どうする???
「SciPy」パッケージの「optimize」モジュールの中に、関数がある。

いろいろあったが、
取り敢えず、
「broyden1」:Broyden's 1st Jacobian approximation
でやってみた。

import scipy.optimize

def F(xy): # xy : リスト/アレイ
x=xy[0]; y=xy[1]
return( [ 10*cos(x)-exp(y), y-sqrt(x) ] )

xx = scipy.optimize.broyden1( F, [0,0], f_tol=1e-14 )
# # 第2引数:Initial guess
# # f_tol 規定値は、1e-6
print xx # [ 1.25868213 1.12191003 ]

良さそうですネ。


更なるPython の学習か?



見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140220,21
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク