GSL Shell 学習:Solve(Findroot)2変数関数版

2017-06-23 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
以前(2017-06-19)の記事「GSL Shell 学習:Solve(Findroot)」では、

“講義資料”「非線型方程式の数値計算法」の、
4 ニュートン法(Newton's method)”を使った。

今回は、
“講義資料”「非線型方程式の数値計算法」の、
“8 付録”に載っている
8.2 非線形連立方程式の実数解(2元の場合)」に挑戦。


キモは、資料の 式(30) ですね。

  ・・・・・
  ・・・・・
  ・・・ つぎの連立方程式を満たせばよい.
  式(28)と (29)の左辺をゼロとおき式を整理すれば
    ・・・ 式(30)
  となる.この連立方程式を解いて,~ を求める.~ から,次の近似解は
    ・・・・・
  となる.これが,非線形連立方程式の漸化式である.
  ・・・・・
  ・・・・・


つまり、

  求めたい方程式(2つ)と、それの偏微分関数(4つ)と、初期推定値(2つ)

で始まり、

  漸化式を順次計算し、収束を判定して、

終了する。

と云うこと。


ここで、式(30) を解くには、
昨年(2016-02-02)の記事「GSL Shell 学習:matrix.solve( A, b )
で書いた方式ですね。

なお、
式(30) で求める値は、次の値ではなくて、次の値との差分ですネ。


それで、
2年前(2015-11-03)の記事「Python 学習:連立方程式を解く」で書いた、
  ・・・・・
  ・・・・・
  例えば、
    2 * x**2 + 3 * y**2 = 10
    y = 4 * x - 1
  の様な2元2次連立方程式を解くとしたら、・・・・・
  ・・・・・
  ・・・・・
この2元2次連立方程式を題材に、コード化してみた。

----- test_blog_2219.gsl

f = |x,y| 2*x^2 + 3*y^2 - 10 -- 対象関数 2つ
g = |x,y| y - 4*x - 1

dfx = |x,y| 4*x -- 偏導関数 4つ
dfy = |x,y| 6*y
dgx = |x,y| -4
dgy = |x,y| 1

x, y = 1, 1 -- 初期推定値 2つ

---------------------------------
n=0
while true do
A = matrix.def{ {dfx(x,y), dfy(x,y)}, {dgx(x,y), dgy(x,y)} }
b = matrix.vec{ -f(x,y), -g(x,y) }
xy= matrix.solve( A, b ) -- delta x,y
x2, y2 = x+xy[1], y+xy[2]

if xy[1]^2+xy[2]^2 < 10^-16 then break end -- 収束判定
x, y = x2, y2
n=n+1; if n>100 then break end
end

----- 解 と 反復回数:
print( n, x, y ) -- 5, 0.20452221541786, 1.8180888616714

-- 過去ログ では、
-- x, y == 0.204522215417857, 1.81808886167143
出来ました。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


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


170506
関連記事
スポンサーサイト

コメントの投稿

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

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



おきてがみ

最新記事
カレンダー
08 | 2017/09 | 10
- - - - - 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
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

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

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


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

Google Analytics
ブックマーク