2次元連立方程式の解法とは?

このQ&Aのポイント
  • 2次元の連立方程式を解く方法について考えています
  • 具体的には、実対称行列と列ベクトルが与えられた場合の解法を知りたいです
  • 現在考えているアプローチが複雑すぎて行き詰まっています
回答を見る
  • ベストアンサー

2次元の連立方程式 (固有値問題の変形)

いま、取り組んでいる問題が下記の形に帰着できたのですが、 それから先に進まず困っております。 ■問題  A: 2x2 の実対称行列  x, b: 2 次元の列ベクトル。 ただし x の大きさは1.( x・x = 1 )  λ: 実数  A, b が与えられるとき、 A x + b = λ x から、ベクトル x を求めたい。  (λは求まらなくても良い) ■考えたアプローチ  1. b = 0 なら、通常の2次元の固有値問題だがそれとは違う。  2.数式ソフトで力づくで解くと、結果が複雑すぎて利用できない。  3. B = A - λ E として、B の逆行列を C とし、 x = - C b。    x ・ x = 1 から、λを求めて x を算出する、    この方法は、2と同様に表現が複雑すぎて行き詰りました。 実際には、A や b の値が与えられたら、上記の 2 や 3 の方法で、 解いていくしかないのでしょうか。 それとも、もっと、別な見通しの良いアプローチがあれば教えてください。

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

  • ベストアンサー
  • eatern27
  • ベストアンサー率55% (635/1135)
回答No.2

ちゃんと考えてないですが、 A'=PAP^tが対角行列であるような直交行列Pに対して、x'=Px, b'=Pbとでもおいてやれば、 A'x' +b' =λx' x'・x'=1 となるようなx'(とλ)を求める問題に帰着します。 問題としてはAの部分が対角行列になっただけですが、Aが対角行列なら比較的簡単に解けるような気がしますが、いかがでしょうか。

iskw_yj
質問者

お礼

ありがとうございます。 直交行列でベクトルを回転すると、かなり簡単になりますね。 ここから、アプローチ2や3をやってもやっぱりダメでした。 他にも3時間くらい考えていろいろやりましたが、今のところ 良いアイディアは出ていません。 でも、回転したことで、図形で考えることができました。 楕円の大きさが λ で変更されるので、 点 -b' が楕円に乗るように、λを決める、という問題ですね。 解析的な方法はあきらめて、λの値を変えながら 探索で上記の方法でλを決める「妥協」も考えてます。。。。 ただ、もちろん、実際上プログラム可能な 解析的なアプローチがあればベターなので、もう少し考えます。 もし、さらにヒントやアイディアが見つかれば また、教えてください。

その他の回答 (3)

  • eatern27
  • ベストアンサー率55% (635/1135)
回答No.4

あぁ、アプローチ2,3の複雑ってのは計算じゃなくて結果だったんですね。 であればそもそも解そのものが複雑なんですから、計算方法を変えたって同じ結果にたどり着くだけですよね。別のアプローチを考えて何をしたいのでしょう?どうしても解析解が必要だと言うのならその複雑な解で満足するしかありません。 数値解で十分ならばニュートン法や二分法のような簡便な方法でも比較的短時間で十分な精度で方程式の解が出せるんじゃないですかね。

iskw_yj
質問者

お礼

そうですね。結局は自分が何をしたいのか、もう一度考え直してみます。 ただ、数値解を出すのにも、教えていただいたアプローチで、 式を簡単にしてから実施した方がよさそうなので、 教えていただいたことは、役立ちました。 ありがとうございました。

  • ur2c
  • ベストアンサー率63% (264/416)
回答No.3

