前項では、
,
で実験したが、色々な数値に対して実験しよう。
そのため、関数 report_eigen(n,c) を定義する。
例えば
| コマンド ウィンドウから編集開始 |
| » edit report_eigen |
あるいは別途 emacs などのテキスト・エディターを使って、 以下のような関数定義ファイル report_eigen.m を作り、 適切な場所 (例えば、macOS ならば、 ~/Documents/MATLAB など) におく。
| report_eigen.m |
function lambda = report_eigen(n,c) J=diag(ones(n-1,1),1)+diag(ones(n-1,1),-1); A=4*eye(n,n)-J; n2=2*n; Ap=zeros(n2,n2); Ap(1:n,1:n)=A; Ap(n+1:n2,n+1:n2)=c*A; lambda=eig(Ap); |
n=50; c=1; lambda=report_eigen(n,c); plot(1:2*n,lambda)
>> max(lambda)/min(lambda)
ans =
2.9924
>> n=50; c=10; lambda=report_eigen(n,c); plot(1:2*n,lambda)
>> max(lambda)/min(lambda)
ans =
29.9243
>> n=50; c=100; lambda=report_eigen(n,c); plot(1:2*n,lambda)
>> max(lambda)/min(lambda)
ans =
299.2428
>>
|
|
|
|
桂田 祐史