前項では、 , で実験したが、色々な数値に対して実験しよう。 そのため、関数 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 >> |
桂田 祐史