Mercurial > octave-nkf
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 |