子程序tred3(n,nv,a,d,e,e2)c(c)整数i,j,k,l,n,ii,iz,jk,nv,jm1双精度a(nv)、d(n)、e(n)和e2(n)双精度f,g,h,hh,刻度c(c)c此子程序是algol程序tred3的翻译,c数字数学。马丁、瑞奇和威尔金森(1968)。c汽车手册。比较。,第二卷:线性代数,212-226(1971)。c(c)c此子程序减少了一个实对称矩阵,存储为c一维数组,到对称三对角矩阵c使用正交相似变换。c(c)输入上的cc(c)cn是矩阵的阶数。c(c)c nv必须设置为数组参数a的维数c在调用程序dimension语句中声明。c(c)c a包含实对称的下三角c输入矩阵,按行存储为一维c阵列的第一个n*(n+1)/2位置。c(c)输出上的cc(c)c a包含有关正交的信息还原中使用的c转换。c(c)cd包含三对角矩阵的对角元素。c(c)c e包含三对角的次对角元素c矩阵的最后n-1个位置。e(1)设为零。c(c)ce2包含e的相应元素的平方。如果不需要正方形,则c e2可以与e重合。c(c)c问题和意见应提交给伯顿·s·加博,c阿贡国家实验室数学与计算机科学部c(c)c本版本日期为1983年8月。c(c)c(c)------------------------------------------------------------------c(c)c。。。。。。。。。。对于i=n步骤-1,直到1 do--。。。。。。。。。。do 300 ii=1,ni=n+1-iil=i-1iz=(i*l)/2h=0.0d0比例=0.0d0如果(l.lt.1)转到130c。。。。。。。。。。刻度行(不需要算法)。。。。。。。。。。做120 k=1,liz=iz+1d(k)=a(iz)刻度=刻度+dabs(d(k))120继续c(c)如果(scale.ne.0.0d0)转到140130 e(i)=0.0d0e2(i)=0.0d0转到290c(c)140做150 k=1,ld(k)=d(k)/刻度h=小时+天(k)*d(k)150继续c(c)e2(i)=比例尺*比例尺*hf=d(l)g=-d符号(dsqrt(h),f)e(i)=刻度*gh=h-f*gd(l)=f-ga(iz)=刻度*d(l)如果(l等式1)转到290jk=1c(c)do 240 j=1,lf=d(j)g=0.0d0jm1=j-1如果(jm1.lt.1)转到220c(c)do 200 k=1,jm1g=g+a(jk)*d(k)e(k)=e(k)+a(jk)*fjk=jk+1200继续c(c)220 e(j)=g+a(jk)*fjk=jk+1240继续c。。。。。。。。。。表格p。。。。。。。。。。f=0.0d0c(c)do 245 j=1,le(j)=e(j)/小时f=f+e(j)*d(j)245续c(c)hh=f/(h+h)c。。。。。。。。。。格式q。。。。。。。。。。do 250 j=1,l250(j)=e(j)-hh*d(j)c(c)jk=1c。。。。。。。。。。形状缩小a。。。。。。。。。。do 280 j=1,lf=d(j)g=e(j)c(c)do 260 k=1,ja(jk)=a(jk)-f*e(k)-g*d(k)jk=jk+1260继续c(c)280继续c(c)290天(i)=a(iz+1)a(iz+1)=比例*dsqrt(h)300继续c(c)返回结束