> 「A や b の値が与えられたときに x を出力する手順」を資料にまとめて説明し、また、プログラムを書こう A, b が数値としてあたえられるのなら、先に示した手順で、できてます。Maxima に不要な所があったので、訂正しておきます。 (%i1) M : matrix([A11-k,A12],[A12,A22-k]); (%i2) c : matrix([-b1],[-b2]); (%i3) x : ratsimp(M^^-1 . c); (%o3) matrix([-(b1*A22-b2*A12-b1*k)/((A11-k)*A22-A12^2-k*A11+k^2)],[(b1*A12-b2*A11+b2*k)/((A11-k)*A22-A12^2-k*A11+k^2)]) (%i4) f : ratsimp(transpose(x).x); あとは A, b の数値を与えて、f = 1 を k について解けば良い。ただし、k が実数になる保証はありません。だから、一般には解がないです。

iskw_yj
質問者

お礼

訂正ありがとう御座います。 参考にさせていただきます。 解がない場合もあるのですね。それは注意したいと思います。

  • ur2c
  • ベストアンサー率63% (264/416)
回答No.1

やりたいこと自体は簡単なので、「結果が複雑すぎて利用できない」という部分が問題なのだろうと思います。なぜ閉形式解が必要なのか、どうなれば利用できるのかなど、実質的な要求仕様がわからないので「閉形式の解を求める限り、複雑になるのはしかたがない」くらいの不毛なことしか言えません。 やってはみましたので、ご参考までに。あなたの計算とほとんど同じでしょうけど。 A x + b = λ x なので k := λ M := A - k I c := -b として M x = c を Maxima で解くと (%i1) M : matrix([A11-k,A12],[A12,A22-k]); (%o1) matrix([A11-k,A12],[A12,A22-k]) (%i2) x : matrix([x1],[x2]); (%o2) matrix([x1],[x2]) (%i3) c : matrix([-b1],[-b2]); (%o3) matrix([-b1],[-b2]) (%i4) s: ratsimp(M^^-1 . c); (%o4) matrix([-(b1*A22-b2*A12-b1*k)/((A11-k)*A22-A12^2-k*A11+k^2)],[(b1*A12-b2*A11+b2*k)/((A11-k)*A22-A12^2-k*A11+k^2)]) これでとりあえず解が求まりました。検算すると (%i5) ratsimp(M . s); (%o5) matrix([-b1],[-b2]) で、合ってます。あとは s の長さが 1 になるように k を調整すれば良い。 (%i6) ratsimp(transpose(s).s); (%o6) 長いので省略 (%i7) solve(%=1,k); ここで << Expression too long to display! >> と言われます。

iskw_yj
質問者

お礼

回答ありがとうございます。 私の要望が不明確ですみません! 具体的には、「A や b の値が与えられたときに x を出力する手順」を 資料にまとめて説明し、また、プログラムを書こうと思っています。 そのための具体的な手順が必要になります。 アプローチ2や3の 「複雑すぎて」 とは、資料化やプログラム化に 利用できない、という意味でした。 私は Wolfram Alpha を使ってみましたが、やっぱり、 Maxima でも同様になりますね。 自分でもう少し考えてみます。。。

