• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:非線形連立方程式の解)

非線形連立方程式の解法と数値的な求め方について教えてください

このQ&Aのポイント
  • 非線形連立方程式の解法とは解が存在する条件や数値的な求め方について教えてください。
  • エクセルのソルバーを使用して非線形連立方程式を解こうとしましたが、解が得られませんでした。初期値の設定が悪いために収束しないのかどうか判断できません。
  • この方程式に解がある場合、数値的に求める方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • inara1
  • ベストアンサー率78% (652/834)
回答No.2

Mapleという数式処理ソフトで解いたところ、以下の解が得られました。 x=-2.293319988,y=-0.1348692361 解がこの1つだけなのかを以下のようにして確かめてみました。 12171060/exp((0.03+x)/y)+4847040/exp((0.06+x)/y)+762696/exp((0.09+x)/y)-1=0 --- (1) 13523400/exp((0.02+x)/y)+5385600/exp((0.04+x)/y)+847440/exp((0.06+x)/y)-1=0 --- (2) 式(1)を x について解くと x=-0.09+ln(12171060*exp(0.03/y)^2+4847040*exp(0.03/y)+762696)*y となるので、これを式(2)に代入すると、y に関する以下の方程式が得られます。 13523400*exp(-0.01*(-7+100*ln(12171060*exp(0.06/y)+4847040*exp(0.03/y)+762696)*y)/y)+5385600*exp(-0.05*(-1+20*ln(12171060*exp(0.06/y)+4847040*exp(0.03/y)+762696)*y)/y)+847440*exp(-0.01*(-3+100*ln(12171060*exp(0.06/y)+4847040*exp(0.03/y)+762696)*y)/y)-1 = 0 複雑な式ですが、この左辺を f(y) とおけば、この解 y は z = f(y) というグラフとz = 0 との交点になります。 z = f(y)のグラフを描くと、添付図のように、y = -0.1348692361 以外に z = 0 と交点を持たないようなので、ご質問の連立方程式の解は1組だけだと思います。

akamonige_2000
質問者

お礼

御礼が遅れてしまいすみません。 x=の式に変形して無事近似解を求めることができました。 ありがとうございます。

その他の回答 (2)

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.3

数式処理ソフトウェアは嫌いなので、手計算でやってみる。 12171060/e^((0.03+x)/y)+4847040/e^((0.06+x)/y)+762696/e^((0.09+x)/y)-1=0 …(1) 13523400/e^((0.02+x)/y)+5385600/e^((0.04+x)/y)+847440/e^((0.06+x)/y)-1=0 …(2) z = e^(0.01/y), w = e^(x/y) で置換すると、 12171060 z^3 + 4847040 z^6 + 762696 z^9 = w …(1') 13523400 z^2 + 5385600 z^4 + 847440 z^6 = w …(2') w を消去して、396 z^2 f(z) = 0 …(3) ただし f(z) = 1926 z^7 + 10100 z^5 - 13600 z^2 + 30735 z - 34150. (3) を満たす z (ただし z>0) を求めればいい。 z>0 での f(z) の挙動を調べる。 f'(z) = 13482 z^6 + 50500 z^4 - 27200 z + 30735 から、 0<z≦1 のとき、 f'(z) ≧ 13482 z^6 + 50500 z^4 - 27200 + 30735    = 13482 z^6 + 50500 z^4 + 3535    > 0. 1<z のとき、 f'(z) > 13482 z^6 + 50500 z^4 - 27200 z^4 + 30735    = 13482 z^6 + 23300 z^4 + 30735    > 0. で、結局、z>0 のとき f'(z) > 0. f(0) = -34150 < 0, lim[z→+∞]f(z) = +∞ と併せると、 z>0 の範囲での f(z) = 0 の解は 1 個であることが解る。 よって、同じ範囲での (3) の解 z も 1 個。 この z に対して、z = e^(0.01/y) より y = 0.01/(log z) が決まり、 また (2') より w>0 だから、 w = e^(x/y) より x = y log w も決まる。 近似解を求めるには、f(z) = 0 に対してニュートン法を使うとよい。 初期値 z = 1 から (次のz) = z - f(z)/f'(z) で漸化すると、 3~4回の漸化で z ≒ 1.065… であることが解る。 この部分は、エクセルでもやってくれると思う。 z の真値が比較的 1 に近いことが災いして、解法によっては 数値解が求まりにくいのかもしれない。z ≒ 1 と丸めてしまうと、 上記の解法で y = 0.01/(log z) の計算に問題が生ずるから。

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.1

z=exp(-0.01/y), w=exp(x/y) で置換すると、 (1) は w=(zの9次多項式)、 (2) は w=(zの6次多項式) と変形できる。 w を消去すれば z の 9 次方程式となる。 9 次関数の増減表を書いて、z>0 の範囲に解が あるかどうかを確認するのは、難しくないはず。

関連するQ&A