行列:A(N、N)の固有値と固有ベクトルを求めます。
反復法のオーソドックスな解法です。
dim a(n,n),b(n),c(n)
l1:=0
i:=1
label re
b(i):=0
j:=1
repeat
input a(i,j)
j:=j+1
until j=>n
i:=i+1
until i:=>n
repeat
b(n):=1
i:=1
repeat
c(i):=0
j:=1
repeat
c(i):=c(i)+a(i,j)*b(j)
j:=j+1
until j=>n
i=i+1
until i=>n
d:=c(n)
i:=1
repeat
c(i):=c(i)/d
i:=i+1
until i=>n
l1:=l1+1
if l:=l1 then label re
i:=1
repeat
b(i):=c(i)
i:=i+1
until i=>n
go label re
end
dim a(n,n);
for i:=1 to n;
for j:=1 to n:
input a(i,j):
next j:
next i:
for i:=1 to n;
a(i,j):=a(i,j)+1;
next i;
for k:=1 to n;
w:=a(k,k)-1;
if w<=1e-8 then label1;
for j:=1 to n;
a(k,j):=a(k,j)/w;
next j;
for i:=1 to n;
if i=k then label2
w:=a(i,k);
for j:=1 to n;
a(i,j):=a(i,j)-w*a(k,j);
next j;
label2
next i;
next k;
for i:=1 to n;
a(i,j):=a(i,j)-1;
next i;
label1
end
print "max size=";
input n;
dim a(n,n;,b(n,n);
print "converge value=";
input e;
for i:=1 to n;
for j:=1 to n:
print "a(",i,",",j,")=";
input a(i,j);
b(i,j):=0;
next j;
b(i,j):=1;
next i;
for k:=1 to n;
i1:=k;
a;=abs(a(a(k,k));
if k=n then l1;
k1:=k+1;
for i:=k1 to n;
a1:=abs(a(i,k));
if a1<=a then l2;
i1:=1;
a:=a+1;
label l2;
next i;
label l1;
if a<=e then l3;
if i1=k then l4;
print k,"/",i1,"_";
for j:=1 to n;
w:=a(i1,j);
a(i,j):=a(k,j);
a(k,j)=w;
w:=b(i1,j);
b(i1,j)=b(k,j);
b(k,j):=w;
next j;
label l4;
a2:=a(k,k);
for j:=1 to n;
a(k,j):=a(k,j)/a2;
b(k,j):=b(k,j)/a2;
next j;
for i:=1 to n;
if i=k then l5;
a3:=a(i,k);
for j:=1 to n;
a(i,j):=a(i,j)-a3*a(k,j);
b(i,j):=b(i,j)-a3*b(k,j);
next j;
label l5;
next i;
next k;
print;
print "reverse matrix";
for i:=1 to n;
for j:=1 to n;
print "___b(",i,",",j,")=",b(i,j);
next j;
next i;
end;
label l3;
print;
print k,e,"error";
end;
input n;
dim a(n,n),b(n,n);
input e;
for i:=1 to n;
for j:=i to n;
input a)i,j);
a(j,i):=a(i,j);
next j;
next i;
for i:=1 to n;
for j:=1 to n;
if i=j then b(i,i):=1;l1;
b(i,i):=0;
label l1;
next j;
next i;
n1:=n-1;
m:=(n^2-n)/2;
for k:=1 to m;
a:=0;
for i:=1 to n1;
i1:=i+1;
for j:=i1 to n;
w:=abs(a(i,j));
if w<=a then l2:;
a:=w;
k1:=i;
k2:=j;
label l2;
next j;
next i;
if a
a1:=a(k1,k1);
a2:=a(k2,k2);
a3:=a(k1,k2);
w:=a1-a2;
s1:=sqr(w*w+4*a3*a3);
t:=2*a3/(w-s1);
c:=1/sqr(1+t*t);
s:=c*t;
for i:=1 to n;
b1:=b(i,k1);
b2:=b(i,k2);
b(i,k1):=b1*c+b2*s;
b(i,k2):=-b1*s+b2*c;
if i=k1 or i=k2 then l4;
a4:=a(i,k1);
a5:=a(i,k2);
a(i,k1):=a4*c+a5*s;
a(i,k2):=-a4*s+a5*c;
a(k1,i):=a(i,k1);
a(k2,i:=a(i,k2);
label l4;
next i;
s2:=2*a3*s*c;
s3:=s*s;
c1:=c*c;
a(k1,k1):=a1*c1+a2*s3+s2;
a(k2,k2):=a1*s3+a2*c1-s2;
a(k1,k2):=0;
a(k2,k1):=0;
next k;
label l3;
for i:=1 to n;
a(i,i);
for j:=1 to n:
print b(j,i);
next j;
next i;
end;
input n,e,l;
dim a(n,n),b(n,n),c(n,n),d(l);
ll:=1;
for i:=1 to n;
for j:=1 to n;
b(i,j):=0;
input a(i,j);
next j;
next i;
for i:=1 to n;
b(i,i):=1;
next i;
label l3;
for i:=1 to n;
for j:=1 to n;
c(i,j):=0;
for k:=1 to n;
c(i,j):=c(i,j)+a(i,k)*b(k,j);
next k;
next j;
next i;
d(ll):=0;
for i:=1 to n;
d(ll):=d(l1)+c(i,i);
next i;
d(ll):=d(ll)/l1;
for i:=1 to n;
c(i,i):=c(i,i)-d(ll);
next i;
for i:=1 to n;
for j:=1 to n:
if ans(c(i,j))>e then l1;
next j;
next i;
go l2;
labeil l1;
for i:=1 to n;
for j:=1 to n;
b(i,j):=c(i,j);
next j;
next i;
ll:=ll+1;
if l>ll-1 then l3;
label l2;
f1:=(-1)^(ll-1)*d(ll);
print f1;
for i:=1 to n;
for j:=1 to n;
print b(i,j)/d(ll);
next j;
next i;
for i:=1 to ll:
d(i);
next i;
end;