関連するQ&A

  • 固有値問題で右辺の一部要素が 0 の場合を解きたい

    通常、固有値問題は、 Ax = λx という形ですが、 右辺の x の一部の要素が 0 の場合を解きたいため、質問いたしました。 【詳細】  A: n x n の実対称行列  x: n 次元の実列ベクトル  y: n 次元の実列ベクトル ただし、0 < m < n として、m 個目までの要素は x と同じだが、それ以降は 0  λ: スカラー変数 として、Aが与えられた場合、  A x = λy の条件で x, y, λ を求めたいです。 【参考】 n x n の単位行列から、m+1 行目以降を0とした行列を B とすると、元の式は、   A x = λ B x と、一般固有値問題の形になり、さらに A に逆行列 (=C) が存在すれば、   C B x = (1/λ) x として、通常の固有値問題に帰着できます。 しかし、よりエレガントな方法があればと思いまして質問いたしました。 なお、今取り組んでいる問題では、n は 3 の倍数で m = 1.5*n です。 この条件に限定していただいても構いません。 「この方面の文献が参考になる」 などのコメントでも結構ですので、 よろしくお願いたします。

  • 3×3行列の固有値と固有ベクトル

    以下の行列Aの固有ベクトルを求めようとしているのですが,解を見つけられないでいます. 2 1 0 1 2 0 0 0 -2 計算を進めた結果,固有値λは3,1,-2となり,λ=3,1に対応する固有ベクトルはそれぞれ[1,1,0]t,[1,-1,0]tとなったのですが,λ=-2の場合で求めた固有ベクトル[1,1,k]t(kは任意の実数)がAx=λxに対応しない値になってしまいます.私の計算に何か問題があるのでしょうか? また,行列Aは対称行列なのでそれぞれの固有ベクトルの内積は0になると思うのですが,固有ベクトルの値が得られないことと何か関係があるのでしょうか? 回答よろしくお願いします.

  • 固有値問題のような問題

    いま、取り組んでいる問題が下記の形に帰着できたのですが、 それから先に進まず困っております。 ■問題  A : 2N x 2N の実対称行列  a(i) : 2 次元の列ベクトル。 i = 1,...,N。 ただし、各 a_i の大きさは1。( a_i ・ a_i = 1 )  a: 2N 次元の列ベクトル。{ a_i | i=1,...N } の 2N 個の要素を縦に並べたもの。  λ(i) : 実数。i = 1,...,N。  添付画像の式が成り立つときに、a(i) を求めたいです。 ■今のアプローチ  今のところ思いつくアプローチは以下のようなものですが、  問題の特性を活かした、もう少し、良い方法は無いかと思っています。  a. a(i) = ( cosθ_i , sinθ_i ) とおいて、 a_i ・ a_i = 1 の制約式を無くして、    N 変数の連立方程式を数値的に探索する。  b.逐次2次計画法による繰り返し計算 c.行列 A を対角化してみましたが、その後、解に繋がりません。 ■補足  可能な限り解析的に求めたいと思っていますが、  無理であれば、もちろん、数値的解法もご提案ください。  もちろん、こんな分野を探してみては? という情報でも構いません。 よろしくお願いします。

  • 行列の固有値、及び直交化問題

    (1)対称行列の固有値は、なぜ実数なのですか? (2)対称行列を対角化する行列は、直交するベクトルで構成された行列に限られるのでしょうか?だとしたら、それはなぜですか?

  • 固有方程式の問題

    A,Bをn次正方行列とし、AとBは共通の固有値を持たない (1) f(x)をAの固有多項式とするとき、f(B)は正則関数であることを示せ。 (2) AX=XBを満たす複素n次正方行列はゼロ行列に限ることを示せ。 という問題です。(1)はなんとなくA,Bが共通の固有値が違うことからf(B)の行列式≠0から示すのかなとおもうのですが、(2)が解りません。 両辺の行列式をとればXは正則でないことは示せるのですが0にしかならないというところまでうまく示せないのです。 そもそも f(B)=(B-λ1*E)(B-λ2*E)…(B-λn*E) ただし各λiはAの固有値 で考えていいんですよね。でも f(B)=det(B*E-A) なのですか? なんだかよくわからなくなってきました。 (2)の考え方と固有方程式に行列を代入したときどううなるかについてどなたかお暇な方お答えください。よろしくお願いします。

  • 対称行列 固有値

    次の2問をお願いします。 (1)Aを2次の対称行列とする。Aの二つの固有値が一致するならばA=λIであることを示せ。 (2)Aを2次の対称行列とする。またλをAの固有値、vベクトルをλに対するAの固有ベクトルとするとき、wベクトル=R(π/2)vベクトルはAのもう一方の固有値に対する固有ベクトルであることを示せ。 A= a b vベクトル=v1 c d v2 と成分表示する。 見づらいと思いますが、よろしくお願いします。

  • 数学の行列(連立一次方程式)の問題です。

    実対称行列Aについて、次の問いに答えよ。ただし、 A= 2 -1 0 -1 3 -1 0 -1 2 である。 λをdet(λI-A)≠0を満たす実数とする。ただし、Iは3×3の単位行列であり、 det(λI-A)は(λI-A)の行列式を表す。ここでベクトルxを一次方程式 (λI-A)x=b の解とする。ただし、 b=(3 -1 1)^T である。(Tは転置の意味である。)このときx^Txが以下の式で表されることを示せ。 x^Tx=3/(λ-1)^2+2/(λ-2)^2+6/(λ-4)^2 という問題です。 私の考えた解法は、 x=(x1 x2 x3)^Tとおき、クラメルの公式をつかってx1、x2、x3をそれぞれ求め、xとし、それを転置したx^Tとを掛け合わせるという方法なのですが、これだと答えが合いません。 どなたかご教授下さい。よろしくお願いいたします。 行列の書き方がわかりづらくてごめんなさい。

  • 固有ベクトルを求める問題

    行列A ( 2 0 0 )    ( 1 3 1 )    ( 0 0 2 ) の固有値と固有ベクトルを求める問題です。 ↓のように解いていきました。 Ax(ベクトルx)=λx(ベクトルx)より |A-λE|=|2-λ 0 0 |     |1 3-λ 1 |    |0 0 2-λ|         =|2-λ 0 0 |     |0 3-λ 1 |    |0 0 2-λ|   =(2-λ)^2(3-λ) =0 ∴λ=2,3 ここまでは、解けたのですが、 λ=2の時の、固有ベクトルを求めようとして、困りました。 λ=2の時 (A-λE)x(ベクトルx) ( 0 0 0 )(x) (0) =( 1 1 1 )(y)=(0) ( 0 0 0 )(z) (0) x+y+z=0 のようになり、方程式が1本しかつくれません。 x:y:zはどうやったらわかりますか? 固有ベクトルを求たいのですが、わかりません。 ちなみに答えは ( 1) ( 0) c1( 0)+ c2( 1) (-1) (-1) でした。 何でこうなるのか教えてください。

  • 固有値

    次の問題で、(1)は固有方程式から解けましたが、(2)以降が解けません。 どなたか回答お願いします。 行列, ベクトルは実数成分で, ||v|| はベクトルvの大きさで、 (1) 行列 A = 3 1 1 1 3 1 1 1 5 の固有値と固有ベクトルを求めよ. ただし, 固有ベクトルは単位ベクトルで, 第一成分は非負 (2) x ∈ R3, x ≠0 ならAx ≠ 0 となることを示せ. (3) x≠ 0 のとき F(x) =Ax/||Ax|| とする. (1) で求めた固有値をλ1, λ2, λ3 (λ1≧b λ2 ≧ λ3), 対応する単位固有ベ クトルをそれぞれe1, e2, e3 とする。a1, a2, a3 ∈ R \ {0} に対し x0 = a1e1 + a2e2 + a3e3, xn+1 = F(xn) (n ≧ 0) で ベクトルの列{xn}∞ n=0 を帰納的に定義する. xn をe1, e2, e3 の一次結合とし て表示し, 係数をa1, a2, a3 で表せ. (4) (3) で与えた{xn}∞ n=0 に対し極限lim n→∞ xn が存在し, A の固有ベクトルになるこ とを示せ. というものです。あと R \ {0}の意味も分かりません。宜しくお願いします。

  • 最適化問題について質問

    xが3次元ベクトル(xは方向を表すベクトルとするのでxのノルムは1です)、またAが3×3の対称行列である時、J=x’Axとします。 このとき、Jを最大にするxはAを固有値分解し、大きい方の固有値に対応する固有ベクトルであるらしいのですが、これが何故かわかりません。 詳しく説明しているサイトでもいいので是非教えてください。