![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
X : 未知の n×m 実行列 (2 <= m < n)
A : 既知の m×m 実正則行列(m次正則行列)
と置くとき,
X = e(X) A …(1)
が成り立つことがわかっています.但し,e(X)は,Xの各要素xをその指数関数exp(x)で置き換えたn×m 実行列を表すこととします.式(1)の右辺はe(X)とAの積です.
このとき,式(1)をXについて解きたいと考えています.恐らく,代数的に解くことは無理で,数値解法(数値アルゴリズム)を利用するほかないと思います.
この問題の場合,どのような数値解法が効率的でしょうか?
数値解法に疎いので,アドバイスを頂ければ嬉しいです.
No.1ベストアンサー
- 回答日時:
Y(X) = X - e(X) A
とYを定義すると、Yが0行列になるようなXが解と言えるので、
f:R^(mn)∋Y→R
f(Y)= Σ{(yij)^2}
(Yの各成分を2乗したものの、総和)
を評価関数として最急降下法は使えますし、簡単です。もっと効率的なものだと非線形共役勾配法(←アルゴリズムは知らないので使えるか不明。名前的に使えそう(笑))、ニュートン法、などが使えると思います。ただ、これより効率のいい方法があるのかも知れません。あくまで、最適化は少しかじりましたが、非線形方程式の解法を勉強したわけではない私の知りうる範囲です。
勉強するところから始めるなら最急降下法がもっとも効率いいです。
早速,貴重なアドバイスを頂き,ありがとうございます。大変参考になりました。
関数f(Y)の最小化によって式(1)を解く方法を,実装できました(勉強を兼ねて最急降下法を使いたかったのですが,今回は時間がないため,統計ソフトRに実装されていた準ニュートン法を使いました)。
そこで,Aを乱数で作り,式(1)を解く数値実験を繰り返し行ったところ,以下のように観察されました。
○ 方程式(1)には,Xの解がある場合とない場合がある。
○ Xが複数の解をもつ場合(初期値によって数値解が異なる場合)もある。
○ Xの解には,(下記の例のように)全ての行ベクトルが同じものと,2種類の行ベクトルから成るものがある。
なぜこのような結果になったのか,理解することが,次の課題です。以下は数値解の一例です。
<例>
N = 5, M = 3,
A =
-0.7145957 0.1991183 0.4051587
-0.3763429 -0.6322557 0.3075774
-0.7828631 -0.6872320 -0.1921799
の場合,Xの数値解は初期値を変えても1つしか見つからず,
X =
-1.188371 -0.9125817 0.04576733
-1.188370 -0.9125825 0.04576654
-1.188371 -0.9125815 0.04576673
-1.188371 -0.9125817 0.04576708
-1.188371 -0.9125827 0.04576738
でした.このXに対するf(Y) = 6e-12
以上,報告させて頂きます。長くなってすみません。
重ねて,ありがとうございました。
No.7
- 回答日時:
2×2 行列 A の蛇足。
「逐次代入」だと複数解をうまくつかめず。
Newton ならアッという間に収束するので、初期値を振れば見つかります。
(EXP(X1) を e1 などと略記)
a11e1 + a12e2 - x1 = y1
a21e1 + a22e2 - x2 = y2
↓ 微分
(a11-1)e1*dx1 + a12e2*dx2 = dy1
a21e1*dx1 + (a22-1)e2*dx2 = dy2
で勘定。(スプレッドシート / シート関数のみ使用。y1, y2 →0 )
一例だけでも。
|0.15 0.10|
|0.10 0.20| = A
↓ 数回で収束。
{x1, x2} = {0.3779, 0.4640} & {1.514, 2.119}
さらに具体例を示して頂き,ありがとうございます。
ニュートン法,準ニュートン法のように,微分を用いた最適化法でも,初期値を振れば,複数の解を見つけることができるのですね。
数回で収束とは速いですね!
No.6
- 回答日時:
#2の者です。
>いくつ含まれるかは,準ニュートン法における初期値に依存すると
>考えられます。
そうですね。解に関する情報があれば初期値の設定が楽になり
希望の解が得られやすくなります。
>"X()=零行列"という表現は,"X=零行列"という意味でしょうか。
そのとおりです。括弧()は無い方が分かりやすかったですね。
>また,この例でe(X)*Aは5×3行列なので,行ベクトルは5個かと
>存じます。3つとされているのは,列ベクトルのことでしょうか。
すいません、記入ミスです。5つの行ベクトルですね。
統計ソフトRで答えを出しておられるのでどうかと思いましたが、
Excel Solverも結構簡単に最適解を求めることが出来ますので
それのご紹介のつもりでした。
No.5
- 回答日時:
とても多次元化まで見通せませんけど。
まずは、2×2 行列 A から。>A : 既知の m×m 実正則行列(m次正則行列)
・非正則でも解が存在する。
一例。
|0.1 0.1|
|0.1 0.1|
これは、一次元における x = 0.2e^(x) と同じ解をもつ。
実際、2×2 で「逐次代入」していくと収束し、一次元と一致。
(自明だが)
2次元の場合に拡張して頂き,ありがとうございます.
Aが正則でなくても解は存在するのですね.
Aが正則であるという条件は,私が直面した場面では満たされるので,念のためと思って質問の文章に含めた条件です.
挙げて頂いた例を,質問の文章における,n = 1, m = 2の場合の一例と捉えて,代数的に確認させて頂きました。
X = (x1, x2) と置くと,
e(X) A = (e^x1, e^x2) A = 0.1 (e^x1 + e^x2, e^x1 + e^x2)
より,方程式(1)⇔
(x1, x2) = 0.1 (e^x1 + e^x2, e^x1 + e^x2) …(1')
方程式 : x = 0.2 e^(x)の片方の解をxsと置くとき,
xs = 0.2 e^(xs) = 0.1 (e^xs + e^xs) だから,
X = (x1, x2) = (xs, xs) は確かに式(1')を満たす.
No.4
- 回答日時:
1 次元の蛇足。
>ただし解があれば 2点(二重根はダブルカウント)なので、両方向(x→y, y→x)から攻めます。
これは、0<a≦1/e の場合でしたね。a<0 なら解は一つ。
ご丁寧にありがとうございます.以下のように,確認できました.
g(x) = x - a*e^x と置くと,
g'(x) = 1 - a*e^x
g''(x) = - a*e^x
I) a > 0 の場合
○ g'(x)は単調減少関数.x = log(1/a)のときg'(x) = 0となり,g(x)は極大かつ最大の値log(1/a) - 1を取る.
○ x→-∞のときg(x)→-∞
○ x→+∞のときg(x)→-∞
以上より,方程式(2) : g(x) = 0の解の存在条件はlog(1/a) - 1 >=0 つまり 0 < a <= 1/e(等号成立時のみ二重根)
II) a <= 0 の場合
○ x > 0 ⇒ g(x) > 0より,区間(0,-∞]にg(x)=0の解はない.g'(x) > 0よりg(x)は単調増加関数であり,区間(-∞,0]におけるg(x)の最大値はg(0) = - a (>= 0).
○ x→-∞のときg(x)→-∞
以上より,方程式(2) : g(x) = 0の解は1つ.
No.3
- 回答日時:
迂遠ながら、1 次元の場合から。
y = a*e^x …(2)
の不動点 y = x を求めるには、「逐次代入法」が安直。
収束は Newton 法より遅いけど、計算式は単純。
ただし解があれば 2点(二重根はダブルカウント)なので、両方向(x→y, y→x)から攻めます。
多次元に拡張するには?
貴重な回答を頂き,ありがとうございます。
方程式(1)は,右辺が与える写像の不動点を求める方程式と捉えられるのですね!気づきませんでした。
逐次代入法についても,思い出すことができました。
No.2
- 回答日時:
>代数的に解くことは無理で,数値解法(数値アルゴリズム)を利用す
>るほかないと思います.
そのとおりと思います。
非線形の連立方程式なので、既に皆さんが言われるような解法で
解くのが普通でしょう。物理的な意味を考慮すると効率的な解法が
あるのかも知れませんが当方には分かりませんね。
ということで、提示された例をExcel Solverで解いて見ました。
見掛けは15個の変数の連立方程式ですが、実際は3変数の
連立方程式が5組あるのと同等なので、行列X()の1行の3個の変数
x11,x12,x13について解いた結果は以下のとおりです。
x11=-1.188371126
x12=-0.912582511
x13=0.045767108
質問者様の結果に一致してます。
因みに、ソルバーの解法は準ニュートン法に指定してます。
尚、質問者様の考察について簡単に言及させていただきます。
>○ Xの解には,(下記の例のように)全ての行ベクトルが同じもの
> と,2種類の行ベクトルから成るものがある。
この例では、X()=零行列のとき、e(X)*Aの3つの行ベクトルは同一に
なりますので、同一の解を持つことは容易に予想されますね。
物理的な意味は当方には分かりませんが偶然とは思えません。
Excel Solverは非線形方程式でもちょっと解くには手軽で便利です。
以上ご参考まで。
貴重なアドバイスを頂き,また計算の再現までして頂き,ありがとうございます。とても参考になりました。Excel Solverは,便利そうですね。
> 見掛けは15個の変数の連立方程式ですが、実際は3変数の
> 連立方程式が5組あるのと同等なので
私が見落としていた,重要なポイントかと存じます。方程式(1)は,m次元行ベクトルxに関する方程式:
x = e(x) A …(2)
を,n組まとめて表現したものに過ぎないですね。
従って,方程式(2)がs個の解を持つならば,方程式(1)の解Xには,高々s個の異なる行ベクトルが含まれることになります。いくつ含まれるかは,準ニュートン法における初期値に依存すると考えられます。
ところで,頂いたコメントうちの一文:
> この例では、X()=零行列のとき、e(X)*Aの3つの行ベクトルは同一に
> なりますので、同一の解を持つことは容易に予想されますね。
について,"X()=零行列"という表現は,"X=零行列"という意味でしょうか。また,この例でe(X)*Aは5×3行列なので,行ベクトルは5個かと存じます。3つとされているのは,列ベクトルのことでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで合計値を基にデータを均...
-
適正解と最適解
-
解の範囲
-
複数の品目での単価と全体の合...
-
解なし≠解はない
-
16の4乗根は±2ではない!?
-
微分の重解条件は公式として使...
-
解法を教えてください!
-
aの値に関係なくとよく問題で見...
-
CONSISTENCYとは?
-
一枚の板から何枚取れるか?
-
数学II 三次方程式 x^3-5x^2+ax...
-
微分方程式で、分母=0の場合は...
-
なんで4次方程式f(x)=0がx=2を...
-
x^y=y^x (x>y)を満たす整数解は...
-
3次関数と直線が接する場合、...
-
定数係数以外の2階常微分方程...
-
2つの式の対称性について
-
xyzの値の範囲
-
「この解は問題にあう」中学2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで合計値を基にデータを均...
-
tanX=Xの解
-
解なし≠解はない
-
複数の品目での単価と全体の合...
-
適正解と最適解
-
16の4乗根は±2ではない!?
-
つぎのステートメントはあって...
-
解に3つ以上±や∓がある時複号...
-
微分の重解条件は公式として使...
-
3次方程式の定数の範囲の問題で...
-
数学の質問です。 2つの2次方程...
-
微分方程式 定常解について・・・
-
数学についてです 「 aを定数と...
-
3次関数と1次関数が接するとき
-
数学I 二次方程式について次の...
-
必要条件、、十分条件、必要十...
-
行列の問題
-
三角関数
-
cos x = 0の解の書き方について
-
y''+ 2y'+2y= xe^(-2x)の特殊解...
おすすめ情報