2017-05-02 14 views
0

の電源用のnから無限大にリミットI Dは対角行列であり、D^N、ためLIM(N-> INF)を計算しようとしています:MATLAB:行列

D = [1.0000 0 0 0; 0 0.6730 0 0; 0 0 0.7600 0; 0 0 0 0.7370] 
n = 1 
L = limit(D^n,n,inf) 

これはエラーを返します: 'double'型の入力引数に未定義の関数 'limit'があります。

これは、左上のエントリを除いてほとんどのエントリがゼロになるはずだと確信していますが、これをMATLABの結果とともに表示できる必要があります。私の制限機能に含める必要があるものはありますか?

+0

'limit'は象徴的機能です。 'syms n 'を意味するものではないと確信していますか? L = limit(D^n、1、inf) ' –

+0

シンボリック数学ツールボックスはインストールされていますか? ['limit'](https://uk.mathworks.com/help/symbolic/limit.html?searchHighlight=Limit&s_tid=doc_srchtitle)関数のために必要です... – Wolfie

+0

本当にこれをMATLABに表示する必要はありますか?左上隅を除いて結果がすべてゼロになることは明らかです。左上を除くすべての対角線が1未満の値を持つことがわかります。[n番目のパワーへの対角行列を上げると、各対角線のパワーを個々にパワー 'n 'に残りの行列は0に設定されています](http://cs.ups.edu/~bryans/Current/Spring_2014/Handout_DiagonalMatrixPowers.pdf)。したがって、それらを無限大にすると、 'r^n = 0'ならばゼロ行列が得られます。 <1>とn - >無限大である。 – rayryeng

答えて

0

あなたの問題が対角行列のINF-限界を計算することであるならば、あなたはもっと自分自身の関数を作成し、手動での可能なケースを処理したい:

function Mlim = get_diag_matrix_inf_limit(M) 
    % get the diagonal 
    M_diag = diag(M); 

    % All possible cases 
    I_nan = M_diag <= -1; 
    I_0 = abs(M_diag) < 1; 
    I_1 = M_diag == 1; 
    I_inf = M_diag > 1; 

    % Update diagonal 
    M_diag(I_nan) = nan; 
    M_diag(I_0) = 0; 
    M_diag(I_1) = 1; 
    M_diag(I_inf) = Inf; 

    % Generate new diagonal matrix 
    Mlim = diag(M_diag); 
end