- ベストアンサー
連立一次方程式における正のみの解
連立一次方程式を掃き出し法で解いているのですが、負の値が出てしまって困っています。 物理的には正の値しか出ないはずのものを計算しているので。 解に正の値しか持たなくさせる方法はないでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
要するに、式(条件)の数が変数より多い場合に もっともらしい解を出力したいという事でよいですか? 以前、この問題を調べた時に、共役勾配法が最適という結論に達しました。 https://www.google.co.jp/search?client=ubuntu&channel=fs&q=%E5%A4%89%E6%95%B0%E3%81%AE%E6%95%B0%E3%80%80%E5%BC%8F%E3%81%AE%E6%95%B0%E3%80%80%E9%80%A3%E7%AB%8B%E4%B8%80%E6%AC%A1%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%80%80&ie=utf-8&oe=utf-8&hl=ja#channel=fs&hl=ja&q=%E5%85%B1%E5%BD%B9%E5%8B%BE%E9%85%8D%E6%B3%95%E3%80%80%E9%80%A3%E7%AB%8B%E4%B8%80%E6%AC%A1%E6%96%B9%E7%A8%8B%E5%BC%8F&safe=off ただし、共役勾配法はいろいろと拡張があり、 それぞれに得手不得手があるようなので、 自分の問題に応用できるかどうか調べてから利用することをお勧めします。
その他の回答 (5)
- ibm_111
- ベストアンサー率59% (74/124)
間違えました。 式の数=12 変数の数=1000 だから、変数のほうが多いんですね。 そうしますと、解はパラメータ表示することになって 「解に正の値しか持たなくさせる」という目的は そのパラメータ次第ということになりますが。 それとも、どんなパラメータを持ってきても正になりそうにないので 困っているということですか?
- bgm38489
- ベストアンサー率29% (633/2168)
問題を示してくれないと、答えようがありません。物理的に正の値しか出ないはずの問題を解いてるのであれば、問題・解き方が間違っているか、「この条件からは物理的にありえない負の値が答えとなってしまう。よって、解なし」と言うのが答えかもしれない。
お礼
修正 >ここからどうにかしてもっともらしいa1~a12を得たいのです。 ここからどうにかしてもっともらしいa1~a1000を得たいのです。
補足
a1・f1(1) + a2・f1(2) + … + a1000・f1(1000) = b1 a1・f2(1) + a2・f2(2) + … + a1000・f2(1000) = b2 ・ ・ ・ a1・f12(1) + a2・f12(2) + … + a1000・f12(1000) = b12 という式があり、 未知数 a1 ~ a1000 定数 f1() ~ f12()、 b1~b12(測定値、誤差を含む) となっています。 ここからどうにかしてもっともらしいa1~a12を得たいのです。 今はとりあえず1000を12で割ったところで区切って、A1 ~ A12を定義し、 A1・f1(0 ~ 83) + A2・f1(83 ~ 166) + … + A12・f1(917 ~ 1000) = b1 A1・f2(0 ~ 83) + A2・f2(83 ~ 166) + … + A12・f2(917 ~ 1000) = b2 ・ ・ ・ A1・f12(0 ~ 83) + A2・f12(83 ~ 166) + … + A12・f12(917 ~ 1000) = b12 として式の数と未知数を一致させて連立方程式で解いてみたのですが、負の値は出るし(数学的にはただしのでしょうが)無理やり当てはめたような結果が出てしまって散々でした。 何か良い方法ないでしょうか?
ちょっと反則かもしれませんが、数学ソフトを使って計算してみたらどうでしょうか。
補足
検算して正しいのでプログラムミスではないです
- alice_44
- ベストアンサー率44% (2109/4759)
(1) 正でも何でも好きな解をひと組好きに作る。 (2) その解が満たす方程式をでっち上げる。 (3) 方程式を入れ換える。 この手法が使えないケースでは、 出てきた解を信じるか、計算ミスを探すしかない。
- Tacosan
- ベストアンサー率23% (3656/15482)
そもそも数値が間違っている という可能性は無視していいんですか? 例えば ・数値を入れる場所を間違えた ・(計測値を使って計算しているとして) 計測を間違えた という可能性は考えられる. あるいは, 「数値が間違っている」というわけではないけど ・計測値の誤差の影響 という状況だってあり得る. もちろん ・計算を間違える ということも不可能ではない.
補足
たしかにそのとおりです。 誤差を含んでいます。 今の結果は誤差を含めて無理やり当てはめたような感じになっています。 誤差の影響を最小にした結果を求めたいと考えています。
お礼
ありがとうございます。 私も共役勾配法に行き着いたのでさっそく実装して試してみました。 逆問題になっているので、良い評価関数を考えるのが難しく、まだ満足行く解にはなっていませんが。