comparison src/DLD-FUNCTIONS/eigs.cc @ 12275:35c55d1241c7 release-3-4-x

remove configure checks for ARPACK
author John W. Eaton <jwe@octave.org>
date Fri, 28 Jan 2011 14:05:09 -0500
parents 12df7854fa7c
children 5f203b5bbf98
comparison
equal deleted inserted replaced
12274:9f5d2ef078e8 12275:35c55d1241c7
302 \n\ 302 \n\
303 @seealso{eig, svds}\n\ 303 @seealso{eig, svds}\n\
304 @end deftypefn") 304 @end deftypefn")
305 { 305 {
306 octave_value_list retval; 306 octave_value_list retval;
307 #ifdef HAVE_ARPACK 307
308 int nargin = args.length (); 308 int nargin = args.length ();
309 std::string fcn_name; 309 std::string fcn_name;
310 octave_idx_type n = 0; 310 octave_idx_type n = 0;
311 octave_idx_type k = 6; 311 octave_idx_type k = 6;
312 Complex sigma = 0.; 312 Complex sigma = 0.;
748 nconv, k); 748 nconv, k);
749 } 749 }
750 750
751 if (! fcn_name.empty ()) 751 if (! fcn_name.empty ())
752 clear_function (fcn_name); 752 clear_function (fcn_name);
753 #else
754 error ("eigs: not available in this version of Octave");
755 #endif
756 753
757 return retval; 754 return retval;
758 } 755 }
759 756
760 /* #### SPARSE MATRIX VERSIONS #### */ 757 /* #### SPARSE MATRIX VERSIONS #### */
769 %! d0 = eig (A); 766 %! d0 = eig (A);
770 %! d2 = sort (d0); 767 %! d2 = sort (d0);
771 %! [~, idx] = sort (abs(d0)); 768 %! [~, idx] = sort (abs(d0));
772 %! d0 = d0(idx); 769 %! d0 = d0(idx);
773 %! rand("state", 42); % initialize generator to make eigs behavior reproducible 770 %! rand("state", 42); % initialize generator to make eigs behavior reproducible
774 %!testif HAVE_ARPACK 771 %!test
775 %! d1 = eigs (A, k); 772 %! d1 = eigs (A, k);
776 %! assert (d1, d0(end:-1:(end-k+1)), 1e-11); 773 %! assert (d1, d0(end:-1:(end-k+1)), 1e-11);
777 %!testif HAVE_ARPACK 774 %!test
778 %! d1 = eigs (A,k+1); 775 %! d1 = eigs (A,k+1);
779 %! assert (d1, d0(end:-1:(end-k)),1e-11); 776 %! assert (d1, d0(end:-1:(end-k)),1e-11);
780 %!testif HAVE_ARPACK 777 %!test
781 %! d1 = eigs (A, k, 'lm'); 778 %! d1 = eigs (A, k, 'lm');
782 %! assert (d1, d0(end:-1:(end-k+1)), 1e-11); 779 %! assert (d1, d0(end:-1:(end-k+1)), 1e-11);
783 %!testif HAVE_ARPACK 780 %!test
784 %! d1 = eigs (A, k, 'sm'); 781 %! d1 = eigs (A, k, 'sm');
785 %! assert (d1, d0(k:-1:1), 1e-11); 782 %! assert (d1, d0(k:-1:1), 1e-11);
786 %!testif HAVE_ARPACK 783 %!test
787 %! d1 = eigs (A, k, 'la'); 784 %! d1 = eigs (A, k, 'la');
788 %! assert (d1, d2(end:-1:(end-k+1)), 1e-11); 785 %! assert (d1, d2(end:-1:(end-k+1)), 1e-11);
789 %!testif HAVE_ARPACK 786 %!test
790 %! d1 = eigs (A, k, 'sa'); 787 %! d1 = eigs (A, k, 'sa');
791 %! assert (d1, d2(1:k), 1e-11); 788 %! assert (d1, d2(1:k), 1e-11);
792 %!testif HAVE_ARPACK 789 %!test
793 %! d1 = eigs (A, k, 'be'); 790 %! d1 = eigs (A, k, 'be');
794 %! assert (d1, d2([1:floor(k/2), (end - ceil(k/2) + 1):end]), 1e-11); 791 %! assert (d1, d2([1:floor(k/2), (end - ceil(k/2) + 1):end]), 1e-11);
795 %!testif HAVE_ARPACK 792 %!test
796 %! d1 = eigs (A, k+1, 'be'); 793 %! d1 = eigs (A, k+1, 'be');
797 %! assert (d1, d2([1:floor((k+1)/2), (end - ceil((k+1)/2) + 1):end]), 1e-11); 794 %! assert (d1, d2([1:floor((k+1)/2), (end - ceil((k+1)/2) + 1):end]), 1e-11);
798 %!testif HAVE_ARPACK 795 %!test
799 %! d1 = eigs (A, k, 4.1); 796 %! d1 = eigs (A, k, 4.1);
800 %! [~,idx0] = sort (abs(d0 - 4.1)); 797 %! [~,idx0] = sort (abs(d0 - 4.1));
801 %! [~,idx1] = sort (abs(d1 - 4.1)); 798 %! [~,idx1] = sort (abs(d1 - 4.1));
802 %! assert (d1(idx1), d0(idx0(1:k)), 1e-11); 799 %! assert (d1(idx1), d0(idx0(1:k)), 1e-11);
803 %!testif HAVE_ARPACK 800 %!test
804 %! d1 = eigs(A, speye(n), k, 'lm'); 801 %! d1 = eigs(A, speye(n), k, 'lm');
805 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 802 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
806 %!testif HAVE_ARPACK 803 %!test
807 %! assert (eigs(A,k,4.1), eigs(A,speye(n),k,4.1), 1e-11); 804 %! assert (eigs(A,k,4.1), eigs(A,speye(n),k,4.1), 1e-11);
808 %!testif HAVE_ARPACK 805 %!test
809 %! opts.cholB=true; 806 %! opts.cholB=true;
810 %! d1 = eigs(A, speye(n), k, 'lm', opts); 807 %! d1 = eigs(A, speye(n), k, 'lm', opts);
811 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 808 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
812 %!testif HAVE_ARPACK 809 %!test
813 %! opts.cholB=true; 810 %! opts.cholB=true;
814 %! q = [2:n,1]; 811 %! q = [2:n,1];
815 %! opts.permB=q; 812 %! opts.permB=q;
816 %! d1 = eigs(A, speye(n)(q,q), k, 'lm', opts); 813 %! d1 = eigs(A, speye(n)(q,q), k, 'lm', opts);
817 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 814 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
818 %!testif HAVE_ARPACK 815 %!test
819 %! opts.cholB=true; 816 %! opts.cholB=true;
820 %! d1 = eigs(A, speye(n), k, 4.1, opts); 817 %! d1 = eigs(A, speye(n), k, 4.1, opts);
821 %! assert (abs(d1), eigs(A,k,4.1), 1e-11); 818 %! assert (abs(d1), eigs(A,k,4.1), 1e-11);
822 %!testif HAVE_ARPACK 819 %!test
823 %! opts.cholB=true; 820 %! opts.cholB=true;
824 %! q = [2:n,1]; 821 %! q = [2:n,1];
825 %! opts.permB=q; 822 %! opts.permB=q;
826 %! d1 = eigs(A, speye(n)(q,q), k, 4.1, opts); 823 %! d1 = eigs(A, speye(n)(q,q), k, 4.1, opts);
827 %! assert (abs(d1), eigs(A,k,4.1), 1e-11); 824 %! assert (abs(d1), eigs(A,k,4.1), 1e-11);
828 %!testif HAVE_ARPACK 825 %!test
829 %! assert (eigs(A,k,4.1), eigs(A,speye(n),k,4.1), 1e-11); 826 %! assert (eigs(A,k,4.1), eigs(A,speye(n),k,4.1), 1e-11);
830 %!testif HAVE_ARPACK 827 %!test
831 %! fn = @(x) A * x; 828 %! fn = @(x) A * x;
832 %! opts.issym = 1; opts.isreal = 1; 829 %! opts.issym = 1; opts.isreal = 1;
833 %! d1 = eigs (fn, n, k, 'lm', opts); 830 %! d1 = eigs (fn, n, k, 'lm', opts);
834 %! assert (d1, d0(end:-1:(end-k+1)), 1e-11); 831 %! assert (d1, d0(end:-1:(end-k+1)), 1e-11);
835 %!testif HAVE_ARPACK 832 %!test
836 %! fn = @(x) A \ x; 833 %! fn = @(x) A \ x;
837 %! opts.issym = 1; opts.isreal = 1; 834 %! opts.issym = 1; opts.isreal = 1;
838 %! d1 = eigs (fn, n, k, 'sm', opts); 835 %! d1 = eigs (fn, n, k, 'sm', opts);
839 %! assert (d1, d0(k:-1:1), 1e-11); 836 %! assert (d1, d0(k:-1:1), 1e-11);
840 %!testif HAVE_ARPACK 837 %!test
841 %! fn = @(x) (A - 4.1 * eye(n)) \ x; 838 %! fn = @(x) (A - 4.1 * eye(n)) \ x;
842 %! opts.issym = 1; opts.isreal = 1; 839 %! opts.issym = 1; opts.isreal = 1;
843 %! d1 = eigs (fn, n, k, 4.1, opts); 840 %! d1 = eigs (fn, n, k, 4.1, opts);
844 %! assert (d1, eigs(A,k,4.1), 1e-11); 841 %! assert (d1, eigs(A,k,4.1), 1e-11);
845 %!testif HAVE_ARPACK 842 %!test
846 %! AA = speye (10); 843 %! AA = speye (10);
847 %! fn = @(x) AA * x; 844 %! fn = @(x) AA * x;
848 %! opts.issym = 1; opts.isreal = 1; 845 %! opts.issym = 1; opts.isreal = 1;
849 %! assert (eigs (fn, 10, AA, 3, 'lm', opts), [1; 1; 1],10*eps); 846 %! assert (eigs (fn, 10, AA, 3, 'lm', opts), [1; 1; 1],10*eps);
850 %!testif HAVE_ARPACK 847 %!test
851 %! [v1,d1] = eigs(A, k, 'lm'); 848 %! [v1,d1] = eigs(A, k, 'lm');
852 %! d1 = diag(d1); 849 %! d1 = diag(d1);
853 %! for i=1:k 850 %! for i=1:k
854 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 851 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
855 %! endfor 852 %! endfor
856 %!testif HAVE_ARPACK 853 %!test
857 %! [v1,d1] = eigs(A, k, 'sm'); 854 %! [v1,d1] = eigs(A, k, 'sm');
858 %! d1 = diag(d1); 855 %! d1 = diag(d1);
859 %! for i=1:k 856 %! for i=1:k
860 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 857 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
861 %! endfor 858 %! endfor
862 %!testif HAVE_ARPACK 859 %!test
863 %! [v1,d1] = eigs(A, k, 'la'); 860 %! [v1,d1] = eigs(A, k, 'la');
864 %! d1 = diag(d1); 861 %! d1 = diag(d1);
865 %! for i=1:k 862 %! for i=1:k
866 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 863 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
867 %! endfor 864 %! endfor
868 %!testif HAVE_ARPACK 865 %!test
869 %! [v1,d1] = eigs(A, k, 'sa'); 866 %! [v1,d1] = eigs(A, k, 'sa');
870 %! d1 = diag(d1); 867 %! d1 = diag(d1);
871 %! for i=1:k 868 %! for i=1:k
872 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 869 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
873 %! endfor 870 %! endfor
874 %!testif HAVE_ARPACK 871 %!test
875 %! [v1,d1] = eigs(A, k, 'be'); 872 %! [v1,d1] = eigs(A, k, 'be');
876 %! d1 = diag(d1); 873 %! d1 = diag(d1);
877 %! for i=1:k 874 %! for i=1:k
878 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 875 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
879 %! endfor 876 %! endfor
889 %! A = sparse([3:n,1:n,1:(n-2)],[1:(n-2),1:n,3:n],[ones(1,n-2),1:n,-ones(1,n-2)]); 886 %! A = sparse([3:n,1:n,1:(n-2)],[1:(n-2),1:n,3:n],[ones(1,n-2),1:n,-ones(1,n-2)]);
890 %! d0 = eig (A); 887 %! d0 = eig (A);
891 %! [~, idx] = sort (abs(d0)); 888 %! [~, idx] = sort (abs(d0));
892 %! d0 = d0(idx); 889 %! d0 = d0(idx);
893 %! rand("state", 42); % initialize generator to make eigs behavior reproducible 890 %! rand("state", 42); % initialize generator to make eigs behavior reproducible
894 %!testif HAVE_ARPACK 891 %!test
895 %! d1 = eigs (A, k); 892 %! d1 = eigs (A, k);
896 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 893 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
897 %!testif HAVE_ARPACK 894 %!test
898 %! d1 = eigs (A,k+1); 895 %! d1 = eigs (A,k+1);
899 %! assert (abs(d1), abs(d0(end:-1:(end-k))),1e-11); 896 %! assert (abs(d1), abs(d0(end:-1:(end-k))),1e-11);
900 %!testif HAVE_ARPACK 897 %!test
901 %! d1 = eigs (A, k, 'lm'); 898 %! d1 = eigs (A, k, 'lm');
902 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 899 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
903 %!testif HAVE_ARPACK 900 %!test
904 %! d1 = eigs (A, k, 'sm'); 901 %! d1 = eigs (A, k, 'sm');
905 %! assert (abs(d1), abs(d0(1:k)), 1e-11); 902 %! assert (abs(d1), abs(d0(1:k)), 1e-11);
906 %!testif HAVE_ARPACK 903 %!test
907 %! d1 = eigs (A, k, 'lr'); 904 %! d1 = eigs (A, k, 'lr');
908 %! [~, idx] = sort (real(d0)); 905 %! [~, idx] = sort (real(d0));
909 %! d2 = d0(idx); 906 %! d2 = d0(idx);
910 %! assert (real(d1), real(d2(end:-1:(end-k+1))), 1e-11); 907 %! assert (real(d1), real(d2(end:-1:(end-k+1))), 1e-11);
911 %!testif HAVE_ARPACK 908 %!test
912 %! d1 = eigs (A, k, 'sr'); 909 %! d1 = eigs (A, k, 'sr');
913 %! [~, idx] = sort (real(abs(d0))); 910 %! [~, idx] = sort (real(abs(d0)));
914 %! d2 = d0(idx); 911 %! d2 = d0(idx);
915 %! assert (real(d1), real(d2(1:k)), 1e-11); 912 %! assert (real(d1), real(d2(1:k)), 1e-11);
916 %!testif HAVE_ARPACK 913 %!test
917 %! d1 = eigs (A, k, 'li'); 914 %! d1 = eigs (A, k, 'li');
918 %! [~, idx] = sort (imag(abs(d0))); 915 %! [~, idx] = sort (imag(abs(d0)));
919 %! d2 = d0(idx); 916 %! d2 = d0(idx);
920 %! assert (sort(imag(d1)), sort(imag(d2(end:-1:(end-k+1)))), 1e-11); 917 %! assert (sort(imag(d1)), sort(imag(d2(end:-1:(end-k+1)))), 1e-11);
921 %!testif HAVE_ARPACK 918 %!test
922 %! d1 = eigs (A, k, 'si'); 919 %! d1 = eigs (A, k, 'si');
923 %! [~, idx] = sort (imag(abs(d0))); 920 %! [~, idx] = sort (imag(abs(d0)));
924 %! d2 = d0(idx); 921 %! d2 = d0(idx);
925 %! assert (sort(imag(d1)), sort(imag(d2(1:k))), 1e-11); 922 %! assert (sort(imag(d1)), sort(imag(d2(1:k))), 1e-11);
926 %!testif HAVE_ARPACK 923 %!test
927 %! d1 = eigs (A, k, 4.1); 924 %! d1 = eigs (A, k, 4.1);
928 %! [~,idx0] = sort (abs(d0 - 4.1)); 925 %! [~,idx0] = sort (abs(d0 - 4.1));
929 %! [~,idx1] = sort (abs(d1 - 4.1)); 926 %! [~,idx1] = sort (abs(d1 - 4.1));
930 %! assert (abs(d1(idx1)), abs(d0(idx0(1:k))), 1e-11); 927 %! assert (abs(d1(idx1)), abs(d0(idx0(1:k))), 1e-11);
931 %! assert (sort(imag(d1(idx1))), sort(imag(d0(idx0(1:k)))), 1e-11); 928 %! assert (sort(imag(d1(idx1))), sort(imag(d0(idx0(1:k)))), 1e-11);
932 %!testif HAVE_ARPACK 929 %!test
933 %! d1 = eigs(A, speye(n), k, 'lm'); 930 %! d1 = eigs(A, speye(n), k, 'lm');
934 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 931 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
935 %!testif HAVE_ARPACK 932 %!test
936 %! opts.cholB=true; 933 %! opts.cholB=true;
937 %! d1 = eigs(A, speye(n), k, 'lm', opts); 934 %! d1 = eigs(A, speye(n), k, 'lm', opts);
938 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 935 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
939 %!testif HAVE_ARPACK 936 %!test
940 %! opts.cholB=true; 937 %! opts.cholB=true;
941 %! q = [2:n,1]; 938 %! q = [2:n,1];
942 %! opts.permB=q; 939 %! opts.permB=q;
943 %! d1 = eigs(A, speye(n)(q,q), k, 'lm', opts); 940 %! d1 = eigs(A, speye(n)(q,q), k, 'lm', opts);
944 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 941 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
945 %!testif HAVE_ARPACK 942 %!test
946 %! opts.cholB=true; 943 %! opts.cholB=true;
947 %! d1 = eigs(A, speye(n), k, 4.1, opts); 944 %! d1 = eigs(A, speye(n), k, 4.1, opts);
948 %! assert (abs(d1), eigs(A,k,4.1), 1e-11); 945 %! assert (abs(d1), eigs(A,k,4.1), 1e-11);
949 %!testif HAVE_ARPACK 946 %!test
950 %! opts.cholB=true; 947 %! opts.cholB=true;
951 %! q = [2:n,1]; 948 %! q = [2:n,1];
952 %! opts.permB=q; 949 %! opts.permB=q;
953 %! d1 = eigs(A, speye(n)(q,q), k, 4.1, opts); 950 %! d1 = eigs(A, speye(n)(q,q), k, 4.1, opts);
954 %! assert (abs(d1), eigs(A,k,4.1), 1e-11); 951 %! assert (abs(d1), eigs(A,k,4.1), 1e-11);
955 %!testif HAVE_ARPACK 952 %!test
956 %! assert (abs(eigs(A,k,4.1)), abs(eigs(A,speye(n),k,4.1)), 1e-11); 953 %! assert (abs(eigs(A,k,4.1)), abs(eigs(A,speye(n),k,4.1)), 1e-11);
957 %!testif HAVE_ARPACK 954 %!test
958 %! assert (sort(imag(eigs(A,k,4.1))), sort(imag(eigs(A,speye(n),k,4.1))), 1e-11); 955 %! assert (sort(imag(eigs(A,k,4.1))), sort(imag(eigs(A,speye(n),k,4.1))), 1e-11);
959 %!testif HAVE_ARPACK 956 %!test
960 %! fn = @(x) A * x; 957 %! fn = @(x) A * x;
961 %! opts.issym = 0; opts.isreal = 1; 958 %! opts.issym = 0; opts.isreal = 1;
962 %! d1 = eigs (fn, n, k, 'lm', opts); 959 %! d1 = eigs (fn, n, k, 'lm', opts);
963 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 960 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
964 %!testif HAVE_ARPACK 961 %!test
965 %! fn = @(x) A \ x; 962 %! fn = @(x) A \ x;
966 %! opts.issym = 0; opts.isreal = 1; 963 %! opts.issym = 0; opts.isreal = 1;
967 %! d1 = eigs (fn, n, k, 'sm', opts); 964 %! d1 = eigs (fn, n, k, 'sm', opts);
968 %! assert (abs(d1), d0(1:k), 1e-11); 965 %! assert (abs(d1), d0(1:k), 1e-11);
969 %!testif HAVE_ARPACK 966 %!test
970 %! fn = @(x) (A - 4.1 * eye(n)) \ x; 967 %! fn = @(x) (A - 4.1 * eye(n)) \ x;
971 %! opts.issym = 0; opts.isreal = 1; 968 %! opts.issym = 0; opts.isreal = 1;
972 %! d1 = eigs (fn, n, k, 4.1, opts); 969 %! d1 = eigs (fn, n, k, 4.1, opts);
973 %! assert (abs(d1), eigs(A,k,4.1), 1e-11); 970 %! assert (abs(d1), eigs(A,k,4.1), 1e-11);
974 %!testif HAVE_ARPACK 971 %!test
975 %! [v1,d1] = eigs(A, k, 'lm'); 972 %! [v1,d1] = eigs(A, k, 'lm');
976 %! d1 = diag(d1); 973 %! d1 = diag(d1);
977 %! for i=1:k 974 %! for i=1:k
978 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 975 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
979 %! endfor 976 %! endfor
980 %!testif HAVE_ARPACK 977 %!test
981 %! [v1,d1] = eigs(A, k, 'sm'); 978 %! [v1,d1] = eigs(A, k, 'sm');
982 %! d1 = diag(d1); 979 %! d1 = diag(d1);
983 %! for i=1:k 980 %! for i=1:k
984 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 981 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
985 %! endfor 982 %! endfor
986 %!testif HAVE_ARPACK 983 %!test
987 %! [v1,d1] = eigs(A, k, 'lr'); 984 %! [v1,d1] = eigs(A, k, 'lr');
988 %! d1 = diag(d1); 985 %! d1 = diag(d1);
989 %! for i=1:k 986 %! for i=1:k
990 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 987 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
991 %! endfor 988 %! endfor
992 %!testif HAVE_ARPACK 989 %!test
993 %! [v1,d1] = eigs(A, k, 'sr'); 990 %! [v1,d1] = eigs(A, k, 'sr');
994 %! d1 = diag(d1); 991 %! d1 = diag(d1);
995 %! for i=1:k 992 %! for i=1:k
996 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 993 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
997 %! endfor 994 %! endfor
998 %!testif HAVE_ARPACK 995 %!test
999 %! [v1,d1] = eigs(A, k, 'li'); 996 %! [v1,d1] = eigs(A, k, 'li');
1000 %! d1 = diag(d1); 997 %! d1 = diag(d1);
1001 %! for i=1:k 998 %! for i=1:k
1002 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 999 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
1003 %! endfor 1000 %! endfor
1004 %!testif HAVE_ARPACK 1001 %!test
1005 %! [v1,d1] = eigs(A, k, 'si'); 1002 %! [v1,d1] = eigs(A, k, 'si');
1006 %! d1 = diag(d1); 1003 %! d1 = diag(d1);
1007 %! for i=1:k 1004 %! for i=1:k
1008 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 1005 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
1009 %! endfor 1006 %! endfor
1019 %! A = sparse([3:n,1:n,1:(n-2)],[1:(n-2),1:n,3:n],[1i*ones(1,n-2),4*ones(1,n),-1i*ones(1,n-2)]); 1016 %! A = sparse([3:n,1:n,1:(n-2)],[1:(n-2),1:n,3:n],[1i*ones(1,n-2),4*ones(1,n),-1i*ones(1,n-2)]);
1020 %! d0 = eig (A); 1017 %! d0 = eig (A);
1021 %! [~, idx] = sort (abs(d0)); 1018 %! [~, idx] = sort (abs(d0));
1022 %! d0 = d0(idx); 1019 %! d0 = d0(idx);
1023 %! rand("state", 42); % initialize generator to make eigs behavior reproducible 1020 %! rand("state", 42); % initialize generator to make eigs behavior reproducible
1024 %!testif HAVE_ARPACK 1021 %!test
1025 %! d1 = eigs (A, k); 1022 %! d1 = eigs (A, k);
1026 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1023 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1027 %!testif HAVE_ARPACK 1024 %!test
1028 %! d1 = eigs (A,k+1); 1025 %! d1 = eigs (A,k+1);
1029 %! assert (abs(d1), abs(d0(end:-1:(end-k))),1e-11); 1026 %! assert (abs(d1), abs(d0(end:-1:(end-k))),1e-11);
1030 %!testif HAVE_ARPACK 1027 %!test
1031 %! d1 = eigs (A, k, 'lm'); 1028 %! d1 = eigs (A, k, 'lm');
1032 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1029 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1033 %!testif HAVE_ARPACK 1030 %!test
1034 %! d1 = eigs (A, k, 'sm'); 1031 %! d1 = eigs (A, k, 'sm');
1035 %! assert (abs(d1), abs(d0(1:k)), 1e-11); 1032 %! assert (abs(d1), abs(d0(1:k)), 1e-11);
1036 %!testif HAVE_ARPACK 1033 %!test
1037 %! d1 = eigs (A, k, 'lr'); 1034 %! d1 = eigs (A, k, 'lr');
1038 %! [~, idx] = sort (real(abs(d0))); 1035 %! [~, idx] = sort (real(abs(d0)));
1039 %! d2 = d0(idx); 1036 %! d2 = d0(idx);
1040 %! assert (real(d1), real(d2(end:-1:(end-k+1))), 1e-11); 1037 %! assert (real(d1), real(d2(end:-1:(end-k+1))), 1e-11);
1041 %!testif HAVE_ARPACK 1038 %!test
1042 %! d1 = eigs (A, k, 'sr'); 1039 %! d1 = eigs (A, k, 'sr');
1043 %! [~, idx] = sort (real(abs(d0))); 1040 %! [~, idx] = sort (real(abs(d0)));
1044 %! d2 = d0(idx); 1041 %! d2 = d0(idx);
1045 %! assert (real(d1), real(d2(1:k)), 1e-11); 1042 %! assert (real(d1), real(d2(1:k)), 1e-11);
1046 %!testif HAVE_ARPACK 1043 %!test
1047 %! d1 = eigs (A, k, 'li'); 1044 %! d1 = eigs (A, k, 'li');
1048 %! [~, idx] = sort (imag(abs(d0))); 1045 %! [~, idx] = sort (imag(abs(d0)));
1049 %! d2 = d0(idx); 1046 %! d2 = d0(idx);
1050 %! assert (sort(imag(d1)), sort(imag(d2(end:-1:(end-k+1)))), 1e-11); 1047 %! assert (sort(imag(d1)), sort(imag(d2(end:-1:(end-k+1)))), 1e-11);
1051 %!testif HAVE_ARPACK 1048 %!test
1052 %! d1 = eigs (A, k, 'si'); 1049 %! d1 = eigs (A, k, 'si');
1053 %! [~, idx] = sort (imag(abs(d0))); 1050 %! [~, idx] = sort (imag(abs(d0)));
1054 %! d2 = d0(idx); 1051 %! d2 = d0(idx);
1055 %! assert (sort(imag(d1)), sort(imag(d2(1:k))), 1e-11); 1052 %! assert (sort(imag(d1)), sort(imag(d2(1:k))), 1e-11);
1056 %!testif HAVE_ARPACK 1053 %!test
1057 %! d1 = eigs (A, k, 4.1); 1054 %! d1 = eigs (A, k, 4.1);
1058 %! [~,idx0] = sort (abs(d0 - 4.1)); 1055 %! [~,idx0] = sort (abs(d0 - 4.1));
1059 %! [~,idx1] = sort (abs(d1 - 4.1)); 1056 %! [~,idx1] = sort (abs(d1 - 4.1));
1060 %! assert (abs(d1(idx1)), abs(d0(idx0(1:k))), 1e-11); 1057 %! assert (abs(d1(idx1)), abs(d0(idx0(1:k))), 1e-11);
1061 %! assert (sort(imag(d1(idx1))), sort(imag(d0(idx0(1:k)))), 1e-11); 1058 %! assert (sort(imag(d1(idx1))), sort(imag(d0(idx0(1:k)))), 1e-11);
1062 %!testif HAVE_ARPACK 1059 %!test
1063 %! d1 = eigs(A, speye(n), k, 'lm'); 1060 %! d1 = eigs(A, speye(n), k, 'lm');
1064 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1061 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1065 %!testif HAVE_ARPACK 1062 %!test
1066 %! opts.cholB=true; 1063 %! opts.cholB=true;
1067 %! d1 = eigs(A, speye(n), k, 'lm', opts); 1064 %! d1 = eigs(A, speye(n), k, 'lm', opts);
1068 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1065 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1069 %!testif HAVE_ARPACK 1066 %!test
1070 %! opts.cholB=true; 1067 %! opts.cholB=true;
1071 %! q = [2:n,1]; 1068 %! q = [2:n,1];
1072 %! opts.permB=q; 1069 %! opts.permB=q;
1073 %! d1 = eigs(A, speye(n)(q,q), k, 'lm', opts); 1070 %! d1 = eigs(A, speye(n)(q,q), k, 'lm', opts);
1074 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1071 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1075 %!testif HAVE_ARPACK 1072 %!test
1076 %! opts.cholB=true; 1073 %! opts.cholB=true;
1077 %! d1 = eigs(A, speye(n), k, 4.1, opts); 1074 %! d1 = eigs(A, speye(n), k, 4.1, opts);
1078 %! assert (abs(abs(d1)), abs(eigs(A,k,4.1)), 1e-11); 1075 %! assert (abs(abs(d1)), abs(eigs(A,k,4.1)), 1e-11);
1079 %! assert (sort(imag(abs(d1))), sort(imag(eigs(A,k,4.1))), 1e-11); 1076 %! assert (sort(imag(abs(d1))), sort(imag(eigs(A,k,4.1))), 1e-11);
1080 %!testif HAVE_ARPACK 1077 %!test
1081 %! opts.cholB=true; 1078 %! opts.cholB=true;
1082 %! q = [2:n,1]; 1079 %! q = [2:n,1];
1083 %! opts.permB=q; 1080 %! opts.permB=q;
1084 %! d1 = eigs(A, speye(n)(q,q), k, 4.1, opts); 1081 %! d1 = eigs(A, speye(n)(q,q), k, 4.1, opts);
1085 %! assert (abs(abs(d1)), abs(eigs(A,k,4.1)), 1e-11); 1082 %! assert (abs(abs(d1)), abs(eigs(A,k,4.1)), 1e-11);
1086 %! assert (sort(imag(abs(d1))), sort(imag(eigs(A,k,4.1))), 1e-11); 1083 %! assert (sort(imag(abs(d1))), sort(imag(eigs(A,k,4.1))), 1e-11);
1087 %!testif HAVE_ARPACK 1084 %!test
1088 %! assert (abs(eigs(A,k,4.1)), abs(eigs(A,speye(n),k,4.1)), 1e-11); 1085 %! assert (abs(eigs(A,k,4.1)), abs(eigs(A,speye(n),k,4.1)), 1e-11);
1089 %!testif HAVE_ARPACK 1086 %!test
1090 %! assert (sort(imag(eigs(A,k,4.1))), sort(imag(eigs(A,speye(n),k,4.1))), 1e-11); 1087 %! assert (sort(imag(eigs(A,k,4.1))), sort(imag(eigs(A,speye(n),k,4.1))), 1e-11);
1091 %!testif HAVE_ARPACK 1088 %!test
1092 %! fn = @(x) A * x; 1089 %! fn = @(x) A * x;
1093 %! opts.issym = 0; opts.isreal = 0; 1090 %! opts.issym = 0; opts.isreal = 0;
1094 %! d1 = eigs (fn, n, k, 'lm', opts); 1091 %! d1 = eigs (fn, n, k, 'lm', opts);
1095 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1092 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1096 %!testif HAVE_ARPACK 1093 %!test
1097 %! fn = @(x) A \ x; 1094 %! fn = @(x) A \ x;
1098 %! opts.issym = 0; opts.isreal = 0; 1095 %! opts.issym = 0; opts.isreal = 0;
1099 %! d1 = eigs (fn, n, k, 'sm', opts); 1096 %! d1 = eigs (fn, n, k, 'sm', opts);
1100 %! assert (abs(d1), d0(1:k), 1e-11); 1097 %! assert (abs(d1), d0(1:k), 1e-11);
1101 %!testif HAVE_ARPACK 1098 %!test
1102 %! fn = @(x) (A - 4.1 * eye(n)) \ x; 1099 %! fn = @(x) (A - 4.1 * eye(n)) \ x;
1103 %! opts.issym = 0; opts.isreal = 0; 1100 %! opts.issym = 0; opts.isreal = 0;
1104 %! d1 = eigs (fn, n, k, 4.1, opts); 1101 %! d1 = eigs (fn, n, k, 4.1, opts);
1105 %! assert (abs(d1), eigs(A,k,4.1), 1e-11); 1102 %! assert (abs(d1), eigs(A,k,4.1), 1e-11);
1106 %!testif HAVE_ARPACK 1103 %!test
1107 %! [v1,d1] = eigs(A, k, 'lm'); 1104 %! [v1,d1] = eigs(A, k, 'lm');
1108 %! d1 = diag(d1); 1105 %! d1 = diag(d1);
1109 %! for i=1:k 1106 %! for i=1:k
1110 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 1107 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
1111 %! endfor 1108 %! endfor
1112 %!testif HAVE_ARPACK 1109 %!test
1113 %! [v1,d1] = eigs(A, k, 'sm'); 1110 %! [v1,d1] = eigs(A, k, 'sm');
1114 %! d1 = diag(d1); 1111 %! d1 = diag(d1);
1115 %! for i=1:k 1112 %! for i=1:k
1116 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 1113 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
1117 %! endfor 1114 %! endfor
1118 %!testif HAVE_ARPACK 1115 %!test
1119 %! [v1,d1] = eigs(A, k, 'lr'); 1116 %! [v1,d1] = eigs(A, k, 'lr');
1120 %! d1 = diag(d1); 1117 %! d1 = diag(d1);
1121 %! for i=1:k 1118 %! for i=1:k
1122 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 1119 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
1123 %! endfor 1120 %! endfor
1124 %!testif HAVE_ARPACK 1121 %!test
1125 %! [v1,d1] = eigs(A, k, 'sr'); 1122 %! [v1,d1] = eigs(A, k, 'sr');
1126 %! d1 = diag(d1); 1123 %! d1 = diag(d1);
1127 %! for i=1:k 1124 %! for i=1:k
1128 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 1125 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
1129 %! endfor 1126 %! endfor
1130 %!testif HAVE_ARPACK 1127 %!test
1131 %! [v1,d1] = eigs(A, k, 'li'); 1128 %! [v1,d1] = eigs(A, k, 'li');
1132 %! d1 = diag(d1); 1129 %! d1 = diag(d1);
1133 %! for i=1:k 1130 %! for i=1:k
1134 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 1131 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
1135 %! endfor 1132 %! endfor
1136 %!testif HAVE_ARPACK 1133 %!test
1137 %! [v1,d1] = eigs(A, k, 'si'); 1134 %! [v1,d1] = eigs(A, k, 'si');
1138 %! d1 = diag(d1); 1135 %! d1 = diag(d1);
1139 %! for i=1:k 1136 %! for i=1:k
1140 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11) 1137 %! assert(max(abs((A - d1(i)*speye(n))*v1(:,i))),0.,1e-11)
1141 %! endfor 1138 %! endfor
1154 %! d0 = eig (A); 1151 %! d0 = eig (A);
1155 %! d2 = sort (d0); 1152 %! d2 = sort (d0);
1156 %! [~, idx] = sort (abs(d0)); 1153 %! [~, idx] = sort (abs(d0));
1157 %! d0 = d0(idx); 1154 %! d0 = d0(idx);
1158 %! rand("state", 42); % initialize generator to make eigs behavior reproducible 1155 %! rand("state", 42); % initialize generator to make eigs behavior reproducible
1159 %!testif HAVE_ARPACK 1156 %!test
1160 %! d1 = eigs (A, k); 1157 %! d1 = eigs (A, k);
1161 %! assert (d1, d0(end:-1:(end-k+1)), 1e-11); 1158 %! assert (d1, d0(end:-1:(end-k+1)), 1e-11);
1162 %!testif HAVE_ARPACK 1159 %!test
1163 %! d1 = eigs (A,k+1); 1160 %! d1 = eigs (A,k+1);
1164 %! assert (d1, d0(end:-1:(end-k)),1e-11); 1161 %! assert (d1, d0(end:-1:(end-k)),1e-11);
1165 %!testif HAVE_ARPACK 1162 %!test
1166 %! d1 = eigs (A, k, 'lm'); 1163 %! d1 = eigs (A, k, 'lm');
1167 %! assert (d1, d0(end:-1:(end-k+1)), 1e-11); 1164 %! assert (d1, d0(end:-1:(end-k+1)), 1e-11);
1168 %!testif HAVE_ARPACK 1165 %!test
1169 %! d1 = eigs (A, k, 'sm'); 1166 %! d1 = eigs (A, k, 'sm');
1170 %! assert (d1, d0(k:-1:1), 1e-11); 1167 %! assert (d1, d0(k:-1:1), 1e-11);
1171 %!testif HAVE_ARPACK 1168 %!test
1172 %! d1 = eigs (A, k, 'la'); 1169 %! d1 = eigs (A, k, 'la');
1173 %! assert (d1, d2(end:-1:(end-k+1)), 1e-11); 1170 %! assert (d1, d2(end:-1:(end-k+1)), 1e-11);
1174 %!testif HAVE_ARPACK 1171 %!test
1175 %! d1 = eigs (A, k, 'sa'); 1172 %! d1 = eigs (A, k, 'sa');
1176 %! assert (d1, d2(1:k), 1e-11); 1173 %! assert (d1, d2(1:k), 1e-11);
1177 %!testif HAVE_ARPACK 1174 %!test
1178 %! d1 = eigs (A, k, 'be'); 1175 %! d1 = eigs (A, k, 'be');
1179 %! assert (d1, d2([1:floor(k/2), (end - ceil(k/2) + 1):end]), 1e-11); 1176 %! assert (d1, d2([1:floor(k/2), (end - ceil(k/2) + 1):end]), 1e-11);
1180 %!testif HAVE_ARPACK 1177 %!test
1181 %! d1 = eigs (A, k+1, 'be'); 1178 %! d1 = eigs (A, k+1, 'be');
1182 %! assert (d1, d2([1:floor((k+1)/2), (end - ceil((k+1)/2) + 1):end]), 1e-11); 1179 %! assert (d1, d2([1:floor((k+1)/2), (end - ceil((k+1)/2) + 1):end]), 1e-11);
1183 %!testif HAVE_ARPACK 1180 %!test
1184 %! d1 = eigs (A, k, 4.1); 1181 %! d1 = eigs (A, k, 4.1);
1185 %! [~,idx0] = sort (abs(d0 - 4.1)); 1182 %! [~,idx0] = sort (abs(d0 - 4.1));
1186 %! [~,idx1] = sort (abs(d1 - 4.1)); 1183 %! [~,idx1] = sort (abs(d1 - 4.1));
1187 %! assert (d1(idx1), d0(idx0(1:k)), 1e-11); 1184 %! assert (d1(idx1), d0(idx0(1:k)), 1e-11);
1188 %!testif HAVE_ARPACK 1185 %!test
1189 %! d1 = eigs(A, eye(n), k, 'lm'); 1186 %! d1 = eigs(A, eye(n), k, 'lm');
1190 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1187 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1191 %!testif HAVE_ARPACK 1188 %!test
1192 %! assert (eigs(A,k,4.1), eigs(A,eye(n),k,4.1), 1e-11); 1189 %! assert (eigs(A,k,4.1), eigs(A,eye(n),k,4.1), 1e-11);
1193 %!testif HAVE_ARPACK 1190 %!test
1194 %! opts.cholB=true; 1191 %! opts.cholB=true;
1195 %! d1 = eigs(A, eye(n), k, 'lm', opts); 1192 %! d1 = eigs(A, eye(n), k, 'lm', opts);
1196 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1193 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1197 %!testif HAVE_ARPACK 1194 %!test
1198 %! opts.cholB=true; 1195 %! opts.cholB=true;
1199 %! q = [2:n,1]; 1196 %! q = [2:n,1];
1200 %! opts.permB=q; 1197 %! opts.permB=q;
1201 %! d1 = eigs(A, eye(n)(q,q), k, 'lm', opts); 1198 %! d1 = eigs(A, eye(n)(q,q), k, 'lm', opts);
1202 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1199 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1203 %!testif HAVE_ARPACK 1200 %!test
1204 %! opts.cholB=true; 1201 %! opts.cholB=true;
1205 %! d1 = eigs(A, eye(n), k, 4.1, opts); 1202 %! d1 = eigs(A, eye(n), k, 4.1, opts);
1206 %! assert (abs(d1), eigs(A,k,4.1), 1e-11); 1203 %! assert (abs(d1), eigs(A,k,4.1), 1e-11);
1207 %!testif HAVE_ARPACK 1204 %!test
1208 %! opts.cholB=true; 1205 %! opts.cholB=true;
1209 %! q = [2:n,1]; 1206 %! q = [2:n,1];
1210 %! opts.permB=q; 1207 %! opts.permB=q;
1211 %! d1 = eigs(A, eye(n)(q,q), k, 4.1, opts); 1208 %! d1 = eigs(A, eye(n)(q,q), k, 4.1, opts);
1212 %! assert (abs(d1), eigs(A,k,4.1), 1e-11); 1209 %! assert (abs(d1), eigs(A,k,4.1), 1e-11);
1213 %!testif HAVE_ARPACK 1210 %!test
1214 %! assert (eigs(A,k,4.1), eigs(A,eye(n),k,4.1), 1e-11); 1211 %! assert (eigs(A,k,4.1), eigs(A,eye(n),k,4.1), 1e-11);
1215 %!testif HAVE_ARPACK 1212 %!test
1216 %! fn = @(x) A * x; 1213 %! fn = @(x) A * x;
1217 %! opts.issym = 1; opts.isreal = 1; 1214 %! opts.issym = 1; opts.isreal = 1;
1218 %! d1 = eigs (fn, n, k, 'lm', opts); 1215 %! d1 = eigs (fn, n, k, 'lm', opts);
1219 %! assert (d1, d0(end:-1:(end-k+1)), 1e-11); 1216 %! assert (d1, d0(end:-1:(end-k+1)), 1e-11);
1220 %!testif HAVE_ARPACK 1217 %!test
1221 %! fn = @(x) A \ x; 1218 %! fn = @(x) A \ x;
1222 %! opts.issym = 1; opts.isreal = 1; 1219 %! opts.issym = 1; opts.isreal = 1;
1223 %! d1 = eigs (fn, n, k, 'sm', opts); 1220 %! d1 = eigs (fn, n, k, 'sm', opts);
1224 %! assert (d1, d0(k:-1:1), 1e-11); 1221 %! assert (d1, d0(k:-1:1), 1e-11);
1225 %!testif HAVE_ARPACK 1222 %!test
1226 %! fn = @(x) (A - 4.1 * eye(n)) \ x; 1223 %! fn = @(x) (A - 4.1 * eye(n)) \ x;
1227 %! opts.issym = 1; opts.isreal = 1; 1224 %! opts.issym = 1; opts.isreal = 1;
1228 %! d1 = eigs (fn, n, k, 4.1, opts); 1225 %! d1 = eigs (fn, n, k, 4.1, opts);
1229 %! assert (d1, eigs(A,k,4.1), 1e-11); 1226 %! assert (d1, eigs(A,k,4.1), 1e-11);
1230 %!testif HAVE_ARPACK 1227 %!test
1231 %! [v1,d1] = eigs(A, k, 'lm'); 1228 %! [v1,d1] = eigs(A, k, 'lm');
1232 %! d1 = diag(d1); 1229 %! d1 = diag(d1);
1233 %! for i=1:k 1230 %! for i=1:k
1234 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1231 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1235 %! endfor 1232 %! endfor
1236 %!testif HAVE_ARPACK 1233 %!test
1237 %! [v1,d1] = eigs(A, k, 'sm'); 1234 %! [v1,d1] = eigs(A, k, 'sm');
1238 %! d1 = diag(d1); 1235 %! d1 = diag(d1);
1239 %! for i=1:k 1236 %! for i=1:k
1240 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1237 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1241 %! endfor 1238 %! endfor
1242 %!testif HAVE_ARPACK 1239 %!test
1243 %! [v1,d1] = eigs(A, k, 'la'); 1240 %! [v1,d1] = eigs(A, k, 'la');
1244 %! d1 = diag(d1); 1241 %! d1 = diag(d1);
1245 %! for i=1:k 1242 %! for i=1:k
1246 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1243 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1247 %! endfor 1244 %! endfor
1248 %!testif HAVE_ARPACK 1245 %!test
1249 %! [v1,d1] = eigs(A, k, 'sa'); 1246 %! [v1,d1] = eigs(A, k, 'sa');
1250 %! d1 = diag(d1); 1247 %! d1 = diag(d1);
1251 %! for i=1:k 1248 %! for i=1:k
1252 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1249 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1253 %! endfor 1250 %! endfor
1254 %!testif HAVE_ARPACK 1251 %!test
1255 %! [v1,d1] = eigs(A, k, 'be'); 1252 %! [v1,d1] = eigs(A, k, 'be');
1256 %! d1 = diag(d1); 1253 %! d1 = diag(d1);
1257 %! for i=1:k 1254 %! for i=1:k
1258 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1255 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1259 %! endfor 1256 %! endfor
1269 %! A = full(sparse([3:n,1:n,1:(n-2)],[1:(n-2),1:n,3:n],[ones(1,n-2),1:n,-ones(1,n-2)])); 1266 %! A = full(sparse([3:n,1:n,1:(n-2)],[1:(n-2),1:n,3:n],[ones(1,n-2),1:n,-ones(1,n-2)]));
1270 %! d0 = eig (A); 1267 %! d0 = eig (A);
1271 %! [~, idx] = sort (abs(d0)); 1268 %! [~, idx] = sort (abs(d0));
1272 %! d0 = d0(idx); 1269 %! d0 = d0(idx);
1273 %! rand("state", 42); % initialize generator to make eigs behavior reproducible 1270 %! rand("state", 42); % initialize generator to make eigs behavior reproducible
1274 %!testif HAVE_ARPACK 1271 %!test
1275 %! d1 = eigs (A, k); 1272 %! d1 = eigs (A, k);
1276 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1273 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1277 %!testif HAVE_ARPACK 1274 %!test
1278 %! d1 = eigs (A,k+1); 1275 %! d1 = eigs (A,k+1);
1279 %! assert (abs(d1), abs(d0(end:-1:(end-k))),1e-11); 1276 %! assert (abs(d1), abs(d0(end:-1:(end-k))),1e-11);
1280 %!testif HAVE_ARPACK 1277 %!test
1281 %! d1 = eigs (A, k, 'lm'); 1278 %! d1 = eigs (A, k, 'lm');
1282 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1279 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1283 %!testif HAVE_ARPACK 1280 %!test
1284 %! d1 = eigs (A, k, 'sm'); 1281 %! d1 = eigs (A, k, 'sm');
1285 %! assert (abs(d1), abs(d0(1:k)), 1e-11); 1282 %! assert (abs(d1), abs(d0(1:k)), 1e-11);
1286 %!testif HAVE_ARPACK 1283 %!test
1287 %! d1 = eigs (A, k, 'lr'); 1284 %! d1 = eigs (A, k, 'lr');
1288 %! [~, idx] = sort (real(d0)); 1285 %! [~, idx] = sort (real(d0));
1289 %! d2 = d0(idx); 1286 %! d2 = d0(idx);
1290 %! assert (real(d1), real(d2(end:-1:(end-k+1))), 1e-11); 1287 %! assert (real(d1), real(d2(end:-1:(end-k+1))), 1e-11);
1291 %!testif HAVE_ARPACK 1288 %!test
1292 %! d1 = eigs (A, k, 'sr'); 1289 %! d1 = eigs (A, k, 'sr');
1293 %! [~, idx] = sort (real(abs(d0))); 1290 %! [~, idx] = sort (real(abs(d0)));
1294 %! d2 = d0(idx); 1291 %! d2 = d0(idx);
1295 %! assert (real(d1), real(d2(1:k)), 1e-11); 1292 %! assert (real(d1), real(d2(1:k)), 1e-11);
1296 %!testif HAVE_ARPACK 1293 %!test
1297 %! d1 = eigs (A, k, 'li'); 1294 %! d1 = eigs (A, k, 'li');
1298 %! [~, idx] = sort (imag(abs(d0))); 1295 %! [~, idx] = sort (imag(abs(d0)));
1299 %! d2 = d0(idx); 1296 %! d2 = d0(idx);
1300 %! assert (sort(imag(d1)), sort(imag(d2(end:-1:(end-k+1)))), 1e-11); 1297 %! assert (sort(imag(d1)), sort(imag(d2(end:-1:(end-k+1)))), 1e-11);
1301 %!testif HAVE_ARPACK 1298 %!test
1302 %! d1 = eigs (A, k, 'si'); 1299 %! d1 = eigs (A, k, 'si');
1303 %! [~, idx] = sort (imag(abs(d0))); 1300 %! [~, idx] = sort (imag(abs(d0)));
1304 %! d2 = d0(idx); 1301 %! d2 = d0(idx);
1305 %! assert (sort(imag(d1)), sort(imag(d2(1:k))), 1e-11); 1302 %! assert (sort(imag(d1)), sort(imag(d2(1:k))), 1e-11);
1306 %!testif HAVE_ARPACK 1303 %!test
1307 %! d1 = eigs (A, k, 4.1); 1304 %! d1 = eigs (A, k, 4.1);
1308 %! [~,idx0] = sort (abs(d0 - 4.1)); 1305 %! [~,idx0] = sort (abs(d0 - 4.1));
1309 %! [~,idx1] = sort (abs(d1 - 4.1)); 1306 %! [~,idx1] = sort (abs(d1 - 4.1));
1310 %! assert (abs(d1(idx1)), abs(d0(idx0(1:k))), 1e-11); 1307 %! assert (abs(d1(idx1)), abs(d0(idx0(1:k))), 1e-11);
1311 %! assert (sort(imag(d1(idx1))), sort(imag(d0(idx0(1:k)))), 1e-11); 1308 %! assert (sort(imag(d1(idx1))), sort(imag(d0(idx0(1:k)))), 1e-11);
1312 %!testif HAVE_ARPACK 1309 %!test
1313 %! d1 = eigs(A, eye(n), k, 'lm'); 1310 %! d1 = eigs(A, eye(n), k, 'lm');
1314 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1311 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1315 %!testif HAVE_ARPACK 1312 %!test
1316 %! opts.cholB=true; 1313 %! opts.cholB=true;
1317 %! d1 = eigs(A, eye(n), k, 'lm', opts); 1314 %! d1 = eigs(A, eye(n), k, 'lm', opts);
1318 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1315 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1319 %!testif HAVE_ARPACK 1316 %!test
1320 %! opts.cholB=true; 1317 %! opts.cholB=true;
1321 %! q = [2:n,1]; 1318 %! q = [2:n,1];
1322 %! opts.permB=q; 1319 %! opts.permB=q;
1323 %! d1 = eigs(A, eye(n)(q,q), k, 'lm', opts); 1320 %! d1 = eigs(A, eye(n)(q,q), k, 'lm', opts);
1324 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1321 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1325 %!testif HAVE_ARPACK 1322 %!test
1326 %! opts.cholB=true; 1323 %! opts.cholB=true;
1327 %! d1 = eigs(A, eye(n), k, 4.1, opts); 1324 %! d1 = eigs(A, eye(n), k, 4.1, opts);
1328 %! assert (abs(d1), eigs(A,k,4.1), 1e-11); 1325 %! assert (abs(d1), eigs(A,k,4.1), 1e-11);
1329 %!testif HAVE_ARPACK 1326 %!test
1330 %! opts.cholB=true; 1327 %! opts.cholB=true;
1331 %! q = [2:n,1]; 1328 %! q = [2:n,1];
1332 %! opts.permB=q; 1329 %! opts.permB=q;
1333 %! d1 = eigs(A, eye(n)(q,q), k, 4.1, opts); 1330 %! d1 = eigs(A, eye(n)(q,q), k, 4.1, opts);
1334 %! assert (abs(d1), eigs(A,k,4.1), 1e-11); 1331 %! assert (abs(d1), eigs(A,k,4.1), 1e-11);
1335 %!testif HAVE_ARPACK 1332 %!test
1336 %! assert (abs(eigs(A,k,4.1)), abs(eigs(A,eye(n),k,4.1)), 1e-11); 1333 %! assert (abs(eigs(A,k,4.1)), abs(eigs(A,eye(n),k,4.1)), 1e-11);
1337 %!testif HAVE_ARPACK 1334 %!test
1338 %! assert (sort(imag(eigs(A,k,4.1))), sort(imag(eigs(A,eye(n),k,4.1))), 1e-11); 1335 %! assert (sort(imag(eigs(A,k,4.1))), sort(imag(eigs(A,eye(n),k,4.1))), 1e-11);
1339 %!testif HAVE_ARPACK 1336 %!test
1340 %! fn = @(x) A * x; 1337 %! fn = @(x) A * x;
1341 %! opts.issym = 0; opts.isreal = 1; 1338 %! opts.issym = 0; opts.isreal = 1;
1342 %! d1 = eigs (fn, n, k, 'lm', opts); 1339 %! d1 = eigs (fn, n, k, 'lm', opts);
1343 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1340 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1344 %!testif HAVE_ARPACK 1341 %!test
1345 %! fn = @(x) A \ x; 1342 %! fn = @(x) A \ x;
1346 %! opts.issym = 0; opts.isreal = 1; 1343 %! opts.issym = 0; opts.isreal = 1;
1347 %! d1 = eigs (fn, n, k, 'sm', opts); 1344 %! d1 = eigs (fn, n, k, 'sm', opts);
1348 %! assert (abs(d1), d0(1:k), 1e-11); 1345 %! assert (abs(d1), d0(1:k), 1e-11);
1349 %!testif HAVE_ARPACK 1346 %!test
1350 %! fn = @(x) (A - 4.1 * eye(n)) \ x; 1347 %! fn = @(x) (A - 4.1 * eye(n)) \ x;
1351 %! opts.issym = 0; opts.isreal = 1; 1348 %! opts.issym = 0; opts.isreal = 1;
1352 %! d1 = eigs (fn, n, k, 4.1, opts); 1349 %! d1 = eigs (fn, n, k, 4.1, opts);
1353 %! assert (abs(d1), eigs(A,k,4.1), 1e-11); 1350 %! assert (abs(d1), eigs(A,k,4.1), 1e-11);
1354 %!testif HAVE_ARPACK 1351 %!test
1355 %! [v1,d1] = eigs(A, k, 'lm'); 1352 %! [v1,d1] = eigs(A, k, 'lm');
1356 %! d1 = diag(d1); 1353 %! d1 = diag(d1);
1357 %! for i=1:k 1354 %! for i=1:k
1358 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1355 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1359 %! endfor 1356 %! endfor
1360 %!testif HAVE_ARPACK 1357 %!test
1361 %! [v1,d1] = eigs(A, k, 'sm'); 1358 %! [v1,d1] = eigs(A, k, 'sm');
1362 %! d1 = diag(d1); 1359 %! d1 = diag(d1);
1363 %! for i=1:k 1360 %! for i=1:k
1364 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1361 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1365 %! endfor 1362 %! endfor
1366 %!testif HAVE_ARPACK 1363 %!test
1367 %! [v1,d1] = eigs(A, k, 'lr'); 1364 %! [v1,d1] = eigs(A, k, 'lr');
1368 %! d1 = diag(d1); 1365 %! d1 = diag(d1);
1369 %! for i=1:k 1366 %! for i=1:k
1370 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1367 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1371 %! endfor 1368 %! endfor
1372 %!testif HAVE_ARPACK 1369 %!test
1373 %! [v1,d1] = eigs(A, k, 'sr'); 1370 %! [v1,d1] = eigs(A, k, 'sr');
1374 %! d1 = diag(d1); 1371 %! d1 = diag(d1);
1375 %! for i=1:k 1372 %! for i=1:k
1376 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1373 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1377 %! endfor 1374 %! endfor
1378 %!testif HAVE_ARPACK 1375 %!test
1379 %! [v1,d1] = eigs(A, k, 'li'); 1376 %! [v1,d1] = eigs(A, k, 'li');
1380 %! d1 = diag(d1); 1377 %! d1 = diag(d1);
1381 %! for i=1:k 1378 %! for i=1:k
1382 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1379 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1383 %! endfor 1380 %! endfor
1384 %!testif HAVE_ARPACK 1381 %!test
1385 %! [v1,d1] = eigs(A, k, 'si'); 1382 %! [v1,d1] = eigs(A, k, 'si');
1386 %! d1 = diag(d1); 1383 %! d1 = diag(d1);
1387 %! for i=1:k 1384 %! for i=1:k
1388 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1385 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1389 %! endfor 1386 %! endfor
1399 %! A = full(sparse([3:n,1:n,1:(n-2)],[1:(n-2),1:n,3:n],[1i*ones(1,n-2),4*ones(1,n),-1i*ones(1,n-2)])); 1396 %! A = full(sparse([3:n,1:n,1:(n-2)],[1:(n-2),1:n,3:n],[1i*ones(1,n-2),4*ones(1,n),-1i*ones(1,n-2)]));
1400 %! d0 = eig (A); 1397 %! d0 = eig (A);
1401 %! [~, idx] = sort (abs(d0)); 1398 %! [~, idx] = sort (abs(d0));
1402 %! d0 = d0(idx); 1399 %! d0 = d0(idx);
1403 %! rand("state", 42); % initialize generator to make eigs behavior reproducible 1400 %! rand("state", 42); % initialize generator to make eigs behavior reproducible
1404 %!testif HAVE_ARPACK 1401 %!test
1405 %! d1 = eigs (A, k); 1402 %! d1 = eigs (A, k);
1406 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1403 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1407 %!testif HAVE_ARPACK 1404 %!test
1408 %! d1 = eigs (A,k+1); 1405 %! d1 = eigs (A,k+1);
1409 %! assert (abs(d1), abs(d0(end:-1:(end-k))),1e-11); 1406 %! assert (abs(d1), abs(d0(end:-1:(end-k))),1e-11);
1410 %!testif HAVE_ARPACK 1407 %!test
1411 %! d1 = eigs (A, k, 'lm'); 1408 %! d1 = eigs (A, k, 'lm');
1412 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1409 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1413 %!testif HAVE_ARPACK 1410 %!test
1414 %! d1 = eigs (A, k, 'sm'); 1411 %! d1 = eigs (A, k, 'sm');
1415 %! assert (abs(d1), abs(d0(1:k)), 1e-11); 1412 %! assert (abs(d1), abs(d0(1:k)), 1e-11);
1416 %!testif HAVE_ARPACK 1413 %!test
1417 %! d1 = eigs (A, k, 'lr'); 1414 %! d1 = eigs (A, k, 'lr');
1418 %! [~, idx] = sort (real(abs(d0))); 1415 %! [~, idx] = sort (real(abs(d0)));
1419 %! d2 = d0(idx); 1416 %! d2 = d0(idx);
1420 %! assert (real(d1), real(d2(end:-1:(end-k+1))), 1e-11); 1417 %! assert (real(d1), real(d2(end:-1:(end-k+1))), 1e-11);
1421 %!testif HAVE_ARPACK 1418 %!test
1422 %! d1 = eigs (A, k, 'sr'); 1419 %! d1 = eigs (A, k, 'sr');
1423 %! [~, idx] = sort (real(abs(d0))); 1420 %! [~, idx] = sort (real(abs(d0)));
1424 %! d2 = d0(idx); 1421 %! d2 = d0(idx);
1425 %! assert (real(d1), real(d2(1:k)), 1e-11); 1422 %! assert (real(d1), real(d2(1:k)), 1e-11);
1426 %!testif HAVE_ARPACK 1423 %!test
1427 %! d1 = eigs (A, k, 'li'); 1424 %! d1 = eigs (A, k, 'li');
1428 %! [~, idx] = sort (imag(abs(d0))); 1425 %! [~, idx] = sort (imag(abs(d0)));
1429 %! d2 = d0(idx); 1426 %! d2 = d0(idx);
1430 %! assert (sort(imag(d1)), sort(imag(d2(end:-1:(end-k+1)))), 1e-11); 1427 %! assert (sort(imag(d1)), sort(imag(d2(end:-1:(end-k+1)))), 1e-11);
1431 %!testif HAVE_ARPACK 1428 %!test
1432 %! d1 = eigs (A, k, 'si'); 1429 %! d1 = eigs (A, k, 'si');
1433 %! [~, idx] = sort (imag(abs(d0))); 1430 %! [~, idx] = sort (imag(abs(d0)));
1434 %! d2 = d0(idx); 1431 %! d2 = d0(idx);
1435 %! assert (sort(imag(d1)), sort(imag(d2(1:k))), 1e-11); 1432 %! assert (sort(imag(d1)), sort(imag(d2(1:k))), 1e-11);
1436 %!testif HAVE_ARPACK 1433 %!test
1437 %! d1 = eigs (A, k, 4.1); 1434 %! d1 = eigs (A, k, 4.1);
1438 %! [~,idx0] = sort (abs(d0 - 4.1)); 1435 %! [~,idx0] = sort (abs(d0 - 4.1));
1439 %! [~,idx1] = sort (abs(d1 - 4.1)); 1436 %! [~,idx1] = sort (abs(d1 - 4.1));
1440 %! assert (abs(d1(idx1)), abs(d0(idx0(1:k))), 1e-11); 1437 %! assert (abs(d1(idx1)), abs(d0(idx0(1:k))), 1e-11);
1441 %! assert (sort(imag(d1(idx1))), sort(imag(d0(idx0(1:k)))), 1e-11); 1438 %! assert (sort(imag(d1(idx1))), sort(imag(d0(idx0(1:k)))), 1e-11);
1442 %!testif HAVE_ARPACK 1439 %!test
1443 %! d1 = eigs(A, eye(n), k, 'lm'); 1440 %! d1 = eigs(A, eye(n), k, 'lm');
1444 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1441 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1445 %!testif HAVE_ARPACK 1442 %!test
1446 %! opts.cholB=true; 1443 %! opts.cholB=true;
1447 %! d1 = eigs(A, eye(n), k, 'lm', opts); 1444 %! d1 = eigs(A, eye(n), k, 'lm', opts);
1448 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1445 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1449 %!testif HAVE_ARPACK 1446 %!test
1450 %! opts.cholB=true; 1447 %! opts.cholB=true;
1451 %! q = [2:n,1]; 1448 %! q = [2:n,1];
1452 %! opts.permB=q; 1449 %! opts.permB=q;
1453 %! d1 = eigs(A, eye(n)(q,q), k, 'lm', opts); 1450 %! d1 = eigs(A, eye(n)(q,q), k, 'lm', opts);
1454 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1451 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1455 %!testif HAVE_ARPACK 1452 %!test
1456 %! opts.cholB=true; 1453 %! opts.cholB=true;
1457 %! d1 = eigs(A, eye(n), k, 4.1, opts); 1454 %! d1 = eigs(A, eye(n), k, 4.1, opts);
1458 %! assert (abs(abs(d1)), abs(eigs(A,k,4.1)), 1e-11); 1455 %! assert (abs(abs(d1)), abs(eigs(A,k,4.1)), 1e-11);
1459 %! assert (sort(imag(abs(d1))), sort(imag(eigs(A,k,4.1))), 1e-11); 1456 %! assert (sort(imag(abs(d1))), sort(imag(eigs(A,k,4.1))), 1e-11);
1460 %!testif HAVE_ARPACK 1457 %!test
1461 %! opts.cholB=true; 1458 %! opts.cholB=true;
1462 %! q = [2:n,1]; 1459 %! q = [2:n,1];
1463 %! opts.permB=q; 1460 %! opts.permB=q;
1464 %! d1 = eigs(A, eye(n)(q,q), k, 4.1, opts); 1461 %! d1 = eigs(A, eye(n)(q,q), k, 4.1, opts);
1465 %! assert (abs(abs(d1)), abs(eigs(A,k,4.1)), 1e-11); 1462 %! assert (abs(abs(d1)), abs(eigs(A,k,4.1)), 1e-11);
1466 %! assert (sort(imag(abs(d1))), sort(imag(eigs(A,k,4.1))), 1e-11); 1463 %! assert (sort(imag(abs(d1))), sort(imag(eigs(A,k,4.1))), 1e-11);
1467 %!testif HAVE_ARPACK 1464 %!test
1468 %! assert (abs(eigs(A,k,4.1)), abs(eigs(A,eye(n),k,4.1)), 1e-11); 1465 %! assert (abs(eigs(A,k,4.1)), abs(eigs(A,eye(n),k,4.1)), 1e-11);
1469 %!testif HAVE_ARPACK 1466 %!test
1470 %! assert (sort(imag(eigs(A,k,4.1))), sort(imag(eigs(A,eye(n),k,4.1))), 1e-11); 1467 %! assert (sort(imag(eigs(A,k,4.1))), sort(imag(eigs(A,eye(n),k,4.1))), 1e-11);
1471 %!testif HAVE_ARPACK 1468 %!test
1472 %! fn = @(x) A * x; 1469 %! fn = @(x) A * x;
1473 %! opts.issym = 0; opts.isreal = 0; 1470 %! opts.issym = 0; opts.isreal = 0;
1474 %! d1 = eigs (fn, n, k, 'lm', opts); 1471 %! d1 = eigs (fn, n, k, 'lm', opts);
1475 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11); 1472 %! assert (abs(d1), abs(d0(end:-1:(end-k+1))), 1e-11);
1476 %!testif HAVE_ARPACK 1473 %!test
1477 %! fn = @(x) A \ x; 1474 %! fn = @(x) A \ x;
1478 %! opts.issym = 0; opts.isreal = 0; 1475 %! opts.issym = 0; opts.isreal = 0;
1479 %! d1 = eigs (fn, n, k, 'sm', opts); 1476 %! d1 = eigs (fn, n, k, 'sm', opts);
1480 %! assert (abs(d1), d0(1:k), 1e-11); 1477 %! assert (abs(d1), d0(1:k), 1e-11);
1481 %!testif HAVE_ARPACK 1478 %!test
1482 %! fn = @(x) (A - 4.1 * eye(n)) \ x; 1479 %! fn = @(x) (A - 4.1 * eye(n)) \ x;
1483 %! opts.issym = 0; opts.isreal = 0; 1480 %! opts.issym = 0; opts.isreal = 0;
1484 %! d1 = eigs (fn, n, k, 4.1, opts); 1481 %! d1 = eigs (fn, n, k, 4.1, opts);
1485 %! assert (abs(d1), eigs(A,k,4.1), 1e-11); 1482 %! assert (abs(d1), eigs(A,k,4.1), 1e-11);
1486 %!testif HAVE_ARPACK 1483 %!test
1487 %! [v1,d1] = eigs(A, k, 'lm'); 1484 %! [v1,d1] = eigs(A, k, 'lm');
1488 %! d1 = diag(d1); 1485 %! d1 = diag(d1);
1489 %! for i=1:k 1486 %! for i=1:k
1490 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1487 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1491 %! endfor 1488 %! endfor
1492 %!testif HAVE_ARPACK 1489 %!test
1493 %! [v1,d1] = eigs(A, k, 'sm'); 1490 %! [v1,d1] = eigs(A, k, 'sm');
1494 %! d1 = diag(d1); 1491 %! d1 = diag(d1);
1495 %! for i=1:k 1492 %! for i=1:k
1496 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1493 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1497 %! endfor 1494 %! endfor
1498 %!testif HAVE_ARPACK 1495 %!test
1499 %! [v1,d1] = eigs(A, k, 'lr'); 1496 %! [v1,d1] = eigs(A, k, 'lr');
1500 %! d1 = diag(d1); 1497 %! d1 = diag(d1);
1501 %! for i=1:k 1498 %! for i=1:k
1502 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1499 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1503 %! endfor 1500 %! endfor
1504 %!testif HAVE_ARPACK 1501 %!test
1505 %! [v1,d1] = eigs(A, k, 'sr'); 1502 %! [v1,d1] = eigs(A, k, 'sr');
1506 %! d1 = diag(d1); 1503 %! d1 = diag(d1);
1507 %! for i=1:k 1504 %! for i=1:k
1508 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1505 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1509 %! endfor 1506 %! endfor
1510 %!testif HAVE_ARPACK 1507 %!test
1511 %! [v1,d1] = eigs(A, k, 'li'); 1508 %! [v1,d1] = eigs(A, k, 'li');
1512 %! d1 = diag(d1); 1509 %! d1 = diag(d1);
1513 %! for i=1:k 1510 %! for i=1:k
1514 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1511 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1515 %! endfor 1512 %! endfor
1516 %!testif HAVE_ARPACK 1513 %!test
1517 %! [v1,d1] = eigs(A, k, 'si'); 1514 %! [v1,d1] = eigs(A, k, 'si');
1518 %! d1 = diag(d1); 1515 %! d1 = diag(d1);
1519 %! for i=1:k 1516 %! for i=1:k
1520 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11) 1517 %! assert(max(abs((A - d1(i)*eye(n))*v1(:,i))),0.,1e-11)
1521 %! endfor 1518 %! endfor