dポイントプレゼントキャンペーン実施中!

いま、FORTRANで連立方程式を解きたいと思っています。そこで、どんな方程式なら解けるのかということを人に聞いたところ、次の(1)と(2)の場合しか解けないと言われました。

(1)マトリクスの形で表現できるもの
(2)未知数が1つだけのもの

これは本当ですか?(1)と(2)以外の場合は解けないのですか?教えてください。

また、(1)と(2)しか解けない場合でも、そうでない場合でも、その理由を簡単に説明してください。

よろしくお願いいたします。

A 回答 (3件)

(1)(2)のような単純な判断にはなりません。


実数または複素数の場合は、次のように考えます。

[ア]未知数がN個ある。
[イ]独立で、矛盾しない方程式がM個ある。

この場合、M>N なら解けません。M≦Nなら解けます。ただし、M<Nの場合は、不定方程式といって、解の中に任意の値をもつ変数が入ります。
(例)2つの未知数x,y について1つの式 x+y=1 がある場合、解はtを任意の値として x=t, y=1-t

「独立」の意味は、ある方程式から別の方程式を導くことができないということです。たとえば、式1と式2から式3が導ける場合、これらは独立ではありません。
(例)x+y+z=3, x-y-z=1, y+z=1 は独立ではありません。

方程式が矛盾する場合は解けません。
(例)x+y=3, x+z=4, z-y=5 は矛盾しています。

変域が限られている(たとえば整数)場合は、特殊な取り扱いが必要です。また、二次以上の方程式では、解が複数ある場合や、複素数なら解があるが実数では解がないという場合があります。

連立一次方程式で、未知数がN個、方程式がM個 の場合は、係数を行列で表わして、
AX=B
A:係数の行列(N行M列) X:未知数の列ベクトル(N行1列) B:定数項の列ベクトル(M行1列)
と書けます。マトリクスとは行列のことです。

行列式とか、行列の階数というものを計算して、解の有無を判定します。どんな場合に解がありどんな場合に解がないのか、という議論は次のページに詳しく書いてあります。
http://next1.cc.it-hiroshima.ac.jp/MULTIMEDIA/li …

参考URL:http://next1.cc.it-hiroshima.ac.jp/MULTIMEDIA/li …

この回答への補足

詳しく説明していただきありがとうございます。

補足します。私の扱っている連立方程式はM=Nです。したがって、理論上は解けるはずです。ただし、かなり複雑な方程式なので、マトリクスの形にはなりません。このような場合でも解けるのですか?教えてください。

また、回答文中に

>この場合、M>N なら解けません。M≦Nなら解けます。

とありますが、この不等号の向きは逆だと思うのですが、どうなんでしょうか?

よろしくお願いいたします。

補足日時:2005/04/24 02:04
    • good
    • 0

No.1です。

補足への回答です。

不等号の向き(方程式が多すぎると解けない)は合っていますが、いくつか不適当なところがありました。

独立で矛盾しない方程式がN個を超えてあることはありませんので、[イ]を

[イ]独立な方程式がM個ある

と訂正します。
また、最後の部分で

A:係数の行列(N行M列)

は(M行N列)の誤りです。

さて、マトリクスにならないということは、二次以上の方程式であるか、非線形関数を含んでいるということだと思います。これが代数的に解ける見通しがない場合は、反復計算を使うことになります。反復計算にはいろいろな方法があります。たとえば、連立方程式が

x1 = g1(x1,x2,...,xN)
x2 = g2(x1,x2,...,xN)
...
というように表される場合は、適当な初期値x1,x2,...,xNから出発して次のx1,x2,..,xNを求める反復計算が考えられます。これは収束するとは限りません。

また、連立方程式が
f1(x1,x2,..,xN) = b1
f2(x1,x2,...xN) = b2
....
と表わされる場合、x1,x2,...,xNに適当な初期値を入れて求めた値とb1,b2,...,bNの差を残差e1,e2,...,eNとします。

ここで偏微分 ∂f1/∂x1, ∂f1/∂x2, ..., ∂fN/∂xN を求めるとこれらは行列になります。数式で求められない場合は数値微分によります。このとき、
(∂fn/∂x1)s1 + (∂fn/∂x2)s2 + … + (∂fn/∂xN)sN = en (n=1,2,...,N)
となるようなs1,...,sNを偏微係数を係数とする連立一次方程式を解いて求め、xk-sk(k=1,2,...,N)を次の近似値とするニュートン法は、最初にかなり良い近似値を選べば高速高精度です。

解が実数の範囲でないときは、複素数での計算が必要になります。その他、初期値の選び方や精度の検討、反復をどんな条件によりどこで打ち切るかの検討、収束しない場合の判定とエラー表示の検討が必要です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2005/05/09 19:18

FORTRANで解くと言うことなので,多元連立1次方程式に限定すれば,代数的に解けるもの,解が存在するものは全て解けます。



別にマトリックス表現をしなくても,代数解法をそのままプログラミングすれば,解けます。つまり,解き方が分かっている連立方程式は,紙と鉛筆と時間さえあれば筆算で解けますね!そのときの解法をそのままプログラムにすれば解けると言うことです。ここで,マトリックスで表現するというのは,コンピュータの「最も解きやすい形で表現する」,位の意味です。

例えば,有限の元を持つ連立方程式でないと解けません。無限だと,代数的にも解けません。

例えば,多元連立1次方程式というのは,連立の数だけ未知数があります。3元連立方程式には3個の未知数があります。当然,連立の数よりも未知数の多い連立方程式は代数では解けません。これは,FORTRANという言語の問題でなく代数的な問題です。

例えば,0による除算を含む場合は,エラーになって解けません。ただし,0による除算を含まないような形に変形することで,出来るようになります。これも,代数的な問題でしょうね。

例えば,解がない場合。これも「代数的に解けない」に含まれますよね。

結局,代数的に解けないと解けないのです。逆に言うと,代数的に解ければ解けます。

これは,私の経験則ですが,専門的にどうなるかは,別の専門家の意見を聞いてみてください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2005/05/09 19:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!