• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:3連立非線型方程式の解法プログラム(ニュートン法)を教えてください)

ニュートン法による3連立非線型方程式の解法プログラム

このQ&Aのポイント
  • ニュートン法を使用して3つの未知数の解を求めるためのC言語プログラムを教えてください。
  • 代入法などの手計算では解くのが困難な非線型方程式を、プログラミングによって効率的に解く方法を教えていただきたいです。
  • 具体的な例として、「2*x*x*x + 4*x*y + cos(z) = 0」「x*x*y*z + logz + 2*y = 0」「2*x*x + y*z +z*z*z +4 + e~(-xy) =0」の3連立非線型方程式を解くためのプログラムを教えていただけると助かります。

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

  • ベストアンサー
noname#101087
noname#101087
回答No.3

>F(x, y, z) = x*x*x + y*cos(z) + x*y この F の (xo, yo, zo) における偏微係数 (Fx = ∂F(xo, yo, zo)/∂x など)なら、 数式表示のままで偏微分するのが楽チンかも。  Fx = 3*xo^2 + yo  Fy = cos(zo) + xo  Fz = -yo * sin(zo)  

jamboxy
質問者

お礼

 偏微分ですか。なるほど。。  丁寧にありがとうございます。チャレンジしてみます。

その他の回答 (2)

noname#101087
noname#101087
回答No.2

>.... ニュートン法においては式が長かろうが短かろうが複雑だろうが必ず各式を微分しなければならないということですか?... 一言でいえば "Yes" です。 やりかたはいろいろあるでしょうけど、ともかく変化率が必要。  ・数式の段階で偏微分。  ・近接二点の差から偏微係数(近似値)を勘定。 実は、「解の存在性」のほうが難問なのですが…。 線型関数かそれに近い場合でないと、見極め難いのでしょうね。  

jamboxy
質問者

お礼

 なるほど。。丁寧なお返事ありがとうございます。  あつかましいようですがもう一つ質問させてください。  もし下記のような数式があった場合は、  x*x*x + y*cos(z) + x*y = 0  この式を分解してx,y,zの塊にした後それぞれdx、dy、dz、と微分するのでしょうか?  無知ですいません。よろしくお願いします。

noname#101087
noname#101087
回答No.1

記法を一般化して、  F(x, y, z) = 0  G(x, y, z) = 0  H(x, y, z) = 0 としましょう。 初期近似解 (xo, yo, zo) にて、  F(xo, yo, zo) = ao  G(xo, yo, zo) = bo  H(xo, yo, zo) = co になったとします。 ・Newton ふうの改善解 (x1, y1, z1) = (xo+dx, yo+dy, zo+dz) を求める一法(局所的線形化)を…。 F, G, H の (xo, yo, zo) における偏微係数 (たとえば、∂F/∂x を Fx と書く) を使い、  Fx*dx + Fy*dy + Fz*dz = -ao  Gx*dx + Gy*dy + Gz*dz = -bo  Hx*dx + Hy*dy + Hz*dz = -co と連立させ、その解 (dx, dy, dz) を求める。 (x1, y1, z1) = (xo+dx, yo+dy, zo+dz) が Newton ふうの改善解。  

jamboxy
質問者

お礼

回答ありがとうございます! 上記の回答と言うことは、ニュートン法においては式が長かろうが短かろうが複雑だろうが必ず各式を微分しなければならないということですか? 理解が悪くてすいません。よろしくお願いします。。