• 締切済み

LAPACKとは?

行列の対角化をする時、lapackを使うということはよく聞きますがそもそもlapackとは何なのかよくわかりません。また、インストールを含め 実際windows上で使うにはどのような手順を踏めば良いのでしょうか? サイトのURLでも構いませんので、どなたか教えて下さい。

みんなの回答

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  下記サイトをご参照下さい。   http://www-tph.cheme.kyoto-u.ac.jp/~ryoichi/lec/CP/2004/chap4-4.html   フリーの演算ライブラリのようです。 では。

関連するQ&A

  • MATLABのmexでLAPACKを使う方法

    MATLABのmexで、LAPACKを使いたいのですが、 サイバーネットのページを見ても良くわからず、 困っています。 逆行列の計算方法で、とある方法を思いついたので、 試したいのですが、m-fileでは遅くなってしまうので、 mexで作りたいのです。 そこで、LAPACKにすでにあるものは利用したいのですが、 どのようにしたらよいか、わからないのです。。。 WindowsでCLAPACKを使う方法がわかればそれでも良いのですが・・・ (Unix, Linuxは使っていません) よろしくお願いします。

  • 逆行列の値を求める問題です

    3次正方行列001        020        300 の逆行列を求めてください。 この場合、「対角行列の逆行列は、各成分の逆数になる」は使えないですよね? そもそも対角行列ではないですし。答えは 001/3  01/20  100

  • 実対称行列の対角化に関する理屈が正しいか判断願います。

    実対称行列の対角化に関する理屈が正しいか判断願います。 (3 3 1) (3 9 -1) (1 -1 1)の実対称行列を対角化します。 固有方程式を作り、サラス式で展開すると固有値は0と(13±√(57))/2となります。 ここまでは、数学カテゴリの回答者の皆さまに確認いただいています。 ここからが疑問です。 そもそもこの行列は実対称行列であって固有値はすべて実数である、つまり、適当な直行行列で固有値を対角成分とする対角行列に変換できることが保証されているのだから、固有値を適当に対角に並べた行列が対角行列となる。 解は 1行目((13-√(57))/2 0 0) 2行目(0 (13+√(57))/2 0) 3行目(0 0 0) となる。 という考え方はどうでしょうか? 判断をお願いします。

  • 行列の対角化について

    行列Aが与えられていてその行列の固有値、固有ベクトルを求め、Aを対角化せよという問題があったとして、その問題を解くときに まず固有値を求め、固有ベクトルを求めるところまではいいんですが、 対角化するというときに固有ベクトルから行列Pを求め、P-1AP = 対角行列という風にすると思うんですが、この場合P-1APは実際にP-1を求めて計算する必要があるんでしょうか? はじめから対角行列であるということがわかっているように普通に書いてもよいんでしょうか?

  • 特異値分解の求め方を教えてください。

    4×5行列Aの特異値分解を求めています。 手順の中で まずAを上2重対角行列に変形することができました。 そのときにAの中に 2×2行列 B=(2√5 4√5  0   8√5) となりました。 このBを特異値分解して B=VDU(U、Vは直交行列、Dは対角行列)としたいのですが、できません。LR法を用いているのですがうまくできません。教えてください。

  • フォートランでコンパイルできません。

    コンピュータ初心者ですが、ウィンドウズ上で、フォートランとlapackを使おうと、cygwinをインストールし、さらに、ホームページ、 http://www.kkaneko.com/rinkou/cygwin/atlas.html にしたがってATLASというのもインストールしました(したつもりです)。 しかし、 f77 -llapack -lblas ファイル名 とすると、 undefined reference to `_zheevx_' collect2:ld returned 1 exit status (zheevxとは行列の対角化をするlapackのサブルーチン)となってしまい、コンパイルできません。 エラーメッセージなどは出てこず、 ls /usr/atlas/lib とすると、 libatlas.a libcblas.a libf77blas.a liblapack.a と出てくるので、正しくインストールできているように思えたのですが、どこに原因があってどうすればうまくコンパイルできるのでしょうか。上記のホームページ上の記述も、configure や make が何をやっていてなぜ必要な操作なのかよくわかっていない初心者です。このような場合にどうやって解決したらいいのかわからないので、ここで質問致しました。何卒よろしくお願い致します。

  • 固有値

    この問題がまったく何を言っているのかわかりません。。固有値は|A-λE│=0の固有値方程式を解いて、固有値λを求めればいいんですよね?参考書などを見れば言葉で書いてあるだけで詳しい解きかたが書いていません。どうかできるだけ計算過程も詳しく教えてください。できれば(1)と(2)だけでも結構です。お願いします。 行列Aの固有値と対角化を以下の手順で考えていこう。    0 1 0  ( 1 0 0 )    0 0 0 (1)行列Aの固有値を求めなさい。数量の検算には、固有値の和が行列Aのトレースに等しいことに注意せよ。 (2)固有値に属する固有ベクトルを求めなさい。 (3)行列Aの固有ベクトルを列ベクトルとして任意の順に並べて作った行列Pを示しなさい。 (4)行列Aはこの行列Pによって対角化可能であるかどうかどうか調べなさい。 (5)行列Pの転置行列tPを示し、行列Pとの積tPPを計算しなさい。 (6)行列Aが行列Pによって対角化可能であるならば、対角化されることを示しなさい。

  • 行列・対角化可能の条件は?

    行列で対角化可能の時の条件を教えて下さい。 問題で固有値、固有ベクトル、対角化可能の場合は対角化する正則行列を求めよ、とあります。 3×3行列で固有値が3つ、全て異なる場合は対角化可能。 固有値が1つ(3重解)の場合は対角化不可。 では、固有値が2つの場合は対角化可能と不可の場合がありますが、これはどのようにして見分けるのでしょうか? 例えば    -3 -2 -2 B=[ 2  1  2  ]     2  2  1  の時、固有値は1、-1(重解)ですが対角化可能です。なぜでしょうか?宜しくお願いします。

  • 行列の問題が解けません。計算間違いや思考の間違いがあればご指摘お願いし

    行列の問題が解けません。計算間違いや思考の間違いがあればご指摘お願いします。 行列A [-3 -1 -5] [1  1  1] [3  1  5] を対角化するための行列を求めようとしようとしています。 Aに関しては、Ax=txとおき、tを対角行列、xを固有ベクトルとすると、 (tE-A)x=0と変形できるため、x≠0であるためには、 |tE-A|=0が条件になります。 これを解くと、t=0,1,2が得られます。 3次正方行列において、3つの異なる固有値が得られたため、 行列Aは対角化可能です。(前提1 この前提が間違っている?) P^-1・A・P=B (前提2:Bは対角行列、P,P^-1は正方行列) となるようなPの条件は、 (tE-A)=0を満たす行列の組み合わせ、すなわち、固有値0の時のa(1,1,-1),固有値1の時のb(1,1,-1), 固有値2の時のc(1,0,-1)(※a,b,cは任意の数)の組み合わせです。 ところが、これらの組み合わせでできる、例えば 行列C: -1 1 1 1 1 0 1 -1 -1 は正方行列ではなく(rankC=2)、C≠Pです。 そのため、行列Aを対角化することができません。 前提1,前提2のどちらかが間違っているのでしょうか。 それとも、計算をどこか間違えているのでしょうか。 求めたいのは、行列Aを対角化する行列Pです。 どなたか、よろしくお願いいたします。

  • 行列演算: 固有ベクトルの解法

    現在、対称行列の固有値、固有ベクトルを求めるプログラムを作成し、つい最近完成しました。 しかし、とても使い物にならないプログラムになってしまいました。 理由はとても遅いのです。 解法の手順として、まず固有値を求めてから固有ベクトルを求めるようと考え、入力の対称行列をHouseHolder法により三重対角行列に変換し、それをQR法により対角化してまず固有値を求めました。 固有値を求めることができたので、次に固有ベクトルを求めます。手順として、固有値ごとに入力対称行列の対角成分から固有値を減算した行列をLU分解し、連立一次方程式を解くように固有ベクトルを求めていきます。 この一連の手順で、対称行列の固有値、固有ベクトルを求めることができたのですが、とても時間がかかってしまいます。 ただし、対称行列の固有値を求めるまでの時間はとても高速です。 500×500の行列の固有値、固有ベクトルを求めるのに30分はかかってしまいますが、その中で固有値を求める時間は2秒しかかかりません。 つまり今固有値がわかっている状態で、固有ベクトルを高速に求めたいと考えています。 なにか高速に固有ベクトルを求める方法(アルゴリズム)はあるでしょうか?

専門家に質問してみよう