日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

fortran转换 matlab代码,将Fortran77代码转换为Matlab代码以查找特征值/向量

發布時間:2023/12/10 循环神经网络 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fortran转换 matlab代码,将Fortran77代码转换为Matlab代码以查找特征值/向量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我將Fortran 77中的書面代碼轉換為Matlab代碼。該函數使用QL算法計算矩陣的特征值和特征向量。由于某些原因,我不能在matlab中使用eig函數的結果。這種方法得到的特征值與eig函數得到的特征值不一樣,有些相同但有些不同。我不知道問題在哪里。感謝您的任何幫助和建議。如果需要運行并觀察結果,我可以給出輸入數組。

這里是fortran代碼:

SUBROUTINE tqli(d,e,n,np,z)

INTEGER n,np

REAL d(np),e(np),z(np,np)

CU USES pythag

INTEGER i,iter,k,l,m

REAL b,c,dd,f,g,p,r,s,pythag

do 11 i=2,n

e(i-1)=e(i)

11 continue

e(n)=0.

do 15 l=1,n

iter=0

1 do 12 m=l,n-1

dd=abs(d(m))+abs(d(m+1))

if (abs(e(m))+dd.eq.dd) goto 2

12 continue

m=n

2 if(m.ne.l)then

if(iter.eq.30)pause 'too many iterations in tqli'

iter=iter+1

g=(d(l+1)-d(l))/(2.*e(l))

r=pythag(g,1.)

g=d(m)-d(l)+e(l)/(g+sign(r,g))

s=1.

c=1.

p=0.

do 14 i=m-1,l,-1

f=s*e(i)

b=c*e(i)

r=pythag(f,g)

e(i+1)=r

if(r.eq.0.)then

d(i+1)=d(i+1)-p

e(m)=0.

goto 1

endif

s=f/r

c=g/r

g=d(i+1)-p

r=(d(i)-g)*s+2.*c*b

p=s*r

d(i+1)=g+p

g=c*r-b

C Omit lines from here ...

do 13 k=1,n

f=z(k,i+1)

z(k,i+1)=s*z(k,i)+c*f

z(k,i)=c*z(k,i)-s*f

13 continue

C ... to here when finding only eigenvalues.

14 continue

d(l)=d(l)-p

e(l)=g

e(m)=0.

goto 1

endif

15 continue

return

END以下是matlab代碼:

function [d,z]=tqli(d,e,n,np,z)

for i=2:n

e(i-1)=e(i);

end

e(n)=0.;

for l=1:n

iter=0;

for m=l:(n-1)

dd=abs(d(m))+abs(d(m+1));

if ((abs(e(m))+dd)==dd)

break

end

end

m=n;

if (m~=l)

if (iter==30)

disp('too many iteration in tqli')

end

iter=iter+1;

g=(d(l+1)-d(l))/(2.*e(l));

r=pythag(g,1.);

g=d(m)-d(l)+e(l)/(g+r*sign(g));

s=1.;

c=1.;

p=0.;

for i=(m-1):-1:l

f=s*e(i);

b=c*e(i);

r=pythag(f,g);

e(i+1)=r;

if(r==0.)

d(i+1)=d(i+1)-p;

e(m)=0.;

break

end

s=f/r;

c=g/r;

g=d(i+1)-p;

r=(d(i)-g)*s+2.*c*b;

p=s*r;

d(i+1)=g+p;

g=c*r-b;

for k=1:n

f=z(k,i+1);

z(k,i+1)=s*z(k,i)+c*f;

z(k,i)=c*z(k,i)-s*f;

end

end

d(l)=d(l)-p;

e(l)=g;

e(m)=0.;

end

end

end

總結

以上是生活随笔為你收集整理的fortran转换 matlab代码,将Fortran77代码转换为Matlab代码以查找特征值/向量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。